|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.05.2021, 19:42 | #1 | |
Как определить, что блок находится в пространстве листа?
Регистрация: 10.02.2011
Сообщений: 41
|
||
Просмотров: 22749
|
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
PS: В примере сказано о трёх объектах, но это, разумеется допущение для простоты, а в реальности листов могут быть десятки, документов десятки, объектов на каждом листе по нескольку... |
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
когда хочется, чтобы было быстро и удобно - программирование. Акад лишь базовая платформа. Можно было бы к подшивке попробовать подцепиться - но вы что-то свое изобретаете же...)
|
|||
|
||||
Конструктор-Проектировщик Регистрация: 24.12.2008
Сообщений: 2,588
|
Ответ - никак. Как вы определите то на чём я сейчас стою - на ламинате или на паркете?
Ну а больше по теме: определитесь в каком виде вы хотите видеть это "извлечение данных"?
__________________
Если невнятное ТЗ, то результат получится ХЗ. |
|||
|
||||
Регистрация: 27.12.2011
Сообщений: 1,458
|
Цитата:
В списке блока точно указано его месторасположение : (entget (car (entsel))) Укажите объект: ((-1 . <Entity name: 3807f030>) (0 . "INSERT") (5 . "4F43") (330 . <Entity name: 3807d830>) (100 . "AcDbEntity") (67 . 1) (410 . "Лист 12") (8 . "__Форматки") (48 . 100.0) (100 . "AcDbBlockReference") (66 . 1) (2 . "Штамп угловой форма 3") (10 836.0 5.00000000000003 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) |
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
Заподозрил, что возможно интересующую меня информацию можно получить в атрибут, созданный в блоке, и в результате "извлечь данные" уже с ним.. но как правильно создать поле с искомым? Я не знаю, потому и любопытствую... ----- добавлено через ~1 мин. ----- Цитата:
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
Код:
|
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
|
|||
|
||||
Регистрация: 27.12.2011
Сообщений: 1,458
|
Ещё можно с древней книжки Бугрименко начать:
http://kappasoft.narod.ru/info/acad/lisp/a_lisp.htm |
|||
|
||||
Цитата:
Приложите пример что есть и какой результат нужен.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
Это создание перечня всех документов входящих в набор DWG файлов и попутный контроль заполнения основных надписей и полей с нумерацией листов. Чуть детальней: Имеется дин. блок с атрибутами - рамка чертежа, Имеется блок с атрибутами - основная надпись, Имеется дин. блок с подписями сотрудников... Во все эти блоки, вижу необходимость добавить атрибут, который будет хранить пространство в котором он расположен. Я хочу сторонним приложением (которое наколдую сам) проанализировать извлечение данных из группы чертежей (считаем для простоты, что эта группа чертежей есть выпускаемая книга) и создавать перечень всех документов, попутно проконтролировав содержимое атрибутов блоков на следующие признаки: - соответствуют ли проставленные в основной надписи подписи - фамилиям, фамилии должностям, сочетания фамилия/должность/видимость подписи текущему составу сотрудников отдела; - для наглядности получение перечня должностей-фамилий с количеством упоминаний, что бы обратить внимание на редко встречающиеся подписи, или подписи людей в проекте не участвовавших, - нет ли в нумерации документов пропущенных номеров листов, - нет ли в нумерации документов лишних номеров листов, - нет ли ошибок со сквозной нумерацией, В финале создать перечень включенных в книгу документов, возможно перечня документов основного комплекта рабочих чертежей и/или содержания... ----- добавлено через ~1 мин. ----- Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
Offtop: Что-то у меня подозрения, что достаточно изучить понятие подшивки и начать с ним работать...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
конструкция: (cdr (assoc 410 (entget (car (entsel))))) возвращает чисто имя пространства Теперь надо осознать, как бы это хозяйство научиться вписывать в атрибут блока ----- добавлено через ~2 мин. ----- Вам не удастся помешать мне забивать мелкоскопом гвозди |
|||
|
||||
Цитата:
2. То что вам надо это - Ведомость чертежей. См. ГОСТ 3. Как я и говорил задача совершенно другая. 4. Это надо в ветку - Программирование. 5. Или использовать готовое, но с получением всех ваших (причудливых) требований я не встречал.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
тогда и не нужен будет Цитата:
попутно изучая лисп - это отважно) А это еще ТС не "обнаружил" - что без дополнительных телодвижений лисп работает только внутри документа. |
|||
|
||||
Регистрация: 27.12.2011
Сообщений: 1,458
|
Цитата:
Цитата:
Последний раз редактировалось Oleg T, 07.06.2021 в 09:28. |
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
по п. 2. Если бы просто ведомость нужна была, без описанного в #16 контроля, то тема эта заведена бы не была, а так нужно именно то, что заявлено в первом сообщении. по п. 3. Задача не другая, вопрос к знатокам именно тот, что обозначен в начале темы. по п. 4. Может быть и да, но до получения ответов от знатоков это было не достаточно очевидно. ----- добавлено через ~16 мин. ----- тут такое дело, я ведь не мечтаю о том, чтобы всецело погрузиться в лисп... и перечень вопросов, который Вы процитировали будет решаться в c++, которым я с горем пополам умею оперировать и даже уже имею некоторый опыт разбора извлечённых из чертежей данных... Потому, на данный момент вижу решением своего вопроса код на лисп, который обойдёт в dwg файле все блоки и в имеющих атрибут с характерным именем (например "ПРОСТРАНСТВО") пропишет туда результат полученный по результатам выполнения кода, аналогичного "(cdr (assoc 410 (entget (car (entsel)))))"... разумеется в том его варианте, когда не ручками в каждый блок тыкать надобно ----- добавлено через ~34 мин. ----- Цитата:
В .net и c# я неумею совсем. Посылать в запущенный экземпляр автокада команды ActiveX можно, но не уверен, что через это дело есть возможность получать информацию из автокада обратно в своё приложение. Был ещё вариант с ObjectARX, но там под каждую версию автокада нужно устанавливать отдельную древнюю версию вижуалстудии, и очень похоже делать это необходимо в хронологическом порядке, а это те ещё пляски.... А потому мне вот вариант с получением данных через извлечение "понравился" больше всего. Там ведь окажутся исключительно готовые сухие данные, где одна строка - информация об одном блоке, а не база данных всех примитивов с которой ещё чёртзнаеткакработать. Цитата:
А на счёт "только внутри документа", таки если заведётся эта тема на одном чертеже, тогда я и буду думать об этом и дурацкие вопросы дальше задавать |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
если знаете С++ - синтаксис базовый похож) Весь Net фреймворк изучать совсем не обязательно, только базовые вещи - на что в инете огромное количество обучающего материала - от картинок до видео.
Цитата:
посмотрите в инете - как например, делают автоматизацию на связке акад-эксель. Есть ограничения, например с событиями - но взаимодействие можно обеспечить определенное.. и небыстрое) |
|||
|
||||
Из того же экселя через vba по очереди открываешь файлы, селектом ( selectionset) по имени блока выбираешь блоки, можно еще другие условия выбора задать , дергаешь из них атрибуты и прочие данные в массив или коллекцию, потом обрабатываешь массив или колекцию на дубликаты и прочее, если лом аналмзировать программно, выгружаешь полученное в таблицу эксель и его средствами делаешь анализ
__________________
Мастерская СПДС |
||||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
Вот только-только начал пытаться что-то читать про lisp, как вдруг возникает необходимость освоить и VBA, и C# ----- добавлено через ~5 мин. ----- То есть, намекаете, что C# всё же для этой цели нужен? Средствами Lisp задачу простановки атрибутов не осилить? |
|||
|
||||
начинающий инженер-гидротехник Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893
|
Алёшка, посмотрите
http://www.lee-mac.com/updatetitleblock.html Offtop: может подтолкнёт в нужном направлении |
|||
|
||||
Конечно.
Выше Сергей намекнул, что лиспом обработка нескольких файлов решается не совсем тривиально. А на чем решать задачу на vba, c# или vb.net непринципиально, средств activeX вполне достаточно
__________________
Мастерская СПДС |
||||
|
||||
Регистрация: 27.12.2011
Сообщений: 1,458
|
Вполне осилить.
Вот для блока с одним атрибутом (назначение имени листа, в одном файле, само собой). Если атрибутов несколько, то каждый следующий атрибут в блоке - (setq atr (entnext atr)) Код:
Последний раз редактировалось Oleg T, 08.06.2021 в 12:50. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
осилить можно, просто зная плюсы - городить набор костылей, которые рано или поздно наложатся на человеческий фактор - тупиковый путь, имхо. |
|||
|
||||
1. Извлечение данных - это DATAEXTRACTION
Мастер извлечения данных И это не сопоставимо с вашей задачей. Есть терминология и неверное её использование приводит к неверному результату. 2. Как и ранее говорил вам нужна ведомость документов, с дополнительными параметрами. 3. Практически всё что вам надо (выдрать информацию из штампа чертежа) вы можете получить при использовании - Реверс
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
3. Нет. Я описал что мне нужно, уже дважды, в третий раз вы меня не заставите повторять ))) Уважаемый, я дико извиняюсь, но не тратьте пожалуйста на меня своё время я бестолковый и не могу понять то, что Вы пишете ))) Всего Вам доброго, светлый Вы человек |
|||
|
||||
вам и разу и написали - НЕЛЬЗЯ т.к. задача у вас другая.
и вам не хворать. p.s. осталось немного подождать и...
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
Сразу во всех блоках, в каких надо и в каких не надо, первые атрибуты приравнялись имени пространства в котором они расположены! Прям уже прям почти то, что надо. Кстати, что за признак такой (2. "NAME_INSERT")? |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
читайте про DXF коды -> 2: Имя (тег атрибута, имя блока и т.д.) |
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
За наводку на DXF коды спасибо ) |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
|
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
а потом понял, что подустал и хочу сказать следующее: Уважаемый, я дико извиняюсь, но не тратьте пожалуйста на меня своё время я бестолковый и не могу понять то, что Вы пишете ))) Всего Вам доброго, светлый Вы человек |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
да можете, конечно, становиться в позу обиженного, ваше право) Но вы сами задали планку не новичка в программировании
после чего ваши следующие посты, а так же игнорирование советов практически занимающихся программированием, вызывает определенное... удивление вашим подходом к решению весьма несложной задачи |
|||
|
||||
Алёшка, зачем лиспом прикручивать блоку атрибут с пространством, когда можно тем же лиспом пройтись по всем целевым блокам всех пространств и собрать интересующую информацию в каком нужно формате для дальнейшего анализа? А если использовать ODBX, так и можно это делать пакетно.
|
||||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
Очевидно, потому что:
Ответ на вопрос автора: Цитата:
Дальше, добро пожаловать в соответствующие разделы форума. |
|||
|
||||
Регистрация: 27.12.2011
Сообщений: 1,458
|
Цитата:
Однако у автора аппетит разыгрался, а это действительно уже не сюда |
|||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Цитата:
Большая часть сочетаний букв, которые мелькают в советах мне, я просто не понимаю (уверен, советы наверняка весьма дельные, но я в виду своей необразованности зачастую я не могу их понять).. а советы перейти на С# или VBA не могу воспринимать в серьёз, потому как объём изучаемого там материала для меня не ясен и хотелось бы всё же решить моё первичную задачу (приведённую в старте топика) посредством автокада или на крайняк встроенного в него лиспа (коль скоро выяснилось, что решение таким способом вполне возможно). ----- добавлено через ~9 мин. ----- Цитата:
(2 . "<вот тут>") не соответствует имени определения блока Придётся, видимо, пытаться искать атрибут по его уникальному имени во всех блоках, не зная имени блока заранее... Так пожалуй даже более универсальное решение получится Увы, я не всегда чувствую ту самую грань, когда нужно бросать старый топик и заводить новый топик по близко связанным вопросам Вы полагаете уже пора? |
|||
|
||||
Регистрация: 27.12.2011
Сообщений: 1,458
|
Просто здесь, как я понимаю, больше принято обсуждать стандартные средства автокада. Может, в ветке про программирование больше помогут.
А динамические блоки действительно определяются как анонимные, так что тут и правда лучше искать по имени атрибута. Можно еще свой слой для этих блоков создать, но тут человеческий фактор больше влиять будет. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
тыц от Кулика Алексея)
|
|||
|
||||
Не придется, селсетом за один раз со всего чертежа забираешь все блоки с нужным эффективе нэйме, потом в цикле разбираешь коллекцию.. атрибуты, пространство
__________________
Мастерская СПДС |
||||
|
||||
Регистрация: 10.02.2011
Сообщений: 41
|
Спасибо большое всем кто помог разобраться.
Без помощи Oleg T, чую, возиться пришлось бы неизмеримо дольше. Спасибо Сергей812 за деятельное участие в обсуждении и ряд толковых подсказок, пусть и с подколками. Код предоставленный Oleg T и немного доработанный напильником, который полностью перекрывает мои потребности: Код:
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вписать определенный элемент модели в ВЭ в пространстве листа | Sanbl4 | AutoCAD | 5 | 02.12.2015 14:00 |
Чудеса с размерами в пространстве листа | Dmitry2004 | AutoCAD | 9 | 28.05.2014 12:02 |
Не отображается заливка в пространстве листа. | Софико | AutoCAD | 7 | 20.04.2013 00:02 |
Пропадание объектов в пространстве листа. | 1Sasha1 | AutoCAD | 4 | 11.01.2010 14:02 |
На каком лайоуте находится выбранный блок? | DonVik | Программирование | 30 | 29.08.2008 17:20 |