按线型冻结?-VBA
大家好。我有一个梦想。。。。。我希望遍历dwg中的所有对象(显示的对象),选择“按线型”,然后冻结(或不显示)具有该线型的对象。特别是即使它们位于块参照中。。。。。我能把它们的线型改成“空白”线型吗? 嗯,仅在某些情况下。。。。。。。
思想? 我不知道如何在VBA中执行此操作,但有一种使用AutoLISP执行此操作的方法:
(setq ss1 (ssget "x" (list (cons (6 LINETYPENAME))))
(setq ent-index 0)
(repeat (sslength ss1)
(setq entname (ssname ss1 ent-index))
(setq entlist (entget entname))
(if (assoc 60 entlist)
(setq entlist (subst '(60 . 1) (assoc 60 entlist) entlist))
(setq entlist (append entlist '((60 . 1)))))
(entmod entlist)
(setq ent-index (1+ ent-index))
) Uddfl,将跳过线型设置为“bylayer”的图元。。。
只是一个想法。。 啊,还有一件事-注意超过32767个元素的选择集。。。重复方法对这些不起作用。。。 嗯,我刚刚扔了一个又便宜又脏的。我不太想打字(是的,星期五)。
六羟甲基三聚氰胺六甲醚。。。是的。你如何解决这些问题?WHILE函数? 检查这个-
需要考虑所有情况。。。
[列表]
[*]在具有所需线型的图层上,对象线型设置为bylayer(需要这些…)
[*]在具有所需线型的图层上,对象线型设置为不同的值(去掉这些..)
[*]不在具有所需线型的图层上,但对象设置为所需线型。(需要这些…)
这不是一项容易的任务。。。 如果您不想将选择集转换为实体名称列表,可以使用类似这样的方法来迭代ss:
2
我知道一个愚蠢的例子,但我只是想告诉你这个想法 ^你作弊了,你使用了vl函数!
实际上,这是一个很好的了解方法。谢谢 哈哈。。。如果没有vl函数,我可能可以做到这一点,但这需要大量的编码
使用ssnamex将其放入列表是很好的,因为不需要在集合中乱序,这是一种繁琐的方法-您可以使用LISP的目的:列表。
因此,您可以使用所有列表函数,例如foreach、mapcar。。等等等等。
希望这有帮助
李 在这一切之后,我们甚至没有像OP想要的那样使用VBA
页:
[1]