更改线型
是否有一种简单的方法(可能是LISP)全局更改线型设置为“Bylayer”的对象,并将线型更改为该图层的实际线型?(defun c:CLT () (c:ChangeLinetypes))
(defun c:ChangeLinetypes (/ ss layerItem lineType)
(princ "CHANGE LINETYPES")
(vl-load-com)
(if
(and (setq eName (car (entsel "\nSelect object on desired layer: ")))
(setq ss
(ssget "_x"
(list (setq layerName (assoc 8 (entget eName)))))))
(if (and (setq layerItem
(vla-item (vla-get-layers
(cond (*activeDoc*)
((setq *activeDoc*
(vla-get-activedocument
(vlax-get-acad-object))))))
(vla-get-layer (vlax-ename->vla-object eName))))
(= :vlax-false (vla-get-lock layerItem)))
(progn
(vla-startundomark *activeDoc*)
(vlax-for x (setq ss (vla-get-activeselectionset *activeDoc*))
(vla-put-linetype
x
(cond (lineType)
((setq lineType (vla-get-linetype layerItem))))))
(vla-delete ss)
(vla-endundomark *activeDoc*))
(prompt "** Layer is locked ** "))
(prompt "\n** Nothing selected ** "))
(princ))
我不太明白你的要求。如果对象的线型已设置为“BYLAYER”,则无需对其进行更改。也许我读得不对,但伦德曼似乎很在行。
我同意你的观点;但我很无聊,所以我很快就写了。英雄联盟
干杯 我非常欣赏LISP RenderMan!我今天要试一试。
有足够的理由从“Bylayer”更改线型。当我清理进入的建筑文件时,我会把它们的500层缩小到我自己的6层。在将所有线型设置为“Bylayer”的情况下,我希望它与原来的一样。例如,它们可能有3个不同的家具层,其中1个有隐藏的线型,其他两个没有。我将所有这些放在我的1层上,但希望每个对象保持其线型,而不是成为我的Bylayer。
有道理?
我发布的代码最初会提示用户选择一个对象,并导致修改该层上的所有对象。但是,我的理解正确吗?您希望打开一个外部图形,并简单地修改该图形中的所有对象(意味着所有层)?
*如果是这样,那么我可以改进我发布的代码,不再提示您(用户)一次选择一个层,相反,它(代码)将自动为所有对象(即所有层)按顺序执行此过程。。。你的选择。 是的,我注意到了你的代码。我有一个类似的代码,我运行每个选择改变层(我的不是可视化的,只是为我模仿了LISP)。我想我希望更改线型是一个全局过程,我可以在整个图形中运行。。。。我本来不想用它来打扰你,今天我打算玩一玩,但如果你不忙也不介意的话:D
非常感谢。
别担心;我们都从某个地方开始。
... 我这么认为;我很快就会发回修改后的代码。 又是一个缓慢的一天。。。如果我踩了你的脚,我道歉,马特。
解锁图层是您的责任:眨眼:
我不确定我什么时候能完成当前的任务;谢谢艾伦。
单独(和离线?),你不想和我分享任何指针来帮助我的“领航员”t交叉路口,是吗?
(^^你知道,因为你很慢,而且^^)
我认为这是一个谨慎的步骤;一个我也应该采用的(特别是对于论坛代码)。
页:
[1]
2