PCB论坛网

 找回密码
 注册
查看: 3461|回复: 14

[原创]CAM350宏工作应用,要求置顶!!!

[复制链接]
发表于 2007-8-22 00:30:00 | 显示全部楼层 |阅读模式

因为工作需要,自己编了此宏,下面就大致讲解一下,起个抛砖引玉,希望真正的高手,不要吝啬自己的才华。

下面黑色为宏,红色为说明。

100(这数值起分隔的作用,学过汇编语言的都知道:GOTO 100,就不多说了)

Getmousepos@ "提示:点击鼠标左键定义图戳基点..."
m = mouseposX!
n = mouseposy!

(这个定义鼠标基点,就是点到什么地方,那么命令就从这里开始执行)

OpenForm #1,60,15, "文字标注", character, okcancel
AddForm #1, 0, 0, "生产编号:", Input, SCBH$,20
AddForm #1, 0, 1, "*************************************************************************",Print
AddForm #1, 0, 2, "原稿层数:", Choice, XLCengShu%, "三张", "四张","五张","六张","七张","八张","九张","十张","十一张","十二张","十三张","十四张"
AddForm #1, 20, 2, "文字线条:", Choice, WZXT%, "8MIL","9MIL", "10MIL","11MIL","12MIL"
AddForm #1, 35, 2, "文字高度:", Choice, WZGD%, "90MIL55MM","120MIL72MM", "150MIL89MM","180MIL107MM","210MIL125MM"
AddForm #1, 30, 8, "GERBER尺寸:", Choice, GBCC%, "130*160MM", "180*210MM","250*300MM"
AddForm #1, 0, 14, "*************************************************************************",Print
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

DisplayForm #1,CENTER
Canceled = formCancel(1)
DeleteForm #1
if canceled% then end

(上面为菜单,效果见图)

 

IF LEN (SCBH$)=13 THEN
goto 150
elseif  LEN (SCBH$)>13 THEN
     PRINT " 警告: 输入有误,重新输入!"
goto 100        
    
elseif  LEN (SCBH$)<13 THEN
      PRINT" 警告: 输入有误,重新输入!"
goto 100
end if

(生产编号是固定位数,这里限制了位数,这里也用到了GOTO 100,不满足条件的时候就返回。)

150

'时间模式
timemode%=1

'设置默认值
mergedrl%=0
ts$=time!  '取日期#
ts1$=mid$(ts$,21,4)
ts2$=mid$(ts$,5,3)
ts3$=mid$(ts$,9,2)
if timemode%=1 then
 select case ts2$
  case "Jan"
   ts2$="01"  
  case "Feb"
   ts2$="02"  
  case "Mar"
   ts2$="03"  
  case "Apr"
   ts2$="04"  
  case "May"
   ts2$="05"  
  case "Jun"
   ts2$="06"  
  case "Jul"
   ts2$="07"  
  case "Aug"
   ts2$="08"  
  case "Sep"
   ts2$="09"  
  case "Oct"
   ts2$="10"  
  case "Nov"
   ts2$="11"  
  case "Dec"
   ts2$="12"  
 end select
end if

(这里把12个月用数字显示,同时把ts1$设置为年,ts2$为月,ts3$为日

SCBH$=UCASE$(SCBH$)

(这里设置输入的转换为大写)

 


if GBCC%=1 then
util_camed@
setdcode@ 9
setlayer@ 0
setsectorize@ 0,400
textfullheight@ 3.75
textangle@ 0
textmirror@ 0
textjust@ 33
textfitting@ 0
textcspace@ 0.0000
textlspace@ 1.2700
textslant@ 0
textxscale@ 100
textvertical@ 0
textfont@ "SIMPLE.EFN"
setup_fmtype@ 0,1
setup_fmtunit@ 0,1
setsnap@ 1
setup_fmtdigits@ 0,3,5
edit_layer@ 32,5,5,4,0,"inner.gbr"
importgbrfile@ 32,0.0000,0.0000,"c:\work\130X160\neiceng.gbr"
setsnap@ 1
edit_layer@ 33,6,6,4,0,"outer.gbr"
importgbrfile@ 33,0.0000,0.0000,"c:\work\130X160\waiceng.gbr"
setsnap@ 1
edit_layer@ 34,7,7,4,0,"silk.gbr"
importgbrfile@ 34,0.0000,0.0000,"c:\work\130X160\zifu.gbr"
setsnap@ 1
edit_layer@ 35,8,8,4,0,"solder.gbr"
importgbrfile@ 35,0.0000,0.0000,"c:\work\130X160\zuhan.gbr"
setsnap@ 1
update_dcodebar@
view_all@
elseif GBCC%=2 then
util_camed@
setdcode@ 9
setlayer@ 0
setsectorize@ 0,400
textfullheight@ 4.9
textangle@ 0
textmirror@ 0
textjust@ 33
textfitting@ 0
textcspace@ 0.0000
textlspace@ 1.2700
textslant@ 0
textxscale@ 100
textvertical@ 0
textfont@ "SIMPLE.EFN"
setup_fmtype@ 0,1
setup_fmtunit@ 0,1
setsnap@ 1
setup_fmtdigits@ 0,3,5
edit_layer@ 32,5,5,4,0,"inner.gbr"
importgbrfile@ 32,0.0000,0.0000,"c:\work\180x210\neiceng.gbr"
setsnap@ 1
edit_layer@ 33,6,6,4,0,"outer.gbr"
importgbrfile@ 33,0.0000,0.0000,"c:\work\180x210\waiceng.gbr"
setsnap@ 1
edit_layer@ 34,7,7,4,0,"silk.gbr"
importgbrfile@ 34,0.0000,0.0000,"c:\work\180x210\zifu.gbr"
setsnap@ 1
edit_layer@ 35,8,8,4,0,"solder.gbr"
importgbrfile@ 35,0.0000,0.0000,"c:\work\180x210\zuhan.gbr"
setsnap@ 1
update_dcodebar@
view_all@
elseif GBCC%=3 then
util_camed@
setdcode@ 9
setlayer@ 0
setsectorize@ 0,400
textfullheight@ 7.1
textangle@ 0
textmirror@ 0
textjust@ 33
textfitting@ 0
textcspace@ 0.0000
textlspace@ 1.2700
textslant@ 0
textxscale@ 100
textvertical@ 0
textfont@ "SIMPLE.EFN"
setup_fmtype@ 0,1
setup_fmtunit@ 0,1
setsnap@ 1
setup_fmtdigits@ 0,3,5
edit_layer@ 32,5,5,4,0,"inner.gbr"
importgbrfile@ 32,0.0000,0.0000,"c:\work\250x300\neiceng.gbr"
setsnap@ 1
edit_layer@ 33,6,6,4,0,"outer.gbr"
importgbrfile@ 33,0.0000,0.0000,"c:\work\250X300\waiceng.gbr"
setsnap@ 1
edit_layer@ 34,7,7,4,0,"silk.gbr"
importgbrfile@ 34,0.0000,0.0000,"c:\work\250x300\zifu.gbr"
setsnap@ 1
edit_layer@ 35,8,8,4,0,"solder.gbr"
importgbrfile@ 35,0.0000,0.0000,"c:\work\250x300\zuhan.gbr"
setsnap@ 1
update_dcodebar@
view_all@
end if

(这里表示菜单中你点选了130*160,那么它将到c:\work\130X160\目录下调入你指定的GERBER,neiceng.gbr设置在第33层,waiceng.gbr在34层,zifu.gbr在35层,zuhan.gbr在36层)

 

200
if WZXT%=1 then
set_aperture@ 5000,"Round d:0.2032"
elseif WZXT%=2 then
set_aperture@ 5000,"Round d:0.2286"
elseif WZXT%=3 then
set_aperture@ 5000,"Round d:0.2540"
elseif WZXT%=4 then
set_aperture@ 5000,"Round d:0.2793"
elseif WZXT%=5 then
set_aperture@ 5000,"Round d:0.3047"

end if

(设置文字线条的D码,为防止更改GERBER,设置D码号5000)

 

setdcode@ 5000
setlayer@ 32
add_text@
addtext@ 21.0000,71.0900,53.4750,71.0900,SCBH$

setdcode@ 5000
setlayer@ 33
add_text@
addtext@ 21.0000,71.0900,53.4750,71.0900,SCBH$

setdcode@ 5000
setlayer@ 34
add_text@
addtext@ 21.0000,71.0900,53.4750,71.0900,SCBH$

setdcode@ 5000
setlayer@ 35
add_text@
addtext@ 21.0000,71.0900,53.4750,71.0900,SCBH$

(在调入的四层GERBER上指定坐标添加客户料号,我已经限定了13位。)


300
if WZGD%=1 then
textfullheight@ 2.286
elseif WZGD%=2 then
textfullheight@ 3.048
elseif WZGD%=3 then
textfullheight@ 3.810
elseif WZGD%=4 then
textfullheight@ 4.572
elseif WZGD%=5 then
textfullheight@ 5.334

end if

 (这里设置文字的高度,高度变化总字符的长度也有变化,所以菜单上面是长度)

SCBH$=UCASE$(SCBH$)

400

if XLCengShu%=1 then
 layerShu=3
elseif XLCengShu%=2 then
 layerShu=4
elseif XLCengShu%=3 then
 layerShu=5
elseif XLCengShu%=4 then
 layerShu=6
elseif XLCengShu%=5 then
 layerShu=7
elseif XLCengShu%=6 then
 layerShu=8
elseif XLCengShu%=7 then
 layerShu=9
elseif XLCengShu%=8 then
 layerShu=10
elseif XLCengShu%=9 then
 layerShu=11
elseif XLCengShu%=10 then
 layerShu=12
elseif XLCengShu%=11 then
 layerShu=13
elseif XLCengShu%=12 then
 layerShu=14
end if

 (这里设置原稿的层数,也是在菜单上面点选)

 

'线路标注 
SELECT CASE layerShu

CASE 3
'"三张"
 
              setdcode@ 5000
              setlayer@ 0
              add_text@
              addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 1 OF 3"
 
 setlayer@ 1
 add_text@
 addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 2 OF 3"
             
              setlayer@ 2
 add_text@
 addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 3 OF 3"

(根据选择的层数在每层添加字符,添加的位置为定义的鼠标基点,添加内容为料号SCBH$+制作人名字LI JI+年月日+页码)
             

CASE 4
'"四张"
             
              setdcode@ 5000 
              setlayer@ 0
 add_text@
 addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 1 OF 4"
 
 setlayer@ 1
 add_text@
 addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 2 OF 4"

 setlayer@ 2
 add_text@
 addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 3 OF 4"

 setlayer@ 3
 add_text@
 addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 4 OF 4"

(以下省略,字数不够)


900


END SELECT

(下面清除多余D码,同时D5000也被最后一个无用D码代替,假如你有70号D码,那么它就是71号了)
textfont@ "SIMPLE.EFN"
back@
aptable_compress@
update_dcodebar@
update_dcodebar@
update_dcodebar@

(显示软件制作信息)

PRINT" 警告: 版权所有  Ricky Lee!"
PRINT"制作日期 2007-08-21"

完成效果图

 

 

回复

使用道具 举报

发表于 2007-8-22 09:46:00 | 显示全部楼层

好!

 就一个字了.

回复 支持 反对

使用道具 举报

发表于 2007-8-22 10:05:00 | 显示全部楼层

不錯,就是看不懂

回复 支持 反对

使用道具 举报

发表于 2007-8-22 15:52:00 | 显示全部楼层

确实不错,只有一点.

不怎么懂.

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-22 18:22:00 | 显示全部楼层
我也是新手,慢慢学了,我都是自己学的,学习其他人的怎么运行的,把其他人的代码拿来研究,在CAM350下不断的调试,还有CAM350有录制宏的的功能,你可以录制后自己研究,那句语言是起什么用的。慢慢提高啊!
回复 支持 反对

使用道具 举报

发表于 2007-8-23 00:33:00 | 显示全部楼层

不錯,就是看不懂

回复 支持 反对

使用道具 举报

发表于 2007-8-23 23:01:00 | 显示全部楼层

请教:

'时间模式
timemode%=1

是何意思,何时需要运行它。

我也是常常写一宏了,只不过对上面这个不怎么熟。呵呵,我对很多很多东东都不熟的!

谢谢!

回复 支持 反对

使用道具 举报

发表于 2007-8-24 01:06:00 | 显示全部楼层
路过,看看
回复 支持 反对

使用道具 举报

发表于 2007-8-24 17:21:00 | 显示全部楼层
不错,不过写得过于繁锁,看来楼主对编程还是有些不了解!不过能完成你自已的意思写完程式也不错了.
回复 支持 反对

使用道具 举报

发表于 2007-8-25 09:27:00 | 显示全部楼层

此宏要用于实际生产上,还要改一些东东,

addtext@ m,n-3.5*k,0,0,SCBH$+" "+"LI JI " + ts1$+"/"+ts2$+"/"+ts3$+ " PAGE 1 OF 3"

此段要改为提取层的名字比较适用,比如第一层为GTL,

最后效果为:1234567890123  XX XX 年月日  GTL

是否有高手能改改?

[此贴子已经被作者于2007-8-25 9:30:18编辑过]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|手机版|PCB设计论坛|EDA论坛|PCB论坛网 ( 沪ICP备05006956号-1 )

GMT+8, 2024-5-20 05:34 , Processed in 0.171453 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表