Registered forum members do not see this ad.
Dear Cad Tutor
I'll really appreciate if you explain me how to divide a 3D polyline into "n" equal segments and export to a txt or cvs file.
Thanks a lot.
Registered forum members do not see this ad.
Try this code
This will write all measured points include start and end points
to csv file
You'd be easily save it then as .xls
Code:;;write 3dpoly points to csv (defun C:pcd(/ cnt datafile dimz en ent num filename pline pt pt_list step ) (vl-load-com) (setq dimz (getvar "dimzin")) (setvar "dimzin" 3);<-- change to suit (if (and (setq num (getint "\n\tEnter a number of divisions: ")) (setq ent (entsel "\n\tSelect polyline >> ")) (eq "POLYLINE"(cdr(assoc 0 (entget (setq en(car ent))))))) (progn (setq pt_list nil) (setq pline (vlax-ename->vla-object en)) (setq step (/ (vla-get-length pline ) num)) (setq pt_list nil) (setq pt_list (cons (vlax-curve-getstartpoint pline) pt_list)) (setq cnt 0) (repeat (1- num) (setq pt (trans (vlax-curve-getPointAtDist pline (* (setq cnt (1+ cnt)) step) ) 0 1 ) ) (setq pt_list (cons pt pt_list)) ) (setq pt_list (cons (vlax-curve-getendpoint pline) pt_list)) (setq pt_list (reverse pt_list)) (setq filename (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname"))".csv") ) (setq datafile (open filename "w")) (setq i 1) (foreach pt pt_list (write-line (strcat (itoa i) (chr 9);<--tab delimited, (chr 44) - comma delimited (rtos (car pt)2 3);<--precision 3 decimals (chr 9);<--tab delimited, (chr 44) - comma delimited (rtos (cadr pt) 2 3) (chr 9);<--tab delimited, (chr 44) - comma delimited (rtos (caddr pt)2 3)) datafile) (setq i (1+ i)) ) (close datafile) ) ) (setvar "dimzin" dimz) (princ) ) (princ "\n\t=== Type PCD to execute ===") (prin1)
The soul is healed by being with children. - Fyodor Dostoyevsky, novelist (1821-1881)
Bookmarks