Доброе время суток!
Я в просессе выполнения больщой программы неоднократно формирую наборы в ActiveX с помощью такого
лиспа.
(defun selSetPolygon (Typ Points / acadObj doc one lsts kol a lstSB )
(vl-load-com)
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj ))
(setq sets (vla-get-SelectionSets doc))
(If (> (vla-get-count sets ) 0)
(vla-delete (vla-item sets "SS1"))
)
(setq Nset (vla-Add sets "SS1"))
(cond
( (= Typ "F")
(setq REgim acSelectionSetFence)
)
( (= Typ "CP")
(setq REgim acSelectionSetCrossingPolygon)
)
( (= Typ "WP")
(setq REgim acSelectionSetWindowPolygon)
)
)
(setq ptlist nil)
(if Points (progn
(setq pt (car Points))
(setq ptlist (cons pt ptlist))
(foreach pt (cdr Points)
(setq ptlist (cons pt ptlist))
);for
(setq ptlist (apply 'append ptlist))
(if (= (rem (length ptlist) 3) 0)
(progn
(setq tmp (vlax-make-safearray vlax-vbDouble (cons 0 (- (length ptlist) 1)) ) )
(vlax-safearray-fill tmp ptlist)
);;prg
(setq tmp nil)
);;if
);;pg
) ;;if
(vla-SelectByPolygon Nset Regim tmp )
(setq ret nil ii 0)
(repeat (vla-get-count Nset)
(setq item (vla-item Nset ii))
(setq ret (append ret (list (vlax-vla-object->ename item))))
(setq ii (1+ ii))
);;ret
(vla-Delete Nset)
ret
)
В конце программы я делаю UNDO в начало. И этот лисп перестает работать.
Выдает ошибку "Automation Error. Description was not provided."
Однако,если сохранить чертеж,перегрузить его и запустить программу с того
места чертежа, где получил вышеуказанную ошибку,то ошибки нет.
Почему это протсходит? Что произошло с ActiveX в акаде?
(Работаю в Avtocad 2020)