LISP napisany pod zwcad i problemy z wdrożeniem w programie


Michal
 Share

Recommended Posts

czy poniższy program zaadoptowany z Developer Help ma prawo nie działać ?

(defun c:TB ( / lineObj startPt endPt matList transMat)

(vl-load-com) ; Load ActiveX support

(setq acadObject (vlax-get-acad-object))

(setq acadDocument (vla-get-ActiveDocument acadObject))

(setq mSpace (vla-get-ModelSpace acadDocument))

;; Create a line

(setq startPt (getpoint "Pick the start point"))

(setq endPt (vlax-3d-point (getpoint startPt "Pick the end point")))

(setq lineObj (vla-addline mSpace (vlax-3d-point startPt) endPt))

;;; Initialize the transMat variable with a transformation matrix

;;; that will rotate an object by 90 degrees about the point(0,0,0).

;;; Begin by Creating a list of four lists, each containing four

;;; numbers, representing transformation matrix elements.

(setq matList (list '(0 -1 0 0) '(1 0 0 0) '(0 0 1 0) '(0 0 0 1)))

;;; Use vlax-tmatrix to convert the list to a variant.

(setq transmat (vlax-tmatrix matlist))

;;; Transform the line using the defined transformation matrix

(vla-transformby lineObj transMat)

(vla-zoomall acadObject)

(princ "The line is transformed ")

(princ)

)

właściwie zmieniłem tylko pierwszą linijkę porównując do tego co w Helpie, a miała następującą postać:

(defun Example_TransformBy () ; / lineObj startPt endPt matList transMat)

może coś źle robie?

to pytanie jest postawione nie bez przyczyny, gdyż uruchomiony lisp w programie zwcad wersji 2008i zwraca informacje w Command Bar o następującej treści:

Command: TB

error: null function

(VLAX-GET-ACAD-OBJECT)

(SETQ ACADOBJECT (VLAX-GET-ACAD-OBJECT))

(C:TB)

nawet taki prosty lisp ktory przytoczony w innym Temacie na tym forum również uzyskuje zerowy wynik. Lisp ma się następująco:

(defun c:get (/ A)

(vl-load-com)

(setq A(ssget))

(vlax-curve-getParamAtDist A 1.0)

) ;end defun

Link to comment
Share on other sites

Witam,

zacząłem od tego małego programiku na końcu.

Proszę spróbować uruchomić coś takiego:

(defun c:get (/ A)

(vl-load-com)

(setq a (vlax-ename->vla-object (car (entsel))))

(vlax-curve-getParamAtDist A 1.0)

) ;end defun

Uruchamia się go jak zwykły LISP.

Pozdrawiam

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share