Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Конфигурации модели
 
Добрый день!

Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?
 
Цитата
SwnSerg написал:
Добрый день!
Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?
О какой конфигурации речь?
 
Цитата
zobza написал:
Цитата
SwnSerg написал:
Добрый день!
Подскажите, пожалуйста, каким образом можно узнать какая конфигурация модели является текущей (активной)?
О какой конфигурации речь?
речь идет о конфигурациях, которые можно посмотреть по команде "Конфигурации и исполнения".
хочется по очереди загружать переменные конфигурации через API, но в итоге вернуть документ в первоначальное состояние (т.е. к той конфигурации,которая была до перебора конфигураций в цикле активна).
такое возможно реализовать?
 
Цитата
SwnSerg написал:
такое возможно реализовать?

Код
using System.Windows.Forms;
using TFlex.Model;

namespace Test
{
    public class Class6
    {
        public static void Run()
        {
            Document document = TFlex.Application.ActiveDocument;
            RegenerateOptions options = new RegenerateOptions();

            options.Full = true;

            string confName = "";
            string confCurrent = document.ModelConfigurations.GetConfigurationWithCurrentValues();

            MessageBox.Show("Текущая конфигурация: " + confCurrent);

            for (int i = 0; i < document.ModelConfigurations.ConfigurationCount; i++)
            {
                confName = document.ModelConfigurations.GetConfigurationName(i);

                if (confName != confCurrent)
                {
                    MessageBox.Show("Следующая конфигурация: " + confName);

                    document.ModelConfigurations.LoadConfigurationVariables(confName);
                    document.Regenerate(options);
                }

                if (i == document.ModelConfigurations.ConfigurationCount - 1)
                {
                    MessageBox.Show("Возврат к исходной конфигурации");
                    document.ModelConfigurations.LoadConfigurationVariables(confCurrent);
                    document.Regenerate(options);
                }
            }
        }
    }
}
Изменено: Vite - 04.03.2017 14:55:06
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Цитата
SwnSerg написал:
такое возможно реализовать?
Код
 using System.Windows.Forms;
using TFlex.Model;

namespace Test
{
    public class Class6
    {
        public static void Run()
        {
            Document document = TFlex.Application.ActiveDocument;
            RegenerateOptions options = new RegenerateOptions();

            options.Full = true;

            string confName = "";
            string confCurrent = document.ModelConfigurations.GetConfigurationWithCurrentValues();

            MessageBox.Show("Текущая конфигурация: " + confCurrent);

            for (int i = 0; i < document.ModelConfigurations.ConfigurationCount; i++)
            {
                confName = document.ModelConfigurations.GetConfigurationName(i);

                if (confName != confCurrent)
                {
                    MessageBox.Show("Следующая конфигурация: " + confName);

                    document.ModelConfigurations.LoadConfigurationVariables(confName);
                    document.Regenerate(options);
                }

                if (i == document.ModelConfigurations.ConfigurationCount - 1)
                {
                    MessageBox.Show("Возврат к исходной конфигурации");
                    document.ModelConfigurations.LoadConfigurationVariables(confCurrent);
                    document.Regenerate(options);
                }
            }
        }
    }
}
 
а вопрос такой тогда возникает:
если у меня в двух конфигурациях документа разный набор, например, 3D фрагментов. правильно ли я понимаю, что метод ModelConfigurations.LoadConfigurationSolids позволяет для конфигурации с определенным именем этот набор 3D фрагментов обновить?
нужно ли после вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?
 
Цитата
SwnSerg написал:
Цитата
Vite написал:
Цитата
SwnSerg написал:
такое возможно реализовать?
Код
  using System.Windows.Forms;
using TFlex.Model;
  
а вопрос такой тогда возникает:
если у меня в двух конфигурациях документа разный набор, например, 3D фрагментов. правильно ли я понимаю, что метод ModelConfigurations.LoadConfigurationSolids позволяет для конфигурации с определенным именем этот набор 3D фрагментов обновить?
нужно ли после вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?
Может стоит попробовать и рассказать про полученные результаты? :)
 
Цитата
SwnSerg написал:
нужно ли после вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?

я пробовал применить метод LoadConfigurationSolids, но возникает исключение, типа:
Код
An exception of type 'System.AccessViolationException' occurred in TFlexAPI.dll but was not handled in user code
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

если макрос запустить без отладчика, приложение T-FLEX CAD завершается с ошибкой. что именно вызывает ошибку, мне непонятно. незнаю зачем вам понадобилось использовать конфигурации модели. на мой взгляд, проще и эффективнее загрузить параметры из базы данных.
Изменено: Vite - 05.03.2017 15:10:12
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Цитата
SwnSerg написал:
нужно ли после вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?
я пробовал применить метод LoadConfigurationSolids, но возникает исключение, типа:
Код
 An exception of type 'System.AccessViolationException' occurred in TFlexAPI.dll but was not handled in user code
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
 

если макрос запустить без отладчика, приложение T-FLEX CAD завершается с ошибкой. что именно вызывает ошибку, мне непонятно. незнаю зачем вам понадобилось использовать конфигурации модели. на мой взгляд, проще и эффективнее загрузить параметры из базы данных.
я, возможно, сужу по другим CAD'ам (типа компаса или инвентора), но LoadConfigurationSolids мне показалось должен перезагрузить документ с тем набором компонентов (3D фрагментов), которые сохранены в конкретной конфигурации.
я к чему - в разных конфигурациях ведь может быть разный набор фрагментов - ну, например, в одной конфигурации используются болты одного типа, а в другой - другого.
возможно такое делается как-то по другому?
Изменено: SwnSerg - 05.03.2017 16:13:02
 
Цитата
SwnSerg написал:
возможно такое делается как-то по другому?
на сколько я понял, конфигурация модели представляет набор фиксированных параметров, досупных в свойствах "Параметры 3D фрагмента" (см. tf_3d_fragment_prop.PNG). это может быть полезным, если фрагмент имеет определенный стандарт, и не нуждается в динамических отношениях со сборкой. в качестве альтернативы, предлагаю вам рассмотреть возможность построения модели по параметрам из БД:
- создание связи БД с переменными
- создание диалога
Изменено: Vite - 05.03.2017 17:50:50
T-FLEX CAD 17.1.6.0
 
Конфигурации нужно использовать если нужна таблица исполнений, во всех остальных случаях эффективнее работает стандартная параметризация, в том числе и БД.
 
Можно ли с помощью API для конфигураций модели изменить набор значений переменных? Конфигурации уже созданы, требуется только изменить значения переменных для них (как это делается вручную на вкладке "Конфигурации модели").
 
Цитата
ainis написал:
Можно ли с помощью API для конфигураций модели изменить набор значений переменных?
Странный вопрос. Конфигурации -- это набор состояний общих геометрических данных. Конфигурации применяются на уровне сборки с тем состоянием, которое вы определили в документе фрагмента (текущая конфигурация). Как я понял, вы хотите изменить состояние переменных текущей конфигурации при включении в сборку... только не понятно зачем так усложнять?! Если вам нужны динамические фрагменты, на мой взгляд, конфигурации не лучший вариант для этого. Возможно, стоит рассмотреть вариант создания адаптивных фрагментов с пользовательскими данными в составе изделия (нужно проверять).
T-FLEX CAD 17.1.6.0
Страницы: 1