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


Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Как посчитать количество вхождений 3D фрагмента в сборке
 
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
 
Цитата
woofer написал:
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)
Спецификация генерируется по шаблону (см. Создание шаблона отчета).
T-FLEX CAD 15.1.68.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 15.1.68.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 15.1.68.0
 
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет. DependsOn тоже не понятно работает, всегда выдает true даже если передаю не связанный с ней объект
 
Цитата
woofer написал:
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет.
Какая у Вас версия T-FLEX CAD?
T-FLEX CAD 15.1.68.0
 
Цитата
Vite написал:
Цитата
woofer написал:
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет.
Какая у Вас версия T-FLEX CAD?
12
 
woofer, с этого нужно было начинать. У меня версия (15.0.21.0).
T-FLEX CAD 15.1.68.0
Страницы: 1