将数据点导出到excel fil
需要帮助如何使用LISP将CAD的数据点XY导出到excel文件中,例如XY。xls公司
并放置在特定的电池板中,例如X=Y=电池c2 d2
非常感谢。
最简单的方法是
另存为*。csv逗号分隔格式
然后用excel打开
例子:
;V1.1:04/12/2014
;PXYZ test.csv saved to dwgprefix
;add numbering PXYZ format
;index i 1+ incremental
;notified by alert
;optional: add Text numbering
;optional: open notepad
;optional: open directory
(vl-load-com)
(defun c:P2F ( / *error* p i ss fn pt )
;hanhphuc 2014
(defun *error* (msg)
(if (not (wcmatch (strcase msg) "*CANCEL*,*EXIT*"))
(princ (strcat "\nError: " msg))
)
(if p
(close p)
)
(princ)
)
(if
(and
(setq i0
ss (ssget ":L" '((0 . "POINT")))
)
(setq fn
(strcat (getvar "dwgprefix")
"PXYZ test.csv") ; rename you file
)
(setq p (open fn "w"))
)
(progn
;(setq i 0)
(repeat
(sslength ss)
(
(lambda (str)
(foreach x
(setq pt
(vlax-get
(vlax-ename->vla-object (ssname ss i))
'coordinates
)
)
(setq str (strcat str (rtos x 2) ","))
)
(write-line
(strcat (itoa (setq i (1+ i))) "," str)
p)
)
""
)
(entmakex
(list
'(0 . "TEXT")
(cons 1 (itoa i))
(cons 10 pt)
(8 . "EXPORTED")
(cons 40 (getvar 'TEXTSIZE))
)
)
)
(if p
(close p)
)
(alert
(strcat
"\nSyabas! Saved in \""
fn
;"\"\nOK -> \"PXYZ test.csv\" -> Right-Click -> Open With -> EXCEL"
)
)
;;;(command "_SHELL" (strcat "explorer \"" (getvar "dwgprefix") "\"")) ;<-- optional
(vl-cmdf "_START" (strcat "EXCEL \"" fn "\""))
(startapp "notepad" fn)
;; <--optional open as notepad preview
)
(alert "\n:-( knp xde POINT ?! ")
)
(princ)
)
将文件保存在DWG的目录中 该例程查找Autocad“点”,如果它们实际上是LDD点,则可能无法工作,如上所述,LDD需要不同的代码。
只需单击,它将存储XY值,而不必是几何空间点。
试试这个节目,让我知道。
(DEFUN C:Exportpnt (/ FILE FILENAME ANS CNT
PT X Y Z LINE DESC
LINECOUNTER LINEDATA LEN OSM
)
(SETQ OSM (GETVAR "OSMODE"))
(COMMAND "OSMODE" 0)
;;
;; THIS WILL SET THE FILE NAME WE ARE WRITTING TO AS WELL AS CHECK
;; TO MAKE SURE THAT WE ARE WRITTING AT THE END OF THE FILE
;;
(SETQ LINECOUNTER 0)
(SETQ FILE (GETSTRING "\nNAME OF POINTS FILE TO OPEN:..."))
(SETQ FILENAME (OPEN FILE "A"))
(CLOSE FILENAME)
(SETQ FILENAME (OPEN FILE "R"))
(WHILE
(SETQ LINEDATA (READ-LINE FILENAME))
(SETQ LEN (STRLEN LINEDATA))
(SETQ LINECOUNTER (+ 1 LINECOUNTER))
)
(CLOSE FILENAME)
(SETQ FILENAME (OPEN FILE "A"))
(INITGET "Yy Nn")
(SETQ
ANS (GETKWORD "\n ADD DESCRIPTIONS? Yes OR No ?:...")
CNT (GETINT "\nENTER NUMBER OF POINTS TO EXPORT:...")
PT (GETPOINT "\nSELECT POINT TO EXTRACT:....")
)
;;
;; THIS BEGINS THE REPEAT LOOP TO EXTRACT THE POINT INFORMATION
;;
(REPEAT CNT
(IF
( = ANS "Yy")
(SETQ DESC (GETSTRING "\nENTER DESCRIPTION:..."))
)
(SETQ
X (RTOS (CAR PT))
Y (RTOS (CADR PT))
Z (RTOS (CADDR PT))
LINECOUNTER (+ 1 LINECOUNTER)
)
(IF (= ANS "Yy")
(SETQ LINE (STRCAT (ITOA LINECOUNTER) "," Y "," X "," Z "," DESC))
(SETQ LINE (STRCAT (ITOA LINECOUNTER) "," Y "," X "," Z))
)
(WRITE-LINE LINE FILENAME)
(SETQ PT (GETPOINT "\nSELECT NEXT POINT TO EXTRACT:..."))
) ;END OF REPEAT LOOP
(CLOSE FILENAME)
;; RESET THE OSNAP MODE
(COMMAND "OSMODE" OSM)
(PRINC)
) 感谢Tharwat、BIGAL、JSYoung81、stevesfr的协助,非常感谢。
我昨晚睡得很早
很抱歉post#2中更新的缺失(vl load com)代码
注意:此代码仅导出acad AcDbPoint,而不导出AECC point!
我偶然发现了你的旧线索
AECC\u坐标几何点应为LDD和C3D的不同方法属性
嗨,我们又见面了
是的,你的代码可以工作,因为它只是创建了新的增量点
李
VVA公司
塔瓦特
https://www.cadtutor.net/forum/images/statusicon_cadtutor/user-offline.png
可以更改此代码,以便自动输入我们之前必须制作的excel文件? 两个月后,我对那些试图免费帮助你的人没有任何尊重。 Thanks Tharwat,BIGAL,JSYoung81,stevesfr for assisting thread very appreciated.
i slept early last night
sorry. missing (vl-load-com) code updated in post#2
note: this code only Exports acad AcDbPoint, NOT AECC point!
i came across your old thread
AECC_COGO_POINT , should be different method property for LDD & C3D
hi JSYoung81 we meet again
yes your code works because it just creates new incremental points, here are similar threads by
Lee
VVA
页:
[1]
2