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

ADN Club => AutoCAD .NET API => Тема начата: Georg от 01-11-2020, 22:15:13

Название: Извлечение геометрии из блоков линий
Отправлено: Georg от 01-11-2020, 22:15:13
Добрый день, имеется чертеж AutoCAD Classic с блоками (~1000 шт), каждый блок имеет уникальное имя (GUID) и представлен замкнутым контуром (полилинией). Есть ли какие-то программные решения (от простого к сложному) как получить для каждого блока геометрию (вершины полилинии) + точку привязки (базовую точку). По факту - получить некий массив для каждого из блоков, хранящий его геометрию.
Нужно:
а) - для проверки нахождения базовой точки внутри блока (если нет - то ее сменой);
б) - конвертацией данного полигона в файл ГИС-данных (есть таблица сопоставления имени блока с прочими атрибутами для участка с данным GUID).
Решение желательно на .NET (остальное не знаю) или Dynamo (без Python)/VBA (менее предпочтительно)
Примерный файл во вложении
P.S. Либо в альтернативу - сделать так, чтобы линия из блока сохраняла информацию об его имени (чтобы работать чисто с линиями как с геометрией), вместо работы с блоками
Название: Re: Извлечение геометрии из блоков линий
Отправлено: avc от 01-11-2020, 22:46:48
AutoCAD Classic не существует :)
А прочитать данные из блока, найти полилинию и прочитать ее вершины .NET API конечно же позволяет. Примеров тут полно. Для такой задачи достаточно документации по API.
Между прочим точка привязки блока - это 0 его внутренней системы координат. Если его менять, то надо переносить объеты внутри блока и переносить все BlockReference в обратную сторону.
Название: Re: Извлечение геометрии из блоков линий
Отправлено: avc от 01-11-2020, 22:49:03
А насчет альтернативы - тоже не проблема. GUID можно сохранить в XData полилинии.
Название: Re: Извлечение геометрии из блоков линий
Отправлено: Georg от 01-11-2020, 22:54:52
А можете, пожалуйста, натолкнуть на мысли про Xdata? Там где меньше API желательно (я вообще в этом плохо ориентируюсь, пока что)  :(
Название: Re: Извлечение геометрии из блоков линий
Отправлено: avc от 01-11-2020, 23:00:34
Не понял вопроса. Какие мысли? В чем конкретно проблема? Документация по .Net API поставляется вместе ObjectARX. Примеры там тоже есть.
Название: Re: Извлечение геометрии из блоков линий
Отправлено: avc от 01-11-2020, 23:27:44
На случай если у вас сломан Гугл: https://www.keanw.com/2007/04/adding_xdata_to.html (https://www.keanw.com/2007/04/adding_xdata_to.html)
Название: Re: Извлечение геометрии из блоков линий
Отправлено: Georg от 01-11-2020, 23:44:31
Большое спасибо!
Гуглом не пользуюсь, когда есть такой информативный форум и отзывчивые эксперты  ;)
Послать можно было в 1 сообщении, а не писать их 4 штуки   :)
Название: Re: Извлечение геометрии из блоков линий
Отправлено: trir от 02-11-2020, 09:17:44
откуда такой файл?
Название: Re: Извлечение геометрии из блоков линий
Отправлено: Georg от 02-11-2020, 09:42:19
Добрый день, данный файл - пока что моя задумка - как способ максимально упростить задачу по разметке территории города для людей слабо знакомых с AutoCAD (чтобы не усложнять процесс). Существует некая Google-Таблица с перечнем участков (для каждого свой GUID), для каждой есть метки данных. Группа лиц размечает город на участки, собирает это в 1 файле, с помощью dataextraction выгружает в xls файл, синхронизирует с Google и получает финальную версию таблицы, которая идет как набор данных в Civil 3d - там проставляются метки участков и это идет как геоподоснова в Revit (разметка участков).
Запрошенный вариант с обращением к геометрии блоков - это на случай если "группа лиц" сделает ошибку и поставить точку не в контуре участка, да и мне - проще иметь также вариант представления данных в ином виде. С API максимально на "вы", очень сложно вникнуть, я больше в сторону вычислительного программирования.
P.S. Задача, акцентирую не рабочая/коммерческая а образовательная (пусть подход такой не пугает - по обводке участков)
P.S.S. В целом, я могу и разорвать потом блоки и проверить факт вхождения точки из таблицы в контур чисто с позиции геометрии и если true - то присвоить ей характеристики, если false - вывести имена блоков - но всегда хочется узнать другие варианты
Название: Re: Извлечение геометрии из блоков линий
Отправлено: trir от 02-11-2020, 09:49:18
Цитировать
для людей слабо знакомых с AutoCAD
а зачем тут вообще AutoCAD? Можно в QGIS это сделать или вообще в гугло-картах
Название: Re: Извлечение геометрии из блоков линий
Отправлено: Georg от 02-11-2020, 09:53:43
Увы, люди, которые это будут делать не гарантированно что разбираются так глубоко - моя воля так пусть бы сами в том же Civil 3D их размечали, но нужно что-то простое до крайности. Участки обязательно должны иметь смежные ребра, иначе теряется смысл проработки поверхностей - а гугл не уверен что так сделает. QGIS тоже не уверен что может так, да и сложный с непривычки для начинающего
Название: Re: Извлечение геометрии из блоков линий
Отправлено: trir от 02-11-2020, 09:57:09
https://nextgis.ru/nextgis-web/
либо там есть нужный функционал из коробки, либо могут его сделать
причём сразу в одном месте, без всяких гугло-таблиц

Цитировать
по обводке участков
в смысле?
Название: Re: Извлечение геометрии из блоков линий
Отправлено: Georg от 02-11-2020, 10:16:21
Ну... в общем границы участков это ломаные с привязкой к ребрам других участков с помощью типа привязки "Ближайшая" - если так понятней. В общем чтобы поверхность в рамках квартала была полностью захвачена/участки имели идентичные высотные отметки на границах с другими. Где границы с дорогами - там нет проработки, то иная.. задача других команд уже потом в будущем (инфраструктурная часть)
P.S. За карты спасибо, но тут нереально боюсь, пойди еще что-то коммерческое пропихни, да и сроки поджимают уже на выдачу заданий :( - это же только платное, как я понял?
Название: Re: Извлечение геометрии из блоков линий
Отправлено: trir от 02-11-2020, 10:23:21
мне не понятно - что вы обводить собрались
обычно просто выписки в Росреестре заказывают...
Название: Re: Извлечение геометрии из блоков линий
Отправлено: Georg от 02-11-2020, 10:34:49
И они идут по паре месяцев  ::), а уж в таком масштабе .. :-X
Тут история образовательная - точность не так важна в плане захвата участков, главное чтобы на участке были здания, и участки имели общие границы с соседними. Этого уже хватит, а история вообще была не о том изначально ...
Название: Re: Извлечение геометрии из блоков линий
Отправлено: trir от 02-11-2020, 11:33:53
https://geodesist.ru/threads/vychislenie-koordinat-uchastka-po-kadastrovomu-nomeru.58409/

В AutoCAD есть такая вещь, как DBCONNECT (https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2018/ENU/AutoCAD-Core/files/GUID-56352196-BB2D-47A1-B091-5BD367A6F195-htm.html)