;;批量展测量点 (defun zdtxt (/ fn n zb xyz xyz1 xyz2 add xg_group ss ss1 ss2 leixin) (setq fle (getfiled "请选择数据文件" "*" "txt;dat;*" 2 ) ) (setq xyz_biao (list)) (setq fn (open fle "r")) (setq n 0) (while (setq pt (read-line fn)) (setq xg_group (ssadd)) (setq dm (vl-princ-to-string (read pt))) (setq zb (substr pt (+ (strlen dm) 1))) (setq xyz (trans (read (strcat "(" zb ")")) 1 0) ) (setq xyz_biao (append xyz_biao (list xyz))) (setq h (rtos (last xyz) 2 1)) (entmake (list (cons 0 "INSERT") (cons 100 "AcDbEntity") (cons 8 newlayer) (cons 100 "AcDbBlockReference") (cons 10 xyz) (cons 41 blockh) (cons 42 blockh) (cons 43 blockh) (cons 410 "model") (cons 2 "gc200") ) ) (setq add (entlast)) (setq xg_group (ssadd add xg_group)) (setq stbmx (itoa 202101)) (dstbm) (setq ss (entget (cdr (car (entget (entlast)))) (list "south"))) (setq ss1 (cadr (assoc -3 ss))) (setq ss2 (list -3 (list "SOUTH" (cadr ss1) (cons 1000 dm)))) (setq ss (subst ss2 (assoc -3 ss) ss)) (entmod ss) (setq xyz1 (polar xyz (/ pi 2) (* l 2)) ) (setq xyz2 (polar xyz (* (/ pi 2) 3) (* l 2)) ) (entmake (list (cons 0 "Text") (cons 100 "AcDbEntity") (cons 8 newlayer) (cons 100 "AcDbText") (cons 7 oldtextstyle) (cons 1 dm) (cons 40 dmh) (cons 41 0.8) (cons 410 "model") (cons 71 0) (cons 72 4) (cons 73 0) (cons 10 xyz1) (cons 11 xyz1) ) ) (setq add (entlast)) (setq xg_group (ssadd add xg_group)) (setq stbmx (itoa 2021111)) (dstbm) (entmake (list (cons 0 "Text") (cons 100 "AcDbEntity") (cons 8 newlayer) (cons 100 "AcDbText") (cons 7 oldtextstyle) (cons 1 h) (cons 40 gch) (cons 41 0.8) (cons 410 "model") (cons 71 0) (cons 72 4) (cons 73 0) (cons 10 xyz2) (cons 11 xyz2) ) ) (setq add (entlast)) (setq xg_group (ssadd add xg_group)) (setq stbmx (itoa 2021112)) (dstbm) (setq n (+ n 1)) (setq leixin (strcat "jxkzd" "_" (itoa n) "_")) (xggroup) ) (if (= pt nil) (progn (alert (strcat "*--*展点结束,共展" (itoa n) "个点*--*!。" ) ) ) ) (close fn) (txsz3) (xyz_max_min) (princ) ) 这是我的展点工具的一个子程序,红色部分也是子程序, 这是批量展点的子程序,测量点采用CASS的格式,为名为GC200的块,展点的格式如图所示,在2004中测试的速度是4000个测量点用时10秒左右,文本的格式是:点号【空格】X【空格】Y【空格】Z 注意Z值后面不能有空格,否则出错。里面的循环语句可以作为你的参考。 |