Forge, API и программирование – Русский – только для чтения
Задавайте вопросы и делитесь знаниями по Autodesk Forge и программированию на API программного обеспечения Autodesk
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

[Inventor 2016, C#] Экспорт эскиза в файл DXF/DWG

6 ОТВЕТ 6
РЕШЕНО
Ответить
Сообщение 1 из 7
zaoles2011
1100 просмотров, 6 ответов

[Inventor 2016, C#] Экспорт эскиза в файл DXF/DWG

Здравствуйте.

Подскажите, пожалуйста, как используя C# осуществить экспорт эскиза из модели детали в файл DXF/DWG&

 

Подробнее:

В самом Inventor есть комманда "Экспортировать эскиз как..."

001.png

 

Из найденной мной информации для экспорта в DXF/DWG используются два addin:

002.png

 

Вот такой код

TranslatorAddIn oDWGAddIn = (TranslatorAddIn)m_inventorApp.ApplicationAddIns.get_ItemById("{C24E3AC2-122E-11D5-8E91-0010B541CD80}");// dxf
                if (!oDWGAddIn.Activated)
                {
                    oDWGAddIn.Activate();
                }
               
                TranslationContext oContext = m_inventorApp.TransientObjects.CreateTranslationContext();
                oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism;
                NameValueMap oOptions = m_inventorApp.TransientObjects.CreateNameValueMap();
                DataMedium oDataMedium = m_inventorApp.TransientObjects.CreateDataMedium();

                MessageBox.Show(oDWGAddIn.SupportsSaveCopyAsFrom);

 показывает из каких объектов этот addin может сделать экспорт

003.png

 

И если ему на вход подать один из документов Inventor

oDWGAddIn.SaveCopyAs(m_inventorApp.ActiveDocument, oContext, oOptions, oDataMedium);

то я получаю DXF файл с видом спереди всей модели.

А если пытаюсь подать ему на вход Sketch

PartDocument pDoc = (PartDocument)m_inventorApp.ActiveDocument;
PlanarSketch sk = pDoc.ComponentDefinition.Sketches[1];
oDWGAddIn.SaveCopyAs(sk, oContext, oOptions, oDataMedium);

то получаю ошибку

004.png

AutoCAD Inventor 2016
AutoCAD Mechanical 2016
Теги (2)
6 ОТВЕТ 6
Сообщение 2 из 7
Alexander.Rivilis
в ответ: zaoles2011

Увы но похоже oDWGAddIn.SaveCopyAs в качестве первого аргумента принимает только Document. Во всяком случае я не нашел примеров, когда этому методу передавалось что-то иное.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 3 из 7

Пожалуй я не прав. Нашелся такой >>>пример<<< (на VBA, но думаю что переделать на C# будет не сложно)

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 4 из 7
zaoles2011
в ответ: Alexander.Rivilis

Спасибо за пример, но все оказалось не так просто.

Вставив строку

options.Value("Sketch") = True

в свою программу, получил чертеж модели с эскизом.

Для наглядности:

1. Имеем деталь со свободным эскизом

101.png

2. Создаем правило iLogic как в примере выше и запускаем его. Получаем файл DWG с контуром детали и эскизом

 

102.png

3. Меняем в правиле iLogic строку 

options.Value("Sketch") = True

на

options.Value("Sketch") = False

и получаем файл DWG с контуром детали без эскиза

103.png

Т.е. в любом случае получаем файл со всеми элементами детали, а не конкретного эскиза.

 

В тексте примера есть фраза "Create a sketch and run this macro from the sketch enviroment." Как я понимаю здесь говорится что макрос нужно запустить из окружения 2D эскиза.

Попытался запустить правило из режима редактирования эскиза - результат не изменился.

Т.е. Inventor выполняет экспорт конкретного эскиза каким-то другим способом.

AutoCAD Inventor 2016
AutoCAD Mechanical 2016
Сообщение 5 из 7
Alexander.Rivilis
в ответ: zaoles2011

Если очень нужна прямая информация по этому вопросу от Autodesk предлагаю создать эту тему здесь: http://adn-cis.org/forum/index.php?board=26.0

Необходимо будет предоставить:

1) Файл Inventor'а (например, тот с которого вы показали картинки)

2) Код, которым вы пытаетесь вывести Sketch в dwg-файл

3) Картинки с результатами, которые получаются

Я отправлю запрос в ADN DevHelp.

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 6 из 7

Продолжение темы здесь: [Inventor 2016, C#] Экспорт эскиза в файл DXF/DWG

Запрос отправлен в ADN DevHelp.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Сообщение 7 из 7

Результат общения - следующий код:

Sub main()
     Dim partdoc As PartDocument
     Set partdoc = ThisApplication.ActiveDocument 
     Dim selectedsketch As Sketch
     Set selectedsketch = partdoc.SelectSet(1) ' Подразумевается, что эскиз выбран.
     Dim oDataIO As DataIO
     Set oDataIO = selectedsketch.DataIO
     oDataIO.WriteDataToFile "DXF", "D:\Temp\mysketch.dxf"
End Sub

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report