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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Как получить длины участков 3D Пути
 
Всем доброго дня. Задачка следующая: есть 3д путь(с именем, например Путь_1) произвольной формы (N углов, M отрезков в том числе и криволинейных). Подскажите пожалуйста, уважаемые знатоки, каким образом можно получить значения длин его участков посредством макроса на C#.
 
Артем, длина сегмента 3D-пути определяется свойством Path3D.Path3DSegment.Length.

Пример вывода длины сегментов 3D-пути в окно диагностики T-FLEX CAD:
Код
using TFlex.Model;
using TFlex.Model.Model3D;

namespace Test
{
    public class PathReader
    {
        readonly static Document document = TFlex.Application.ActiveDocument;
        
        public static void Run()
        {
            if (document == null)
                return;

            document.Diagnostics.RemoveAll();

            foreach (var obj in document.GetObjects())
            {
                if (obj.GroupType != ObjectType.Path3D)
                    continue;

                var path = obj as Path3D;

                document.Diagnostics.Add(new DiagnosticsMessage(
                    DiagnosticsMessageType.Information, 
                    string.Format("Path3D [id: {0}]", path.ObjectId)));

                foreach (var segment in path.Path3DSegments)
                {   
                    document.Diagnostics.Add(new DiagnosticsMessage(
                        DiagnosticsMessageType.Information, 
                        string.Format("--> Segment [len: {0}]", 
                        segment.Length)));
                }
            }
        }
    }
}
T-FLEX CAD 17.1.6.0
 
Благодарю!
Я правильно понимаю что метод GetObjects() возвращает массив объектов документа, а по свойству GroupType мы фильтруем объекты документа по необходимому нам типу? И подобным образом можно перебирать все объекты, что определены в перечислителе ObjectType?
 
Цитата
vite написал:
длина сегмента 3D-пути определяется свойством Path3D.Path3DSegment.Length.
До этого я сам докопался, изучая руководство T-Flex CAD open API, а до того как взять именно 3д путь в оборот - сам додуматься не смог. :)

Еще раз благодарю!
 
Артем, на самом деле, можно получить объекты типа Path3D при помощи метода GetPaths3D. В API есть много методов для извлечения определенного типа объектов. Обычно задача обработки не сводится к одной операции, поэтому, проще использовать универсальный метод GetObjects.
T-FLEX CAD 17.1.6.0
Страницы: 1