请帮助开始
大家好编写lisp代码非常新。
请帮我走。
我试着编写代码,一次将小块复制/粘贴到垂直线的末端。(不同层上的小方块)节省时间,无需每次粘贴。有很多线,它们之间的尺寸和长度都不一样!
图片中,一排栅栏柱子点缀在任何地方,想把盒子固定在柱子的顶部。
最好有一个偏移量,并且能够选择要复制/粘贴的行。
有人能帮上忙吗?有人看过能做到这一点的代码吗?
干杯
做记号 这不考虑任何层次的东西。它只使用当前层并假设WCS插入。此外,它只查找线条。没有普林斯-大卫
(defun c:lend2ins (/ bn ss i en ed p10 p11)
;;;FORCE BLOCK TABLE
(defun SetBlkTF (n)
(cond ((not (snvalid n))
(princ "\nInvalid Block Name - " n)
(setq n nil))
((tblsearch "BLOCK" n))
((findfile (strcat n ".DWG"))
(command "_.INSERT" n)
(command))
(T
(entmake (list (cons 0 "BLOCK")(cons 2 n)(cons 10 (list 0 0 0))(cons 70 0)))
(entmake (list (cons 0 "TEXT")
(cons 1 (strcat "BLOCK PLACECARD - " n))
(cons 7 (cdr (assoc 2 (tblnext "STYLE" T))))
(cons 8 "0")
(cons 10 (list 0 0 0))
(cons 11 (list 0 0 0))
(cons 40 (max 1 (getvar "TEXTSIZE")))
(cons 72 4)))
(entmake (list (cons 0 "ENDBLK")(cons 8 "0")))))
n)
(while (or (not bn)
(not (SetBlkTF bn)))
(setq bn (getstring "\nBLOCK To INSERT: ")))
(while (not ss)
(princ "\nSelect Lines To INSERT BLOCK To: ")
(setq ss (ssget (list (cons 0 "LINE")
(if (getvar "CTAB")
(cons 410 (getvar "CTAB"))
(cons 67 (- 1 (getvar "TILEMODE"))))))))
(setq i (sslength ss))
(while (not (minusp (setq i (1- i))))
(setq en (ssname ss i)
ed (entget en )
p10 (cdr (assoc 10 ed))
p11 (cdr (assoc 11 ed)))
(entmake (list (cons 0 "INSERT")(cons 2 bn)(cons 10 p10)
'(39 . 0)'(6 . "BYLAYER")'(62 . 256)))
(entmake (list (cons 0 "INSERT")(cons 2 bn)(cons 10 p11)
'(39 . 0)'(6 . "BYLAYER")'(62 . 256))))
(prin1))
非常感谢大卫,这非常适合我想要做的事情。
干杯,马克 不客气。这是对我已经设置了摄像机视图的程序的一个轻微修改-大卫。
页:
[1]