ADN Club => Inventor API => Тема начата: R.I.Chernov от 01-12-2014, 13:49:19
Название: Управление адаптивностью через API
Отправлено: R.I.Chernov от 01-12-2014, 13:49:19
Добрый день, уважаемые форумчане! Честно говоря, не знаю, как верно сформулировать вопрос, просьба не судить за кривословие :) При копировании сборочной единицы с помощью Vault, полученная копия не могла быть использована как "адаптивная". Стал разбираться.
Написал следующий код,попробовал изменить им статус адаптивности, но он также не сработал (полагаю, я просто повторил этим кодом мои манипуляции сделанные ранее вручную):
Set oCompDef = ThisApplication.ActiveDocument.ComponentDefinition
Dim oCOcc As ComponentOccurrence
Set oCOcc = oCompDef.Occurrences.Item(1)
oCOcc.Adaptive = 1
EndSub
В итоге я справился с задачей: отключал адаптивность, перед возвращением в Vault, и только после этого копировал сборку...
Отсюда напросились выводы, что свойство сборки, условно назовем его "возможность быть адаптивной" хранится в самой сборке. Если кому-то известно, как докапаться с помощью API до этого свойства, очень прошу поделиться. Совсем не хочется проводить вышеуказанную манипуляцию, каждый раз, когда потребуется скопировать подобный элемент.
Название: Re: Управление адаптивностью через API
Отправлено: Владимир Ананьев от 02-12-2014, 13:14:00
Адаптивность задается на уровне компонента сборки как логическое свойство объекта ComponentOccurrence:
Спасибо, Владимир Николаевич! Но либо я не понял Ваш ответ, либо Вы не поняли мой вопрос :) Еще раз попытаюсь объяснить мою ситуацию: У меня есть сборка, назовем ее "Главная №1". В ней есть подсборка, назовем ее "лестница 1", и эта подсборка адаптивна. С помощью Vault я делаю копию "лестница 1" и получаю новую сборку "лестница 2". Так вот при вставке "лестницы 2" в главную сборку (или любую другую), нельзя сделать ее (лестницу) адаптивной: если делать это руками (правая кнопка мыши) , то там "адаптивность" не активна, если делать с помощью кода "ComponentOccurrence.Adaptive", то выскакивает ошибка. Причем с любыми другими подсборками мой код работает, и успешно активизирует и снимает адаптивность элементов. Я не уверен , в чем именно причина, потому и не могу сформулировать свой вопрос корректно :( Я вижу ситуацию так: Если я создам новую сборку "Главная №2" и вставлю туда "лестницу 1", то не получится поставить на нее (лестницу) "адаптивность", потому что лестница адаптивна в "Главная №1". И ,казалось бы, все логично: сборка может быть зависимой всего один раз: если она адаптивна в "Главная №1", то адаптивность неактивна в "Главная №2", и наоборот, как только я сниму адаптивность в "Главная №1" - эта функция станет активной в "Главная №2"... Но это абсолютно нелогично в случае с копированием, получается что я возвращаю в Vault сборку, внутри которой где-то указано, что она уже адаптивна один раз и не может быть адаптивной второй... сборка копируется, сохраняя это свойство (хотя ВСЕ элементы скопированы: т.е. ни один из них никак не связан с исходной сборкой). На основе всего этого я предположил, что это свойство "адаптивность" хранится в самой сборке (т.е. именно в той сборке, которую мы делаем адаптивной, или отменяем ее адаптивноть)... Например аналогичный логический параметр, если он "true", то сборку нельзя сделать адаптивной с помощью "ComponentOccurrence.Adaptive = true" ... если он false, то вышеуказанный код сможет его поменять. Прошу прощения за огромное количество написанных буковок, короче сформулировать я не смог. В общем если подытожить, то я пытаюсь найти свойство внутри сборки, которое хранит информацию о "возможности или невозможности сборки быть адаптивной" Заранее большое спасибо... даже за одно только терпение при прочтении! :)
Update: Покопался в английских интернетах и таки понял, что именно я искал..ниже расположены скрин шоты для детали и для сборки сделанные в меню "Инструменты-Процесс моделирования". Пытаюсь найти код, чтобы иметь возможность менять нижеуказанную настройку. Не разобрался, как вставить их с нормальным разрешением, необходимо кликнуть по изображению :)
Хочу отметить, что данным кодом параметр можно изменить лишь на значение "false", попытка присвоить ему значение "true" заканчивается ошибкой... как я понимаю, элемент можно сделать адаптивным лишь тогда, когда он вставлен в другую сборку, используя код: