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

Тема в разделе "Lotus - Программирование", создана пользователем FixeR, 21 июн 2010.

Статус темы:
Закрыта.
  1. FixeR

    FixeR Гость

    Доброго времени суток!

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

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

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

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Наверняка есть на java. На форуме, в том числе в закреплённых темах, достаточно информации как использовать java из LS.
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    а просто открыть его бинарно и выдрать нужные данные?
     
  4. FixeR

    FixeR Гость

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

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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    FixeR
    и что же нельзя выбрать то?
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Выдрать-то все можно, а вот понять...
    А что представляет из себя dwg файл? Какой-то бинарный типизированный файл или может xml/ini-подобный?
     
  7. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    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.
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если мне не изменяет склероз, Delphi и Borland C++ есть продукты одной компании. Почему в первом случае проблем нет, а во втором — есть?
     
  9. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Потому что так уж сложилось, что на Delphi под AutoCAD пишут используя объектную модель VBA (это считай что COM/OLE), а на Borland C++ - используя ObjectARX, т.е. С++ библиотеки.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей