我有一个小程序可以将CAD中的文本(text)导出到d:\ouput\acadtxt.txt文件中。

- [FONT=courier new]
- (defun c:dcwb()
- (setq cm (getvar "cmdecho"))
- (setvar "cmdecho"0)
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
- (setq ducs (getvar "worlducs"))
- (if (= ducs 0)
- (progn
- (command "ucs" "w")
- )
- )
- (princ "请选择要导出的一列文本:")
- (setq a (ssget '((0 . "TEXT"))))
- (setq f (open "d:\\output\\acadtxt.txt" "a"))
- (setq n (sslength a))
- (setq nnn (1- n))
- (setq number 0 nn 0)
- (repeat n
- (setq a1 (ssname a number)) ;取得选择集中第number个实体的名称
- (setq a11 (entget a1)) ;取得实体关联表
- (setq a_y (caddr (assoc 10 a11))) ;取得文本的y坐标
- (if (= nn 1)
- (progn
- (if (> a_y y)
- (progn
- (setq y a_y yold a_y)
- (setq text (cdr (assoc 1 a11)))
- )
- )
- )
- (progn
- (setq nn 1 y a_y yold a_y)
- (setq text (cdr (assoc 1 a11)))
- )
- )
- (setq number (1+ number))
- )
- (write-line text f)
- (repeat nnn
- (setq number 0 nn 0 dy 0 a_y 0)
- (repeat n
- (setq a1 (ssname a number))
- (setq a11 (entget a1)) ;取得实体关联表
- (setq b_y (caddr (assoc 10 a11))) ;取得文本的y坐标
- (if (= nn 1)
- (setq a_y (- b_y y))
- )
- (if (and (< b_y y) (= nn 0))
- (setq dy (- b_y y) nn 1 c11 a11 a_y_new b_y)
- )
- (if (and (< a_y 0) (> a_y dy))
- (setq dy a_y c11 a11 a_y_new b_y)
- )
- (setq number (1+ number))
- )
- (setq text (cdr (assoc 1 c11)))
- (write-line text f)
- (setq y a_y_new)
- )
- (close f)
- (setvar"cmdecho" cm)
- (setvar"osmode"os)
- (setq n (rtos n 2 0))
- (princ (strcat n "个文本导出!"))
- (princ)
- ) [/FONT]
|