5 Aces Down 发表于 2022-7-5 16:43:43

分层

大家好。
我有这些代码是由Grrr编写的。它所做的是获取相互叠加的层,并通过使用增量将其相邻放置来将其分离。提示最终用户选择对象、方向和增量值。在整个增量过程中,仅复制第3行中指示的层“帧”,因此沿每个分离的层出现。
所有其他层彼此相邻显示一次。我想添加第二层,用层“frame”沿增量进行复制,但我一直遇到“参数太多”错误。谁能帮帮我吗?谢谢
 
 
 
 
; 按层设置的间距选择
(定义C:测试(/lnm SS b L p acDoc Lyrs ln d ln ll ur pl)
(setq lnm“帧”);
(续)
((not(和(setq SS(ssget“_:L-I”))(princ“\n按对象的层选择空间:”))
(princ“\n未选择任何内容。”)
)
(
(不是
(程序
(vlax代表o(setq SS(vla get ActiveSelectionSet(vla get ActiveDocument(vlax get acad object)))
(if(not(vl-catch-all-error-p(vl-catch-all-apply'vla GetBoundingBox(list o'll'ur)))
(setq b(附加b(mapcar’vlax safearray->list(list ll ur)))
)
(setq L(cons(list(vla get Layer o)o)L))
); vlax for
(vla删除SS)
(和
(或
(和b(setq b(mapcar’(λ(a b)(/(+a b)2))(应用“mapcar(cons”min b))(应用“mapcar(cons”max b 1000;)Ϩ)
(setq b(getpoint“\n指定基点:”)
)
(setq p(getpoint b“\n指定方向和间距:”)
)
); 程序
); 不
(princ“\n未指定位置。”)
)
(p
(setq acDoc(vla get ActiveDocument(vlax get acad object)))
(vla EndUndoMark acDoc)(vla StartUndoMark acDoc)
(mapcar’(lambda(x)(cond((member x Lyrs))((setq Lyrs(cons x Lyrs)Ю)Ю))(mapcar‘car L))
(
(λ(x)
(和acDoc(tblsearch“LAYER”x)(成员lnm Lyrs)(等式(vla get Lock(vla item(vla get Layers acDoc)x)):vlax false)(setq ln x))
)
lnm公司
)
(地图车
'(λ(x)
(续)
(d(setq d(+d(距离b p)))
((setq d(距离b p)))
)
(地图车
'(λ(o)
(如果(=x(车o))
(程序
(应用“vla Move(append(list(cadr o))(setq pl(mapcar”vlax-3D-point(list)(0.0.0))(极坐标'(0.0.0。)(角度b p)d \щщ)щ)
(if ln(mapcar’(lambda(fr/c)(if(=(car fr)ln)(progn(setq c(vla Copy(cadr fr))))(应用“vla Move(append(list c)pl 990;ϞϞ)])L))
)
)
)
L
)
)
(vl remove ln(acad\U strlsort Lyrs))
)
(vla EndUndoMark acDoc)
)
); 康德
(普林斯)
); 德芬
(vl load com)(原理)

Grrr 发表于 2022-7-5 17:30:56

替换:
 
(defun C:test ( / lnm SS b L p acDoc Lyrs ln d ln ll ur pl )
使用:
(defun C:test ( / lnms SS b L p acDoc Lyrs d ll ur pl )
 
 
(setq lnm "frame") ; <- Adjust the layer name here, to copy along the increment=
(setq lnms '("frame" "anotherlayer")) ; <- Adjust the layer names here, to copy along the increment

SLW210 发表于 2022-7-5 17:50:19

页: [1]
查看完整版本: 分层