Hi,
This code can help you?
Code:
(defun l-coor2l-pt (lst flag / )
(if lst
(cons
(list
(car lst)
(cadr lst)
(if flag
(+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst))
(if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0)
)
)
(l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)
)
)
)
(defun c:ptdef2csv ( / js n file_name cle f_open key_sep str_sep oldim ent ename dxf_cod l_pt l_pr nbs)
(vl-load-com)
(setq
js
(ssget
(list
'(0 . "*LINE,POINT,ARC,CIRCLE,ELLIPSE,INSERT")
(cons 67 (if (eq (getvar "CVPORT") 1) 1 0))
(cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model"))
)
)
n -1
)
(cond
(js
(setq file_name (getfiled "File to create ?: " (strcat (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 3)) "csv") "csv" 37))
(if (null file_name) (exit))
(if (findfile file_name)
(progn
(prompt "\nFile already exist!")
(initget "Add Replace Cancel")
(setq cle
(getkword "\nData in file? [Add/Replace/Cancel] <R>: ")
)
(cond
((eq cle "Add")
(setq cle "a")
)
((or (eq cle "Replace") (eq cle ()))
(setq cle "w")
)
(T (exit))
)
(setq f_open (open file_name cle))
)
(setq f_open (open file_name "w"))
)
(setq str_sep ",")
(setq oldim (getvar "dimzin"))
(setvar "dimzin" 0)
(write-line (strcat "Registration" str_sep "Type Entitie" str_sep "Layer Name" str_sep "Coordinates X" str_sep "Coordinates Y" str_sep "Coordinates Z") f_open)
(repeat (sslength js)
(setq ent (ssname js (setq n (1+ n))) ename (vlax-ename->vla-object ent) l_pt nil dxf_cod (entget ent))
(setq l_pr (list 'StartPoint 'EndPoint 'Center 'InsertionPoint 'Coordinates 'FitPoints) nbs 0)
(foreach n l_pr
(if (vlax-property-available-p ename n)
(setq l_pt
(if (or (eq n 'Coordinates) (eq n 'FitPoints))
(append
(if (eq (vla-get-ObjectName ename) "AcDbPolyline")
(l-coor2l-pt (vlax-get ename n) nil)
(if (and (eq n 'FitPoints) (zerop (vlax-get ename 'FitTolerance)))
(l-coor2l-pt (vlax-get ename 'ControlPoints) T)
(l-coor2l-pt (vlax-get ename n) T)
)
)
l_pt
)
(cons (vlax-get ename n) l_pt)
)
)
)
)
(foreach n l_pt
(write-line
(strcat
(itoa (setq nbs (1+ nbs))) str_sep
(cdr (assoc 0 dxf_cod)) str_sep
(cdr (assoc 8 dxf_cod)) str_sep
(rtos (car n) 2 2) str_sep
(rtos (cadr n) 2 2) str_sep
(rtos (caddr n) 2 2)
)
f_open
)
)
(write-line "" f_open)
)
(close f_open)
(setvar "dimzin" oldim)
)
)
(prin1)
)