车门口齿不清
你好我想通过Lisp添加门。
我想自动添加一些像附上的图片(黄色门块)。
提前感谢
Santo 块是否将插入任何特定层?如果是这样,该层是否存在或必须创建?你们有多少种不同的门挡?是否需要缩放块?街区在哪里?
你有没有想过创建一个工具选项板并用最常用的块填充它?然后可以拖放块,而不是通过lisp程序插入。 我只有一个门框,每次都会对其进行缩放/定位。图层位于dwg块上
这是一个持续的耗时过程。
我想要一些类似于:
第一次点击:在门的开始处
第二次点击:门的末端
第三次单击:方向
方块贴在这根柱子上
[附件]59979 一个街区?将其放在工具选项板上。最简单、最快速的解决方案。 是的,我在工具选项板上有。问题是我每次都要对它进行缩放和定位 你的图纸是按全尺寸绘制的,还是像在绘图板上那样按比例绘制的?
顺便提一下您上面的附件无效(即-不好)。 满标度。bit门的开度/方向不同,每次我都需要调整挡块。
门图纸 日常练习:
; Block on Line, Grrr
(defun C:test ;| credits to: Lee Mac |; ( / b bn p e )
(setvar 'errno 0)
(while (/= 52 (getvar 'errno))
(setq b (car (entsel "\nSelect block to reinsert <exit>: ")))
(cond
( (= 7 (getvar 'errno))
(princ "\nMissed, try again.") (setvar 'errno 0)
)
( (and (= 'ENAME (type b)) (/= (cdr (assoc 0 (entget b))) "INSERT"))
(princ "\nThis is not a block.") (setq b nil)
)
(b
(setq bn (vla-get-EffectiveName (vlax-ename->vla-object b)))
(while (/= 52 (getvar 'errno))
(and
(setq p (getpoint "\nSelect a line to insert on it: <exit>"))
(setq e (car (nentselp p)))
)
(cond
((not p)
(setvar 'errno 52)
)
((not e)
(princ "\nMissed, try again.")
)
(
(and p
(vl-catch-all-error-p
(vl-catch-all-apply 'vlax-curve-getFirstDeriv
(list e (vl-catch-all-apply 'vlax-curve-getParamAtPoint (list e p))))
)
)
(princ "\nThis object is not a curve.")
)
(T
(and bn p e
(vla-InsertBlock
(vlax-get-property
(vla-get-ActiveDocument (vlax-get-acad-object))
(if (= 1 (getvar 'CVPORT)) 'Paperspace 'Modelspace)
) ; AcSpc
(vlax-3D-point p)
bn
1.
1.
1.
(alg-ang e p)
)
(setvar 'errno 52)
)
)
)
)
)
(T nil)
); cond
); while
(princ)
);| defun |; (vl-load-com) (princ)
; BIGAL's example of "vlax-curve-getFirstDeriv" usage:
(defun alg-ang (obj pnt)
(angle '(0. 0. 0.) (vlax-curve-getFirstDeriv obj (vlax-curve-getParamAtPoint obj pnt)) )
); defun
此lisp仅用于方向,不用于缩放。对我来说没有帮助。
附件I添加了block whit参数的新版本
旋转-缩放-翻转
door_智能。图纸 您知道align命令吗?
它只需要4分,输入“是”或“否”即可。
页:
[1]
2