各位帮我改一个程序,谢谢 我希望通过窗选来统计,不希望它统计整张图的块。 程序如下: (defun c:ttt() (setvar "cmdecho" 0) (setq os (getvar "osmode")) (setvar "osmode" 0) (setq pt1 (getpoint "\n左上角: ")) (setq ww (getdist pt1 "\n宽度 <50>: ")) (if (null ww) (setq ww 40.0)) (setq hh (getdist pt1 "\n每格高度 <8>: ")) (if (null hh) (setq hh 8.0)) (setq pt2 (polar pt1 0 ww)) (setq pt3 (polar pt2 (* pi 1.5) hh)) (setq pt4 (polar pt1 (* pi 1.5) hh)) (command "pline" pt1 pt2 pt3 pt4 "c") (setq pt5 (polar pt1 0 (/ ww 2))) (setq pt6 (polar pt5 (* pi 1.5) hh)) (command "line" pt5 pt6 "") (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 "图块名称") (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 "数量") (setq blk (tblnext "block" t)) (while blk (setq blkn (assoc 2 blk)) (setq blk_key (substr (cdr blkn) 1 1)) (if (/= blk_key "*") (progn (setq ss (ssget "X" (list blkn))) (if (null ss) (setq ssn 0) (setq ssn (sslength ss)) ) (setq blknn (cdr blkn)) (setq pt1 pt4 pt5 pt6 pt2 pt3) (setq pt4 (polar pt1 (* pi 1.5) hh)) (setq pt6 (polar pt5 (* pi 1.5) hh)) (setq pt3 (polar pt2 (* pi 1.5) hh)) (command "pline" pt2 pt3 pt4 pt1 "") (command "line" pt5 pt6 "") (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 blknn) (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 (itoa ssn)) ) ) (setq blk (tblnext "block")) ) (setvar "osmode" os) (prin1) )
|