yfanzi 发表于 2011-10-18 23:42:18

实用!输出已编号的圆心坐标到EXCELL(转载源码BY lyt0623 )

已有大量圆,已经编号序号,应用此程序,可以按照图上编号在EXCELL中生成一一对应的坐标表,方便。先要在E盘建个名为”123“的文件夹。然后确定CAD上的圆有编号。转载的LYT06的作品!源码在下面。

yfanzi 发表于 2011-10-18 23:44:45

(defun c:yxsc()
;;; 在图中向文件E:\\123\\2.xls输出选中字体角点坐标程序
(VL-LOAD-COM)
(setq AcadObject(vlax-get-acad-object)
      AcadDocument(vla-get-ActiveDocument AcadObject)
      mSpace(vla-get-ModelSpace AcadDocument)
)
(setq fp1(open "E:\\123\\2.xls" "w"))
(setq p1(getpoint "\n请输入第一点:"))
(setq p2(getpoint "\n请输入第二点:"))
(setq ss(ssget "W" P1 p2))
(SETQ t1 "text=")
(setq a1 0)
(setq tt1(cdr(assoc 1 (entget(ssname ss a1)))))
(setq d1(cdr(assoc 10 (entget(ssname ss a1)))))
(princ "\t" fp1)(princ tt1 fp1)
(princ "\t" fp1)(princ "x=" fp1)
    (princ "\t" fp1)(princ (cadr d1) fp1)
   (princ "\t" fp1)(princ "y=" fp1)
(princ "\t" fp1)(princ (car d1) fp1)
(while(ssname ss (+ a1 1))
    (setq a1 (+ a1 1))
    (setq tt1 (cdr (assoc 1 (entget(ssname ss a1)))))
   (setq d1 (cdr (assoc 10 (entget(ssname ss a1)))))
    (print t1 fp1)
      (princ "\t" fp1)(princ tt1 fp1)
(princ "\t" fp1)(princ "x=" fp1)
       (princ "\t" fp1)(princ (cadr d1) fp1)
   (princ "\t" fp1)(princ "y=" fp1)
(princ "\t" fp1)(princ (car d1) fp1)
    )
(close fp1)

)
也是刚使用,觉着好,就翻出来贴上了。大家一起讨论一下有无问题?

sen.sam 发表于 2011-10-19 00:38:13

无聊,小改了一下,可以自选输出目录和文件名,改用鼠标框选,增加出错时关闭文档,免得被cad锁定文档(defun c:xxx()
   (setq olderror *error*)
   (setq *error* zxx_err)
(if (not currdir)
         (setq currdir "d:\\")
   )

    (setq of(getfiled "输出文件名" currdir "xls" 1))

(setq currdir (strcat (vl-filename-directory of) "\\"));记忆本次的路径
(setq ss(ssget '((-4 . "<or")(0 . "text")(0 . "mtext")(-4 . "or>"))) )
(SETQ t1 "text=")
(setq a1 0)
(setq tt1(cdr(assoc 1 (entget(ssname ss a1)))))
(setq d1(cdr(assoc 10 (entget(ssname ss a1)))))
(setq fp1(open of "w"))
(princ "\t" fp1)(princ tt1 fp1)
(princ "\t" fp1)(princ "x=" fp1)
    (princ "\t" fp1)(princ (cadr d1) fp1)
   (princ "\t" fp1)(princ "y=" fp1)
(princ "\t" fp1)(princ (car d1) fp1)
(while(ssname ss (+ a1 1))
    (setq a1 (+ a1 1))
    (setq tt1 (cdr (assoc 1 (entget(ssname ss a1)))))
   (setq d1 (cdr (assoc 10 (entget(ssname ss a1)))))
    (print t1 fp1)
      (princ "\t" fp1)(princ tt1 fp1)
(princ "\t" fp1)(princ "x=" fp1)
       (princ "\t" fp1)(princ (cadr d1) fp1)
   (princ "\t" fp1)(princ "y=" fp1)
(princ "\t" fp1)(princ (car d1) fp1)
    )
(close fp1)
(princ)

)


(defun zxx_err(msg)

(setq *error* olderror)

( if fp1
   (close fp1)
)

(princ)
)

yfanzi 发表于 2011-10-19 21:33:41

坐标要小数点后保留4位,在哪里改改?

1548845899 发表于 2011-10-19 23:42:20

sen.sam 发表于 2011-10-20 10:58:12

改了一下,保留小数点后四位(defun c:xxx()
   (setq olderror *error*)
   (setq *error* zxx_err)
(if (not currdir)
         (setq currdir "d:\\")
   )
    (setq of(getfiled "输出文件名" currdir "xls" 1))

(setq currdir (strcat (vl-filename-directory of) "\\"));记忆本次的路径
(setq ss(ssget '((-4 . "<or")(0 . "text")(0 . "mtext")(-4 . "or>"))) )
(SETQ t1 "text=")
(setq a1 0)
(setq nnn(sslength ss))
(repeat nnn
    (setq tt1 (cdr (assoc 1 (entget(ssname ss a1)))))
    (setq d1 (cdr (assoc 10 (entget(ssname ss a1)))))
    (print t1 fp1)
    (princ "\t" fp1)(princ tt1 fp1)
    (princ "\t" fp1)(princ "x=" fp1)
    (princ "\t" fp1)(princ (rtos(cadr d1)2 4) fp1)
    (princ "\t" fp1)(princ "y=" fp1)
    (princ "\t" fp1)(princ (rtos(car d1)2 4) fp1)
    (setq a1(+ a1 1))
   )
   (close fp1)
   
(princ)

)

(defun zxx_err(msg)

(setq *error* olderror)
( if fp1
   (close fp1)
)
(princ)
)

yfanzi 发表于 2011-10-20 15:04:40

没法生成EXCELL表格了,是不是少了句(setq fp1(open of "w"))啊!?

sen.sam 发表于 2011-10-21 08:54:36

yfanzi 发表于 2011-10-20 15:04 static/image/common/back.gif
没法生成EXCELL表格了,是不是少了句(setq fp1(open of "w"))啊!?

呵呵,改的时候不小心错删了,加上就行了!

yfanzi 发表于 2011-10-21 14:39:38

呵呵,感谢,这下好用多了!

jxphklibin 发表于 2011-10-22 15:12:18

就这些?????
页: [1] 2
查看完整版本: 实用!输出已编号的圆心坐标到EXCELL(转载源码BY lyt0623 )