关闭门Autolisp
大家好,我想在auto cad中关闭一扇门。基本上我想在弧的中心和起点之间延伸一条线。但基本上,我正在尝试循环绘制一个图形,并对所有门(有很多!)执行此操作。我附上了一张照片,门是紫色的,我试图延伸的部分是蓝色的。如果我能让墙(红色)来做这个扩展,那就更好了。注意:圆弧和连接的紫色线不是一条实心多边形线,而是单独的实体(但它们位于同一层上),而墙(红色)是一个单独的层。谢谢
A.
如果我是你的话,我已经手动绘制了这条线-我的意思是-你是如何绘制门规格的-你肯定没有在墙开口之间使用自动插入。。。即使你们有门挡——但你们说它是直线和圆弧,你们可能必须根据墙的位置手动将它们定位在正确的方向上。。。所以我的建议-你没有数百万个门需要处理,只要画出那条线,在门的最后冻结层。。。 你好,马克,谢谢你的回复。
我实际上没有设计这些图纸,也不是建筑师或土木工程师。我对autocad和autolisp(基本工作熟练度)相当陌生,负责某些事情的自动化。这些线背后的想法是最终创建边界。我设法将我的平面布置图简化为前后平面布置图,并突出了差异。我无法手动绘制这些线的原因是,我不知道最终需要处理多少dwg文件,因此我正在寻找一种通用解决方案。
现在,我有三层破碎的墙,并试图通过90度角连接它们。一张图片可能更好地说明了这一点。
这就是我希望实现的目标。
[编辑:请不要担心文本,我已经删除了它。而且泛黄的圆形对象也不是什么大问题]
谢谢
A.
同意Marko的观点,如果我画了一扇门,我画了所有的门,包括门框,但我有一个lisp来做,它会问相关的问题,离门的边缘大小有多远,左,右,进/出,都做了。它受版权保护。
如果门是块,只需将该线条添加到另一层的块定义中即可。别介意,仔细阅读你的帖子。 Serach for door lisp我肯定有一些免费的,我的考虑了它插入的墙的智能。 你可以使用带有遮罩的动态块,然后你就不需要打破墙壁。 谢谢大家,我将尝试实施这些解决方案。
A. 张贴你的绘图样本,如果你需要代码来清理这些现有的计划,我有一个主意。 尝试关闭由“a\u DOOR\u FULL”层上的直线和圆弧组成的门。。看那张图,我首先推荐一些一致性
(defun c:foo (/ _get b c d s)
;; RJP » 2018-10-12
;; Closes doors on a common layer that consist of an arc and a line
(defun _get (e) (list (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e)))
(cond
;; Layer filter below '(8 . "A_DOOR_FULL")'
((setq s (ssget "_x" '((0 . "line,arc") (8 . "A_DOOR_FULL"))))
(foreach a (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
(if (= "LINE" (cdr (assoc 0 (entget a))))
(setq b (cons (_get a) b))
(setq c (cons (_get a) c))
)
)
(foreach p b
(cond
((setq d (vl-some '(lambda (x)
(if (or (equal (setq e (car p)) (car x) 1e-8)
(equal (setq e (car p)) (cadr x) 1e-8)
(equal (setq e (cadr p)) (car x) 1e-8)
(equal (setq e (cadr p)) (cadr x) 1e-8)
)
x
)
)
c
)
)
(setq d (vl-remove-if '(lambda (x) (equal e x 1e-8)) (append d p)))
(entmakex (list '(0 . "LINE") (cons 10 (car d)) (cons 11 (cadr d)) '(8 . "DoorClosed")))
)
)
)
)
)
(princ)
)
页:
[1]
2