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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический разбор трассовки в DWG/DXF

Автоматический разбор трассовки в DWG/DXF

Ответ
Поиск в этой теме
Непрочитано 14.12.2013, 02:51 #1
Автоматический разбор трассовки в DWG/DXF
Hresult
 
Регистрация: 14.12.2013
Сообщений: 10

Прошу подсказать

Есть Alignment Sheets (трассовки) - "чертежи" участков вдоль трубопровода по 600-1000 м. Таких трассовок на трубу может быть под 100.
Каждая трассовка состоит из "плана" и "подвала". На плане показано плановое положение с картой, в подвале - распределение некоторых характеристик самой трубы по длине - профиль земли, профиль трубы, толщина стенки итд.
Каждая трассовка - один файл DWG/DXF.



Нужно получить данные из "подвала" как можно более автоматическим способом.
Пусть сначала профиль земли и трубы.
Профиль земли и трубы - это две полилинии, каждая в своем слое. Во всех файлах одинаково.
Хотелось бы найти такую программу, которая выводит координаты вершин полилиний в текстовый (или MS Excel) файл, указав только имена слоев.
Идеальный вариант - по пакету DWG/DXF файлов.
Хорошо бы VB, LISP - темный лес для нас.
Может кто поможет?

Изображения
Тип файла: jpg Untitled.jpg (260.7 Кб, 810 просмотров)


Последний раз редактировалось Hresult, 14.12.2013 в 03:23.
Просмотров: 7170
 
Непрочитано 14.12.2013, 07:34
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


А если бы это было сделано в Civil'е - то не было никаких проблем...
trir вне форума  
 
Автор темы   Непрочитано 14.12.2013, 07:52
#3
Hresult


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


Цитата:
Сообщение от trir Посмотреть сообщение
А если бы это было сделано в Civil'е - то не было никаких проблем...
А еще лучше в ГИС. Вообще ничего делать не надо было бы.
А так - это наша задача. И у нас только DWG файлы. Кто их делал, когда и как - в общем случае неизвестно.
Hresult вне форума  
 
Непрочитано 14.12.2013, 09:55
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Получить данные с чертежа для того, кто знаком с DXF Reference/API автокада - не проблема. Больше вопросов по тому, как планируется взаимодействовать с чертежом.
VB - это просто Visual Basic или VB.NET? В какой среде программу хотите запускать: в автокаде или в Windows без запуска автокада?
P.S. И, пожалуй, самый главный вопрос - сами собираетесь делать программу или привлекать кого-то?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 14.12.2013 в 10:16.
Do$ вне форума  
 
Непрочитано 14.12.2013, 12:11
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Неа, задача не для ГИС, а именно для Civil'а. Я бы стал делать так:
1. Посадить съёмку по координатам и "сшить"
2. Сделать по ней поверхность
3. Проверить соответствие поверхности - исходными данным
4. Построить трассу трубопровода
5. Получить профиль трубопровода - и вот его мучить
trir вне форума  
 
Непрочитано 14.12.2013, 12:22
#6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


-1. Купить Civil 3D
0. Настроить стили и каталоги.
И через месяц-два-год можно приступать к пунктам 1-5
А потом узнаешь, что далеко не все данные можно вытащить в подпрофильную таблицу из трубопровода.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 14.12.2013, 12:25
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


-1. Взять trial
0. В топку стили - ведь нужны только данные
trir вне форума  
 
Автор темы   Непрочитано 14.12.2013, 12:26
#8
Hresult


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


Цитата:
Сообщение от trir Посмотреть сообщение
Неа, задача не для ГИС, а именно для Civil'а. Я бы стал делать так:
1. Посадить съёмку по координатам и "сшить"
2. Сделать по ней поверхность
3. Проверить соответствие поверхности - исходными данным
4. Построить трассу трубопровода
5. Получить профиль трубопровода - и вот его мучить
Мы же как раз ГИС и делаем. Ну, пытаемся запихнуть данные в ГИС.
Сам план мы уже пристроили именно так. Это не вызвало трудностей. Рельеф нас не очень интересует. Пока...
Вот получить профиль именно по чертежу - это то, что хотим автоматизировать. Вариантов много - вопрос о том, как эффективнее.
Hresult вне форума  
 
Непрочитано 14.12.2013, 12:30
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
Мы же как раз ГИС и делаем. Ну, пытаемся запихнуть данные в ГИС.
Сам план мы уже пристроили именно так. Это не вызвало трудностей. Рельеф нас не очень интересует. Пока...
Вот получить профиль именно по чертежу - это то, что хотим автоматизировать. Вариантов много - вопрос о том, как эффективнее.

Разрез по рельефу ведь строится: LineString+TIN=>разрез!!!
trir вне форума  
 
Автор темы   Непрочитано 14.12.2013, 12:33
#10
Hresult


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
-1. Купить Civil 3D
0. Настроить стили и каталоги.
И через месяц-два-год можно приступать к пунктам 1-5
А потом узнаешь, что далеко не все данные можно вытащить в подпрофильную таблицу из трубопровода.
Есть у нас Civil 3D. И не только. И глобермаппер, и много чего еще.
И технология кое-какая есть, особенно по плановому положению.
И как тянуть координаты тоже в принципе понятно. Просто мороки много.
Хотим быстро и красиво.

И нам не надо В подпрофильную таблицу. Нам надо ИЗ.
И, действительно, только циферки. Расстояние - высота, итд.
Hresult вне форума  
 
Непрочитано 14.12.2013, 12:35
#11
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от trir Посмотреть сообщение
А если бы это было сделано в Civil'е - то не было никаких проблем...
Кстати, вполне возможно, что это и было сделано в Civil, а выдано в обычном ACAD формате через экспорт.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 14.12.2013, 12:37
#12
Hresult


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


Цитата:
Сообщение от trir Посмотреть сообщение

Разрез по рельефу ведь строится: LineString+TIN=>разрез!!!
Это мы умеем без всяких автокадов. Далеко не всегда в DWG есть рельеф. Мы используем все доступные данные. NASA, к примеру.
Задача именно взять эти полилинии из чертежа. Там по дороге куча тоннелей, и профиль самой трубы только на чертеже есть.
Hresult вне форума  
 
Непрочитано 14.12.2013, 12:44
#13
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
которая выводит координаты вершин полилиний в текстовый (или MS Excel) файл
_list

или
Autodesk.AutoCAD.EditorInput.Editor.GetEntity(message As String)

ну и конечно:
Код:
[Выделить все]
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices

<CommandMethod("OpenCloseObjectId")> _
Public Sub OpenCloseObjectId()

  '' Get the current document and database
  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  Dim acCurDb As Database = acDoc.Database
  '' Open the Block table for read
  Dim acBlkTbl As BlockTable
  acBlkTbl = acCurDb.BlockTableId.Open(OpenMode.ForRead)
  '' Open the Block table record Model space for read
  Dim acBlkTblRec As BlockTableRecord
  acBlkTblRec = acBlkTbl(BlockTableRecord.ModelSpace).Open(OpenMode.ForRead)
  '' Step through the Block table record
  For Each acObjId As ObjectId In acBlkTblRec
      acDoc.Editor.WriteMessage(vbLf & "DXF name: " & acObjId.ObjectClass().DxfName)
      acDoc.Editor.WriteMessage(vbLf & "ObjectID: " & acObjId.ToString())
      acDoc.Editor.WriteMessage(vbLf & "Handle: " & acObjId.Handle.ToString())
      acDoc.Editor.WriteMessage(vbLf)
  Next
  '' Close the Block table record
  acBlkTblRec.Close()
  acBlkTblRec.Dispose()
  '' Close the Block table
  acBlkTbl.Close()
  acBlkTbl.Dispose()
End Sub

Последний раз редактировалось trir, 14.12.2013 в 12:53.
trir вне форума  
 
Автор темы   Непрочитано 14.12.2013, 13:32
#14
Hresult


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


Цитата:
Сообщение от trir Посмотреть сообщение
_list

или
Autodesk.AutoCAD.EditorInput.Editor.GetEntity(message As String)
"За кефир отдельное спасибо".
AutoCAD у нас есть, только пользоваться не умеем...
Так что, еще раз спасибо.
По одному файлу уже, вроде, проясняется. Как по пакету?

Для нас, конечно, идеальный вариант - отдали DWGшки - получили таблицы.
Просто, DWGшки так вот своими руками отдавать, нехорошо. Заказчик не поймет.
Сейчас обсуждаю с моим админом, можно ли организовать удаленный доступ к вирт машине с кадом.
Ну, чтобы, если кто заинтересован в подработке, физически осуществить. Какое-то время надо для решения.
Заодно, ответ на вопрос здесь был, как мы собираемся...
Hresult вне форума  
 
Непрочитано 14.12.2013, 14:13
#15
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
По одному файлу уже, вроде, проясняется. Как по пакету?
А консольный АкАд - на что?
trir вне форума  
 
Непрочитано 14.12.2013, 14:19
#16
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Hresult Посмотреть сообщение
По одному файлу уже, вроде, проясняется. Как по пакету?
Все зависит от ответов на мои вопросы в #4. Есть разные варианты - COM, NET, чтение/разбор структуры DXF...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 14.12.2013, 14:27
#17
Hresult


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Все зависит от ответов на мои вопросы в #4. Есть разные варианты - COM, NET, чтение/разбор структуры DXF...
Да все равно... Все, что не касается AutoCAD - мы можем. Разве, что DXF разбирать - моветон.
Hresult вне форума  
 
Непрочитано 14.12.2013, 14:28
#18
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
Разве, что DXF разбирать - моветон.
Наоборот, самый простой вариант, при котором даже АкАд не нужен!
trir вне форума  
 
Автор темы   Непрочитано 14.12.2013, 14:37
#19
Hresult


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


Цитата:
Сообщение от trir Посмотреть сообщение
Я глянул - идея понятная. Особенно хорошо PDFы строгать. Для нас надо ж какой-то скрипт писать, смотреть как его грузить при каждом старте...
Насчет _List команды я еще понял, но она в таком компоте не пойдет напрямую.
А Vb надо, чтобы программисты посмотрели...

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
Наоборот, самый простой вариант, при котором даже АкАд не нужен!
Да, а потом думай, какая версия DXF, что там в самом оператор наворотил. Можно, конечно, только как-то 2013 на дворе...
Hresult вне форума  
 
Непрочитано 14.12.2013, 15:18
#20
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Hresult Посмотреть сообщение
Да все равно... Все, что не касается AutoCAD - мы можем.
Тогда, как я понимаю, вам нужно написать приложение под автокад, которое будет информацию вытягивать из чертежей и сохранять в нужном вам виде. Я бы это сделал с помощью .NET API. Он и по чертежам "пройтись" позволяет легко, даже не открывая их (визуально). И возможности по взаимодействию с другими приложениями, типа excel у него широчайшие. Автокад в этом случае будет как среда выполнения этой программы. То есть, его нужно будет запустить, подгрузить в него NET-плагин и запустить его на выполнение. Результатом выполнения будет какой-то файл с данными формата txt, xml, csv, xls... с нужным вам форматированием. Потом уже эти данные вы будете обрабатывать как-то своими средствами.
Насколько я знаю, все то же самое и даже немножко больше можно сделать с помощью COM API.
В принципе, с этой задачей может справиться и LISP-приложение. Эффективность будет ниже и больше мороки с такими вещами как вывод данных в нужном формате и многодокументная работа. Но эти вопросы решаемы, а в результате вы получите практически независимую от версии автокада программу(если будет грамотно написана).
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 16.12.2013, 13:57 info
#21
loginovskiy


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


Данные с профилей выудить можно и записать их в файл можно, но полного автомата не получится.
Есть такие понятия как условный горизонт, вертикальный и горизонтальный масштабы и пр.
Координат там вообще нет. Т.о. для получения реальных данных нужно не прсто взять линию поверхности, но и "перевычислить". Кроме того нужно будет как то привязать эти данные к реальному плану или местности, т.к. предполагается что это будет ГИС. Учитывая все это нужно будет либо вводить эти праметры с клавиатуры, либо "тыкать мышкой" на соответствующий текст.
Если задача актуальна, пишите на:loginovskiy_sn@mostovik.ru

----- добавлено через ~16 мин. -----
Повторно! Что то не вижу своего первого сообщения.

Данные с профилей выудить можно и записать их в файл можно, но полного автомата не получится.
Есть такие понятия как условный горизонт, вертикальный и горизонтальный масштабы и пр.
Координат там вообще нет. Т.о. для получения реальных данных нужно не прсто взять линию поверхности, но и "перевычислить". Кроме того нужно будет как то привязать эти данные к реальному плану или местности, т.к. предполагается что это будет ГИС. Учитывая все это нужно будет либо вводить эти праметры с клавиатуры, либо "тыкать мышкой" на соответствующий текст.
Если задача актуальна, пишите на:loginovskiy_sn@mostovik.ru
loginovskiy вне форума  
 
Непрочитано 16.12.2013, 15:44
#22
Boxa

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


Что то идей на тему как реализовать нету, а 2 исполнителя уже нашлось. Может сюда переместиться http://forum.dwg.ru/forumdisplay.php?f=33 ?
Boxa вне форума  
 
Непрочитано 16.12.2013, 16:16
#23
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


А первый кто, я что ли? Это вряд ли. Просто у меня уже был опыт программной обработки профилей трубопровода, мог бы что-то подсказать.
Раз нашелся исполнитель, не вижу причин ему мешать своими советами
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 16.12.2013, 19:38
#24
Hresult


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


Спасибо за помощь. Кое-что стало понятнее.
С исполнителями пока не получается. Отдавать DWG неправильно, а удаленный доступ админ обставляет разными рогатками.

Тут напряглись чуток и сваяли свой LISP скрипт, который разбирает подвал - профиль земли, трубы, подписи, и все выталкивает в XML с координатами и текстами.
Единственно что пока не получилось - чтобы все файлы из директории сразу. Приходится выбирать первый и жать GO (это так остроумно программу назвали). Он выводит XML и подгружает следующий, и опять GO.
Вот девочка сидит и жмет клаву. С другой стороны, лучше 70 раз нажать GO, чем склеивать профиля неделю.

Все оказалось не так страшно, просто нервов потратили немеряно. В 21 веке это выглядит, как Гуантанамо какой-то.
Hresult вне форума  
 
Непрочитано 16.12.2013, 22:04
#25
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Hresult Посмотреть сообщение
Приходится выбирать первый и жать GO
пожалейте девочку - посмотрите в поиск - не один десяток постов про кучу способов реализации пакетной обработки
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 16.12.2013, 23:24
#26
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Hresult Посмотреть сообщение
Единственно что пока не получилось - чтобы все файлы из директории сразу. Приходится выбирать первый и жать GO (это так остроумно программу назвали). Он выводит XML и подгружает следующий, и опять GO.
Вот девочка сидит и жмет клаву.
Оу! Как же я забыл про мегаинструмент ScriptPro?! http://forum.dwg.ru/showpost.php?p=989015&postcount=32
Он мне очень много времени и нервов в свое время сэкономил!
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 16.12.2013, 23:48
#27
Hresult


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


Я ж говорю, темные мы, автокада не знаем.
ScriptPro я скачал. Будем разбираться.
Спасибо еще раз.
Hresult вне форума  
 
Непрочитано 17.12.2013, 19:43
#28
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Hresult Посмотреть сообщение
Единственно что пока не получилось - чтобы все файлы из директории сразу. Приходится выбирать первый и жать GO (это так остроумно программу назвали).
Последовательное применение lisp-функции к множеству файлов DWG

Do$ дал ссылку на те же тему. Добавил п.6 про ScriptPro
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 17.12.2013 в 19:50.
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический разбор трассовки в DWG/DXF



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему трещит автомат АП Jоhnny Инженерные сети 35 29.03.2010 13:14