龙龙仔发表于2006-1-23 15:24:00 (entmake (list '(0 . \"INSERT\")'(100 . \"AcDbMInsertBlock\")...
呵呵,昨天自己结合你那个“dispbbs.asp?boardID=3&ID=9545&page=1”写了下面的,蛮好用的::
;;;LISP多重引用匿名块程序: (defun c:cb () (setq pt (getpoint "\n插入点: ")) (entmake (list '(0 . "BLOCK") '(2 . "*U") '(70 . 1) (cons 10 pt)) ) ;_ 结束entmake (prompt "\n选择实体") (setq ss1 (ssget) i (sslength ss1) n (- 1) ) ;_ 结束setq (repeat i (entmake (cdr (entget (ssname ss1 (setq n (1+ n)))))) ) ;_ 结束repeat (setq num (entmake '((0 . "ENDBLK")))) (entmake (list '(0 . "INSERT") (cons 2 num) (cons 10 pt))) ;;制作一个匿名块 (command "erase" ss1 "") ;;删除选择集 (command "erase" "l" "") ;;删除该匿名块 (entmake (list '(0 . "INSERT") '(100 . "AcDbEntity") '(100 . "AcDbMInsertBlock") (cons 2 num) (cons 10 pt) (cons 41 1) (cons 42 1) (cons 50 0) (cons 70 1) (cons 71 1);;多重引用该匿名块 ) ;_ 结束list ) ;_ 结束entmake (princ) ) ;_ 结束defun
;;插入多重引用的匿名块;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:mms () (setq bname (cdr (assoc 2 (entget (car (entsel)))))) (setq pt (getpoint "\n选择插入点: ")) (entmake (list '(0 . "INSERT") '(100 . "AcDbEntity") '(100 . "AcDbBlockReference") (cons 2 bname) (cons 10 pt) (cons 41 1) (cons 42 1) (cons 50 0) ) ;_ 结束list ) ;_ 结束entmake (princ) ) ;_ 结束defun |