xieeyawen 发表于 2025-3-11 17:41:18

chuchiwolong 发表于 2014-11-17 10:28
case(lineDbid->objType
                ("path"
                        ; println("path")


可以给修改好的全码吗

xieeyawen 发表于 2025-3-11 18:50:01

如果把line变到走线层,比如TOP/ETCH层,这时候再把这个线改到其他层就不行了,因为它从line变成为clines啦,请问要怎么优化程序?

xieeyawen 发表于 2025-3-12 17:29:34

本帖最后由 xieeyawen 于 2025-3-12 17:34 编辑

chuchiwolong 发表于 2014-11-17 10:28
case(lineDbid->objType
                ("path"
                        ; println("path")

defun( Line_Change_Layer (lineDbid lineLayer)
case(lineDbid->objType
                ("path"            ;path refers to cline/line,所以后面能用case判断是line,cline还是arc
                        ; println("path")
                        ;endPoint = cadr(nthelem(lineDbid->nSegs lineDbid->segments)->startEnd)
                        ;startPoint = car(car(lineDbid->segments)->startEnd)
                        linePath = axlPathStart(list(car(car(lineDbid->segments)->startEnd)))
                        foreach(temp lineDbid->segments
                              case(temp->objType
                                        ("line"
                                                axlPathLine(linePath temp->width cadr(temp->startEnd))
                                                )
                                        ("cline"
                                                axlPathLine(linePath temp->width cadr(temp->startEnd))
                                                )
                                        ("arc"
                                                axlPathArcCenter(linePath temp->width cadr(temp->startEnd) temp->isClockwise temp->xy)
                                                )
                                        (t
                                                printf("Path Type is Unknown!\n")
                                                )
                              );end case                     
                        )
                        axlDBCreatePath(linePath lineLayer 'line)
/*
;axlDBCreatePath(linePath lineLayer 'line)
axlPath函数创建的现有线路径linePath
lineLayer为创建路径图形的图层,为活动的层
‘line    Changes default path created on an etch layer from a cline to a line.在etch层上创建的默认路径从cline更改为line。
该程序表示现有路径linePath上的cline更改为到lineLayer层的line。
*/
                )
                ("text"
                        ; println("text")
                        Ori_XY=lineDbid->xy
                        Ori_textBlock=lineDbid->textBlock
                        Ori_rotation=lineDbid->rotation
                        Ori_isMirrored=lineDbid->isMirrored
                        Ori_justify=lineDbid->justify
                     
                        myorient = make_axlTextOrientation(?textBlock Ori_textBlock, ?rotation Ori_rotation, ?mirrored Ori_isMirrored, ?justify Ori_justify)
                     
                        newText= axlDBCreateText(lineDbid->text Ori_XYmyorient lineLayer nil)                     
                )
      )      
      axlDeleteObject(lineDbid)
      axlDBCreatePath(linePath lineLayer 'line)
      ;axlDehighlightObject(axlChangeWidth(car(axlDBCreatePath(linePath a_Layer 'line)) abs(a_Expands)))
);end procedure我把你的代码优化了一下,增加了把etch层走线也能变层啦
前面的选择程序也要改掉
axlSetFindFilter( ?enabled list("noall" "lines" "Clines" "Text") ?onButtons list("noall" "lines" "Clines" "Text"))

ter8100 发表于 2025-4-17 09:47:17

看看,希望不错

jason_oneyear 发表于 2025-5-23 10:35:02

6666666666666666

Elaine 发表于 2026-3-24 17:30:58


感谢分享,谢谢楼主,下下来看看

xfcy 发表于 2026-8-15 19:59:28

chongxinxiazai

ccc123456 发表于 2026-9-7 17:01:09

支持楼主,这个不错
页: 33 34 35 36 37 38 39 40 41 42 [43]
查看完整版本: 改变Line的层面Change Line Layer