Преобразование списка точек в массив типа variant
Построение границы дорожки
|
| ||||
Преобразование списка точек в массив типа variant |
| ||||
Таким образом, данные о вершинах полилинии теперь сгруппированы в список, формат которого подходит для передачи его в другие функции AutoLISP. Но нам нужно использовать их как входной параметр для вызова функции ActiveX, которая требует на входе массива типа variant, хранящего числа типа double. Для преобразования списка в тип variant можно воспользоваться следующей служебной функцией:
(defun gp:list->variantArray (ptsList / arraySpace sArray) ; allocate space for an array of 2d points stored as doubles (setq arraySpace (vlax-make-safearray vlax-vbdouble ; element type (cons 0 (- (length ptsList) 1) ) ; array dimension ) ) (setq sArray (vlax-safearray-fill arraySpace ptsList)) ; return array variant (vlax-make-variant sArray) ) Внутри функции gp:list->variantArray выполняются следующие действия: Ниже приведен пример вызова функции, которая использует gp:list->variantArray для преобразования списка в массив типа variant: ; data conversion from list to variant (setq VLADataPts (gp:list->variantArray polypoints))
|