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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Как посчитать количество вхождений 3D фрагмента в сборке
 
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
 
Цитата
woofer написал:
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
Спецификация генерируется по шаблону (см. Создание шаблона отчета).
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Цитата
woofer написал:
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
Спецификация генерируется по шаблону (см. Создание шаблона отчета ).
Мне не нужно создавать шаблон, а нужно программно посчитать количество 3D фрагментов с учетом всех операций
Изменено: woofer - 05.04.2017 09:43:07
 
Цитата
woofer написал:
посчитать количество 3D фрагментов с учетом всех операций
есть опция, без программирования не подойдет?
 
и еще такая опция:
8888888888.png (46.52 КБ)
 
Не это не то. Сколько всего фрагментов мне не нужно. Нужно количество вхождений определенных сборок.
 
Цитата
woofer написал:
Не это не то. Сколько всего фрагментов мне не нужно. Нужно количество вхождений определенных сборок.

Код
using TFlex.Model;
using TFlex.Model.Model3D;

namespace Test
{
    public class Class8
    {
        public static void Run()
        {
            Document document = TFlex.Application.ActiveDocument;

            if (document != null)
            {
                foreach (Operation operation in document.GetOperations())
                {
                    if (operation.IsKindOf(ObjectType.Fragment3D))
                    {
                        // 3D Фрагмент
                    }

                    if (operation.IsKindOf(ObjectType.Area))
                    {
                        // Штриховка или заливка
                    }

                    if (operation.IsKindOf(ObjectType.Bend))
                    {
                        // Операция гибки
                    }

                    // и т.д., полный список см. (TFlex.Model.ObjectType)
                }
            }
        }
    }
}
T-FLEX CAD 17.1.6.0
 
IsKindOf не дает совершенно ничего. Ну узнаю я что операция применена к типу Fragment3D и что дальше. А если у меня к фрагменту применена булева операция, а потом массив и к массиву симметрия
 
Цитата
woofer написал:
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
Если можно, опишите свою задачу. Почему для её решения вы хотите применить именно API? Возможно, есть более простой вариант решения вашей задачи, без использования API.
 
Я выгружаю данные в другую программу.
Цитата
Osiris2000 написал:
Цитата
woofer написал:
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
Если можно, опишите свою задачу. Почему для её решения вы хотите применить именно API? Возможно, есть более простой вариант решения вашей задачи, без использования API.
Я выгружаю данные в другую программу
 
Цитата
woofer написал:
IsKindOf не дает совершенно ничего.
Данная функция необходима для определения типа объекта. Для перечисления открытых документов, используется свойство Documents. Например:

Код
using TFlex.Model;
using TFlex.Model.Model3D;

namespace Test
{
    public class Class8
    {
        public static void Run()
        {
            foreach (Document document in TFlex.Application.Documents)
            {
                if (document.ActiveView != null)
                {
                    Foo(document); // данные активного документа
                }
                else
                {
                    Foo(document); // данные фрагмента
                }
            }
        }

        public static void Foo(Document document)
        {
            foreach (Operation operation in document.GetOperations())
            {
                if (operation.IsKindOf(ObjectType.Fragment3D))
                {
                    // ...
                }

                if (operation.IsKindOf(ObjectType.Extrusion))
                {
                    var body = operation.Body;
                    var baseOperation = body.BaseOperation;

                    // ...

                    foreach (ModelObject obj in document.GetObjects())
                    {
                        if (operation.DependsOn(obj))
                        {
                            // определение зависимостей ...
                        }
                    }
                }
            }
        }
    }
}
T-FLEX CAD 17.1.6.0
 
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет. DependsOn тоже не понятно работает, всегда выдает true даже если передаю не связанный с ней объект
 
Цитата
woofer написал:
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет.
Какая у Вас версия T-FLEX CAD?
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Цитата
woofer написал:
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет.
Какая у Вас версия T-FLEX CAD?
12
 
woofer, с этого нужно было начинать. У меня версия (15.0.21.0).
T-FLEX CAD 17.1.6.0
Страницы: 1