Вставка модели с исполнениями в виде детали заготовки без истории.

Автор Lito 2, 21.01.15, 12:44:13

« назад - далее »

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

Lito 2

Получается следующая ситуация.
Есть модель с несколькими зависимыми исполнениями.
При ее открытии выбирается нужное исполнение (визуально на экране это видно), модель перестраивается и закрывается с сохранением.
Последующее открытие ручками показывает нужной исполнение.

Дальше при использовании

PartGL.PutStorage(modelIsp, 0, False)

в 3D-модели создается заготовка без истории, но не учитывается исполнение, а получается создание только из базового.

Как вставить модель с исполнениями в виде детали заготовки без истории, нужного исполнения?

Slaviation

Тест на python во вложении. Проверял на КОМПАС-3D V15. Запускать на активной сборке.

Lito 2

Цитата: Slaviation от 21.01.15, 15:10:39
Тест на python во вложении. Проверял на КОМПАС-3D V15. Запускать на активной сборке.
Фактически предложенный Вами вариант - это локальная деталь, хотя и отображаемая в дереве построения в виде детали-заготовки без истории. Также если выделить тело по ПКМ, то в меню доступна команда скрыть состав, чего не должно быть.
Использовать такую  деталь-заготовку с помощью
PartGL.PutStorage(modelIsp, 0, False), также не получится она просто не добавляется.

Slaviation

Вопрос был
ЦитироватьКак вставить модель с исполнениями в виде детали заготовки без истории, нужного исполнения?
В тесте делается ровно это. Команда скрыть/показать состав доступна, но состав не показывается.

ЦитироватьФактически предложенный Вами вариант - это локальная деталь
Это легко проверить. Добавить в конец скрипта

if part.IsBillet:
    print "is billet"
else:
    print "is not billet"

и посмотреть, что получилось фактически.

ЦитироватьИспользовать такую  деталь-заготовку с помощью
PartGL.PutStorage(modelIsp, 0, False), также не получится она просто не добавляется.

Тут я не совсем понял. Есть активная сборка, в нее мы вставили деталь с нужным исполнением и преобразовали деталь в деталь-заготовку. Зачем нужен вызов PutStorage?

Lito 2

Использование IsBillet устанавливает в дереве признак деталь-заготовка, но не меняет сути.
Например, если я добавлю сборочную единицу
pPart7.Parts.AddFromFile(PatchNameA3D, False, True), то она отображается в виде локальной детали и к ней применимо разрушение сборки.

Slaviation

ЦитироватьИспользование IsBillet устанавливает в дереве признак деталь-заготовка, но не меняет сути
"Каноническое" же толкование IsBillet приведено в справке по SDK:
ЦитироватьIsBillet - Признак вставки заготовки детали
Больше ни чем не смогу помочь.

Lito 2

Цитировать
Тут я не совсем понял. Есть активная сборка, в нее мы вставили деталь с нужным исполнением и преобразовали деталь в деталь-заготовку. Зачем нужен вызов PutStorage?
У меня создается своя новая деталь, а не сборка и вызов PutStorage используется для обычных деталей с применением ЛСК.

Цитировать
Больше ни чем не смогу помочь

На мой взгляд есть еще несколько идей по реализации.
1 Как-то преобразовать деталь с исполнениями в поверхность и дальше уже попробовать использовать PutStorage.
2 Прочитать переменные из исполнения и применить их к базовому, а все остальные исполнения удалить. Подойдет только для деталей в которых всегда используют переменные и нет независимых исполнений.