;;;拾取Cad点坐标生成数据文件,程序是在d盘根目录下生成一个node.txt文件 ;;;'write by Hejian 2002 free to copy
(defun c:nd (/ kw fil cont esel oldos num1 pt pttext s s1 va pt1 pt2 l n fid)
(initget "O N") (setq kw (getkword "\n[建立新文件(N)/打开文件(O)]:")) (if kw (progn (setq fil (strcat "d://" (getstring "[输入文件名(*.dat)]:") ".dat" ) ) (setq input 0) ) (progn (setq fil (getfiled "\nSelect a Dat File" "D:/" "dat" 8)) (setq fid (open fil "r")) (setq lin (read-line fid)) (while lin (setq end lin) (setq lin (read-line fid)) ) (close fid) (setq l (vl-string-position (ascii ",") end)) (setq n (atoi (substr end 1 l))) (setq input n) ) ) (if (= nil fil) (setq fil "d://node.dat") ) (graphscr) (setq pt (getpoint "\nplease pick a point:")) (while pt (setvar "cmdecho" 0) (setq input (1+ input) s2 (strcat "\nnode number< " (itoa input)) s2 (strcat s2 ">") ) (initget 6) (setq num1 (getint s2)) (if (/= num1 nil) (setq input num1) ) (setq pttext (list (+ (car pt) 0.05) (cadr pt) (caddr pt)) s (itoa input) )
(setq s1 s) (setq va (cadr pt)) ;;;cadr得到y坐标 (setq s1 (strcat s1 ",")) (setq s1 (strcat s1 (rtos va 2 3))) (setq va (car pt)) ;;;car得到x坐标 (setq s1 (strcat s1 ",")) (setq s1 (strcat s1 (rtos va 2 3))) (setq va (caddr pt)) (setq s1 (strcat s1 ",")) (setq s1 (strcat s1 (rtos va 2 3))) (command "layer" "m" "序号层" "s" "序号层" "") (command "text" (trans pttext 0 1) "" "" s) (command "ucs" "") (setq fid (open fil "a")) (write-line s1 fid) (close fid) (setq pt (getpoint "\n点取下一点,回车退出:")) ) (princ) ) 这个程序在编号这里比较开放的,但网格有很多,这样就不方便了,所以要加上一个默认编号的方式. 由于我贴图贴不来,附件没有发上来 |