Официальный форум российского программного комплекса 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 15.1.68.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 15.1.68.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 15.1.68.0
 
Конфигурации нужно использовать если нужна таблица исполнений, во всех остальных случаях эффективнее работает стандартная параметризация, в том числе и БД.
Толком не остыл...
Страницы: 1