Элементы вариации

Здравствуйте.

Попадаются некорректные DWG файлы, которые содержат элементы динамических блоков (элементы вариации) в пространстве чертежа. Эти элементы невидимы и при копировании любого примитива в другой чертёж переносятся туда. Происходит “заражение” новых файлов. При этом пользователь ничего не замечает.

Если открыть такой файл в Автокаде, выдаётся сообщение: файл содержит элементы вариации. Открыть в редакторе блоков?

В Нанокаде никаких сообщений не появляется. Выявить такой файл возможно только при вставке из буфера блоком (CTRL+SHIFT+V). Тогда у блока появляются скрытые на чертеже элементы. В примере “Видимость” и “Поворот”.

Лечение для Нанокада придумал такое:

  1. Скопировать чертежи в буфер обмена;
  2. В новый файл вставить из буфера блоком (CTRL+SHIFT+V);
  3. Расчленить (взорвать) получившийся блок.

У меня два вопроса:

  1. Как в Нанокаде получать уведомления о содержащихся на чертеже элементах вариации? Наподобие автокадовского сообщения. Это позволило бы предотвратить размножение этих элементов по новым чертежам;
  2. Возможно ли сделать скрипт для автоматической очистки чертежа от элементов вариации?

Посмотреть в Диспечере чертежа, например

image.png

изображение.png

У вас какая версия Нанокада? У меня 20.1 и таких элементов в Диспетчере чертежа нет.
Но всё равно это не то, что нужно. Нужно, чтобы пользователь получал предупреждение при открытии файла.

В каждом файле открывать диспетчер чертежа и искать там эти элементы накладно и заставить всех пользователей так делать не получится.

Попробуйте код, который просто удаляет словарь, отвечающий за элементы вариации.

Не знаю, насколько такая операция безопасна. Дождался бы комментария

Но пока можете потестить на свой страх и риск

ЗЫ. Кстати, удаление такой информации не всегда является действительно желаемой опцией.

Если описание динамического блока (корректно только в АС) экспортировалось чем-то типа WBLOCK или сохранением описания блока во внешнем файле, то после такой экзекуции этот файл будет недоступен в качестве вставки блока. Нужно быть точно уверенным, что вы действительно желаете изменить чертеж, а не внести правку в библиотечный элемент-блок.

Попробуйте код, который просто удаляет словарь, отвечающий за элементы вариации.

Не знаю, насколько такая операция безопасна. Дождался бы комментария

Но пока можете потестить на свой страх и риск

ЗЫ. Кстати, удаление такой информации не всегда является действительно желаемой опцией.

Если описание динамического блока (корректно только в АС) экспортировалось чем-то типа WBLOCK или сохранением описания блока во внешнем файле, то после такой экзекуции этот файл будет недоступен в качестве вставки блока. Нужно быть точно уверенным, что вы действительно желаете изменить чертеж, а не внести правку в библиотечный элемент-блок.

Спасибо! Работает. Поломок чертежей пока не замечено, будем тестировать. Если найдутся - напишу.
Это решение второго вопроса.

https://forum.nanocad.ru/discussion/comment/280#Comment_280

Спасибо! Работает. Поломок чертежей пока не замечено, будем тестировать. Если найдутся - напишу.

Это решение второго вопроса.

Первый вопрос - информирование пользователя о наличии проблемы - более сложная задача. Ее решение возможно:

  • со стороны разработчиков Нанософта путем фиксации пожелания и реализации соответствующего функционала. Путь тяжеловесный, но правильный. Возможно, потребуются дополнительные уточнения по способу реализации, т.к. пресловутые элементы вариации не поддаются редактированию (пока) нанокадом;
  • Использованием механизма реакторов в лисповском скрипте, отслеживающих событие открытия файла и проводящим соответствующую проверку и информирование пользователя о кракозябе. Путь несложный (большая часть его была пройдена на старом форуме), но не очень надежный (есть предвзятое отношение к этому механизму);
  • Использование аналогичного п.2 механизма на других платформах (C#, Мультикад и т.п.). Необходимо обратиться к спецам по этим платформам. Тут я - пас.

https://forum.nanocad.ru/discussion/comment/283#Comment_283

Первый вопрос - информирование пользователя о наличии проблемы - более сложная задача. Ее решение возможно:

со стороны разработчиков Нанософта путем фиксации пожелания и реализации соответствующего функционала. Путь тяжеловесный, но правильный. Возможно, потребуются дополнительные уточнения по способу реализации, т.к. пресловутые элементы вариации не поддаются редактированию (пока) нанокадом;Использованием механизма реакторов в лисповском скрипте, отслеживающих событие открытия файла и проводящим соответствующую проверку и информирование пользователя о кракозябе. Путь несложный (большая часть его была пройдена на старом форуме), но не очень надежный (есть предвзятое отношение к этому механизму);Использование аналогичного п.2 механизма на других платформах (C#, Мультикад и т.п.). Необходимо обратиться к спецам по этим платформам. Тут я - пас.

А можно подробнее о варианте “Использованием механизма реакторов в лисповском скрипте…” ?

Немного поправил ваш скрипт для проверки наличия элементов вариации:

Получается простой способ проверки, но он требует выполнения команды.

Теперь вопрос: как выполнять автоматически команду “проверить_элементы_вариации” во время старта Нанокада? (не подгрузка лиспа через APPLOAD, а именно выполнение команды) Тогда первый вопрос тоже будет решён.

Наверное, имеется ввиду не “во время старта Нанокада”, а в “момент открытия файла”.

Именно второе (и еще очень много другого, связанного с контролем изменений) и отслеживается через механизм реакторов. По-другому - никак. Если коротко, то это фрагменты кода, запускаемые по определенному событию, а не путем вызова команды. Механизм этот очень нежный, нужен определённый навык. Не советовал бы сразу в него окунаться, если не желаете всерьез погрузиться в программирование.

В качестве альтернативы предложил бы остановиться на ручном вызове программы. Еще ее можно модифицировать, чтоб она не выдавала сообщение (убрать alert). Тогда можно добавить эту команду в пакетную обработку файлов и “натравить” все это хозяйство на папку с файлами, подвергаемыми санации.

Доброго дня!
Задавала такой вопрос в тех.поддержку, на что получила следующий ответ:

Здравствуйте.
Да, в 26 версии проверка и удаление элементов вариации реализована. Проверял, работает.
В предыдущих версиях пользуюсь лиспами (дублирую, пропали из форума):

проверить_элементы_вариации_v3.zip (1,1 КБ)

2 лайка