Чтение данных из Dwg файла

  • Автор темы FixeR
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

FixeR

Гость
#1
Доброго времени суток!

Задача такая: нужно прочитать некоторые текстовые данные из dwg (AutoCAD) файла.
Например, пути (ссылки) к растровым изображениям, данные основной надписи.

Подключать это всё придется к VB (а точнее к LotusScript'у).

Я нашел библиотеку CADImporterDLL, демоверсию от Gold Soft, подключил её.
Заработали только 3 функции из заявленных 12.
В общем-то, на сайте прямо указано, что совместимость с VB частичная.
Да и самой нужной мне функции там все равно нет.

Также есть Open DWG Alliance, проводящие обратную разработку формата dwg, и продающие свои решения за $.
Но у них сейчас что-то с сайтом, даже контактов нет.

Кто-нибудь что-нибудь делал подобное?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#2
Наверняка есть на java. На форуме, в том числе в закреплённых темах, достаточно информации как использовать java из LS.
 
F

FixeR

Гость
#4
ToxaRat
в бинарном виде можно выдрать далеко не всё...

nvy
спасибо, посмотрю
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
Киев (Русь)
#7
FixeR
Чтобы выдирать данные и не было установленного AutoCAD на компе - не знаю...

Если AutoCAD есть на компе, то всё проще гораздо.
Касательно
пути (ссылки) к растровым изображениям
конкретного решения у меня нет, но пути такие:
1. VBA AutoCAD'а, оно достаточно хорошо совместимо с LS, объектная модель на VB позволяет многое, но не всё - надо смотреть (в AutoCAD запустить "Редактор VBA", в нём Справку и поискать "Object Model").
Код на VB/LS получается огромный, что нерационально! На практике, в основном, используется 2-й способ.
2. Lisp - внутренний скриптовый язык AutoCAD'а. Механика такая - на VB/LS/Delphi генерируется строка с параметрами и вызывается нужный lisp-файл, на этом роль VB/LS/Delphi заканчивается, дальше всё делает lisp, потом возвращает данные в прогу.
3. OA (ObjectARX в самом AutoCAD'е или ObjectDRX в IntelliCAD'ах на его основе) - это библиотеки на C++, с помощью которых можно делать всё, что угодно, что может AutoCAD; достаточно хорошо владеть C++ :) Библиотеки платные, но их можно легко найти в нэте ))

Касательно
данные основной надписи
дело в том, что тупо данные (в примитивах) уже давно никто не пишет, т.к. это примитивно (тавтология получилась )) ), в основном создают объекты, а работать с чужими объектами... надо знать их структуру. Да и не благодарное это дело, завязываться на какой-то определённый объект, т.к. разработчиков реально сотни, а файл теоретически может прийти откуда угодно...

Это всё очень сжато.. короче Вам сюда: http://dwg.ru/ Здесь есть богатая библиотека, с примерами работы с AutoCAD из VB/Delphi (при желании код без проблем можно переложить на LS), есть мощный форум!
Здесь http://www.cad.ru/ru/forum/ раньше был целый раздел, посвящённый программированию, но что-то я его не вижу...

Что-то выдрать как из обычного файла не получится, т.к. dwg - представляет собой микро базу данных, (формат раньше был закрытым, сейчас не знаю), может быть зашифрованным, идентификация пользователя в этом случае производится с помощью самого AutoCAD.

P.S. Да, кстати, не советую тратить время на Java-решения.. может сейчас что-то и поменялось, но раньше это было невозможно, т.к. AutoDesk сильно завязана с M$, там даже проблемы были при работе из Borland C++, а не то, что из Java.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#8
... Здесь есть богатая библиотека, с примерами работы с AutoCAD из VB/Delphi ...
P.S. Да, кстати, не советую тратить время на Java-решения.. может сейчас что-то и поменялось, но раньше это было невозможно, т.к. AutoDesk сильно завязана с M$, там даже проблемы были при работе из Borland C++, а не то, что из Java.
Если мне не изменяет склероз, Delphi и Borland C++ есть продукты одной компании. Почему в первом случае проблем нет, а во втором — есть?
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
Киев (Русь)
#9
Если мне не изменяет склероз, Delphi и Borland C++ есть продукты одной компании. Почему в первом случае проблем нет, а во втором — есть?
Потому что так уж сложилось, что на Delphi под AutoCAD пишут используя объектную модель VBA (это считай что COM/OLE), а на Borland C++ - используя ObjectARX, т.е. С++ библиотеки.
 
Статус
Закрыто для дальнейших ответов.