Michal Opublikowano 26 Kwietnia 2008 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 28 Kwietnia 2008 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi