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


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

Страницы: 1
Путь по ребрам грани
 
Ан нет, вставил в другой документ - заработал.
Путь по ребрам грани
 
Что-то не выходит у меня каменный цветок. Не запускается макрос.
Скрин во вложении.
Путь по ребрам грани
 
[QUOTE]vite написал:
нужно запускать Visual Studio от администратора.[/QUOTE]
Понято, учту.
Путь по ребрам грани
 
[QUOTE]vite написал:
Попробуйте задать этот вопрос в техподдержку, интересно что ответят.[/QUOTE]
Задам, самому крайне интересно.
Путь по ребрам грани
 
[QUOTE]vite написал:
Вопрос в том, как добраться до него через объект фрагмента.[/QUOTE]
По идее эта грань, на которую накладывается адаптивный фрагмент, является родительской для него. Ну и как следствие для "Грань_1 : Сглаживание_1". Могу ошибаться, но картина пока получается весьма логичной.
Путь по ребрам грани
 
Доброго дня.
Вот эти моменты не очень понятны.
[QUOTE]vite написал:
3. Добавить ссылку на API в проект.
4. Добавить ссылку вашей библиотеки (DLL) в редакторе макросов.[/QUOTE]
Как это реализуется?
Путь по ребрам грани
 
vite, благодарю.
Буду разбираться.
Путь по ребрам грани
 
[QUOTE]vite написал:
эта проблема связана с редактором макросов. Я все тесты создаю в Visual Studio, а в макросе делаю только вызов метода Run().[/QUOTE]
Не сложно просветить начинающего как это сделать? в VS кодить на порядок удобнее.
Путь по ребрам грани
 
Всем доброго времени суток.
Благодаря службе поддержки удалось докопаться до истины, которая лежала на поверхности. Все тривиально: из сборки перебираем фрагменты, проводим необходимые манипуляции с каждым фрагментом, фиксируем их в переменных фрагмента и получаем результат в структуре фрагмента и суммарный в структуре сборки.
Всех благодарю за помощь, код под спойлером.
Пример кода
Путь по ребрам грани
 
vite, премного благодарен. В понедельник предметно потестирую.

[QUOTE]FRei написал:
Дык вы уже это сделали, у вас есть переменная периметр get("Базовая_грань","perimeter") она вам и считает:[/QUOTE]
Периметр в макросе я считаю только для временного информирования. Что бы проверить его работу. Как и количество отрезков пути. Суть моей задачи в получении длин каждого отрезка грани или 3д профиля по которым вставляется в сборку адаптивный фрагмент для последующих вычислений для каждого фрагмента и занесением результатов в структуру каждого изделия.
Путь по ребрам грани
 
[QUOTE]vite написал:
Так что особой разницы нет, какой объект выступает в роли привязки.[/QUOTE]
Каким образом это можно реализовать? Раз ничего не создается, то нечему и конфликтовать в сборке. А то вот какая неприятность у меня получается. Файлы в закрепе. Деталь 1 это адаптируемый фрагмент, деталь 2 - сборка с ними.
Путь по ребрам грани
 
[QUOTE]vite написал:
вы можете получить длину сегментов через привязку к ребрам. Затем, привязать переменные к дочерним элементам в структуре изделия (см. вложение). Привязка геометрического объекта к переменной осуществляется через операцию "Измерение".[/QUOTE]

Уже пробовал таким образом. Но печаль такого способа заключается в том что при изменении количества сегментов грани весь расчет рушится. У меня адаптивные фрагменты располагаются по рассеченной области, части этой области могут быть как треугольными, так и н-угольными, как с прямыми участками, так и с криволинейными. Существует ли способ подсчета отрезков без создания пути? Или, допустим, после сбора  данных, удалить ненужные уже объекты из модели (3д путь и ребра). Главное результат в структуре изделия сохранить. :)
Изменено: Артем - 05.02.2021 18:55:54
Путь по ребрам грани
 
[QUOTE]vite написал:
Необходимость в создании 3D-пути нужно для того, чтобы посчитать длину отрезков и вывести в отчет?[/QUOTE]
Именно так. Я решения без создания 3д пути не смог найти. Или не там искал.
Путь по ребрам грани
 
Благодарю за еще один пример.
Суть моей задачи: необходимо собирать длины отрезков периметра грани, на которой располагается адаптивный фрагмент в сборке, эти значения обрабатывать, результат заносить в структуру фрагмента. Периметр стандартными средствами получить - не проблема, но нужны именно длины ребер. При чем их количество и геометрия вариативны в широком диапазоне. После добавления в сборку следующего адаптивного фрагмента он не пересчитывается.
Путь по ребрам грани
 
Благодарю за пример.
Нашел в коде несколько недочетов, поправил, проверил - РАБОТАЕТ! [IMG WIDTH=20 HEIGHT=20]https://www.tflex.ru/bitrix/images/main/smiles/5/ulibka.gif[/IMG]
Исправленный код под спойлером.

Исправленный код
Путь по ребрам грани
 
Добрый день!
Строю 3д путь по ребрам грани с известным именем, но получаю в модели ссылку на 3д путь.[CODE] List<BaseCurve> EdgeCurve = new List<BaseCurve>();
        List<BaseInterval> EdgeInterval = new List<BaseInterval>();
        foreach (TFlex.Model.Model3D.BodyPart body in document.Bodies)
              {
               foreach (ModelBody Body in body.TopOperation.Geometry.Solid)
                       {
                         foreach (ModelFace face in Body.Faces)
                            {
                             if (face.Name == "Базовая_грань") //фильтр по имени грани
                              {
                               foreach (ModelEdge edge in face.Edges)
                                      {            
                                      EdgeCurve.Add(edge.Curve);
                                      EdgeInterval.Add(edge.Interval);
                                      }
                              }
                            }
                       }
               }  

   //создаю путь
   Path3D pp = new EdgePath(document);
   pp.Name = "Path";      
   pp = Path3D.Create(document, EdgeCurve, EdgeInterval); [/CODE]
Как получить длины участков 3D Пути
 
[QUOTE]vite написал:
длина сегмента 3D-пути определяется свойством Path3D.Path3DSegment.Length.[/QUOTE]
До этого я сам докопался, изучая руководство T-Flex CAD open API, а до того как взять именно 3д путь в оборот - сам додуматься не смог. :)

Еще раз благодарю!
Как получить длины участков 3D Пути
 
Благодарю!
Я правильно понимаю что метод GetObjects() возвращает массив объектов документа, а по свойству GroupType мы фильтруем объекты документа по необходимому нам типу? И подобным образом можно перебирать все объекты, что определены в перечислителе ObjectType?
Как получить длины участков 3D Пути
 
Всем доброго дня. Задачка следующая: есть 3д путь(с именем, например Путь_1) произвольной формы (N углов, M отрезков в том числе и криволинейных). Подскажите пожалуйста, уважаемые знатоки, каким образом можно получить значения длин его участков посредством макроса на C#.
Страницы: 1