error: no function definition: VLAX-ENAME->VLA-OBJECT; (vl-load-com) is there!

error: no function definition: VLAX-ENAME->VLA-OBJECT; (vl-load-com) is there!

Anonymous
Not applicable
20,703 Views
22 Replies
Message 1 of 23

error: no function definition: VLAX-ENAME->VLA-OBJECT; (vl-load-com) is there!

Anonymous
Not applicable

Dear All,

 

I try to export the coordinates of the points belonging to a polyline and I use "plist.lsp" created by Tony Hotchkiss, downloaded from:  http://www.cadalyst.com/general-software/autolisp-solutions-export-point-coordinates-5263.

 

I get the error message ";error: no function definition: VLAX-ENAME->VLA-OBJECT".

In line 84 I found "obj (vlax-ename->vla-object ent)".

"(vl-load-com)" is in line 5 of the code.

Please advise me.

 

I ask myself some questions:

  • Is AutoCAD2018 student version able to use AutoLISP?
  • Is AutoCAD2018 student version using ActiveX methods by default, or they must be explicitly activated?

 

Thank you in advance for the answers.

Any help is greatly appreciated!

 

The according code is:

(defun vert (/         filterlist  vla-obj-list
         lwlist     2dlist         ptlist     vlist1
         vlist2     vlist3
        )
  (vl-load-com)
  (setq    filterlist   (make-filter)
    vla-obj-list (get-objects filterlist)
    lwlist         (nth 0 vla-obj-list)
    2dlist         (nth 1 vla-obj-list)
    ptlist         (nth 2 vla-obj-list)
    vlist1         nil
    vlist2         nil
    vlist3         nil
  ) ;_ end-of setq
  (if lwlist
    (setq vlist1 (make-list lwlist 2))
  ) ;_ end of if
  (if 2dlist
    (setq vlist2 (make-list 2dlist 3))
  ) ;_ end of if
  (if ptlist
    (setq vlist3 (make-list ptlist 3))
  ) ;_ end of if
  (write-text vlist1 vlist2 vlist3)
  (princ)
) ;_ end of vert

(defun make-list (p-list n / i vlist obj coords ca j x y z xy)
  (setq    i (- 1)
    vlist nil
  ) ;_ end of setq
  (repeat (length p-list)
    (setq obj     (nth (setq i (1+ i)) p-list)
      coords (vlax-get-property obj "coordinates")
      ca     (vlax-variant-value coords)
      j     (- 1)
    ) ;_ end-of setq
    (repeat (/ (length (vlax-safearray->list ca)) n)
      (setq x (vlax-safearray-get-element ca (setq j (1+ j))))
      (setq y (vlax-safearray-get-element ca (setq j (1+ j))))
      (if (= n 2)
    (setq xy (list x y))
    (progn
      (setq z (vlax-safearray-get-element ca (setq j (1+ j))))
      (setq xy (list x y z))
    ) ;_ end of progn
      ) ;_ end of if
      (setq vlist (append vlist (list xy)))
    ) ;_ end-of repeat
  ) ;_ end-of repeat
) ;_ end-of make-list

(defun make-filter (/ filter)
  (setq    filter '((-4 . "<OR")
         (0 . "LWPOLYLINE")
         (0 . "POLYLINE")
         (0 . "POINT")
         (-4 . "OR>")
        )
  ) ;_ end of setq
) ;_ end of make-filter

(defun get-objects (filter  /        ss        k        lwp-list
            2dp-list        pt-list no-ent  obj        pl
            2d        pt
           )
  (setq no-ent 1)
  (while no-ent
    (setq ss       (ssget filter)
      k       (- 1)
      lwp-list nil
      2dp-list nil
      pt-list  nil
      obj       nil
      pl       "AcDbPolyline"
      2d       "AcDb2dPolyline"
      pt       "AcDbPoint"
    ) ;_ end-of setq
    (if    ss
      (progn
    (setq no-ent nil)
    (repeat    (sslength ss)
      (setq    ent (ssname ss (setq k (1+ k)))
        obj (vlax-ename->vla-object ent)
      ) ;_ end-of setq
      (cond
        ((= (vlax-get-property obj "ObjectName") pl)
         (setq lwp-list (append lwp-list (list obj)))
        )
        ((= (vlax-get-property obj "ObjectName") 2d)
         (setq 2dp-list (append 2dp-list (list obj)))
        )
        ((= (vlax-get-property obj "ObjectName") pt)
         (setq pt-list (append pt-list (list obj)))
        )
      ) ;_ end-of cond
    ) ;_ end-of repeat
      ) ;_ end-of progn
      (prompt "\nNo polylines or points selected, try again.")
    ) ;_ end-of if
  ) ;_ end-of while
  (list lwp-list 2dp-list pt-list)
) ;_ end-of get-objects

(defun write-text (vl1 vl2 vl3)
  (setq    fn (getfiled "Text File" "" "txt" 1))
  (setq f (close (open fn "w")))
  (setq msg "Points from LW-Polylines")
  (do-points fn vl1 msg 2)
  (setq msg "Points from 2d-Polylines")
  (do-points fn vl2 msg 3)
  (setq msg "Points from Point entities")
  (do-points fn vl3 msg 3)
  (princ)
) ;_ end of write-text

(defun do-points (fn vl msg n)
  (setq f (open fn "a"))
  (write-line msg f)
  (write-line "  x,  y,  z" f)
  (write-line "" f)
  (foreach point vl
    (setq x (nth 0 point)
      y (nth 1 point)
    ) ;_ end of setq
    (if    (= n 2)
      (setq str (strcat (rtos x) "," (rtos y)))
      (progn
    (setq z (nth 2 point))
    (setq str (strcat (rtos x) "," (rtos y) "," (rtos z)))
      ) ;_ end of progn
    ) ;_ end of if
    (write-line str f)
  ) ;_ end of foreach
  (setq f (close f))
  (princ)
) ;_ end of defun

(defun c:pts ()
  (vert)
  (princ)
) ;_ end-of defun

(prompt "PLIST.LSP by Tony Hotchkiss - enter PTS to start ")

 

0 Likes
20,704 Views
22 Replies
Replies (22)
Message 21 of 23

DGCSCAD
Collaborator
Collaborator

Has there been a "Reason" found why this is happening? I've been digging and can't find anything other than a generic response:

 

https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Error-no-function-...

 

Why/how is the Registry being changed/corrupted?

AutoCad 2018 (full)
Win 11 Pro
0 Likes
Message 22 of 23

Romana_CopfPJA79
Observer
Observer

I Have same problem in ACAD 2023.

Wi did all steps Autodesk suggested, nothing works.

0 Likes
Message 23 of 23

pendean
Community Legend
Community Legend

@Romana_CopfPJA79 wrote:

I Have same problem in ACAD 2023.

Wi did all steps Autodesk suggested, nothing works.


Are you on a MAC?

or is this an LT version?

0 Likes