Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: R.I.Chernov от 11-06-2021, 02:21:48

Название: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 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, а чертеж открывается все равно видимым?
Название: Re: Как корректно открыть DXF?
Отправлено: mikazakov от 11-06-2021, 05:11:35
Пару файлов dxf для примера
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 11-06-2021, 16:18:08
Пару файлов dxf для примера
Да, разумеется.
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 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 (дюймы).
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 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 (не заданы).
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 11-06-2021, 18:53:14
Кстати может влиять еще и значение $INSUNITS:
По идее, это то что надо, поменял ручками значение на миллиметры - открываться стало корректно. Но вопрос все как бы открыт, если у тебя сотня чертежей, руками все не поменяешь. У меня задача стоит, что итоговый пользователь на машине имеет только инвентор. Может как-то с помощью NameValueMap можно при открытии задавать нужный параметр вставки в миллиметрах?
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 11-06-2021, 19:28:06
Но вопрос все как бы открыт, если у тебя сотня чертежей, руками все не поменяешь.
Зачем руками? Почему бы тебе программно не менять?
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 11-06-2021, 20:02:22
Зачем руками? Почему бы тебе программно не менять?
А не подскажете, как с помощью инвентора это можно отследить? Просто другой программы в распоряжении меня нет.
Название: Re: Как корректно открыть DXF?
Отправлено: mikazakov от 11-06-2021, 20:20:52
А не подскажете, как с помощью инвентора это можно отследить? Просто другой программы в распоряжении меня нет.
Дак dxf просто текстовый файл, откройте блокнотом и убедитесь в этом. NET предоставляет достаточно средств для работы с текстовыми файлами.
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 11-06-2021, 20:28:46
поменял ручками значение на миллиметры - открываться стало корректно.
Поменял прямо в DXF-файле или в AutoCAD с сохранением в DXF? Если в DXF-файле, то сделай тоже самое с помощью C#. Код в упрощенном варианте будет выглядеть так:
1) Ищешь в файле строку, содержащую "$INSUNITS" (больше ничего в этой строке быть не должно), последовательно переписывая остальные строки в выходной файл.
2) После того как нашел искомую строку, записываешь её и следующую строку в выходной файл, затем записываешь в выходной файл строку "    4".
3) После этого переписываешь остаток строк в выходной файл.
Вот и всё.
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 11-06-2021, 20:53:18
Ну а если хочешь более серьезно разобраться с DXF, то можешь попробовать netDxf: https://github.com/haplokuon/netDxf/wiki
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 12-06-2021, 01:40:33
Спасибо всем за помощь!
П.С. Нет идей, почему чертеж создается видимым?
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 12-06-2021, 01:43:20
Ну а если хочешь более серьезно разобраться с DXF, то можешь попробовать netDxf: https://github.com/haplokuon/netDxf/wiki
Где-то можно почитать, как утилитой пользоваться?
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 12-06-2021, 14:08:29
Ну а если хочешь более серьезно разобраться с DXF, то можешь попробовать netDxf: https://github.com/haplokuon/netDxf/wiki
Где-то можно почитать, как утилитой пользоваться?
https://github.com/haplokuon/netDxf/blob/master/README.md
Название: Re: Как корректно открыть DXF?
Отправлено: mikazakov от 13-06-2021, 20:26:59
П.С. Нет идей, почему чертеж создается видимым?
Задам вопрос в тех поддержку
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 13-06-2021, 20:53:43
Спасибо.
Название: Re: Как корректно открыть DXF?
Отправлено: mikazakov от 19-06-2021, 04:51:42
Прислали ответ из тех поддержки:
Issue is able to reproduce it. For further investigation, a change request is created with engineering team and details are given below.

The Change Request for this is: ID:INVGEN - 54029 - "Unable to hide dxf document using Open () API"

Here is our standard reply asking for a business case:

We have logged Change Request number INVGEN - 54029 with our development team as this issue requires a modification to our software. Please make a note of this number for future reference. You are welcome to request an update on the status of this issue, or to provide us with additional information, at any time by submitting a new Case through DevHelp Online quoting the Change Request number or this Case number.


Говорят что когда нибудь исправят
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 29-06-2021, 04:02:44
Issue is able to reproduce it.
Не совсем понял, почему "сложно воспроизвести проблему", ведь в 100% случаев не работает. Видимо, что-то другое имели ввиду. Спасибо, Михаил, за помощь. А вы не подскажите, каким образом вы связываетесь со службой поддержки?
Название: Re: Как корректно открыть DXF?
Отправлено: Александр Ривилис от 29-06-2021, 04:35:25
Не совсем понял, почему "сложно воспроизвести проблему", ведь в 100% случаев не работает.
Что-то с переводчиком с английского у вас очень плохо. Там все с точностью до наоборот написано.
Название: Re: Как корректно открыть DXF?
Отправлено: R.I.Chernov от 29-06-2021, 05:50:19
Что-то с переводчиком с английского у вас очень плохо. Там все с точностью до наоборот написано.
Вы правы, Алесандр, переводчик слово able походу проигнорировал, а я ночью поленился мозг включить. Спасибо.