将块移动到其他层
你好是否有lisp可以根据属性值在其他层上放置块?
我有几个绘图块放在错误的图层上。这些块都有一个属性层。我可以从Excel(Autocad electrical)导入值。因此,他们可以在该属性中获得新的层名称。
谢谢
pmxcad 你的意思是属性值是层名称本身吗?如果有多个属性值,应该考虑哪个值?
如果图层名不存在于图形中怎么办?应该制作吗?(颜色、线宽和线型如何)。
当做 这是根据我认为可能是你的需要。如果没有,请用例行公事阐明你的目标。
(defun c:TesT (/ col ss i sset att value e)
;; Tharwat 05. Nov. 2011 ;;
(if
(setq col 1
ss(ssget "_x" '((0 . "INSERT") (66 . 1)))
)
(repeat (setq i (sslength ss))
(setq sset (ssname ss (setq i (1- i))))
(setq
att
(vlax-invoke (vlax-ename->vla-object sset) "Getattributes")
)
(foreach x att
(setq value (vla-get-textstring x))
(if (not (tblsearch "LAYER" value))
(entmakex (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 Value)
(cons 70 0)
(cons 62 col)
)
)
)
(setq col (1+ col))
)
(entmod
(subst (cons 8 value) (assoc 8 (setq e (entget sset))) e)
)
)
(princ)
)
(princ)
)
塔瓦特 我认为有一个特定的标记要搜索(比如标记名“LAYER”),并使用该属性的字符串值作为层名。否则,如果块具有多个属性,例如3,它将使用最后一个属性值作为层名称tharwat
(defun c:测试(/aDoc lyrs TagToSearch ss atb lynm)(vl load com)(setq aDoc(vla get ActiveDocument(vlax get acad object))lyrs(vla get layers aDoc))(setq TagToSearch“LAYER”); SuperRRRR。。。。。。。。pBe,塔尔瓦特。
效果很好。
谢谢
PmxCAD 不客气。
我真的很高兴它为你所需要的工作。
塔瓦特
页:
[1]