按多重引线样式选择多重引线
我需要选择特定多重引线样式上的所有现有多重引线,并将其更改为其他多重引线样式。我已经创建了一个类似于dimension的代码,可以很好地作为示例。
________________________________________________________________
(setq dimstyle\u old(ssget“\u X”'((0“*维度”)(2。“dimstyle\u old”))
(命令“OPTCHPROP”dimstyle\u old““D”dimstyle\u new”)
________________________________________________________________
问题是:我找不到适用于多重引线的dxf组码。。。
非常感谢。
帕特里克 你好,帕特里克,
首先,欢迎来到CADTUTor。
其次,不幸的是,在ssget过滤器中无法使用Mleader样式,因此需要遍历选择集并收集与所需Mleader样式匹配的Mleader对象,然后在对象上执行任务。 由于添加了对象标注,并且多重引线对象的对象名称为多重引线,因此无法选择多重引线对象。
无论如何,看看下面的例程,将Mleader样式名称“Standard”更改为旧样式名称,并用新名称替换Mleader样式名称“MyStyle”。
我在这里张贴代码,因为这里很晚了,我需要睡觉了。
(defun c:test(/ sel int obj)
(if (setq sel (ssget "_:L" '((0 . "MULTILEADER"))))
(repeat (setq int (sslength sel))
(setq obj (vlax-ename->vla-object (ssname sel (setq int (1- int)))))
(if (eq (vla-get-stylename obj) "Standard")
(vla-put-stylename obj "MyStyle")
)
)
)
(princ)
)(vl-load-com)
快乐的编码。 一个简单的例子是,在命令行(entget(car(entsel))上直接键入这个命令,选择一个mleader或为vl使用dumpit。lsp这两种方法都可以很快找到关于对象的答案。它并不完美,但适用于大多数直接的Autocad对象。 如果不一定需要LISP,则可以通过QSELECT开箱即用并在“特性”选项板中更改样式来实现这一点。 firefox崩溃把帖子搞砸了。 (getvar 'SELECTSIMILARMODE)64是仅用于对象样式的值。
所以这可以写成下面这样的lisp。
问题是:
-运行命令时,selectsimilarmode不会保持不变
; All Objects by Filters
; Written 03/04/2017 by 3dwannab
; Some code from: http://www.cadforum.cz/cadforum_en/qaID.asp?tip=6365
(defun c:QS_OBJECT_ALL_BY_FILTERS ( /
*error*
ans
cmde
os
smode
ss
)
(defun *error* (errmsg)
(and acDoc (vla-EndUndoMark acDoc))
(and errmsg
(not (wcmatch (strcase errmsg) "*CANCEL*,*EXIT*"))
(princ (strcat "\n<< Error: " errmsg " >>"))
)
(setvar 'cmdecho cmde)
(setvar 'osmode os)
(setvar 'selectsimilarmode smode)
)
(setq acDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(or (vla-EndUndoMark acDoc) (vla-StartUndoMark acDoc))
(setq cmde (getvar 'cmdecho))
(setq os (getvar 'osmode))
(setq smode (getvar 'selectsimilarmode))
(setvar 'cmdecho 0)
(setvar 'osmode 0)
(initget "Colour Layer lineType linetypeScale lineWeight Plotstyle Objectstyle Name")
(setq ans (getkword "\nChoose Filter Type : <Layer>: "))
(if (not ans) (setq ans "Layer"))
(sssetfirst nil)
(cond
((="Colour" ans)
(setvar 'selectsimilarmode 1)
(princ "****")
)
((="Layer" ans)
(setvar 'selectsimilarmode 2)
)
((="lineType" ans)
(setvar 'selectsimilarmode 4)
)
((="linetypeScale" ans)
(setvar 'selectsimilarmode
)
((="lineWeight" ans)
(setvar 'selectsimilarmode 16)
)
((="Plotstyle" ans)
(setvar 'selectsimilarmode 32)
)
((="Objectstyle" ans)
(setvar 'selectsimilarmode 64)
)
((="Name" ans)
(setvar 'selectsimilarmode 128)
)
)
(if ans
(progn
(vl-cmdf "._selectsimilar" pause)
)
(prompt "\nNothing selected ")
)
(*error* nil)
(vl-load-com)
(princ)
)
页:
[1]