con 发表于 2022-7-5 15:46:50

Lisp用于插入4个块wi

你好
 
提前感谢您的阅读和帮助。
 
我想用下面的方法制作一个lisp(autocad)来插入4个块。
 
https://image.ibb.co/iynhk6/LISP_OR_DYNBLOCK.png
https://image.ibb.co/iynhk6/LISP_OR_DYNBLOCK.png
 
蓝点是我将选择的点。
红点是块插入点。
 
 
 
它不一定是一个工作的lisp,只要一些有用的lisp代码也会很好。再次感谢!

Aftertouch 发表于 2022-7-5 16:10:56

我没有时间帮你写完整的代码,
 
但起初glace看起来像是
 
(getpoint)
(命令“_insert”“blockname”“S”“1”“”“”)
其中XY可以通过以下方式操作:
 

(setq test (getpoint))
(setq newtest (mapcar '+ test (list 1.000 1.000 0.000) ;change x y z by given mapcar values.

 
并使用newtest作为块的插入点

David Bethel 发表于 2022-7-5 16:17:01

你调查过明瑟斯特吗?
 
-大卫

con 发表于 2022-7-5 16:34:42

我已经研究了Minsert,但需要分解块以进行blockcount。
此外,它只允许插入一个块。
 
感谢您的回复!
我想自己写点东西,但我是个新手

Aftertouch 发表于 2022-7-5 16:52:28

要开始,请执行以下操作:

(defun C:CADTUTOR ( / )
(initget (+ 1))
(setq inspt (getpoint "\nSelect insertionpoint for first block: "))
(initget (+ 1 2 4))
(setq offpt (+ 0.12 (getreal "\nOffset distance for secondblock: ")))
(if (and (/= inspt nil) (/= offpt nil))
        (progn
                (command "-INSERT" "BlockA" "S" "1" (mapcar '+ inspt (list 0.000        0.000        0.000)) "0")
                (command "-INSERT" "BlockA" "S" "1" (mapcar '+ inspt (list 0.000        offpt        0.000)) "0")
                (command "-INSERT" "BlockB" "S" "1" (mapcar '+ inspt (list 0.025        (/ (- offpt 0.12) 2)        0.000)) "0")
                (command "-INSERT" "BlockB" "S" "1" (mapcar '+ inspt (list 0.975        (/ (- offpt 0.12) 2)        0.000)) "0")
        )
        (progn
                (princ "Missing variables...")
        )
)
(princ)
)
 
红色部分为1m-0.025 cm。。。假设你的方块长1米,宽12厘米?
页: [1]
查看完整版本: Lisp用于插入4个块wi