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


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

Страницы: 1 2 3 4 5 6 7 След.
Операция "Листовая заготовка"
 
[QUOTE] написал:
[QUOTE][URL=/forum/index.php?PAGE_NAME=profile_view&UID=21630&tags=%25252525252525EF%25252525252525E5%25252525252525F0%25252525252525E5%25252525252525F1%25252525252525E5%25252525252525F7%25252525252525E5%25252525252525ED%25252525252525E8%25252525252525E5]Roman[/URL] написал:
..., для этого я и хочу получить развертку тела с помощью класса Unbend.[/QUOTE]
про это в курсе...

Вы пробовали воспроизвести стандартную функцию  [URL=https://www.tflexcad.ru/help/cad/17/index.html?smu.htm]Разгибание[/URL] ()?[/QUOTE]
Да, операция создается, грань можно добавить цилиндрическую, тело и неподвижную грань нельзя добавить, т.к нет свойств.
Можете любой пример привести кода в контексте авто-меню?  Как понять из справки что класс используется в контексте авто-меню?
Операция "Листовая заготовка"
 
[QUOTE] написал:
[QUOTE][URL=/forum/index.php?PAGE_NAME=profile_view&UID=21630&error=tid_not_approved&tags=%2525252525e4%2525252525e5%2525252525f2%2525252525e0%2525252525eb%2525252525fc]Roman[/URL] написал:
Создать проекцию развертки на чертеже напрямую неполучатеся, т.к в справке API нет класса для создание проекции развертки.[/QUOTE]
А обычная проекция чем отличается от проекции развёртки?[/QUOTE]
Да возможно, для этого я и хочу получить развертку тела с помощью класса Unbend.
Операция "Листовая заготовка"
 
[QUOTE] написал:
[URL=/forum/index.php?PAGE_NAME=profile_view&UID=21630&%253bgid=8&error=tid_not_approved]Roman[/URL],

Уточните, что конкретно вы хотите получить?

- набор данных измерения (т.е. выгрузить данные в XML-файл),
- создать отдельный файл ( .grb ) с развёрткой,
- или ... ???[/QUOTE]
vite, необходимо получить проекцию развертки на отдельном листе и габариты развертки в структуре изделия (это я уже получил с помощью API).
Проблема в том что в класс Unbend нельзя добавить тело и неподвижную грань (нет свойств и методов для добавления).
Создать проекцию развертки на чертеже напрямую неполучатеся, т.к в справке API нет класса для создание проекции развертки.
Операция "Листовая заготовка"
 
[QUOTE] написал:
[URL=/forum/index.php?PAGE_NAME=profile_view&UID=21630]Roman[/URL], зачем нужна копия операции?


[CODE] document.EndChanges(); // сначала нужно закрыть блок изменений
document.Save(); // потом сохранять их
document.Close();
[/CODE] [/QUOTE]
vite, копия нужна получить развертку и снять размеры с развертки.
Операция "Листовая заготовка"
 
[I][B]"""vite написал:[/B][/I]
[URL=https://www.tflex.ru/forum/index.php?PAGE_NAME=profile_view&UID=21630][I][B]Roman[/B][/I][/URL][I][B], вы можете прикрепить модель, созданную в ручном режиме, чтобы приблизительно понимать чего вы хотите получить.[/B][/I]

[I][B]Исходная модель, тело, которое нужно преобразовать в другое тело (применить операцию).""""[/B][/I]

Хочу разогнуть листовую деталь ( а именно копию листовой детали):
создать копию листовой детали получается, далее пытаюсь добавить в класс unbend тело и неподвижную плоскость, но немогу найти свойств для добавления.
private void button5_Click_1(object sender, EventArgs e)
{
   Путь_к_Файлу_10 = @"C:\Новая папка\Деталь 2.grb";
   string Путь_к_Файлу_Сборки = Путь_к_Файлу_10;
   List<string> newlist1 = new List<string>();
   Document document = TFlex.Application.OpenDocument($@"{Путь_к_Файлу_Сборки}");
   document.BeginChanges("Создание проекции");          
   RegenerateOptions regenerateOptions = new RegenerateOptions();
   ////Создание копии тела для развертки
   LCS lcs_1 = (LCS)document.GetObjectByName("ЛСК_1");          
   ModelObject bodypart = document.GetObjectByName("Тело_1 - Копия_развертка_1");
   if (bodypart == null)
   {
       List<BodyPart> newlist_body = new List<BodyPart>();
       List<BodyPart> newlist = new List<BodyPart>();
       foreach (BodyPart body in document.Bodies)
       {
           if (body.Name == "Тело_1")
           {
               newlist_body.Add(body);
           }
       }
       PointsLCS lcs_2_1 = (PointsLCS)document.GetObjectByName("КОПИЯ_ЛСК_1");
       PointsLCS lcs_2 = new PointsLCS(document);
       if (lcs_2_1 == null)
       {
           lcs_2.PointToOrigin = lcs_1.Geometry.Origin;
           lcs_2.DirectionToAxisX = lcs_1.Geometry.DirectionX;
           lcs_2.DirectionToAxisY = lcs_1.Geometry.DirectionY;
           lcs_2.Name = "КОПИЯ_ЛСК_1";
           TransformationGroup преобразование = lcs_2.Transformations.AddBaseTransfGroup();
           преобразование.AddMoveTransf(TransformationCoordinate.Z, 300);
           преобразование.Name = "преобразование копии 1";
       }
       CopyOperation2 копирование_гибки = new CopyOperation2(document, CopyBaseOperation2.Type.Bodies);
       копирование_гибки.Operations.Add(newlist_body[0].BaseOperation);
       копирование_гибки.SourceLCS = lcs_1;
       if (lcs_2_1 == null)
       {
           копирование_гибки.TargetLCS = lcs_2;
       }
       else копирование_гибки.TargetLCS = lcs_2_1;
       копирование_гибки.CopyMode = CopyBaseOperation2.Mode.Copy;        
       копирование_гибки.Name = "Копия_развертка_1";
       document.SaveAs(@"C:\Новая папка\Деталь 20.grb");
       List<ModelFace> newList_faces = new List<ModelFace>();
       List<ModelFace> facesList = new List<ModelFace>();
       //Перебор всех тел в сцене
       foreach (TFlex.Model.Model3D.BodyPart body in document.Bodies)
       {                      
               if (body.Name == "Тело_1 - Копия_развертка_1")
               {
               //Перебор всех твердых тел в сцене
               foreach (ModelBody Body in body.TopOperation.Geometry.Solid)
               {
                   //Перебор всех граней твердых тел
                   foreach (ModelFace face in Body.Faces)
                   {
                       //Добавляем грани в список
                       facesList.Add(face);                              
                   }
               }
           }
       }
           
       Unbend разгибание = new Unbend(document);                
       разгибание.KeptPlanarFace = facesList[3];                      
       разгибание.Body.Name = "Копия_развертка";
   }
   document.Save();
   document.EndChanges();
   document.Close();
}
Изменено: Roman - 06.07.2025 23:46:41
Операция "Листовая заготовка"
 
[QUOTE] написал:
[QUOTE][URL=/forum/index.php?PAGE_NAME=profile_view&UID=21630&%253BGID=3&error=tid_not_approved]Roman[/URL] написал:
Каким способом выбрать тело для разгибания?[/QUOTE]
По селектору..[/QUOTE]
vite, вы имеете ввиду метод ObjectSelectControl.SetFilter?
как передать тело в класс Unbend?
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Не работает класс Unbend в T-FLEX CAD Open API.
Нет методов и свойств, для выбора тела и цилиндрических граней.
Операция "Листовая заготовка"
 
Добрый день!
Подскажите пожалуйста, как разогнуть деталь с помощью класса Unbend?
Unbend разгибание = new Unbend(document);            
разгибание.KeptPlanarFace = facesList[3];

Каким способом выбрать тело для разгибания?
Изменено: Roman - 01.06.2025 18:43:24
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Не нашел в справке и в файле TFlexAPI3D.dll информацию по классу SolidToSheet (преобразование тела в лист).
Изменено: Roman - 28.02.2025 12:42:42
Операция "Листовая заготовка"
 
Добрый день!
Хочу развернуть листовую деталь. Нашел класс Unbend.
В классе есть свойство [URL=ms-its:C:\Program Files\T-FLEX CAD 17\Program\tflexapi.chm::/html/P_TFlex_Model_Model3D_Unbend_CylindricalFaces.htm]CylindricalFaces[/URL] и [URL=ms-its:C:\Program Files\T-FLEX CAD 17\Program\tflexapi.chm::/html/P_TFlex_Model_Model3D_Unbend_KeptPlanarFace.htm]KeptPlanarFace[/URL], отвечающие за выбор неподвижной грани и цилиндрических поверхностей.
Но не нашел свойство отвечающее за выбор самого тела.
Какое свойство в классе Undend отвечает за выбор тела?

List<ModelFace> modelFace = new List<ModelFace>();
           List<BodyPart> newlist_body1 = new List<BodyPart>();
           foreach (BodyPart body in document.Bodies)
           {
               if (body.Name == "Тело_1 - Копия_развертка")
               {
                   foreach (ModelBody Body in body.TopOperation.Geometry.Solid)
                   {

                       foreach (ModelFace face in Body.Faces)
                       {

                           modelFace.Add(face);
                       }
                   }
               }


           }
           Unbend разгибание = new Unbend(document);              
           разгибание.KeptPlanarFace = modelFace[8];
Изменено: Roman - 27.02.2025 17:14:17
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Цитата
написал:
Roman, *** в команде Надпись флаг По *** работает, то в спецификации скорее *** предустановленные программой свойства
Шурик, в команде Надпись флаг "/Уместить/ текст в границы" работает, но когда выходим из команды и заходим заново, значение флага сбрасывается.
При простановке позиции структуры изделия значение флага "/Уместить/ текст в границы" не сохраняется.
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Цитата
написал:
Цитата
написал:
При простановке позиции или надписи, не сохраняется по /умолчанию/ свойство "/Уместить/ текст в границы".
https://youtu.be/__gyU7t5Ml8
Я не готов ответить, но в любом *** есть небольшие затруднения с просмотром *** в YouTube - выложите пожалуйста в другое место
https://rutube.ru/video/private/8babcdb69bbbcce0c2ae118673e0518a/?p=ziidqYWjsxiYvtBFz0H6iA
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
При простановке позиции или надписи, не сохраняется по /умолчанию/ свойство "/Уместить/ текст в границы".
https://youtu.be/__gyU7t5Ml8
Изменено: Roman - 19.12.2024 17:37:07
Получить все сборки, детали, стандартные изделия входящие в 3D модель
 
[QUOTE] написал:
[URL=https://www.tflex.ru/forum/index.php?PAGE_NAME=profile_view&UID=21630]Roman[/URL] , у вас в тексте ошибки есть информация - использовать метод. Используйте его и получите значение *** перечисления, *** пользуетесь C#.

string bomStatus = i.get_IncludeInSpecificBom("Спецификация").ToString();[/QUOTE]
Спасибо, Hydra!
Получилось!
[FONT="Courier New"]private static void MetadataOutput(Document document)[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] int index = 0;[/FONT]
[FONT="Courier New"] [/FONT]
[FONT="Courier New"] [/FONT]
[FONT="Courier New"] [/FONT]
[FONT="Courier New"] foreach (var i in document.GetFragments3D())[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] [I][B] string bomStatus = i.get_IncludeInSpecificBom("Структура изделия").ToString();[/B][/I][/FONT]


[FONT="Courier New"] if (i.Visible == true&& i.TopLevel==true)[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] [/FONT]
[FONT="Courier New"] string[] contents = {[/FONT]
[FONT="Courier New"] "Документ:\t\t" + document.FileName,[/FONT]
[FONT="Courier New"] "Кол-во фрагментов:\t" + document.GetFragments3D().Count,[/FONT]
[FONT="Courier New"] " Индекс фрагмента:\t" + index,[/FONT]
[FONT="Courier New"] " Имя файла:\t\t" + i.FilePath,[/FONT]
[FONT="Courier New"] " Имя объкта:\t\t" + i.Name,[/FONT]
[FONT="Courier New"] " Идентификатор:\t" + i.ObjectId,[/FONT]
[FONT="Courier New"] " Полный путь:\t\t" + i.FullFilePath,[/FONT]
[FONT="Courier New"] " Тело в которое входит в фрагмент:\t\t" + i.Body.Name,[/FONT]
[FONT="Courier New"] " Получить тип объекта:\t\t" + i.GroupType.ToString(),[/FONT]
[FONT="Courier New"] " Объект в сцене:\t\t" + i.InScene,[/FONT]
[FONT="Courier New"] " Уровень:\t\t" + i.Level.Value,[/FONT]
[FONT="Courier New"] " Guid:\t\t" + i.LinkedDocumentGuid.ToString(),[/FONT]
[FONT="Courier New"] " Видимость :\t\t" + i.Visible,[/FONT]
[FONT="Courier New"] " Видимость :\t\t" + i.VisibleInScene,[/FONT]
[FONT="Courier New"] " Имя на дисплее :\t\t" + i.DisplayName,[/FONT]
[FONT="Courier New"] " Количество элементов :\t\t" + i.Document.Bodies.Count,[/FONT]
[FONT="Courier New"] " Управление прозрачностью :\t\t" + i.IsTransparencyOn,[/FONT]
[FONT="Courier New"] " Свойство подавленности операции :\t\t" + i.Suppression.Suppress,[/FONT]
[FONT="Courier New"] " Признак верхней операции :\t\t" + i.TopLevel,[/FONT]
[FONT="Courier New"] " Верхняя операция в теле :\t\t" + i.TopOperation.Name,[/FONT]
[FONT="Courier New"] [B][I] " Включение в спецификацию :\t\t" + bomStatus,[/I][/B][/FONT]
[FONT="Courier New"] [/FONT]


[FONT="Courier New"] "========================================================"[/FONT]
[FONT="Courier New"] };[/FONT]

[FONT="Courier New"] File.AppendAllLines(path, contents);[/FONT]
[FONT="Courier New"] index++;[/FONT]

[FONT="Courier New"] if (TFlex.Application.OpenFragmentDocument(i.FullFilePath) is Document fragment)[/FONT]
[FONT="Courier New"] MetadataOutput(fragment);[/FONT]
[FONT="Courier New"] }[/FONT]
[FONT="Courier New"] }[/FONT]
Получить все сборки, детали, стандартные изделия входящие в 3D модель
 
К сожалению не работает первый способ, ошибку выдает "Ошибка компилятора CS1545"
При проверке переменной по shift F9 свойство "IncludeInSpecificBom" отсутствует, есть только свойство [URL=ms-its:C:\Program Files\T-FLEX CAD 17\Program\tflexapi.chm::/html/P_TFlex_Model_Model3D_Fragment3D_IncludeInNewBom.htm]IncludeInNewBom[/URL].
Изменено: Roman - 19.12.2024 13:08:30
Получить все сборки, детали, стандартные изделия входящие в 3D модель
 
Спасибо, [URL=https://www.tflex.ru/forum/index.php?PAGE_NAME=profile_view&UID=87538&sphrase_id=270053&error=tid_not_approved]Hydra[/URL]! C помощью IncludeInSpecificBom мне необходимо выяснить тип включения фрагмента в спецификацию ( "не включать", "без вложенных элементов", "с вложенными элементами"...)
Изменено: Roman - 18.12.2024 15:38:37
Получить все сборки, детали, стандартные изделия входящие в 3D модель
 
Добрый день!
Подскажите пожалуйста в чем может быть проблема:
не могу получить  свойство фрагментов [COLOR=#ee105a]IncludeInSpecificBom[/COLOR] "Включение в спецификацию".
Посмотрел значение переменной i в VS через Shift+F9, данного свойства не существует, есть только свойство IncludeInNewBom.
Код:

[FONT="Courier New"]using System.IO;[/FONT]
[FONT="Courier New"]using TFlex.Model;[/FONT]
[FONT="Courier New"]using TFlex.Model.Model3D;[/FONT]
[FONT="Courier New"]using System.Diagnostics;[/FONT]

[FONT="Courier New"]namespace Test[/FONT]
[FONT="Courier New"]{[/FONT]
[FONT="Courier New"] public class AsmInfo[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] private static readonly Document document = TFlex.Application.ActiveDocument;[/FONT]
[FONT="Courier New"] private static string path;[/FONT]


[FONT="Courier New"] public static void Run()[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] if (document == null)[/FONT]
[FONT="Courier New"] return;[/FONT]

[FONT="Courier New"] path = document.FilePath + @"asm_info.log";[/FONT]

[FONT="Courier New"] if (File.Exists(path))[/FONT]
[FONT="Courier New"] File.Delete(path);[/FONT]

[FONT="Courier New"] MetadataOutput(document);[/FONT]

[FONT="Courier New"] if (File.Exists(path))[/FONT]
[FONT="Courier New"] Process.Start("notepad.exe", path);[/FONT]
[FONT="Courier New"] }[/FONT]

[FONT="Courier New"] private static void MetadataOutput(Document document)[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] int index = 0;[/FONT]

[FONT="Courier New"] foreach (var i in document.GetFragments3D())[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] string[] contents = {[/FONT]
[FONT="Courier New"] "Документ:\t\t" + document.FileName,[/FONT]
[FONT="Courier New"] "Кол-во фрагментов:\t" + document.GetFragments3D().Count,[/FONT]
[FONT="Courier New"] " Индекс фрагмента:\t" + index,[/FONT]
[FONT="Courier New"] " Имя файла:\t\t" + i.FilePath,[/FONT]
[FONT="Courier New"] " Имя объкта:\t\t" + i.Name,[/FONT]
[FONT="Courier New"] " Идентификатор:\t" + i.ObjectId,[/FONT]
[FONT="Courier New"] " Полный путь:\t\t" + i.FullFilePath,[/FONT]
[FONT="Courier New"] " Включение в спецификацию:\t\t" + [I][COLOR=#ee105a]i.IncludeInSpecificBomh,[/COLOR][/I][/FONT]
[FONT="Courier New"] "========================================================"[/FONT]
[FONT="Courier New"] };[/FONT]

[FONT="Courier New"] File.AppendAllLines(path, contents);[/FONT]
[FONT="Courier New"] index++;[/FONT]

[FONT="Courier New"] if (TFlex.Application.OpenFragmentDocument(i.FullFilePath) is Document fragment)[/FONT]
[FONT="Courier New"] MetadataOutput(fragment);[/FONT]
[FONT="Courier New"] }[/FONT]
[FONT="Courier New"] }[/FONT]
[FONT="Courier New"] }[/FONT]
[FONT="Courier New"]}[/FONT]
C# Fragment3D свойство IncludeInSpecificBom "Включение в спецификацию"
 
Добрый день!
Не получается получить свойство IncludeInSpecificBom "Включение в спецификацию"  класса Fragment3D в С#.
В справке данной свойство присутствует.

[FONT="Courier New"]foreach (var i in document.GetFragments3D())[/FONT]
[FONT="Courier New"] {[/FONT]
[FONT="Courier New"] {[/FONT][FONT="Courier New"] [/FONT]
[FONT="Courier New"] string[] contents = {[/FONT]
[FONT="Courier New"] [/FONT]
[FONT="Courier New"] i.IncludeInSpecificBom,[/FONT]
[FONT="Courier New"] "========================================================"[/FONT]
[FONT="Courier New"] };[/FONT]
[FONT="Courier New"] }[/FONT]
[FONT="Courier New"] }[/FONT]
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Цитата
написал:

, Очень странно, тоже попробовал, лагает сильно. В то же время другие, действительно тяжелые сборки с большой вложенностью и многократно превышающие по объему Вашу сборку не имеют подобной проблемы. Схожая проблема проявляется при большом количестве наложений на чертеже тяжелых объектов типа картинок, но тут такого не вижу. Любопытно и интересно.
Можете видео предоставить?
Изменено: Roman - 16.11.2024 13:48:41
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Цитата
написал:

Цитата
Roman написал:
Приложил сборку.
К сожалению, да, "лагает", таких сборок с миллионом входящих копий у меня не бывает, поэтому и не сталкивался.
Не миллион, а ~14480 деталей.
Даже с количеством копий в массиве 3 шт., наблюдается "подлагивание".
Страницы: 1 2 3 4 5 6 7 След.