如何快速创建有名块呀?能不能把下面两个合成一个 (defun C:za (/ E) (mc-make-unname-block (ssget)) (princ) ) (defun mc-make-unname-block(ss / count entlist ent blk) (entmake '((0 . "BLOCK") (2 . "*u") (70 . 1) (10 0 0 0) )) (setq count 0) (repeat (sslength ss) (setq entlist(entget(setq ent(ssname ss count)))) (setq count (1+ count)) (entmake entlist) ) (setq count 0) (repeat(sslength ss) (setq ent(ssname ss count)) (setq count (1+ count)) (entdel ent) ) (setq blk(entmake '((0 . "ENDBLK")))) (if (princ blk) (entmake (list (cons 0 "INSERT") (cons 2 blk) (cons 10 '(0 0 0)) )) ) blk ) (defun C:ccc (/ *APP *DOC EntNam NewNam) (vl-load-com)
(setq *APP (vlax-get-acad-object)) (setq *DOC (vla-get-activeDocument *APP)) (if (setq EntNam (car (entsel "\n请选择块: "))) (if (null (tblobjname "block" (setq NewNam (rtos (txt-rnd))))) (change-block-name EntNam NewNam) (princ "\n你没有输入新块名!") ) (princ "\n你没有选择物体!") ) (princ) ) ;;;改块名程序 (defun change-block-name (EntNam NewNam / obj blocks BlkNam block) (setq obj (vlax-ename->vla-object EntNam)) (setq blocks (vla-get-blocks *DOC)) (if (=(vla-get-objectname obj) "AcDbBlockReference") (if (tblsearch "block" NewNam) (princ "\n和已有块名重复!") (progn (setq BlkNam (vla-get-name obj)) (setq block (vla-item blocks BlkNam)) (vla-put-name block NewNam) (if (= (substr BlkNam 1 2) "*U") (progn (princ "\n这是一个匿名块.") (vla-auditinfo *Doc :vlax-true) (vla-put-name block NewNam) ) ) (princ "\n块名已经更改成\"") (princ NewNam) (princ "\"") ) ) (princ "\n所选物体不是块!") ) ) (defun txt-rnd () ; 随机名字
(* (rem (getvar "cputicks") 213) 100) ) |