Как корректно открыть DXF?

Автор Тема: Как корректно открыть DXF?  (Прочитано 14042 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Как корректно открыть DXF?
« : 11-06-2021, 02:21:48 »
Доброго времени суток, уважаемые форумчане! Прошу помочь в решении данного вопроса.
Мне необходимо в инвенторе открыть набор файлов dxf, считать с них информацию и провести дальнейшие манипуляции.

Открываю документы как-то так:

Код - C# [Выбрать]
  1. _oApp.SilentOperation = true;
  2. // почему он видимый?
  3. DrawingDocument doc = (DrawingDocument)_oApp.Documents.Open(documentName, false);
  4. doc.UnitsOfMeasure.LengthUnits = UnitsTypeEnum.kMillimeterLengthUnits;
  5. _oApp.SilentOperation = false;

Документы DXF разные, создавались разными людьми. Получается такая штука, что одни открываются корректно, а в других Invenor воспринимает размеры из DXF файла как дюймы и в итоге эскиз строит в 25,4 раза больше. Буду благодарен любой догадке, ибо я вобще в тупике (((

П.С. Бонусный вопрос )) Может кто-то в курсе, почему я в Documents.Open() посылаю параметр OpenVisible = false, а чертеж открывается все равно видимым?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как корректно открыть DXF?
« Ответ #1 : 11-06-2021, 05:11:35 »
Пару файлов dxf для примера

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Как корректно открыть DXF?
« Ответ #2 : 11-06-2021, 16:18:08 »
Пару файлов dxf для примера
Да, разумеется.
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как корректно открыть DXF?
« Ответ #3 : 11-06-2021, 18:17:03 »
R.I.Chernov,
https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2018/RUS/AutoCAD-Core/files/GUID-1D074C55-0B63-482E-8A37-A52AC0C7C8FE-htm.html
В чертеже Correct.dxf значение $MEASUREMENT равно 1 (т.е. единицы измерения миллиметры), а в двух других равно 0 (дюймы).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как корректно открыть DXF?
« Ответ #4 : 11-06-2021, 18:25:59 »
Кстати может влиять еще и значение $INSUNITS: https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2022/RUS/AutoCAD-Core/files/GUID-A58A87BB-482B-4042-A00A-EEF55A2B4FD8-htm.html
В Correct.dxf ее значение 4 (т.е. миллиметры), в остальных 0 (не заданы).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Как корректно открыть DXF?
« Ответ #5 : 11-06-2021, 18:53:14 »
Кстати может влиять еще и значение $INSUNITS:
По идее, это то что надо, поменял ручками значение на миллиметры - открываться стало корректно. Но вопрос все как бы открыт, если у тебя сотня чертежей, руками все не поменяешь. У меня задача стоит, что итоговый пользователь на машине имеет только инвентор. Может как-то с помощью NameValueMap можно при открытии задавать нужный параметр вставки в миллиметрах?
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как корректно открыть DXF?
« Ответ #6 : 11-06-2021, 19:28:06 »
Но вопрос все как бы открыт, если у тебя сотня чертежей, руками все не поменяешь.
Зачем руками? Почему бы тебе программно не менять?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Как корректно открыть DXF?
« Ответ #7 : 11-06-2021, 20:02:22 »
Зачем руками? Почему бы тебе программно не менять?
А не подскажете, как с помощью инвентора это можно отследить? Просто другой программы в распоряжении меня нет.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как корректно открыть DXF?
« Ответ #8 : 11-06-2021, 20:20:52 »
А не подскажете, как с помощью инвентора это можно отследить? Просто другой программы в распоряжении меня нет.
Дак dxf просто текстовый файл, откройте блокнотом и убедитесь в этом. NET предоставляет достаточно средств для работы с текстовыми файлами.

Отмечено как Решение R.I.Chernov 12-06-2021, 01:40:40

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как корректно открыть DXF?
« Ответ #9 : 11-06-2021, 20:28:46 »
поменял ручками значение на миллиметры - открываться стало корректно.
Поменял прямо в DXF-файле или в AutoCAD с сохранением в DXF? Если в DXF-файле, то сделай тоже самое с помощью C#. Код в упрощенном варианте будет выглядеть так:
1) Ищешь в файле строку, содержащую "$INSUNITS" (больше ничего в этой строке быть не должно), последовательно переписывая остальные строки в выходной файл.
2) После того как нашел искомую строку, записываешь её и следующую строку в выходной файл, затем записываешь в выходной файл строку "    4".
3) После этого переписываешь остаток строк в выходной файл.
Вот и всё.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как корректно открыть DXF?
« Ответ #10 : 11-06-2021, 20:53:18 »
Ну а если хочешь более серьезно разобраться с DXF, то можешь попробовать netDxf: https://github.com/haplokuon/netDxf/wiki
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Как корректно открыть DXF?
« Ответ #11 : 12-06-2021, 01:40:33 »
Спасибо всем за помощь!
П.С. Нет идей, почему чертеж создается видимым?
В программировании я новичок...но ненадолго! ;)

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Как корректно открыть DXF?
« Ответ #12 : 12-06-2021, 01:43:20 »
Ну а если хочешь более серьезно разобраться с DXF, то можешь попробовать netDxf: https://github.com/haplokuon/netDxf/wiki
Где-то можно почитать, как утилитой пользоваться?
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как корректно открыть DXF?
« Ответ #13 : 12-06-2021, 14:08:29 »
Ну а если хочешь более серьезно разобраться с DXF, то можешь попробовать netDxf: https://github.com/haplokuon/netDxf/wiki
Где-то можно почитать, как утилитой пользоваться?
https://github.com/haplokuon/netDxf/blob/master/README.md
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Как корректно открыть DXF?
« Ответ #14 : 13-06-2021, 20:26:59 »
П.С. Нет идей, почему чертеж создается видимым?
Задам вопрос в тех поддержку