Перейти к публикации

API для САПР форматов (IGES, STEP, Parasolid)


Рекомендованные сообщения

Мне надо написать программу, которая создаёт поверхность определённой формы и сохраняет в файл. Потом это откроют в SolidWorks. Существует ли какая-нибудь доступные библиотеки или API для доступного языка программирования, чтобы создавать, открывать, изменять, сохранять всё в стандартных форматах (например, IGES, STEP, Parasolid или другие, если подскажете)?

 

(Я пока ручками написал код для STL -- он очень простой. Но это, конечно, нелучший способ.)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...


UnPinned posts

Студент?

09.08.2021 в 19:04, ostapb сказал:

написал код для STL

В stl нет поверхностей. Там только сетка. Советую начать с изучения того, какая программа с чем работает.

09.08.2021 в 19:04, ostapb сказал:

Потом это откроют в SolidWorks.

И офигеют. Надеюсь, ты успеешь убежать на достаточное расстояние.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
19.08.2021 в 18:07, Ветерок сказал:

Студент?

В stl нет поверхностей. Там только сетка. Советую начать с изучения того, какая программа с чем работает.

И офигеют. Надеюсь, ты успеешь убежать на достаточное расстояние.

 

1) Нет, не студент.

2) STL хранит сеточную поверхность. Т.е. состоящую из треугольников. Я ж написал, что через программа, работающая через STL, уже есть. И эта поверхность в SolidWork уже внедрена. Но там есть нехорошие костыли.

3) Какая программа с чем работает, я знаю. Я знаю, что STL плохо подходит. Задача очень специфическая. Поверхность не конструкторская, очень специфичной формы. И она-таки сеточная, рассчетная.

4) Так вот и спрашиваю: есть ли программные библиотеки для STEP, Parasolid, ...?

 

19.08.2021 в 18:01, Maik812 сказал:

запишете макрос в солиде, путем записи действий.

 

Поверхность, которую надо внедрить, получена расчётами в виде треугольной сетки из сотен точек. Я пытался сделать через VBA под Солидом. Но очень там запутанная COM-модель -- не нашёл, где сеточные поверхности строятся.

Может быть, они там есть? Я просто недокопал?

Если есть такие инструменты в VBA, я могу и так попробовать.

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, ostapb сказал:

STL хранит сеточную поверхность

От того, что ты называешь сетку поверхностью, сетка не станет поверхностью. Сетка и поверхность - это разные классы объектов. С разной математикой. Сетка может по-своему описывать некоторую поверхность, но в смысле математики сетка не является поверхностью (такой, как NURBS или Безье). Любая программа работает не с определениями, а с математикой.

Изменено пользователем Ветерок
Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, Ветерок сказал:

От того, что ты называешь сетку поверхностью, сетка не станет поверхностью. Сетка и поверхность - это разные классы объектов. С разной математикой. Сетка может по-своему описывать некоторую поверхность, но в смысле математики сетка не является поверхностью (такой, как NURBS или Безье). Любая программа работает не с определениями, а с математикой.

 

Господин Гуру, прекращай гнуть понты. Я выпускник и доцент кафедры прикладной математики и информатики. Среди, предметов, которые я веду, есть "Математическое моделирование на ЭВМ" и "Численные методы для инженерных задач". Я знаю, что такое поверхность, сетка, сплайны, интерполяция, МКЭ, триангуляция, дифференциальная геометрия и т.д. С программами CAD и CAE я работал с 98 года. Это были автокад, про/инженер, про/механика, ансис, комсол и т.д. С SolidWorks не работал. Вот и спрашиваю теперь.

 

Хотя, собственно не про сам SolidWorks, а о программировании. На C++ или C#. Мне нужны туда API для инженерных форматов -- я положу туда то, что надо. Тебе есть, что сказать?

 

(Хотя возможен вариант, использовать COM-модель SolidWorks. Очень сложная. До сплайн-поверхностей докопаться ещё не удалось.)

19 часов назад, Ветерок сказал:

От того, что ты называешь сетку поверхностью, сетка не станет поверхностью. Сетка и поверхность - это разные классы объектов. С разной математикой. Сетка может по-своему описывать некоторую поверхность, но в смысле математики сетка не является поверхностью (такой, как NURBS или Безье). Любая программа работает не с определениями, а с математикой.

 

https://ru.wikipedia.org/wiki/STL_(формат_файла)

 

STL (от англ. stereolithography) — формат файла, широко[4][5] используемый для хранения трёхмерных моделей объектов для использования в аддитивных технологиях. Информация об объекте хранится как список треугольных граней, которые описывают его поверхность, и их нормалей. STL-файл может быть текстовым (ASCII) или двоичным. Свое название получил от сокращения термина «Stereolithography», поскольку изначально применялся именно в этой технологии трехмерной печати.

Ссылка на сообщение
Поделиться на других сайтах

Поверхность по уравнению или поверхность по облаку точек это фичи САПР высокого уровня, сомневаюсь что они хотя б в виде функций АПИ есть у солида. Если сетка регулярная то можно попробовать построить по наборам точек сетку кривых, и по ней сделать поверхностный лофт.

Ссылка на сообщение
Поделиться на других сайтах
38 минут назад, k_v сказал:

Поверхность по уравнению или поверхность по облаку точек это фичи САПР высокого уровня, сомневаюсь что они хотя б в виде функций АПИ есть у солида. Если сетка регулярная то можно попробовать построить по наборам точек сетку кривых, и по ней сделать поверхностный лофт.

 

Понятно. Мне бы сами функции. Имена, способы вызова. Т.е. например, макрос я создал:

 

Dim swApp As Object
Dim Part As Object
Sub main()

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc


End Sub

 

Ссылка на сообщение
Поделиться на других сайтах

Само по себе преобразование сетки в NURBS-поверхность, пригодную для работы в Солиде - это довольно нетривиальная задача. Есть специальные программы, которые могут по сетке тем или иным способом построить поверхность. В самом Солиде есть приложение для этих целей.

Или всё это Вам не нужно?

Ссылка на сообщение
Поделиться на других сайтах

Задача сама по себе специфична. Есть одна задумка (не моя) -- может быть, она оказаться ошибочна и мы от неё откажемся. А может и не оказаться. Сейчас я её реализую -- чтобы потом увидеть. То, что внедрять такую поверхность в беталь -- нездоровое занятия, мы знаем. Я сам это коллегам объяснил. Но одно дело предполагать, а другое -- знать. Техническая возможность безусловно есть. Вот и посмотрим. Нетривиальность задачи, очевидно, в том, что поверхность желательно некоторым образом упростить, т.е. аппроксимировать. Я и буду это делать. Затыка в способе записи результата.

 

И главное, дело вовсе не в STL. Исходные данные -- расчёт в ANSYS. Я написал программу, которая загоняет их в STL, просто потому что STL -- очень простой открытый формат. Я захотел загнать данные в STEP. А он сложный. Самому программировать будет долго. Я резонно решил, что должны существовать API для STEP, Parasolid или хотя бы для IGES. А их нет! Я не нашёл! Сие странно.

 

О готовых программах.

В Солиде конструкторы мне показали ScanTo3D. Но с качеством результата есть проблемы. ScanTo3D очень произвольно обращается с данными, удаляет точки и, хуже всего, меняет границы. Понятно почему это происходит -- он использует только точки и игнорирует соединяющие их линии. И вообще, у ScanTo3D просто другая задача. Других инструментов в Солиде пока не нашли. (Опять таки повторюсь: доступна COM-модель через макросы Солида. Возможно мне придётся разбираться в ней до конца.)

 

 

Ссылка на сообщение
Поделиться на других сайтах

Как-то давно, я получил от одного известного НИИ расчетную кривулину в виде таблицы из 20 точек с 6 знаками после запятой. Кривая научная - надо её точно воспроизвести. Вбил все эти 20 точек с 6 знаками после запятой в CAD (данные получил на бумаге, не в файле). Смотрю на эти точки, и их расположение мне что-то очень напоминает. Взял я две крайние точки и одну среднюю, и построил по этим трем точкам дугу. И - о чудо! - все эти 20 точек ровнехонько легли на эту дугу. Я смотрю на это волшебство и глазам не верю. Позвонил в это умное НИИ (благо в одном городе) и спрашиваю: "Эта волшебная линия, которую вы мне прислали - это дуга окружности?" Они радостно отвечают: "ДА, дуга!". Я им: "Вашу мать! Для задания дуги достаточно ТРЕХ точек! Зачем вы мне вывалили 20 штук?" А они: "У нас программа так выдает." Занавес!

К чему я всё это? Иногда результаты расчета выглядят гораздо сложнее, чем то, что они на самом деле описывают. Так и у Вас может быть миллион точек, которые описывают какую-нибудь обычную сферу или праболоид.

Ссылка на сообщение
Поделиться на других сайтах

@ostapb Попробуйте стороннее приложение для Солида - Power-Surfacing

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...
07.09.2021 в 17:29, ostapb сказал:

Я написал программу, которая загоняет их в STL, просто потому что STL -- очень простой открытый формат.

если у Вас стл уже есть, может конвертнуть в другой формат? Попробывать конвертеры? Библиотеки для конвертации stl есть , в Рино или 3д макс.

Перегнал вроде получилось.. Да вопросы есть по смене формата. Ну вы перегоните в другой формат и редактируйте как хотите и тд.

 

 

Jpeg_0012.jpg

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...