[需要口齿不清]放置所有对象
大家好,我需要一个lisp来执行以下操作:
将图形中所有颜色相同的对象(直线、多段线、图案填充、圆弧等)放置在单独的图层上。
如果没有,你能告诉我怎么手动操作吗。。。。。
问题是,我有巨大的建筑图纸需要导出到3D程序。。。。。。并非所有对象都设置为“按层”。。。。。这样就更清楚了。
当做 不确定这是否有帮助,如果MEP以手动方式支持,则可以选择使用过滤器颜色作为Autocad答案。
我不知道如何使用filter命令。。。。。。我有这张图:
有些对象属性是“按层”设置的,有些是覆盖的。。。。。
在这种情况下,如何使用filter命令?
实例图纸 (setq xcol "1")
(setq xlay "NEW")
(defun c:test(/ cnt xset ent enlist)
(defun FilterClrNumbX(xset valu)
(setq valu(atoi valu) layerList(list))
(setq tbl(tblnext "LAYER" T))
(if(= valu (cdr(assoc 62 tbl)))
(setq layerList(append layerList (list (cdr(assoc 2 tbl)))))
)
(while(setq tbl(tblnext "LAYER"))
(if(= valu (cdr(assoc 62 tbl)))
(setq layerList(append layerList (list (cdr(assoc 2 tbl)))))
)
)
(setq cnt 0 newSet(ssadd))
(while(< cnt (sslength xset))
(setq ent(ssname xset cnt))
(setq enlist(entget ent))
(if (assoc 62 enlist)
(if(= valu (cdr(assoc 62 enlist)))
(ssadd ent newSet)
)
(if(member (cdr(assoc 8 enlist)) layerList)
(ssadd ent newSet)
)
)
(setq cnt(+ cnt 1))
)
newSet
)
(setvar "cmdecho" 0)
(setq xcoll (getstring (strcat "\nEnter Color Numer, <" xcol ">: ")))
(if (= 1lay "")
(setq xcoll xcol)
(setq xcol xcoll)
)
(setq 1lay (getstring (strcat "\nEnter Layer Name, <" xlay ">: ")))
(if (= 1lay "")
(setq 1lay xlay)
(setq xlay 1lay)
)
(setq xset
(ssget"X"
(list
(cons -4 "<OR")
(cons 0 "ARC")
(cons 0 "CIRCLE")
(cons 0 "ELLIPSE")
(cons 0 "IMAGE")
(cons 0 "INSERT")
(cons 0 "LINE")
(cons 0 "LWPOLYLINE")
(cons 0 "MLINE")
(cons 0 "MTEXT")
(cons 0 "POINT")
(cons 0 "POLYLINE")
(cons 0 "SOLID")
(cons 0 "TEXT")
(cons 0 "TRACE")
(cons 0 "XLINE")
(cons -4 "OR>")
)
)
)
(if(and xset(> (sslength xset) 0))(setq xset(FilterClrNumbX xset xcol)))
(if (and xset (> (sslength xset) 0))
(progn
(command "-layer" "new" xlay "")
(command "change" xset "" "Properties" "LAyer" xlay "")
)
)
(setvar "cmdecho" 1)
(princ)
)
(princ "\n Type test")
(princ)
试试这个,我的朋友,让我们知道。干杯 一条较短的路
你可以写以下几行:
(if (and xset (> (sslength xset) 0))
(setq xset (FilterClrNumbX xset xcol))
)
(if (and xset (> (sslength xset) 0))
(progn
(command "-layer" "new" xlay "")
(command "change" xset "" "Properties" "LAyer" xlay "")
)
)
缩写为:
问候
沃尔夫冈
谢谢你的回复,但请原谅,我对lisp的了解非常有限,如何执行这个lisp?
我把它复制到一个记事本文件中,保存到。lsp格式,在Autocad中运行,按说明键入命令“test”。。。。。然后呢?
也许我没有说清楚。。。
获取图形中的所有对象。。。。(所有内容、直线、多段线、图案填充、圆弧等)。。。。。按其真实颜色(显示在屏幕上)对其进行排序,并将其移动到不同的层。。。。i、 e.屏幕上显示为红色的所有对象,移动到新层。。。。。。。图层上所有颜色为灰色的对象。。。
老实说,我发现一个lisp可以做到这一点,但它不稳定,我必须执行几次,然后它就工作了,它在块上不工作,所以我必须先分解它们。。。。。它叫Col2lay
col2lay。拉链
页:
[1]