Chevy 发表于 2022-7-6 10:22:22

使用Lisp插入块。。。帮助

你好
 
我已经离开cad生活一段时间了,我一直在用lisp。现在我甚至不能做一个常规动作。我有一个块(钢楼梯踏板和踢板),我想插入使用lisp。我正在尝试插入它,并根据用户输入,更改踢板高度,然后将其排列在选定的楼层高度之间。谁能或谁会花一点时间来帮忙?谢谢

JohnM 发表于 2022-7-6 10:26:47

有几个帖子处理积木
搜索这个网站,你会找到一些帮助你的

lpseifert 发表于 2022-7-6 10:31:24

查看下面的“相似线程”

Chevy 发表于 2022-7-6 10:33:22

仍然有困难,但我会坚持下去。

BlackBox 发表于 2022-7-6 10:35:58

 
把你目前掌握的代码发出来,雪佛兰。

Chevy 发表于 2022-7-6 10:40:42

这是一个来自下面类似线程的拼凑代码,我还记得我想从块上的两个点(插入,复制到点)复制它,但我想帮助的最大的事情是设置用户输入以更改踢板高度(通过更改块引用,我猜),然后插入和复制。
 
(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))

BlackBox 发表于 2022-7-6 10:41:45

::我所了解的:
 
您希望在某个点插入一个块,并可能根据用户输入修改所述块。
 
然后,您需要一个动态块,因为修改非动态块引用会更改所述块的*所有*实例。除非“修改”是指更改属性值?
 
::我不明白的是:
 
使用entsel(可能是一条线)选择什么实体类型?
 
当您只创建了一个点时,(ssget“_x”'((0。“点”))选择*所有*点时,图形中有多少个点。
 
那么冒口高度是块的名称?
 
如果要(assoc 10(entget ent)),为什么要在(getpoint)处插入点实体?
是否保留在图形中创建的点?相反,为什么不简单地将点存储到变量(setq pt(getpoint))和(cons 10 pt)?

alanjt 发表于 2022-7-6 10:44:52

看起来您正试图沿着选定的线分割指定的块。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

JohnM 发表于 2022-7-6 10:47:59

只是好奇
你必须用积木吗?
你能让它只画出你需要的东西吗?看起来它更容易参数化

The Buzzard 发表于 2022-7-6 10:51:40

 
我不确定这是否会有帮助,但丹·E·托马斯的这个节目很酷。
命令语法:楼梯
楼梯Lsp
页: [1] 2
查看完整版本: 使用Lisp插入块。。。帮助