Michal Opublikowano 26 Kwietnia 2008 Zgłoś Opublikowano 26 Kwietnia 2008 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
dmatusz3 Opublikowano 28 Kwietnia 2008 Zgłoś Opublikowano 28 Kwietnia 2008 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
Rekomendowane odpowiedzi