从块中删除图案填充
早上好,是lisp或某些代码,用于从图形中的每个块中删除图案填充。与我合作的超市连锁店在不同的项目上一遍又一遍地使用相同的区块,但大多数区块上都有一个阴影,这干扰了我的阶段图。
我曾尝试冻结/关闭图层,但由于他们没有使用图层智能设置块,因此无法工作。
我不担心丢失这些块中包含的信息,因为我正在为建造者制作仅以PDF格式发布的CAD文件。我不想炸掉这些积木!
期待您的评论 请不要重复张贴。试着表现出一些耐心。我们都只是这里的志愿者。非常感谢。 试试这个。。
(vl-load-com)
(defun c:Test (/ b o)
;;--- Tharwat 26.June.2013 ---;;
(or doc
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(vlax-for b
(vla-get-blocks
doc
)
(if
(and
(eq :vlax-false (vla-get-isLayout b))
(eq :vlax-false (vla-get-isXref b))
)
(vlax-for o b
(if (eq "AcDbHatch" (vla-get-objectname o))
(vl-catch-all-apply 'vla-delete (list o))
)
)
)
)
(vla-regen doc acAllViewports)
(princ)
)
如果它们是在不同图形中多次使用的相同块,则只需修改每个块的一个实例,即使用BEDIT或Tharwat代码进行行为。然后在单个“主”图形中修改所有必要的块后,您可以使用设计中心重新定义任何当前图形中的块。 塔尔瓦特,
我终于有5分钟的时间来看看你的代码;它工作得很好,非常感谢,除了一件事,你可以修改代码,使其只适用于选定的项目,而不是整个绘图。我们现在使用了许多包含渐变填充/图案填充的块,我不想从中删除图案填充。
期待您的来信
再次感谢Stenna
试试这个。。。
(vl-load-com)
(defun c:Test (/ ss i sn name bd l)
;; Tharwat 18. Sep. 2013 ;;
(or acdoc
(setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
)
(if (setq ss (ssget "_:L" '((0 . "INSERT"))))
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(if (not
(member (setq name (cdr (assoc 2 (entget sn)))) l)
)
(progn
(setq l (cons name l))
(vlax-for x (setq bd
(vla-item (vla-get-blocks acdoc)
name
)
)
(if
(and (eq :vlax-false (vla-get-isxref bd))
(eq (vla-get-objectname x) "AcDbHatch")
)
(vl-catch-all-apply 'vla-delete (list x))
)
)
)
)
)
(princ)
)
(if ss
(vla-regen acdoc acAllViewports)
)
(princ)
)
你是否还有五分钟的时间来阅读代码? 在过去的五分钟里,我第一次使用它,它的效果非常好。。。。。超级编码
非常感谢
很高兴终于听到了 今晚你为我节省了大约2个小时的编辑时间。非常感谢
页:
[1]
2