Сообщество программистов Autodesk в СНГ

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: SilverWork от 08-08-2019, 22:22:47

Название: Рисование в видовом экране
Отправлено: SilverWork от 08-08-2019, 22:22:47
Пытаюсь нарисовать примитивы по команде пользователя скриптом AutoLisp через ActiveX.
При активной модели или листе все нормально: определяю активный документ, затем активное рабочее пространство и далее добавляю нужный примитив.
Код - Auto/Visual Lisp [Выбрать]
  1. (setq ActiveDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  2.         (if (= (vla-get-ActiveSpace activeDocument) 1)
  3.                 (setq  workSpace (vla-get-modelspace activeDocument))
  4.         )
  5.         (if (= (vla-get-ActiveSpace activeDocument) 0)
  6.                         (setq workSpace (vla-get-paperspace activeDocument))
  7.         )
  8.  
Но что делать, если во время вызова команды открыт видовой экран? Функция vla-get-ActiveSpace выдает 0, т.е. работу в листе, но фактически активной является модель. Как можно отловить такую ситуацию? Пробовал функцию vla-get-activeviewport, но все время выдает ошибку, что нет активных видовых экранов.
Название: Re: Рисование в видовом экране
Отправлено: Александр Ривилис от 08-08-2019, 23:36:39
SilverWork,
1. Не забывай про правильное форматирование кода на форуме.
2. Если (= (getvar "tilemode") 0) и (= (getvar "cvport") 1) - мы в пространстве листа. В противном случае в пространстве модели.
Название: Re: Рисование в видовом экране
Отправлено: SilverWork от 09-08-2019, 09:20:04
Все отлично сработало. Спасибо.