Assgarth Opublikowano 17 Sierpnia 2011 Zgłoś Udostępnij Opublikowano 17 Sierpnia 2011 Witam, poszukuję skutecznej metody aktualizacji wierzchołków polilinii za pomocą Visual Lisp'a. Sprawdzałem na bazie tego co wcześniej robiłem w AutoCAD, lecz ZwCAD po prostu nie reaguje przy funkcji "vlax-put"... Przykład: - narysować dowolną polilinię, a następnie: (vl-load-com) (setq entOb (vlax-ename->vla-object (car(entsel)))) ;(setq Coord (vlax-get entOb 'Coordinates)) - AutoCAD (setq Coord (vlax-safearray->list (vlax-variant-value (vlax-get entOb 'Coordinates)))) ; - ZwCAD ;lub: ;(setq Coord (vlax-safearray->list (vlax-variant-value (vlax-get-property entOb 'Coordinates)))) ;...tutaj ustalenie nowych współrzędnych np. (1500.20 111.0 1312.124 123.21) (vlax-put entOb 'Coordinates Coord) (vla-update entOb) i nic się nie dzieje... Próbowałem również: (vlax-put-property entOb 'Coordinates (list 1500.20 111.0 1312.124 123.21)) ale również bez efektu... Mogę zatem założyć, że funkcja "vlax-put" po prostu nie działa, a funkcja "vlax-put-property" albo nie działa do końca właściwie, albo nie jest po prostu przeznaczona do zmiany tych właściwości obiektu. pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 17 Sierpnia 2011 Zgłoś Udostępnij Opublikowano 17 Sierpnia 2011 Trzeba tą listę nowych współrzędnych zapisać jako variant elementów typu double: (vl-load-com) (defun L2v(lista typ / NObj SelObjArray i iList SelObjArrayVar) (setq NObj (length lista)) (setq SelObjArray (vlax-make-safearray typ (cons 0 (- NObj 1) ))) (setq i 0) (repeat NObj (vlax-safearray-put-element SelObjArray i (nth i lista)) (setq i (1+ i)) ) (vlax-safearray-fill SelObjArray lista) (setq SelObjArrayVar (vlax-make-variant SelObjArray)) ) (setq entOb (vlax-ename->vla-object (car(entsel)))) (setq Coord (vlax-safearray->list (vlax-variant-value (vlax-get entOb 'Coordinates)))) ; - ZwCAD (setq Coord(L2V(LIST 1500.20 111.000 1312.12 123.210) vlax-vbDouble)) (vlax-put-property entOb 'Coordinates Coord) (vla-update entOb) Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.