| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как определить ошибочные поля (####) в AutoCAD?

LISP. Как определить ошибочные поля (####) в AutoCAD?

Ответ
Поиск в этой теме
Непрочитано 19.08.2015, 13:41
LISP. Как определить ошибочные поля (####) в AutoCAD?
skkkk
 
Регистрация: 20.03.2008
Сообщений: 2,653

Возник вопрос:
Цитата:
Сообщение от skkkk Посмотреть сообщение
Подскажите, пожалуйста, если кто знает, как можно проверить, не просматривая весь чертеж на наличие "решеток", все ли поля "целы"? То есть, не удалили ли случайно объекты, на которые они ссылаются? Как-то, на мой взгляд, не продуман Автодеском этот момент. Можно было бы и предупреждение добавить при удалении таких объектов.
Пробовал поиск в чертеже по символу "#" с отключенной галочкой "Подстановочные знаки" - ищет решетки, только если преобразовать поле в текст. Полагаю, нужно будет писать программу для маркировки "осиротевших" полей, но может, есть штатный функционал, о котором я не знаю?
Поскольку штатный функционал такого не позволяет, решено продолжить обсуждение здесь. Код писать не прошу - сам с усам, - прошу заинтересованных и знающих лиц дать оценку алгоритма и внести свои мысли и предложения на этот счет. (Удивляюсь, как до сих пор никого этот вопрос не озадачил, даже на англоязычных форумах ничего не смог найти - может, плохо искал?)

Думаю, алгоритм должен быть примерно таким.
1. Сканируем весь чертеж на предмет объектов с полем. Тут думаю, можно воспользоваться частями уже имеющихся в сети программ, которые преобразовывают поле в текст, например, от VVA. Далее обрабатываем каждый объект по очереди.
2. Получаем текстовое представление объекта. Это самый вроде, простой вариант, но не самый правильный, на мой взгляд, поскольку решетки там могут быть и сами как таковые. Более правильным мне кажется извлекать из кода поля ID объекта и проверять наличие этого объекта на чертеже. ID, конечно меняется от сеанса к сеансу, но, насколько я знаю, в течение сеанса он постоянен, и нам этого достаточно.
3. В зависимости от реализации п. 2, собираем все объекты с порушенными полями, и маркируем их.

Какие есть мысли, уважаемые форумчане?

Добавлено:

Решение в #20
Как всегда, спасибо Алексею. Не успел я начать писать код, как он уже предоставил решение.

Вариант с диалоговым окном выбора нужных вкладок (модели или листа) в #26. Выбрать несколько листов можно, если зажать при выборе Ctrl или Shift. Спасибо VVA.

Последний раз редактировалось skkkk, 08.04.2016 в 11:07.
Просмотров: 15529
 
Автор темы   Непрочитано 07.04.2016, 15:21
#41
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


shartal, а как насчет #26? Не пойдет?
skkkk вне форума  
 
Непрочитано 07.04.2016, 18:14
#42
shartal


 
Регистрация: 12.08.2009
Сообщений: 447


Хотелось бы добавить это в сценарий, всплывающее окно очень мешает.
shartal вне форума  
 
Непрочитано 10.04.2016, 12:42
1 | #43
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от shartal Посмотреть сообщение
всплывающее окно очень мешает.
Замени в коде из #26 строчку
Код:
[Выделить все]
(foreach layout (_dwgru-get-user-dcl "Выберите листы" (cons "Model" (mapcar 'vla-get-name (cdr(dwgru-layouts-list)))) t)
на
Код:
[Выделить все]
(foreach layout (list "Model")
Не проверял, нет технической возможности, но должно работать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.11.2017, 20:15
#44
allar8


 
Регистрация: 12.03.2013
Сообщений: 650


checkfield
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Очередная пересборка
Вложения
CheckFields.LSP (15.3 Кб, 67 просмотров)
Потрясающе!
allar8 вне форума  
 
Непрочитано 27.02.2018, 13:42
#45
Barmaley Bubusikin


 
Регистрация: 05.06.2014
Сообщений: 77


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
AutoCAD 2015: при наличии в формуле ошибочного поля результат выводится как ####
Автокад 2016. Как заставить искать в поле с формулой вида "ошибочное поле"*"что-то еще". (пример во вложении)
Вложения
Тип файла: dwg
DWG 2013
Поля с ошибками.dwg (48.9 Кб, 11 просмотров)
Barmaley Bubusikin вне форума  
 
Непрочитано 09.08.2019, 15:14
#46
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Задался подобный вопросом поиска "битых" полей...
Оказалось, что с точки зрения .NET не сказать что просто, но довольно много инструментов.
Не надо перебирать объекты в чертеже, можно разом получить список всех полей и быстренько найти их родителей и у каждого поля есть статус FieldEvaluationStatus в котором видно есть ли ошибки при пересчете поля.

Цитата:
Сообщение от Barmaley Bubusikin Посмотреть сообщение
Автокад 2016. Как заставить искать в поле с формулой вида "ошибочное поле"*"что-то еще". (пример во вложении)
В Вашем файле из 34 полей, сломано 22 =(
Boxa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как определить ошибочные поля (####) в AutoCAD?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD 2008, Функция "Последние Файлы" никак не хочет работать Fredyk AutoCAD 4 05.07.2012 08:35
Свежие книги по AutoCAD. Какая лучше? Marsikus Поиск литературы, чертежей, моделей и прочих материалов 10 28.01.2012 16:55
Правило формирование записей в реестре об установленных обновлениях для AutoCAD и его вертикальных решений. hwd Программирование 8 30.09.2010 15:07
Где в реестре хранится информация о том, что в системе когда-то был установлен AutoCAD? Archeo AutoCAD 12 14.10.2009 15:24
Что нового в AutoCAD 2005 ilka_t AutoCAD 40 19.05.2004 16:48