Jump to content

Recommended Posts

Posted

I am looking for a lisp that will export by layer the Cartesian coordinates of all points that make up the polylines, lines, blocks, text arcs and other data to a csv file.

 

Does anybody have such a lisp or know where I can get one?

 

Thanks in advance!

  • Replies 31
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    11

  • woodman78

    6

  • tagkelas

    3

  • cibola

    3

Top Posters In This Topic

Posted Images

Posted

When you say "all points".... if you really mean "all points" then there will be infinitely many :o

Posted

Yes, I believe this can be done - I'll see if I get a minute.

Posted

Hey thanks for the suggestions. Actually most of what I'm looking for is contained in the .dxf file. However, I'm wondering if there's an efficient way that I can format the dxf data or send it to a database?

Posted

This should insert and export the points to either a csv or txt file.

 


[i][color=#990099];; Polyline Point Exported, by Lee McDonnell 26.07.2009[/color][/i]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ptExp [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] doc spc ss file sel pts[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vlax-get-Acad-Object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
spc [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-activespace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-mspace[/color][/b] doc[b][color=RED])[/color][/b] [b][color=Blue]:vlax-true[/color][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vla-get-modelspace[/color][/b] doc[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vla-get-paperspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vla-get-modelspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"*POLYLINE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] file
[b][color=RED]([/color][/b][b][color=BLUE]getfiled[/color][/b] [b][color=#ff00ff]"Output File"[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] *load *load [b][color=#ff00ff]""[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"csv;txt"[/color][/b] [b][color=#009900]9[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *load file file [b][color=RED]([/color][/b][b][color=BLUE]open[/color][/b] file [b][color=#ff00ff]"a"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sel [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSelectionSet[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pts
[b][color=RED]([/color][/b]vlax-list->3D-point
[b][color=RED]([/color][/b][b][color=BLUE]vlax-get[/color][/b] Obj [b][color=DARKRED]'[/color][/b]Coordinates[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ObjectName[/color][/b] Obj[b][color=RED])[/color][/b] [b][color=#ff00ff]"AcDbPolyline"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] file[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vla-addPoint[/color][/b] spc [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] pts[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"\n<< Points from "[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Count[/color][/b] sel[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]" Polylines written to file >>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]close[/color][/b] file[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] sel[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] vlax-list->3D-point [b][color=RED]([/color][/b]lst x [b][color=BLUE]/[/color][/b] oLst[b][color=RED])[/color][/b]
[b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] lst
[b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] oLst
[b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] x [b][color=#009999]0.0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] oLst[b][color=RED])[/color][/b]
lst [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] x [color=Blue][b]cddr[/b][/color] [b][color=Blue]cdddr[/color][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
oLst[b][color=RED])[/color][/b]




Posted

Lee Mac

Do I do something wrong?!

 

Look at the sample.

With your lisp routine the "elevation" isn't written in txt file.

sample.jpg

Posted

I assumed that the Polylines were at 0,0.

 

But I can correct it.

Posted

Try this:

 

[i][color=#990099];; Polyline Point Exported, by Lee McDonnell 26.07.2009[/color][/i]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ptExp [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] doc spc ss file sel pts[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-Acad-Object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       spc [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-activespace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-mspace[/color][/b] doc[b][color=RED])[/color][/b] :vlax-true[b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vla-get-modelspace[/color][/b] doc[b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vla-get-paperspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vla-get-modelspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"*POLYLINE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
          [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] file
            [b][color=RED]([/color][/b][b][color=BLUE]getfiled[/color][/b] [b][color=#ff00ff]"Output File"[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] *load *load [b][color=#ff00ff]""[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"csv;txt"[/color][/b] [b][color=#009900]9[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *load file file [b][color=RED]([/color][/b][b][color=BLUE]open[/color][/b] file [b][color=#ff00ff]"a"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sel [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSelectionSet[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pts
         [b][color=RED]([/color][/b]vlax-list->3D-point
           [b][color=RED]([/color][/b][b][color=BLUE]vlax-get[/color][/b] Obj [b][color=DARKRED]'[/color][/b]Coordinates[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ObjectName[/color][/b] Obj[b][color=RED])[/color][/b] [b][color=#ff00ff]"AcDbPolyline"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Obj[b][color=RED])[/color][/b][b][color=RED])[/color][/b]          
       [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b]
                 [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=RED])[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]44[/color][/b][b][color=RED])[/color][/b]
                     [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] file[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vla-addPoint[/color][/b] spc [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] pts[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"\n<< Points from "[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Count[/color][/b] sel[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]" Polylines written to file >>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]close[/color][/b] file[b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] sel[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       
[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] vlax-list->3D-point [b][color=RED]([/color][/b]lst x Obj [b][color=BLUE]/[/color][/b] oLst[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] lst
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] oLst
     [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] lst[b][color=RED])[/color][/b]
                 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Elevation[/color][/b] Obj[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] oLst[b][color=RED])[/color][/b]
         lst [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] x cddr cdddr[b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 oLst[b][color=RED])[/color][/b]

Posted

Thanks, but it's giving me the following error message:

error: extra cdrs in dotted pair on input

 

Also, will this only grab polylines? My drawing has several lines, arcs and a little bit of text. Most of my info that I need is in the .dxf file... is there a good way to export that information directly to a database from AutoCAD?

Posted

I get no such error. Make sure you have copied ALL the code in the frame. :)

 

I made this for Tagkelas' request, but I believe this could be extended for more options.

 

Lee

  • 1 month later...
Posted
I am looking for a lisp that will export by layer the Cartesian coordinates of all points that make up the polylines, lines, blocks, text arcs and other data to a csv file.

 

Does anybody have such a lisp or know where I can get one?

 

Thanks in advance!

 

There is a routine to export insertion points from, blocks or text...

Someone else asked for it.. and I am looking for that thread...

 

 

http://www.petrkonecny.eu/autolisp

xyzout.lsp

  • 1 year later...
Posted

Dear Lee Mac,

could you perhaps change this routine to put a blank line or even better any marker between the polylines? I.e I need to know where the one ends and the next one starts. That would really help a lot.

Thanks.

Jozi

Posted

A quick rewrite...

 

(defun c:test ( / _lst->str el en fn fo i pt ss zv ) ;; © Lee Mac 2011

 (defun _lst->str ( lst del )
   (if (cdr lst)
     (strcat (car lst) del (_lst->str (cdr lst) del))
     (car lst)
   )
 )
 
 (if
   (and
     (setq ss (ssget '((0 . "*POLYLINE"))))
     (setq fn (getfiled "Output File" "" "csv,txt" 1))
     (setq fo (open fn "w"))
   )
   (progn
     (repeat (setq i (sslength ss))
       (setq en (ssname ss (setq i (1- i)))
             el (entget en)
       )
       (cond
         ( (eq "LWPOLYLINE" (cdr (assoc 0 el)))
           (setq zv (list (cdr (assoc 38 el))))
           (while (setq pt (assoc 10 el))
             (write-line (_lst->str (mapcar 'rtos (append (cdr pt) zv)) ",") fo)
             (setq el (cdr (member pt el)))
           )
         )
         ( t
           (while (eq "VERTEX" (cdr (assoc 0 (setq el (entget (setq en (entnext en)))))))
             (write-line (_lst->str (mapcar 'rtos (cdr (assoc 10 el))) ",") fo)
           )
         )
       )
       (write-line "" fo)
     )
     (setq fo (close fo)) (startapp "notepad" fn)
   )
 )
 (princ)
)

Posted

Thank you so much Lee Mac, it is working like a dream.

 

Now here's a different challenge:

Instead of exporting the XYZ coordinates, can you convert it to Coordinates in decimal degrees?

I know this is an alltogether different issue. In civil 3d there is the geodetic calculator, that can do it one by one, but that will not work for thousands of points.

My drawing zone is Republic of South Africa.

The coordinate system is: Republic of South Africa, Transverse Mercator with WGS84 datum.

There are a few spreadsheet on the internet that claims to be doing this, but I have not found one that works.

Posted
Now here's a different challenge:

Instead of exporting the XYZ coordinates, can you convert it to Coordinates in decimal degrees?

 

This is a very complicated calculation, because it transforms Cartesian coordinates on a flat surface to Geographical coordinates on the surface of the Earth. All depending where you are on the Earth, there are different factors to take into the equation.

 

I think this is the wrong place to wish for this, and if you do find a way, you can probably sell it for a lot of money.

 

You should get on to AutoDesk, and get the geodetic calculator to do batch transformations.

Posted

In Civil 3D there's built in functionality that allows you to transform data from one coordinate system into another. But it looks as if Jozi only has vanilla AutoCAD :(

  • 1 year later...
Posted

LeeMac,

I am using this routine to save me alot of hard work in reworking points files. One thing though: it exports to 2 decimal places. Can this be changed to 3?

 

;; Polyline Point Exported, by Lee McDonnell 26.07.2009

(defun c:ptExp (/ doc spc ss file sel pts)
 (vl-load-com)
 (setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true)
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))
 (if (and (setq ss (ssget '((0 . "*POLYLINE"))))
          (setq file
            (getfiled "Output File"
              (if *load *load "") "csv;txt" 9)))
   (progn
     (setq *load file file (open file "a"))
     (vlax-for Obj (setq sel (vla-get-ActiveSelectionSet doc))
       (setq pts
         (vlax-list->3D-point
           (vlax-get Obj 'Coordinates)
             (cond ((eq (vla-get-ObjectName Obj) "AcDbPolyline"))) Obj))          
       (mapcar
         (function
           (lambda (x)
             (write-line
               (strcat
                 (rtos (car x) 2 2) (chr 44)
                   (rtos (cadr x) 2 2) (chr 44)
                     (rtos (caddr x) 2 2)) file)
             (vla-addPoint spc (vlax-3D-point x)))) pts))
     (princ
       (strcat "\n<< Points from "
         (itoa (vla-get-Count sel)) " Polylines written to file >>"))
     (close file)
     (vla-delete sel)))
 (princ))
       
(defun vlax-list->3D-point (lst x Obj / oLst)
 (while lst
   (setq oLst
     (cons (list (car lst) (cadr lst)
                 (if x (vla-get-Elevation Obj) (caddr lst))) oLst)
         lst ((if x cddr cdddr) lst)))
 oLst)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...