Community
AutoCAD Forum
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Convert LWPOLYLINE into list of Latitude & Longitude

12 REPLIES 12
SOLVED
Reply
Message 1 of 13
Anonymous
1894 Views, 12 Replies

Convert LWPOLYLINE into list of Latitude & Longitude

 Hi there,

 

I'm trying to get a list of lat/lon for each point in my shape. I've scoured the internet and I can't seem to find anything helpful. I've added a geographical marker and aligned my shape to the map.

 

What I'm trying to achiever is very similar to the effect of what AutoCAD already has built in:

 

(setvar "coords" 3)

Running the above code allows you to view the geographical position of the cursor. That leads me to believe that somewhere there is the ability to take a point and convert it into the lat/lon.. I just can't seem to find where it is. 

12 REPLIES 12
Message 2 of 13
Anonymous
in reply to: Anonymous

Try this

 

;;---------------------=={ Polyline Information }==---------------------;;
;;----------------------------------------------------------------------;;
;;  Author:  Lee Mac, Copyright © 2014  -  www.lee-mac.com              ;;
;;----------------------------------------------------------------------;;
;;  Version 1.0    -    2012-07-10                                      ;;
;;                                                                      ;;
;;  - First release.                                                    ;;
;;----------------------------------------------------------------------;;
;;  Version 1.1    -    2012-07-16                                      ;;
;;                                                                      ;;
;;  - Added Table & Text file output options.                           ;;
;;  - Removed basic LWPolyline properties.                              ;;
;;----------------------------------------------------------------------;;
;;  Version 1.2    -    2014-06-14                                      ;;
;;                                                                      ;;
;;  - Fixed bug causing final segment to be omitted from output data    ;;
;;    when processing closed polylines.                                 ;;
;;----------------------------------------------------------------------;;
;;  Version 1.3    -    2015-04-13                                      ;;
;;                                                                      ;;
;;  - Fixed bug causing the program to crash when processing polylines  ;;
;;    containing arc segments.                                          ;;
;;----------------------------------------------------------------------;;

(defun c:polyinfo ( / *error* ent enx flg ins lst out seg tmp )

    (defun *error* ( msg )
        (LM:endundo (LM:acdoc))
        (if (= 'str (type out)) (setenv "LMac\\PolyInfo" out))
        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )
   
    (if (null (setq out (getenv "LMac\\PolyInfo")))
        (setq out "TXT")
    )
    (princ
        (strcat "\nOutput Format: "
            (cond
                (   (= out "TXT") "Text File")
                (   (= out "CSV") "CSV File")
                (   "AutoCAD Table"   )
            )
        )
    )

    (while
        (progn
            (setvar 'errno 0)
            (initget "Output")
            (setq ent (entsel "\nSelect polyline [Output]: "))
            (cond
                (   (= 7 (getvar 'errno))
                    (princ "\nMissed, try again.")
                )
                (   (null ent)
                    nil
                )
                (   (= "Output" ent)
                    (polyinfo:chooseoutput  'out)
                    (setenv "LMac\\PolyInfo" out)
                    (princ
                        (strcat "\nOutput Format: "
                            (cond
                                (   (= out "TXT") "Text File")
                                (   (= out "CSV") "CSV File")
                                (   "AutoCAD Table"   )
                            )
                        )
                    )
                )
                (   (/= "LWPOLYLINE" (cdr (assoc 0 (entget (setq ent (car ent))))))
                    (princ "\nSelected object is not an LWPolyline.")
                )
            )
        )
    )
    (cond
        (   (and
                (= 'ename (type ent))
                (= "Table" out)
                (= 4 (logand 4 (cdr (assoc 70 (tblsearch "layer" (getvar 'clayer))))))
            )
            (princ "\nCurrent layer locked.")
        )
        (   (= 'ename (type ent))
            (setq seg 0
                  enx (entget ent)
                  lst (LM:lwvertices enx)
                  lst
                (cons
                    (append '("SEG." "START X" "START Y" "END X" "END Y" "WIDTH 1" "WIDTH 2" "LENGTH")
                        (if (setq flg (vl-some '(lambda ( x ) (not (zerop (cdr (assoc 42 x))))) lst))
                           '("CENTRE X" "CENTRE Y" "RADIUS")
                        )
                    )
                    (mapcar
                        (function
                            (lambda ( l1 l2 / b p q )
                                (setq p (cdr (assoc 10 l1))
                                      q (cdr (assoc 10 l2))
                                      b (cdr (assoc 42 l1))
                                )
                                (append
                                    (list (itoa (setq seg (1+ seg))))
                                    (mapcar 'rtos p)
                                    (mapcar 'rtos q)
                                    (list
                                        (rtos (cdr (assoc 40 l1)))
                                        (rtos (cdr (assoc 41 l1)))
                                    )
                                    (if (zerop b)
                                        (cons (rtos (distance p q)) (if flg '("" "" "")))
                                        (append
                                            (list (rtos (abs (* (LM:bulgeradius p q b) (atan b) 4))))
                                            (mapcar 'rtos (LM:bulgecentre p q b))
                                            (list (rtos (LM:bulgeradius p q b)))
                                        )
                                    )
                                )
                            )
                        )
                        lst
                        (if (= 1 (logand 1 (cdr (assoc 70 enx))))
                            (append (cdr lst) (list (car lst)))
                            (cdr lst)
                        )
                    )
                )
            )
            (cond
                (   (= out "TXT")
                    (if (LM:writetxt lst (setq tmp (vl-filename-mktemp (cdr (assoc 5 enx)) (getvar 'dwgprefix) ".txt")))
                        (startapp "explorer" tmp)
                    )
                )
                (   (= out "CSV")
                    (if (LM:writecsv lst (setq tmp (vl-filename-mktemp (cdr (assoc 5 enx)) (getvar 'dwgprefix) ".csv")))
                        (startapp "explorer" tmp)
                    )
                )
                (   (setq ins (getpoint "\nSpecify point for table: "))
                    (LM:startundo (LM:acdoc))
                    (LM:addtable  (vlax-get-property (LM:acdoc) (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace)) (trans ins 1 0) nil lst nil)
                    (LM:endundo   (LM:acdoc))
                )
            )
        )
    )
    (princ)
)

;; Add Table  -  Lee Mac
;; Generates a table at the given point, populated with the given data and optional title.
;; spc - [vla] VLA Block object
;; ins - [lst] WCS insertion point for table
;; ttl - [str] [Optional] Table title
;; lst - [lst] Matrix list of table cell data
;; eqc - [bol] If T, columns are of equal width
;; Returns: [vla] VLA Table Object

(defun LM:addtable ( spc ins ttl lst eqc / dif hgt i j obj stn sty wid )
    (setq sty
        (vlax-ename->vla-object
            (cdr
                (assoc -1
                    (dictsearch (cdr (assoc -1 (dictsearch (namedobjdict) "acad_tablestyle")))
                        (getvar 'ctablestyle)
                    )
                )
            )
        )
    )
    (setq hgt (vla-gettextheight sty acdatarow))
    (if (LM:annotative-p (setq stn (vla-gettextstyle sty acdatarow)))
        (setq hgt (/ hgt (cond ((getvar 'cannoscalevalue)) (1.0))))
    )
    (setq wid
        (mapcar
           '(lambda ( col )
                (apply 'max
                    (mapcar
                       '(lambda ( str )
                            (   (lambda ( box ) (if box (+ (* 2.5 hgt) (- (caadr box) (caar box))) 0.0))
                                (textbox
                                    (list
                                        (cons 01 str)
                                        (cons 40 hgt)
                                        (cons 07 stn)
                                    )
                                )
                            )
                        )
                        col
                    )
                )
            )
            (apply 'mapcar (cons 'list lst))
        )
    )
    (if 
        (and ttl
            (< 0.0
                (setq dif
                    (/
                        (-
                            (   (lambda ( box ) (if box (+ (* 2.5 hgt) (- (caadr box) (caar box))) 0.0))
                                (textbox
                                    (list
                                        (cons 01 ttl)
                                        (cons 40 hgt)
                                        (cons 07 stn)
                                    )
                                )
                            )
                            (apply '+ wid)
                        )
                        (length wid)
                    )
                )
            )
        )
        (setq wid (mapcar '(lambda ( x ) (+ x dif)) wid))
    )
    (setq obj
        (vla-addtable spc
            (vlax-3D-point ins)
            (1+ (length lst))
            (length (car lst))
            (* 2.0 hgt)
            (if eqc
                (apply 'max wid)
                (/ (apply '+ wid) (float (length (car lst))))
            )
        )
    )
    (vla-put-regeneratetablesuppressed obj :vlax-true)
    (vla-put-stylename obj (getvar 'ctablestyle))
    (setq i -1)
    (if (null eqc)
        (foreach col wid
            (vla-setcolumnwidth obj (setq i (1+ i)) col)
        )
    )
    (if ttl
        (progn
            (vla-settext obj 0 0 ttl)
            (setq i 1)
        )
        (progn
            (vla-deleterows obj 0 1)
            (setq i 0)
        )
    )
    (foreach row lst
        (setq j 0)
        (foreach val row
            (vla-settext obj i j val)
            (setq j (1+ j))
        )
        (setq i (1+ i))
    )
    (vla-put-regeneratetablesuppressed obj :vlax-false)
    obj
)

;; Write CSV  -  Lee Mac
;; Writes a matrix list of cell values to a CSV file.
;; lst - [lst] list of lists, sublist is row of cell values
;; csv - [str] filename of CSV file to write
;; Returns T if successful, else nil

(defun LM:writecsv ( lst csv / des sep )
    (if (setq des (open csv "w"))
        (progn
            (setq sep (cond ((vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList")) (",")))
            (foreach row lst (write-line (LM:lst->csv row sep) des))
            (close des)
            t
        )
    )
)

;; List -> CSV  -  Lee Mac
;; Concatenates a row of cell values to be written to a CSV file.
;; lst - [lst] list containing row of CSV cell values
;; sep - [str] CSV separator token

(defun LM:lst->csv ( lst sep )
    (if (cdr lst)
        (strcat (LM:csv-addquotes (car lst) sep) sep (LM:lst->csv (cdr lst) sep))
        (LM:csv-addquotes (car lst) sep)
    )
)

(defun LM:csv-addquotes ( str sep / pos )
    (cond
        (   (wcmatch str (strcat "*[`" sep "\"]*"))
            (setq pos 0)    
            (while (setq pos (vl-string-position 34 str pos))
                (setq str (vl-string-subst "\"\"" "\"" str pos)
                      pos (+ pos 2)
                )
            )
            (strcat "\"" str "\"")
        )
        (   str   )
    )
)

;; Write Text File  -  Lee Mac
;; Writes a matrix of values to a tab-delimited Text file.
;; lst - [lst] list of lists, sublist is line of text values
;; txt - [str] filename of Text file to write
;; Returns T if successful, else nil

(defun LM:writetxt ( lst txt / des )
    (if (setq des (open txt "w"))
        (progn
            (foreach itm lst (write-line (LM:lst->str itm "\t") des))
            (close des)
            t
        )
    )
)

;; List to String  -  Lee Mac
;; Concatenates each string in a supplied list, separated by a given delimiter
;; lst - [lst] List of strings to concatenate
;; del - [str] Delimiter string to separate each item

(defun LM:lst->str ( lst del )
    (if (cdr lst)
        (strcat (car lst) del (LM:lst->str (cdr lst) del))
        (car lst)
    )
)

;; Annotative-p  -  Lee Mac
;; Predicate function to determine whether a Text Style is annotative.
;; sty - [str] Name of Text Style

(defun LM:annotative-p ( sty )
    (and (setq sty (tblobjname "style" sty))
         (setq sty (cadr (assoc -3 (entget sty '("AcadAnnotative")))))
         (= 1 (cdr (assoc 1070 (reverse sty))))
    )
)

;; LW Vertices  -  Lee Mac
;; Returns a list of lists in which each sublist describes
;; the position, starting width, ending width and bulge of the
;; vertex of a supplied LWPolyline

(defun LM:lwvertices ( e )
    (if (setq e (member (assoc 10 e) e))
        (cons
            (list
                (assoc 10 e)
                (assoc 40 e)
                (assoc 41 e)
                (assoc 42 e)
            )
            (LM:lwvertices (cdr e))
        )
    )
)

;; Bulge Radius  -  Lee Mac
;; p1 - start vertex
;; p2 - end vertex
;; b  - bulge
;; Returns the radius of the arc described by the given bulge and vertices

(defun LM:bulgeradius ( p1 p2 b )
    (/ (* (distance p1 p2) (1+ (* b b))) 4 (abs b))
)

;; Bulge Centre  -  Lee Mac
;; p1 - start vertex
;; p2 - end vertex
;; b  - bulge
;; Returns the centre of the arc described by the given bulge and vertices

(defun LM:bulgecentre ( p1 p2 b )
    (polar p1
        (+ (angle p1 p2) (- (/ pi 2) (* 2 (atan b))))
        (/ (* (distance p1 p2) (1+ (* b b))) 4 b)
    )
)

;; Start Undo  -  Lee Mac
;; Opens an Undo Group.

(defun LM:startundo ( doc )
    (LM:endundo doc)
    (vla-startundomark doc)
)

;; End Undo  -  Lee Mac
;; Closes an Undo Group.

(defun LM:endundo ( doc )
    (while (= 8 (logand 8 (getvar 'undoctl)))
        (vla-endundomark doc)
    )
)

;; Active Document  -  Lee Mac
;; Returns the VLA Active Document Object

(defun LM:acdoc nil
    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
    (LM:acdoc)
)

(vl-load-com)
(eval
    (append
        (list 'defun 'polyinfo:chooseoutput '( sym ))
        (if (vlax-method-applicable-p (vla-get-modelspace (LM:acdoc)) 'addtable)
            (list
               '(initget "Table TXT CSV")
               '(set sym (cond ((getkword (strcat "\nChoose Output [Table/TXT/CSV] <" (eval sym) ">: "))) ((eval sym))))
            )
            (list
               '(initget "TXT CSV")
               '(set sym (cond ((getkword (strcat "\nChoose Output [TXT/CSV] <" (eval sym) ">: "))) ((eval sym))))
            )
        )
    )
)

(princ
    (strcat
        "\n:: PolyInfo.lsp | Version 1.3 | \\U+00A9 Lee Mac "
        (menucmd "m=$(edtime,0,yyyy)")
        " www.lee-mac.com ::"
        "\n:: Type \"polyinfo\" to Invoke ::"
    )
)
(princ)

;;----------------------------------------------------------------------;;
;;                             End of File                              ;;
;;----------------------------------------------------------------------;;
Message 3 of 13
TerryDotson
in reply to: Anonymous

The COORDS system variable only affects the values you see in the status bar (at the bottom), when a known coordinate system has been assigned (check CGEOCS variable).  It does not affect the results of list, etc.

 

If you were to consider third party add-ons, the low cost GeoLocationPlus package contains a Alternate Coordinate Report tool that would let you select any geometry and get details such as lat/long of the object points.  One click sends it to Excel, Word, etc.

Message 4 of 13
Anonymous
in reply to: TerryDotson

Hey Terry,

 

I understand that the coords variable only effects the type of coordinate tracked for the cursor position. What I meant to say was, it seems to me that since AutoCAD has that functionality- it must have the ability to take any point on a drawing and get the lat/lon of it. 

 

I'm not able to consider any third party software at this time- but thank you for the suggestion!

 

Is there any starting points where I could look into building something similar to GeoLocation Plus? Really, I'm just trying to find out where I can get more information on the subject of GeoLocation in AutoCAD.

 

 

 

 

Message 5 of 13
CodeDing
in reply to: Anonymous

xnoble,

 

If you are using vanilla AutoCAD and have a geo-located drawing. The only way I know to get a Lat/Long effectively (without addons or LISP) is to use the GEOMARKPOINT command. Place the marker and the properties of the placed marker will return the lat/long with the precision of the current UNITS. You can then move the marker to your next point. Otherwise if this is a commonly reoccurring task for you, it would be MUCH faster to look into addons or a LISP.

 

Best,

~DD

~DD
Senior CAD Tech & AI Specialist
Need AutoLisp help? Try my custom GPT 'AutoLISP Ace':
https://chat.openai.com/g/g-Zt0xFNpOH-autolisp-ace
Message 6 of 13
Anonymous
in reply to: CodeDing

Hey CodeDing

 

I'm actually looking for a way to do this in LISP.. Are you aware of any examples of people doing this in lisp?

 

I have code that works only with a local projection. I would like to get a specific projection (PseudoMercator.WGS84)

 

Here is my code currentlY, its just interpolating the coordinates based  on the origin point of the drawing. This works like I said only with local coordinates. 

 

(defun convert_coordinate (point / )
  ; Get geographic marker coordinates
  ; NOTE: this point must be at the (0, 0) UCS origin point
  (setq lat (getvar "LATITUDE"))
  (setq lon (getvar "LONGITUDE"))

  ; Earth's radius, sphere
  (setq earth_radius 6378137.0)

  ; Offsets in meters from origin point
  (setq distance_north (car (cdr point)))
  (setq distance_east (car point))

  ; Coordinate offsets in radians
  (setq dLat (/ distance_north earth_radius))
  (setq dLon (/ distance_east (* earth_radius (cos (/ (* Pi lat) 180.0)))))

  ; OffsetPosition, decimal degrees
  (setq point_lat (+ lat (/ (* dLat 180.0) Pi)))
  (setq point_lon (+ lon (/ (* dLon 180.0) Pi)))


  (prompt (strcat 
    "\nLat: " (rtos lat 2 16)
    "\nLon: " (rtos lon 2 16)
    "\nNorth Distance: " (rtos distance_north 2 16)
    "\nEast Distance: " (rtos distance_east 2 16)
    "\nOutput Lat: " (rtos point_lat 2 16)
    "\nOutput Lon: " (rtos point_lon 2 16)
    "\n----------"
  ))

  ; Return coordinate
  (list point_lon point_lat)
)

 

 

 

Message 7 of 13
CodeDing
in reply to: Anonymous

@Anonymous,

 

I believe I can help with this. To clarify, are you wanting to return the Lat/Long of a point, no matter what coordinate system is assigned to the dwg? (ACAD will translate the selected point automatically)

 

Edit: Also, is this for regular ACAD or Civil 3d/map 3d?

 

Best,

~DD

~DD
Senior CAD Tech & AI Specialist
Need AutoLisp help? Try my custom GPT 'AutoLISP Ace':
https://chat.openai.com/g/g-Zt0xFNpOH-autolisp-ace
Message 8 of 13
jggerth
in reply to: Anonymous

If you can extract the XY values needed, and know what coordinate system you are in, the CorpsCON utility from the US Army Corp of Engineers can convert either individually, or in bulk.

Message 9 of 13
Anonymous
in reply to: CodeDing

Hi CodeDing,

 

This is for AutoCAD 2018 - and yes you are correct, I would like to specify an x/y from an entity and retrieve the Lat/Lon from it.

 

I just found the below function that works with a position marker... but I'm not very proficient with AutoLisp API to be able to convert it into what I need (using entities). Specifically the 

 

(vla-get-Latitude) 
(vla-get-Longitude)

 

I don't know what to pass into those functions to get a proper result. 

 

 

 

 

 

 

;;Get Position Marker Geo-Coordinates
;;
;;By Steve Carson
;;
(vl-load-com)
(defun c:PMCoords ( / ss obj)
(setq ss (ssget '((0 . "POSITIONMARKER"))))
(repeat (setq i (sslength ss))
    (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
    (princ (strcat "\n" (vla-get-TextString obj)))
    (princ (strcat "\nNorthing: " (rtos (cadr (vlax-safearray->list 
                                                  (vlax-variant-value 
                                                      (vla-get-Position obj)
                                                  )
                                              )
                                        )
                                   2 8)))
    (princ (strcat "\nEasting: " (rtos (car (vlax-safearray->list 
                                                  (vlax-variant-value 
                                                      (vla-get-Position obj)
                                                  )
                                              )
                                        )
                                   2 8)))
    (princ (strcat "\nLatitude: " (vla-get-Latitude obj)))
    (princ (strcat "\nLongitude: " (vla-get-Longitude obj)))
    (princ "\n")
)
(textscr)
(princ)
)
Message 10 of 13
CodeDing
in reply to: Anonymous

@Anonymous,

 

Sorry, I am very busy with work today. I will pick up on this later. The vla-get-latitude & vla-get-longitude only work with a geo-position marker. Which is probably the crude method I'm looking at approaching with since creating an entire geoid model seems excessive for me. 

 

For you to play with...

Create a marker with GEOMARKOINT

get lat/long with your own code.

 

Hint: 

 

(setq MyEnt (vlax-ename->vla-object (car (entsel "\nSelect your Marker: "))))

(print (strcat "\nLat: " (rtos (vla-get-latitude MyEnt)) "\nLong: " (rtos (vla-get-longitude MyEnt))))

Best,

~DD

~DD
Senior CAD Tech & AI Specialist
Need AutoLisp help? Try my custom GPT 'AutoLISP Ace':
https://chat.openai.com/g/g-Zt0xFNpOH-autolisp-ace
Message 11 of 13
Anonymous
in reply to: CodeDing

Thanks!

 

You helped point me in the right direction..

 

 

If possible, could take a look at my function and tell me if you see any issues with it? It would be much appreciated!

 

(defun get_coordinates_from_point (point)
  (setq marker_entity_name (ssname (ssget "_X" '((0 . "POSITIONMARKER"))) 0))

  (if marker_entity_name 
    (progn
      (setq marker_object (vlax-ename->vla-object marker_entity_name))

      ; Update marker position with provided point
      (setq new_marker_position (vlax-make-safearray vlax-vbDouble '(0 . 2)))
      (vlax-safearray-put-element new_marker_position 0 (car (cdr point)))
      (vlax-safearray-put-element new_marker_position 1 (car point))

      ; Apply marker position
      (vlax-put-property marker_object 'Position new_marker_position)

      ; Return a list of lon/lat
      (list 
        (atof (vla-get-Longitude marker_object))
        (atof (vla-get-Latitude marker_object))
      )
    )
    ; TODO: create a marker if not found
    (prompt "[FATAL] :: No position marker found")
  )
)

 

I'd like to somehow create a position marker if nothing is found... is that possible through LISP without user input?

 

 

 

 

Message 12 of 13
Anonymous
in reply to: Anonymous

Complete function with Marker creation:

 

(defun get_coordinates_from_point (point / )
  (setq position_marker_selection (ssget "_X" '((0 . "POSITIONMARKER"))))

  (if position_marker_selection 
    (progn
      (setq marker_entity_name (ssname position_marker_selection 0))
      (setq marker_object (vlax-ename->vla-object marker_entity_name))

      ; Update marker position with provided point
      (setq new_marker_position (vlax-make-safearray vlax-vbDouble '(0 . 2)))
      (vlax-safearray-put-element new_marker_position 0 (car point))
      (vlax-safearray-put-element new_marker_position 1 (car (cdr point)))
      (vlax-put-property marker_object 'Position new_marker_position)

      ; Return a list of lon/lat
      (list 
        (atof (vla-get-Longitude marker_object))
        (atof (vla-get-Latitude marker_object))
      )
    )
    ; Else
    (progn
      ; Create a marker since none exists
      (entmake '(
        (0 . "POSITIONMARKER")
        (5 . "30F")
        (100 . "AcDbEntity")
        (67 . 0)
        (410 . "Model")
        (8 . "0") ; Layer of marker
        (62 . 1)
        (100 . "AcDbGeoPositionMarker")
        (90 . 0)
        (10 0.0 0.0 0.0) ; Position of marker-text
        (40 . 1.0)
        (1 . "")
        (40 . 0.5)
        (290 . 0)
        (280 . 0)
        (290 . 1)
        (101 . "Embedded Object")
        (100 . "AcDbEntity")
        (67 . 0)
        (8 . "0") ; Layer of marker-text
        (62 . 1)
        (100 . "AcDbMText")
        (10 0.0 0.0 0.0) ; Position of marker-text
        (40 . 1.0)
        (41 . 0.0)
        (46 . 0.0)
        (71 . 1)
        (72 . 5)
        (1 . "Coordinate-Reader") ; Text of marker
        (7 . "Standard")
        (210 0.0 0.0 1.0)
        (11 1.0 0.0 0.0)
        (42 . 7.62551)
        (43 . 1.03479)
        (50 . 0.0)
        (73 . 1)
        (44 . 1.0)
      ))
      ; Return value with maker created
      (get_coordinates_from_point point)
    )
  )
)
Message 13 of 13
CodeDing
in reply to: Anonymous

@Anonymous,

 

Looks great! Don't forget to clean up that geomarker when you're done using your code.

 

If you're not already, I expected you to be looping this. Here's my take...

 

Good luck! Glad to help. If you need anything or wanna share don't hold back. I enjoy learningthis stuff also

 

Best,

~DD

 

(defun c:EZLL ()
(setq Userpt t); initial non-nil value
	(while Userpt ;while user still wants points
	(if (listp Userpt) ;check if it's a list, and not nil
	  (progn ;do stuff
	  	(print (get_coordinates_from_point Userpt));your function
	    	;do stuff with Lat/Long
	  );progn
	);if
	(setq Userpt (getpoint "\nSelect point <enter to Exit>: "));user will select a point
	);while
(princ)
);defun
~DD
Senior CAD Tech & AI Specialist
Need AutoLisp help? Try my custom GPT 'AutoLISP Ace':
https://chat.openai.com/g/g-Zt0xFNpOH-autolisp-ace

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost