用其他线型替换线型
我有一个巨大的DWG文件,在创建过程中发生了一些奇怪的事情。线型,如
“$0$$0$ACAD\U ISO3W100”
“$0$$0$ACAD_ISO7W100”
“$0$$0$隐藏”
“$0$ACAD_ISO3W100”
“$0$ACAD_ISO7W100”
“$0$ACAD_ISO10W100”
“$0$CENTER”
“$0$DOT”
“$0$隐藏”
“$0$ZIGZAG”
出现在区块中。
我需要将它们更改为普通命名的,前面没有0$blabla。
我真的不知道如何编写一个lisp,它将通过块并在任何对象属性中将例如“$0$ACAD\u ISO10W100”更改为“ACAD\u ISO10W100”。
救命啊! 顺便说一句,这还不是全部。同样的事情也发生在标注样式和文字样式上,所以我需要一个lisps来在绘图和嵌套块中从一种样式更改为另一种样式,并且不会丢失动态块功能。。。
这也发生在层上,但我能够将层合并到正常命名的层。 看起来像是绑定BINDTYPE设置为0的外部参照的结果 可能很多人都在做很多不开心的事情。。。现在我是把它带到oreder的人,但打开任何布局都需要3分钟,大约有100个布局。更不用说街区了。。。 顺便说一句,我发现lisp是这样的:
(defun c:clr2by (/ doc blks lays lokt new-ltype old-ltype)
;;convert all objects in a drawing to color=bylayer
;;by Jeff Mishler - updated 7/25/05 to handle dimension colors
;;updated 1/05/06 to affect Attributes and to change a specific linetype to another
;;Modified, Bob Shaw (ECCAD)..Added Lists of Linetypes to swap.
(vl-load-com)
;; List of Linetypes to swap..
(setq Old_lt_lst (list
"$$$bla_bla"
))
(setq New_lt_lst (list
"ZIGZAG"
))
;;
(setq doc (vla-get-activedocument (vlax-get-acad-object))
blks (vla-get-blocks doc)
lays (vla-get-layers doc)
;;;;old-ltype "OLD" ;;;;; change this to match your old ltype
;;;;new-ltype "NEW" ;;;;; change this to match your new ltype
)
(vlax-for lay lays
(if (eq (vla-get-lock lay) :vlax-true)
(progn
(setq lokt (cons lay lokt))
(vla-put-lock lay :vlax-false)
)
)
)
(vlax-for blk blks
(vlax-for ent blk
(mapcar '(lambda (x)
(if (vlax-property-available-p ent x)
(vlax-put ent x 256)
)
)
(list "Color" "DimensionLineColor" "ExtensionLineColor" "TextColor")
)
(if (and (vlax-property-available-p ent 'hasattributes)
(eq (vla-get-hasattributes ent) :vlax-true)
)
(foreach att (vlax-invoke ent 'getattributes)
(vla-put-color att 256)
)
)
;;
(setq n 0)
(repeat (length Old_lt_lst)
(setq Olt (nth n Old_lt_lst))
(setq Nlt (nth n New_lt_lst))
(if (and (eq (vla-get-linetype ent) Olt)
(tblsearch "LTYPE" Nlt))
(vla-put-linetype ent Nlt)
)
(setq n (+ n 1))
); repeat
;;
)
)
(if lokt
(mapcar '(lambda (x)
(vla-put-lock x :vlax-true)
)
lokt
)
)
(princ)
)
(c:clr2by); and run it.
但它也;将图形中的所有对象转换为颜色=bylayer,我不想这样做。 尝试以下快速编写的代码:
(defun c:fixlt ( / n )
(vlax-for b (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
(if (and
(= :vlax-false (vla-get-islayout b))
(= :vlax-false (vla-get-isxref b))
)
(vlax-for o b
(if (and
(wcmatch (setq n (vla-get-linetype o)) "*$*")
(setq n (substr n (+ 2 (vl-string-position 36 n 0 t))))
(tblsearch "LTYPE" n)
)
(vl-catch-all-apply 'vla-put-linetype (list o n))
)
)
)
)
(princ)
)
(vl-load-com) (princ) 虽然我不理解,但我会的。
工作工作需要时间。。。同时感谢你的帮助。。。仍在工作。。。 伙计,你写的水壶在10种线型上都能用,但“0$ZIGZAG”仍然存在。我认为这是因为它没有加载。我试着装一下。 现在做了什么?你能简单解释一下吗?
是的,Z字形装载成功了!
现在所有线型都正常了。谢谢您!!!
标注样式和文字样式仍然是一个问题。
页:
[1]
2