Hi
An example to remove a layer in a viewport
(defun remove_lay(vie tab / i j k l n nd nt xd xt)
(vla-getxdata vie "" 'xt 'xd)
(setq n (vlax-safearray-get-u-bound xt 1)
i (length tab)
k (- n i)
nt (vlax-make-safearray vlax-vbinteger (cons 0 k))
nd (vlax-make-safearray vlax-vbvariant (cons 0 k))
j 0
l 0
)
(repeat (1- n)
(or (member (vlax-variant-value (vlax-safearray-get-element xd j)) tab)
(progn
(vlax-safearray-put-element nt l (vlax-safearray-get-element xt j))
(vlax-safearray-put-element nd l (vlax-safearray-get-element xd j))
(setq l (1+ l))
)
)
(setq j (1+ j))
)
(vlax-safearray-put-element nt (1- k) (vlax-safearray-get-element xt (1- n)))
(vlax-safearray-put-element nd (1- k) (vlax-safearray-get-element xd (1- n)))
(vlax-safearray-put-element nt k (vlax-safearray-get-element xt n))
(vlax-safearray-put-element nd k (vlax-safearray-get-element xd n))
(list nt nd)
)
(setq test (remove_lay viewport (list "layer 1" "layer 2")))
and to look result
(vlax-safearray->list (cadr test))
and when you use vla-setxdata, it's don't work.
@+