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


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

Страницы: 1
Выполнение макроса в T-Flex CAD 11 x64 11.26 под Windows x64, Не работает любой макрос
 
Кто - нибудь сталкивался с проблемой:
Не выполняется макрос в T-Flex CAD 11 x64 11.26 под Windows x64, причем любой. Вываливается ошибка када
Пример 3D макроса, создание фигуры вращения
 
Немного не так ,  вот последнее , но все равно не работает
ModelFace Gran = null;
           System.Collections.IEnumerator B = rotation1.Profile.GetEnumerator();
           while (B.MoveNext())
           {
               System.Collections.IEnumerator C = ((ModelContour)B.Current).GetEnumerator();
               while (C.MoveNext())
               {
                   System.Collections.IEnumerator F = ((ModelBody)C.Current).Faces.GetEnumerator();
                   while (F.MoveNext())
                   {
                       Gran = (ModelFace)F.Current;
                       // break;
                   }
               }
Пример 3D макроса, создание фигуры вращения
 
Не знаю правильно ли добрася до грани , но выдает ошибку :"Ошибка регенерации отверстия"

Rotation rotation1 = new Rotation(doc);
           rotation1.Angle = 360;
           rotation1.Profile.Add(Pr1.Geometry.SheetContour);          
           rotation1.FirstAxisPoint = N1.Geometry.Point;
           rotation1.SecondAxisPoint = N2.Geometry.Point;


           ModelFace Gran = null;
           System.Collections.IEnumerator B = rotation1.Profile.GetEnumerator();
           while (B.MoveNext())
           {
               System.Collections.IEnumerator C = ((ModelContour)B.Current).GetEnumerator();
               while (C.MoveNext())
               {
                   System.Collections.IEnumerator F = ((ModelBody)C.Current).Faces.GetEnumerator();
                   while (F.MoveNext())
                   {
                       Gran = ((ModelFace)F.Current).Body.Faces[0].Surface;
                   
                   }
               }
         
           }
               
             


           CoordinateNode3D N3 = new CoordinateNode3D(doc);
           N3.X = -(System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L3.Text) + System.Convert.ToDouble(L2.Text));
           N3.Y = System.Convert.ToDouble(D2.Text) / 2;
           N3.Z = 0;



           Hole Hole1 = new Hole("Oblong hole for fasteners.GRB", doc);
           Hole1.AddHole(Gran, N1);
Пример 3D макроса, создание фигуры вращения
 
Я это уже сделал, теперь вот мучаюсь как построить отверстие
на теле вращения

Построил 3Д узел

CoordinateNode3D N3 = new CoordinateNode3D(doc);
N3.X = -(System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L3.Text) + System.Convert.ToDouble(L2.Text));
N3.Y = System.Convert.ToDouble(D2.Text) / 2;
N3.Z = 0;      

Создал отверстие  и указал какое
Hole Hole1 = new Hole("Oblong hole for fasteners.GRB", doc);
Есть метод Hole1.AddHole(тип ModelFace, 3Д узел)
Где брать эту грань (ModelFace), в каде понятно , мышью выделил и поставил,  а как указать какую именно грань на теле вращения через апи ?
Тело вращения, Создание тела вращения через API
 
Народ , подскажет кто-нибудь на этом форуме как создать тело вращения через API
Вот до чего дошел
doc = TFlex.Application.NewDocument("C:\\Program Files\\T-FLEX\\T-FLEX CAD 11\\Program\\Прототипы\\3D Модель");
doc.BeginChanges("Пример использования API");            
StandardWorkplane pl1 = new StandardWorkplane(doc, StandardWorkplane.StandardType.Front);          
           FreeNode newNode1 = new FreeNode(doc, 0, 0);
           FreeNode newNode2 = new FreeNode(doc, System.Convert.ToDouble(координата X), 0);
           ConstructionOutline newOutline1 = new ConstructionOutline(doc, newNode1, newNode2);
...
так построил все тело, потом создал контур и штриховку
Area area = new Area(doc);
           // Добавляем к области контур
          TFlex.Model.Model2D.Contour contour = area.AppendContour();
           // добавляем сегменты к контуру

           ConstructionContourSegment segment1 = new ConstructionContourSegment(contour);
         
           segment1.StartNode = newNode1;
           segment1.EndNode = newNode2;
...
Теперь надо сделать операцию вращения,
Rotation rotation1 = new Rotation(doc);
Что туда подставить , то ли создать профиль , то ли подставить ось вращения и как ее подставить ?
Кто знает , наверное легко, хелп ужасный.
Пример 3D макроса, создание фигуры вращения
 
Вот наковырял , но как для операции вращения выбрать ось вращения или как заштриховать не знаю
doc = TFlex.Application.NewDocument("C:\\Program Files\\T-FLEX\\T-FLEX CAD 11\\Program\\Прототипы\\3D Модель");
           doc.BeginChanges("Пример использования API");

           StandardWorkplane pl1 = new StandardWorkplane(doc, StandardWorkplane.StandardType.Front);          

           FreeNode newNode1 = new FreeNode(doc, 0, 0);
           FreeNode newNode2 = new FreeNode(doc, System.Convert.ToDouble(L1.Text), 0);
           ConstructionOutline newOutline1 = new ConstructionOutline(doc, newNode1, newNode2);
           FreeNode newNode3 = new FreeNode(doc, System.Convert.ToDouble(L1.Text), System.Convert.ToDouble(D5.Text) - System.Convert.ToDouble(a.Text));
           ConstructionOutline newOutline2 = new ConstructionOutline(doc, newNode2, newNode3);
           FreeNode newNode4 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(a.Text), System.Convert.ToDouble(D5.Text));
           ConstructionOutline newOutline3 = new ConstructionOutline(doc, newNode3, newNode4);
           FreeNode newNode5 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L7.Text), System.Convert.ToDouble(D5.Text));
           ConstructionOutline newOutline4 = new ConstructionOutline(doc, newNode4, newNode5);
           FreeNode newNode6 = new FreeNode(doc, System.Convert.ToDouble(L1.Text)- System.Convert.ToDouble(a.Text), System.Convert.ToDouble(D5.Text));        
           ConstructionOutline newOutline5 = new ConstructionOutline(doc, newNode5, newNode6);
           FreeNode newNode7 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L7.Text), System.Convert.ToDouble(D5.Text));
           ConstructionOutline newOutline6 = new ConstructionOutline(doc, newNode6, newNode7);
           FreeNode newNode8 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L7.Text), System.Convert.ToDouble(D4.Text));
           ConstructionOutline newOutline7 = new ConstructionOutline(doc, newNode7, newNode8);
           FreeNode newNode9 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L6.Text), System.Convert.ToDouble(D4.Text));
           ConstructionOutline newOutline8 = new ConstructionOutline(doc, newNode8, newNode9);
           FreeNode newNode10 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L6.Text), System.Convert.ToDouble(D3.Text));
           ConstructionOutline newOutline9 = new ConstructionOutline(doc, newNode9, newNode10);
           FreeNode newNode11 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L6.Text) - System.Convert.ToDouble(L5.Text), System.Convert.ToDouble(D3.Text));
           ConstructionOutline newOutline10 = new ConstructionOutline(doc, newNode10, newNode11);
           FreeNode newNode12 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L6.Text) - System.Convert.ToDouble(L5.Text), System.Convert.ToDouble(D2.Text));
           ConstructionOutline newOutline11 = new ConstructionOutline(doc, newNode11, newNode12);
           FreeNode newNode13 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L3.Text) , System.Convert.ToDouble(D2.Text));
           ConstructionOutline newOutline12 = new ConstructionOutline(doc, newNode12, newNode13);
           FreeNode newNode14 = new FreeNode(doc, System.Convert.ToDouble(L1.Text) - System.Convert.ToDouble(L3.Text), System.Convert.ToDouble(D1.Text));
           ConstructionOutline newOutline13 = new ConstructionOutline(doc, newNode13, newNode14);
           FreeNode newNode15 = new FreeNode(doc, System.Convert.ToDouble(a.Text), System.Convert.ToDouble(D1.Text));
           ConstructionOutline newOutline14 = new ConstructionOutline(doc, newNode14, newNode15);
           FreeNode newNode16 = new FreeNode(doc, 0, System.Convert.ToDouble(D1.Text) - System.Convert.ToDouble(a.Text));
           ConstructionOutline newOutline15 = new ConstructionOutline(doc, newNode15, newNode16);
           FreeNode newNode17 = new FreeNode(doc, 0,0);
           ConstructionOutline newOutline18 = new ConstructionOutline(doc, newNode16, newNode17);
           //FreeNode newNode17 = new FreeNode(doc, System.Convert.ToDouble(a.Text), System.Convert.ToDouble(D1.Text));
           doc.EndChanges();
           doc.SaveAs("D:\\Default1.grb");
Построение 3D модели через API
 
Подскажите, пожалуйста.
Как построить 3D модель с помощью API, например вала.
Никак не могу нанести линии построения  на 3D вид на  плоскость вид спереди.
Обновление спецификаций
 
Какая сборка API ?
Обновление спецификаций
 
Но у меня данный метод не принимает никаких значений

Вот что пишет :


foreach (Text textobj in document.Texts)
{

BOMObject bomobj = textobj as BOMObject;


if (bomobj == null)
{
continue;
}
else
{


bomobj.Refresh(true);
bomobj.SortByPosition = true;
bomobj.BeginEdit();


Ошибка 1 Ни одна из перегрузок метода "Refresh" не принимает "1" аргументов
Обновление спецификаций
 
Вообще это проблема . Если задали "Полный пересчет", то должно обновиться все , я так понимаю. Я уже не говорю про подсборку , а даже в главной сборке , после полного пересчета . нужно лезть в спецификацию и обновлять еще раз ее. Там можно далеко пойти , почему надо нажимать лишние кнопки. Задали параметры для сборки , пересчитали ее через конвертер - все, должно быть готовое изделие с чертежами и спецификациями.
Я ,например, потом через АПИ считываю спецификацию , а она не обновленная и получается лажа , кстати пробовал ее обновлять через АПИ - балалайка. Жду ответа .
TFlex.Control, Отображение
 
Рбота - создания древовидной структуры изделия по сборочному файлу.
Открыл доаумент , передал его в TFlex.Control. Как подключить эти  конфигурации библиотек , разве они при инициализации не подключаются ?
TFlex.Control, Отображение
 
TFlex.Control - не  отображает форматки чертежа и спецификации- Почему  :shock:
Глобальные переменные
 
Открываю документ
 Document Frag3D = TFlex.Application.OpenDocument(FilePath, true, true);

иду по списку переменных
foreach (Variable Var in k3DFrag.Value.FileLink.Document.Variables)
{
}

И значения переменных , которые заданы функцией возврата глобальной переменной  не находит

getg("Nr",0) - возвращает 0, хотя в каде  считывает нормально

В чем причина ?
T-flex viewer, ПРОБЛЕМА!!!!
 
Была такая проблема, помоему надо в настройках в виндах тип файла заново прицепить с вьювером.
АПИ Технология, Наименование операции
 
Есть ли функция получения наименования операции из техпроцесса?
Технология, АПИ Технология
 
Все нашел. Как говориться если не получается , читай хелп :)
Технология, АПИ Технология
 
Есть вопрос:
Как правильно инициализировать  АПИ Технологию.
Подключил  библиотеку -TFTechAPI.dll
Есть процедура - TFlex.Technology.Application.TFTechApiInit()  с восьмью параметрами
Как ее правильно вызвать ?
Страницы: 1