以前班主曾编了这样的程序:
(defun c:Getpt( / ss i ents f filename str) (defun getnum(i) (if (< 10) (setq val (strcat "J0" (rtos i))) (setq val (strcat "J" (rtos i))) ) val) (setq ss (ssget '((0 . "LWPOLYLINE")))) (setq filename (getfiled "打开存放数据的Excel电子表格文档" "e:\\wjh\\study\\autolisp\\zhongguola\\" "XLS" 1)) (setq f (open filename "w")) (setq i 0) (repeat (sslength ss) (setq ents (entget (ssname ss i))) (setq ents (mapcar 'cdr (vl-remove-if-not '(lambda(e) (= (car e) 10)) ents))) (setq i (1+ i)) ) (princ) (setq i 0) (repeat (length ents) (setq item (nth i ents)) (if (> i 0) (setq str (strcat (getnum i)"\t"(rtos (distance item (nth (1- i) ents)) 2 2) "\t"(rtos (cadr item) 2 3)"\t"(rtos (car item) 2 3)"\t""水泥")) (setq str (strcat (getnum i)"\t""\t"(rtos (cadr item) 2 3) "\t"(rtos (car item) 2 3))) ) (if (= (rem i 27) 0) (write-line (strcat "\n点号""\t""距离""\t""纵坐标(X)""\t""横坐标(Y)""\t""界桩材料""\t""备注") f) ) ;(princ "\n") (write-line str f) (setq i (1+ i)) ) (close f) (princ) )
我运行此程序将cad中的数据保存到电子表格中就成了如:电子表格样本(一)那样了,但是由于工作的需要,我需要的是电子表格(二)的样式,所一恳请编程的高手在这个程序的基础上在改编一下.
要求:和样本(二)的样式一样,行高,列宽都相同,且每个表格只能存放27个电的坐标值.(两个表格交接处距离一列的写入一定要留意)
麻烦各位高手了!
谢谢大家!!!!!!
|