Автоматический разбор трассовки в 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 Кб, 811 просмотров)


Последний раз редактировалось Hresult, 14.12.2013 в 03:23.
Просмотров: 7176
 
Непрочитано 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$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический разбор трассовки в DWG/DXF



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