嗯,我找到了地方。这是某人感兴趣的案例的代码。
- ;insert a block on points
- (defun c:b2p (/ #cmdecho blkname ss scale idx n entname edata)
- (command "undo" "begin")
- (setq #cmdecho (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (setq blkname (getstring "\n Block name : "))
- (if (= blkname "")(setq blkname "Block"))
- (setq ss (ssget '((0 . "POINT"))))
- (if ss
- (progn
- (setq scale (getreal "\n Block Scale <1>: "))
- (if (= scale nil)(setq scale 1))
- (setq idx 0)
- (setq n (sslength ss))
- (repeat n
- (setq entname (ssname ss idx))
- (setq edata (entget entname))
- (entmake (list (cons 0 "INSERT")
- (cons 2 blkname)
- (assoc 10 edata)
- (assoc 8 edata)
- (cons 41 scale)
- (cons 42 scale)
- (cons 43 scale)
- (cons 50 0)
- )
- )
- (entdel entname)
- (setq idx (1+ idx))
- )
- (princ "\n\n Done!")
- )
- (princ "\n Not point(s) selected(s)!")
- )
- (setvar "cmdecho" #cmdecho)
- (command "undo" "end")
- (princ))
|