Assgarth Posted August 17, 2011 Report Share Posted August 17, 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 Quote Link to comment Share on other sites More sharing options...
kruszynski Posted August 17, 2011 Report Share Posted August 17, 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) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.