使用Lisp插入块。。。帮助
你好我已经离开cad生活一段时间了,我一直在用lisp。现在我甚至不能做一个常规动作。我有一个块(钢楼梯踏板和踢板),我想插入使用lisp。我正在尝试插入它,并根据用户输入,更改踢板高度,然后将其排列在选定的楼层高度之间。谁能或谁会花一点时间来帮忙?谢谢 有几个帖子处理积木
搜索这个网站,你会找到一些帮助你的 查看下面的“相似线程” 仍然有困难,但我会坚持下去。
把你目前掌握的代码发出来,雪佛兰。 这是一个来自下面类似线程的拼凑代码,我还记得我想从块上的两个点(插入,复制到点)复制它,但我想帮助的最大的事情是设置用户输入以更改踢板高度(通过更改块引用,我猜),然后插入和复制。
(defun c:str (/ bNme i ss ent)
(command "divide" (entsel"\ Select slope=")(getint "\How many treads??="))
(command "point" (getpoint "\ Pick starting point="))
(setq bNme (getstring 1 "\nRiser _X" '((0 . "POINT"))))
(while (setq ent (ssname ss (setq i (1+ i))))
(entmake (list (cons 0 "INSERT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbBlockReference")
(cons 2 bNme)
(assoc 10 (entget ent))))))
(princ)) ::我所了解的:
您希望在某个点插入一个块,并可能根据用户输入修改所述块。
然后,您需要一个动态块,因为修改非动态块引用会更改所述块的*所有*实例。除非“修改”是指更改属性值?
::我不明白的是:
使用entsel(可能是一条线)选择什么实体类型?
当您只创建了一个点时,(ssget“_x”'((0。“点”))选择*所有*点时,图形中有多少个点。
那么冒口高度是块的名称?
如果要(assoc 10(entget ent)),为什么要在(getpoint)处插入点实体?
是否保留在图形中创建的点?相反,为什么不简单地将点存储到变量(setq pt(getpoint))和(cons 10 pt)? 看起来您正试图沿着选定的线分割指定的块。Divide已经具有此功能。
如。
Command: DIV
DIVIDE
Select object to divide:
Enter the number of segments or : B
Enter name of block to insert: P6
Align block with object? <Y>:
Enter the number of segments: 5 只是好奇
你必须用积木吗?
你能让它只画出你需要的东西吗?看起来它更容易参数化
我不确定这是否会有帮助,但丹·E·托马斯的这个节目很酷。
命令语法:楼梯
楼梯Lsp
页:
[1]
2