ssget或其他方式
我正在拼凑一个LISP,它允许用户在可以从LISP插入的注释旁边输入数字。我将其设置为在特定层上插入数字。如果有人删除或添加了一个层,并希望重新运行数字,则该层将被删除,并重新创建一个新的数字集。我意识到,如果有人在这一层上放了东西(即使有所有的警告不要这样做),这并不是最好的方法。我试着创建一个选择集,然后用其中的数字创建一个块。有人能帮我编写代码吗?或者告诉我有没有更好的方法来完成这项工作?
(defun C:notenumbers (/ ECL EOM EOS ECC ECE EFS)
(setq ECL (getvar "clayer"))
(setq EOM (getvar "orthomode"))
(setq EOS (getvar "osmode"))
(setq ECC (getvar "cecolor"))
(setq ECE (getvar "cmdecho"))
(setq EFS (getvar "style"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "laydel" "N" "CCC_SHEET_LAYOUT_Note_Numbers" "" "YES")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(if (null (tblsearch "STYLE" "CCC_Note_Numbers"))
(progn
(entmake
(list
(cons 0 "STYLE")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbTextStyleTableRecord")
(cons 2 "CCC_Note_Numbers")
(cons 3 "Verdana.ttf")
(cons 40 0)
(cons 74 1) ;Bold
(cons 70 0)))))
;(command "_-style" "CCC_Note_Numbers" "verdana.ttf" "0" "1" "0" "N" "N")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(if (null (tblsearch "layer" "CCC_SHEET_LAYOUT_Note_Numbers"))
(progn
(entmake
(list
(cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 "CCC_SHEET_LAYOUT_Note_Numbers")
(cons 62 7)
(cons 70 0)
(cons 37030)))))
;(command "_-layer" "s" "CCC_SHEET_LAYOUT_Note_Numbers" "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setvar "textstyle" "CCC_Note_Numbers")
(setvar "clayer" "CCC_SHEET_LAYOUT_Note_Numbers")
(setvar "osmode" 4)
(setq myheight 2.5)
(setq mynumber 1)
(setq myincrement 1)
(setq mypoint (getpoint "\nPick point: "))
(while mypoint
(command "text" "j" "BL" mypoint myheight "0" (itoa mynumber))
(setq mynumber (+ mynumber myincrement))
(setq mypoint (getpoint "\nPick point: "))
)
;(setq sel1 (ssget entlast))
;(setq sel1 (ssadd ent sel1))
(alert (strcat sel1))
;(command "_-block" "notenos" "0,0" sel1)
(setvar "clayer" ECL)
)
你看到这个了吗。。。
http://www.cadtutor.net/forum/showthread.php?t=37420
李·麦克?对于你正在寻找的东西来说,这是一个很好的起点。 是的,我也下载了,但我正在寻找一些非常简单的在这种情况下。我办公室的人倾向于回避有很多选择的事情。
这就是为什么我想这样做。我是从另一个lisp中得到的,我认为这是沿着这些线的东西,这只是选择了所有的文本,而我只想选择我在这个lisp中创建的文本。
(setq sset (ssget "_X" '((0 . "TEXT"))) i 0)
(repeat (sslength sset)
(setq ent (ssname sset i))
(setq lst (entget ent))
(setq i (1+ i))
页:
[1]