|

楼主 |
发表于 2025-5-19 09:20:21
|
显示全部楼层
- axlCmdRegister("cedg9" 'check_etch_degree90 ?cmdType "interactive")
- procedure(check_etch_degree90()
- (setq curVisible9 (axlVisibleGet)) ;保存当前的显示层
- (axlVisibleDesign nil);隐藏显示层
- (axlClearSelSet)
- prog( ( layername
- layerlist
- layername
- LayerType
- )
- layerlist = axlGetParam("paramLayerGroup:ETCH")->groupMembers
-
- foreach( layername layerlist LayerType=axlDBGetLayerType(layername)
-
- if( LayerType != "PLANE"
- then
- sprintf(ss "ETCH/%s" layername)
- axlVisibleLayer(ss, t)
- axlVisibleLayer("PIN/TOP", t)
- axlVisibleLayer("PIN/BOTTOM", t)
- axlVisibleLayer("VIA CLASS/TOP", t)
- axlVisibleUpdate(t) ))
- num=0.6
- c=0
- i = 0
-
- interface()
- form_angle = (axlFormCreate (gensym) "./angle.form" `("E" "OUTER") 'Callback t)
- axlFormDisplay(form_angle)
- axlFormSetField(form_angle , "widths" ,num)
- );ENDPROG
- );ENDprocedure
-
- procedure(numb( )
- prog(()
- axlClearSelSet()
- axlVisibleDesign(nil)
- layerlist = axlGetParam("paramLayerGroup:ETCH")->groupMembers
-
- foreach( layername layerlist
- LayerType=axlDBGetLayerType(layername)
-
- if( LayerType!="PLANE"
- then
- sprintf(ss "ETCH/%s" layername)
- axlVisibleLayer(ss, t)
-
- axlVisibleLayer("PIN/TOP", t)
- axlVisibleLayer("PIN/BOTTOM", t)
- axlVisibleLayer("VIA CLASS/TOP", t)
- axlVisibleUpdate(t) )
- );endforeach
-
- num=axlFormGetField(form_angle, "widths")
- num=atof(num)
- axlSetFindFilter(?enabled list( "noall" "Clines") ?onButtons list("noall" "Clines"))
- axlAddSelectAll()
- clines=axlGetSelSet()
-
- c1=0
- x = nil
- i = 0
- alllist1=nil
- foreach(cline clines
-
- segs=cline->segments
- n=length(segs)
-
- when((n>1)
- for(i 1 n-1
- seg1=nthelem(i segs)
- seg2=nthelem(i+1 segs)
-
- wid1=seg1->width
- wid2=times(wid1 num)
-
- start1=nthelem(1 seg1->startEnd)
- end1=nthelem(2 seg1->startEnd)
- end2=nthelem(2 seg2->startEnd)
-
- len1=axlDistance(start1 end1)
- len2=axlDistance(end1 end2)
-
- when((len1>wid2)&&(len2>wid2)
- x1=nthelem(1 start1)
- y1=nthelem(2 start1)
- x2=nthelem(1 end1)
- y2=nthelem(2 end1)
- x3=nthelem(1 end2)
- y3=nthelem(2 end2)
- if((expt((x1-x2) 2)+expt((y1-y2) 2)+expt((x3-x2) 2)+expt((y3-y2) 2)>=expt((x3-x1) 2)+expt((y3-y1) 2))
- then
- axlHighlightObject(seg1 nil)
- axlHighlightObject(seg2 nil)
- layers=seg1->layer
- alllist1=append1(alllist1 list(layers end1))
-
- c1++)
- );endwhen
- )
- ));endforeach
- axlFormSetField(form_angle , "total_count" ,c1)
- axlFormSetField(form_angle , "nonce" ,i)
- axlClearSelSet()
- )
- )
- ;*****************************************
- procedure(one_count()
- prog(()
-
- if((axlFormGetField(form_angle, "check_1")==t)&&(axlFormGetField(form_angle, "check_2")==t) then
- alllist=append(alllist1 alllist2)
- c=c1+c2
- else
- if(axlFormGetField(form_angle, "check_1")==t then
- alllist=alllist1
- c=c1
- else
- if(axlFormGetField(form_angle, "check_2")==t then
- alllist=alllist2
- c=c2
- )))
- axlVisibleDesign(nil)
- alist=nthelem(i alllist)
- cpoint=nthelem(2 alist)
- llayer=nthelem(1 alist)
-
- xx1 = car(cpoint)
- yy1 = cadr(cpoint)
- axlVisibleLayer("PIN/TOP", t)
- axlVisibleLayer("PIN/BOTTOM", t)
- axlVisibleLayer("VIA CLASS/TOP", t)
- axlVisibleLayer(llayer, t)
-
- pcbunit = car(axlDBGetDesignUnits())
- if(("millimeters" == pcbunit)
- then
-
- xx2 = xx1+1.27
- yy2 = yy1+1.27
- xx1 = xx1-1.27
- yy1 = yy1-1.27
- axlWindowBoxSet( list(xx1:yy1 xx2:yy2))
- else
- xx2 = xx1+50
- yy2 = yy1+50
- xx1 = xx1-50
- yy1 = yy1-50
- axlWindowBoxSet( list(xx1:yy1 xx2:yy2))
-
- axlClearSelSet()
- )))
- ;******************************************
-
- defun(interface ()
- FORMFILE_90angle = outfile("./angle90.form")
-
- fprintf(FORMFILE_90angle "FILE_TYPE=FORM_DEFN VERSION=2\n")
- fprintf(FORMFILE_90angle "FORM\n")
- fprintf(FORMFILE_90angle "FIXED\n")
- fprintf(FORMFILE_90angle "PORT 23 11\n")
- fprintf(FORMFILE_90angle "HEADER "Check Right Angle"\n")
- fprintf(FORMFILE_90angle "\n")
- fprintf(FORMFILE_90angle "TILE\n")
-
- fprintf(FORMFILE_90angle "GROUP "check list"blue_a\n")
- fprintf(FORMFILE_90angle "GLOC 1 0\n")
- fprintf(FORMFILE_90angle "GSIZE 22 10\n")
- fprintf(FORMFILE_90angle "ENDGROUP\n")
-
- fprintf(FORMFILE_90angle "FIELD check_1\n")
- fprintf(FORMFILE_90angle "FLOC 2 2\n")
- fprintf(FORMFILE_90angle "CHECKLIST "right angle"\n")
- fprintf(FORMFILE_90angle "ENDFIELD\n")
-
- fprintf(FORMFILE_90angle "FIELD check_2\n")
- fprintf(FORMFILE_90angle "FLOC 2 4\n")
- fprintf(FORMFILE_90angle "CHECKLIST "small corner"\n")
- fprintf(FORMFILE_90angle "ENDFIELD\n")
-
- fprintf(FORMFILE_90angle "FIELD bmpos1\n")
- fprintf(FORMFILE_90angle "TLOC 16 2\n")
- fprintf(FORMFILE_90angle "THUMBNAIL"d:/os1.bmp" \n")
- fprintf(FORMFILE_90angle "FSIZE 2 2\n" )
- fprintf(FORMFILE_90angle "ENDFIELD\n\n")
-
- fprintf(FORMFILE_90angle "FIELD bmpos2\n")
- fprintf(FORMFILE_90angle "TLOC 16 4\n")
- fprintf(FORMFILE_90angle "THUMBNAIL"d:/os2.bmp" \n")
- fprintf(FORMFILE_90angle "FSIZE 2 2\n" )
- fprintf(FORMFILE_90angle "ENDFIELD\n\n")
-
-
- fprintf(FORMFILE_90angle "TEXT "total:" \n")
- fprintf(FORMFILE_90angle "TLOC 1 11\n")
- fprintf(FORMFILE_90angle "ENDTEXT\n\n")
-
- fprintf(FORMFILE_90angle "TEXT "currently:\n")
- fprintf(FORMFILE_90angle "TLOC 11 11\n")
- fprintf(FORMFILE_90angle "ENDTEXT\n\n")
-
-
- fprintf(FORMFILE_90angle "TEXT " " total_count\n")
- fprintf(FORMFILE_90angle "TLOC 5 11\n")
- fprintf(FORMFILE_90angle "STRFILLIN 4 5\n")
- fprintf(FORMFILE_90angle "ENDTEXT\n")
-
- fprintf(FORMFILE_90angle "TEXT " " nonce\n")
- fprintf(FORMFILE_90angle "TLOC 18 11\n")
- fprintf(FORMFILE_90angle "STRFILLIN 4 5\n")
- fprintf(FORMFILE_90angle "ENDTEXT\n")
-
- fprintf(FORMFILE_90angle "TEXT " " widths\n")
- fprintf(FORMFILE_90angle "TLOC 10 7\n")
- fprintf(FORMFILE_90angle "STRFILLIN 3 3\n")
- fprintf(FORMFILE_90angle "ENDTEXT\n")
-
- fprintf(FORMFILE_90angle "FIELD up\n")
- fprintf(FORMFILE_90angle "FLOC 1 15\n")
- fprintf(FORMFILE_90angle "MENUBUTTON "prev.." 4 3\n")
- fprintf(FORMFILE_90angle "ENDFIELD\n")
-
- fprintf(FORMFILE_90angle "FIELD next_to\n")
- fprintf(FORMFILE_90angle "FLOC 10 15\n")
- fprintf(FORMFILE_90angle "MENUBUTTON "next.." 4 3\n")
- fprintf(FORMFILE_90angle "ENDFIELD\n")
-
- fprintf(FORMFILE_90angle "FIELD Done\n")
- fprintf(FORMFILE_90angle "FLOC 17 15\n")
- fprintf(FORMFILE_90angle "MENUBUTTON "Bye" 4 3\n")
- fprintf(FORMFILE_90angle "ENDFIELD\n")
-
- fprintf(FORMFILE_90angle "FIELD check\n")
- fprintf(FORMFILE_90angle "FLOC 15 7\n")
- fprintf(FORMFILE_90angle "MENUBUTTON "check" 3 3\n")
- fprintf(FORMFILE_90angle "ENDFIELD\n")
-
- fprintf(FORMFILE_90angle "\n")
- fprintf(FORMFILE_90angle "ENDTILE\n")
- fprintf(FORMFILE_90angle "\n")
- fprintf(FORMFILE_90angle "ENDFORM\n")
-
- close(FORMFILE_90angle)
- deleteFile("angle90.form")
-
- );endprocedure
- (procedure Callback(form_angle)
- (prog (cpoint)
- case( form_angle->curField
-
- ("up"
- i--
- if((i<1) then
- i=c)
- one_count()
- axlFormSetField(form_angle , "nonce" ,i)
-
- if((i<1)
- i=c)
- t)
-
- ("next_to"
- i++
- if((i>c)
- i=1)
- one_count()
- axlFormSetField(form_angle , "nonce" ,i)
- t)
-
- ("Done"
- (axlVisibleSet curVisible9) ;还原保存的显示层
- (axlVisibleUpdate t);还原保存的显示层
- axlFormClose(form_angle)
- t)
-
-
- ("check"
-
- if((axlFormGetField(form_angle, "check_1")==t)&&(axlFormGetField(form_angle, "check_2")==t)
- then
- numb()
- shortline()
- c=c1+c2
- axlFormSetField(form_angle , "total_count" ,c1+c2)
- else
- if(axlFormGetField(form_angle, "check_1")==t then
- numb()
- c=c1
- else
- if(axlFormGetField(form_angle, "check_2")==t then
- shortline()
- c=c2
- )
- t)))
-
- )))
-
-
- procedure(shortline()
- prog( (m
- num
- layerlist
- layername
- LayerType
- clines
- cline
- segs
- n
- i
- ss
- end1 end2 end3
- seg1 seg2 seg3 wid1 wid2 len2
- x1 x2 x3 x4 y1 y2 y3 y4
- start1
-
- )
- num=axlFormGetField(form_angle, "widths")
- num=atof(num)
- axlVisibleDesign(nil)
- layerlist = axlGetParam("paramLayerGroup:ETCH")->groupMembers
- foreach( layername layerlist
- LayerType=axlDBGetLayerType(layername)
-
- if( LayerType!="PLANE"
- then
- sprintf(ss "ETCH/%s" layername)
- axlVisibleLayer(ss, t)
- axlVisibleLayer("PIN/TOP", t)
- axlVisibleLayer("PIN/BOTTOM", t)
- axlVisibleLayer("VIA CLASS/TOP", t)
- axlVisibleUpdate(t) ))
- axlSetFindFilter(?enabled list( "noall" "Clines") ?onButtons list("noall" "Clines"))
- axlAddSelectAll()
- clines=axlGetSelSet()
- c2=0
- i=0
- alllist2=nil
- foreach(cline clines
- segs=cline->segments
- n=length(segs)
-
- when((n>3)
- for(i 2 n-2
- seg1=nthelem(i segs)
- seg2=nthelem(i+1 segs)
- seg3=nthelem(i+2 segs)
-
- wid1=seg1->width
- wid2=times(wid1 num)
-
- start1=nthelem(1 seg1->startEnd)
- end1=nthelem(2 seg1->startEnd)
- end2=nthelem(2 seg2->startEnd)
- end3=nthelem(2 seg3->startEnd)
-
- ;len1=axlDistance(start1 end1)
- len2=axlDistance(end1 end2)
- ;len3=axlDistance(end2 end3)
- ;len2<wid2
-
- x1=nthelem(1 start1)
- y1=nthelem(2 start1)
- x2=nthelem(1 end1)
- y2=nthelem(2 end1)
- x3=nthelem(1 end2)
- y3=nthelem(2 end2)
- y4=nthelem(2 end3)
- x4=nthelem(1 end3)
-
- m=((x2-x1)*(x4-x3)+(y2-y1)*(y4-y3))/(sqrt(expt((x2-x1) 2)+expt((y2-y1) 2))*sqrt(expt((x4-x3) 2)+expt((y4-y3) 2)))
-
- if(((cos(3.1415926*91/180)<m)&&(m<cos(3.1415926*89/180)))&&(len2<wid2)
-
- then
- axlHighlightObject(seg1 nil)
- axlHighlightObject(seg2 nil)
- axlHighlightObject(seg3 nil)
- layers=seg2->layer
- alllist2=append1(alllist2 list(layers end1))
-
- c2++)
- ))
- );endforeach
-
- axlFormSetField(form_angle , "total_count" ,c2)
- axlFormSetField(form_angle , "nonce" ,i)
- axlClearSelSet()
- );ENDPROG
- );ENDprocedure
复制代码 |
|