Mr.Q 发表于 2009-9-25 11:56:00

[求助])lisp以一个图层名称来做定义块名称怎么实现

<p>我需要将一个图形变成自定义命名块,我选中需要变成块的图形后程序会自动识别将PATTERN_NAME图层里面的文字内容名称直接转换成块的名称。谁能帮我修改下吗 </p><p>(defun c:bb (/ ss name pt)<br/>&nbsp; (princ "\n请选择对象:")<br/>&nbsp; (setq ss (ssget))<br/>&nbsp; (if (= ss nil)<br/>&nbsp;&nbsp;&nbsp; (exit))<br/>&nbsp; (setq name (entsel "\请选择文字:"))<br/>&nbsp; (if (= name nil)<br/>&nbsp;&nbsp;&nbsp; (setq name (getvar "cdate"))<br/>&nbsp;&nbsp;&nbsp; (setq name (cdr (assoc 1 (entget (car name))))))<br/>&nbsp; (setq pt (getpoint "\n请指定点:"))<br/>&nbsp; (if (= pt nil)<br/>&nbsp;&nbsp;&nbsp; (setq pt (list 0 0 0)))<br/>&nbsp; (command "block" name pt ss "")<br/>&nbsp; (command "insert" name "s" "1" pt "")<br/>&nbsp; (princ)<br/>&nbsp; )</p>

龙龙仔 发表于 2009-9-26 08:27:00

<p>;;==&gt;PATTERN_NAME圖層裏面的文字內容名稱直接轉換成塊的名稱<br/>;;以上看不太懂</p><p>(defun C:BB (/ SS NAME PT)<br/>&nbsp; (if (and (setq SS (ssget))<br/>&nbsp;&nbsp;&nbsp; (setq<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NAME<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr<br/>&nbsp;&nbsp;(assoc<br/>&nbsp;&nbsp;&nbsp; 1<br/>&nbsp;&nbsp;&nbsp; (entget (ssname (ssget "x" '((8 . "PATTERN_NAME"))) 0))<br/>&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq PT (getpoint "\n請指定點: "))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= PT NIL)<br/>&nbsp;(setq PT (list 0 0 0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "_.block" NAME "non" PT SS "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "_.insert" NAME "s" "1" "non" PT "")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)</p><p></p>

hbllw 发表于 2009-9-26 23:07:00

不能用,咋的,参数类型错误

白色微風1991 发表于 2022-11-22 07:36:57


;;==> ATTERN_NAME圖層裏面的文字內容名稱直接轉換成塊的名稱
;;以上看不太懂

(defun C:BB (/ SS NAME PT)
(if (and (setq SS (ssget))
    (setq
      NAME
       (cdr
(assoc
    1
    (entget (ssname (ssget "x" '((8 . "PATTERN_NAME"))) 0))
)
       )
    )
      )
    (progn
      (setq PT (getpoint "\n請指定點: "))
      (if (= PT NIL)
(setq PT (list 0 0 0))
      )
      (command "_.block" NAME "non" PT SS "")
      (command "_.insert" NAME "s" "1" "non" PT "")
    )
)
(princ)
)

這個程式,為什麼有時可以用,有時不可以用 ,
页: [1]
查看完整版本: [求助])lisp以一个图层名称来做定义块名称怎么实现