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


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

Страницы: 1 2 След.
Пример 3D макроса, создание фигуры вращения
 
Огромное спасибо!

Не всё так старшно, но сам я эти пятнашки скорее всего не сложил бы.....
Пример 3D макроса, создание фигуры вращения
 
Ну да, играем в угадайку.... :bal:



Свойство Описание
Angle Угол вращения
FirstAnglePoint Начальная точка вращения
FirstAxisPoint Первая точка, задающую ось вращения
GroupType Свойство GroupType, член класса Rotation.
RotationAxis Ось вращения
SecondAnglePoint Конечная точка вращения
SecondAxisPoint Вторая точка, задающая ось вращения
StartAngle Начальный угол вращения

Со свойствами Rotation понятно.

А как создается само вращение и где профиль?
Пример 3D макроса, создание фигуры вращения
 
Осталось разобраться что такое "Body * profile"

В описании "RotateGenerator Конструктор" написано что profile это Вращаемый контур. Этот контур превращается во вращение и возращается в списке резльтирующих тел или удаляется

А в описании типа Body написано что это Класс хранения геометрических тел

И как туда засунуть контур?

Да и с BaseAxis * axis тоже ничего не ясно.
Пример 3D макроса, создание фигуры вращения
 
Цитата
Osiris2000 пишет:
Дело в том, что задача хоть и простая, но кода для этого нужно много.
Я ж не против. Много-мало: лишь бы пример был.
Можно же было ТопСистемам за столько лет примеры нарисовать.
Не я же один интересуюсь. Ну я могу сам собой на форуме пообщаться. :)
Размеры так и померял. Пригодится кому-нибудь...

Цитата
Osiris2000 пишет:
Надо создать профиль на рабочей плоскости, 3D узлы, вращение - и это все программирование на C#. Будьте терпеливы, люди на форуме тоже не учат T-Flex API наизусть.

Лучше опишите свою задачу более полно. Может быть, получится вообще обойтись стандартными средствами T-FLEX без использования программирования.

Вы прекрасно описали задачу. Именно АПИ. Я стандартно могу нарисовать. Как это сделать в tFlex у ТопСистем всё описано очень хорошо и с примерами.
Но мне необходимо расчетными средствами нарисовать профиль. Это я сделал. А затем по этому профилю сделать фигуру вращения. Всё.

Был бы пример - разобрался бы.

Давайте разобьём на этапы.

Как выбрать рабочую плоскость?

Как создать 3d узел? наверное вот этот метод: CoordinateNode3D, плюс потом прописать в созданном объекте координаты.

Или вообще 3d узел создавать не надо, а рисовать 2d на рабочей плоскости?

Кто что думает - пишите. Может и пример совместно родим. ~~:-
Пример 3D макроса, создание фигуры вращения
 
Я так понимаю, желающих поделиться нет?

Или, благодаря ТопСистемам, информация по АПИ стала сверхсекреной и разглашнию не подлежит.

Или ТопСистемы думают что у людей есть мегажелание расшифровывать tFlexAPI?

ps. Интересно, менеджеры ТопСистем читают эот форум? Уже 29 человек просмотрели этот топик - все же у кого-то есть интерес к программированю в TFlex.
Пример 3D макроса, создание фигуры вращения
 
Привет Всем, кто хоть иногда пишет! :)

Дайте, pls, пример макроса результатом которого будет 3D тело вращения.
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Заработало!!!
Необходимо после

IntersectionNode IN = new IntersectionNode(document, FO1, FO2);

вызвать

document.EndChanges();

и только ПОСЛЕ ЭТОГО обращатся к свойствам IN

иначе болт!
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Цитата
Brom25 пишет:
С точки зрения способа реализации существует такой вариант: строите ручками узел на сплайне, задавая коэффициент от 0 до 1 относительно его "начала", опрелеляете линейные координаты узла, изменяете коэффициент и по кругу... Узел всегда будет на сплайне.
Спасибо. Интересно. Про существование коэффициента не знал.
Единственное что этим методом точный шаг по Y сложнее получить.
Но это не беда, т.к.
Код
IntersectionNode IN = new IntersectionNode(document, FO1, FO2); 
document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,IN.Coordinates.X.ToString()));
   document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,IN.Coordinates.Y.ToString()));   

всегда возвращает координаты 0,0 в не зависимости от переданных в конструктор линий построения. :(
Изменено: Александр Смок - 01.12.2010 07:53:00
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Давайте по теме.

Разъясните мне, pls, что будет результатом IntersectionNode IN = new IntersectionNode(document, FO1, FO2);

Ведь на чертеже линии построения уже есть и узел есть тоже.

Что есть IN на самом деле? Ссылка существующий на узел. Или новый узел. Или....
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Ура, есть живые люди!
Ну это уж совсем не по теме: VB мне нравится ещё меньше, а ещё меньше autolisp.
Обход дерева фрагментов 3d модели
 
Раз больше ответить некому....

ты по 2D фрагментам бегаешь или по 3D?
по 3D вроде как foreach(Fragment fr in doc.Fragments3D)

А по вопросу смотри doc.BOMData и, возможно, TFlex::Model::Model2D::BOMObject
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Спсибо. Я тоже до этого дошёл. Но не проверил - всё дома.
С# - очень весёлый язык. Трудно на него переходить. Но ничего - ещё пару недель и будет как родной. ;-) наверное.

Сложнее с tFlexAPI...
Вот есть у объекта свойство Имя. Как задать его программно примерно понятно.
Как задать его на чертеже?
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Код
         Document document = TFlex.Application.ActiveDocument;
         
Construction FO1;
Construction FO2;
document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,"---"));
foreach(Construction CO in document.Constructions) {

if (CO.ID == 0x100001F) {FO1 = CO; document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,FO1.ID.ToString()));}
if (CO.ID == 0x100001B) {FO2 = CO; document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,FO2.ID.ToString()));   }

}
   
   IntersectionNode IN = new IntersectionNode(document, FO1, FO2);
   document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,IN.AbsX.ToString()));
   document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,IN.AbsY.ToString()));   
    
   


Какого компилятор ругается вот здесь: IntersectionNode IN = new IntersectionNode(document, FO1, FO2);
Компиляция...
'Модуль 1' (36,55) : ошибка CS0165: Использование локальной переменной 'FO1', которой не присвоено значение
'Модуль 1' (36,60) : ошибка CS0165: Использование локальной переменной 'FO2', которой не присвоено значение
Изменено: Александр Смок - 30.11.2010 08:18:43
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Код
Document document = TFlex.Application.ActiveDocument;
         
         ModelObject FO1 = document.GetObjectByID(0x100001F);
         document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,FO1.ID.ToString()));
      
         ModelObject FO2 = document.GetObjectByID(0x100001B);
         document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,FO2.ID.ToString()));
         
         IntersectionNode IN = new IntersectionNode(document, FO1, FO2);
         document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,IN.AbsX.ToString()));
         document.Diagnostics.Add(new DiagnosticsMessage(DiagnosticsMessageType.Information,IN.AbsY.ToString()));


IntersectionNode - просит параметром "construction" - а как его найти?
Я нашёл только TFlex::Model::ModelObject.
Как найти TFlex::Model::Model2D::Construction?
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Вот это подойдет?
IntersectionNode(Model::Document * Doc, Model2D::Construction* srcConstruction1, Model2D::Construction* srcConstruction2);

Описание
Конструктор, задающий линии построения, на пересечении которых находится узел
Сюда сплайн скормить можно? Что создаёт этот конструктор?

Если можно - пример использования. А tflexapi.chm настолько емкие описания....
2D: Измерение расстояний, Как измерить расстояние от оси до сплайна
 
Господа, здравствуйте!

Подскажите, как программно измерить расстояния от оси ординат (Y) до НАРИСОВАННОГО в tFlex сплайна. Т.е. получить что то типа таблично заданной функции F(X) = Y

Я предполагаю такой подход: Строю линию построения с нужным шагом параллельно оси Х. Нахожу узел на пересечении сплайна и линии построения. Узнаю координату X узла. Удаляю линию построения и узел. И далее о кругу.

Собственно вопрос как найти узел на пересечении сплайна и линии построения. - ткните в метод.
Сплайн будет рисоваться НЕ программно - как его найти в API?

Спасибо.
Пример макроса с формой на C#
 
Спасибо. Что-то видимо я накрутил у себя. Т.к. всё тоже самое что и у Вас, а не компилится.
Сделел всё с нуля - работает. В аттаче шаблон с одной кнопкой, кот. закрывает форму. Может кому понадобится.
Cannot implicitly convert type
 
Т.е. только перебором нарисованного.

Я правильно понимаю?: есть объекты, точнее описания объектов. Их мы и находим по имени или id. А есть их геометрическое представление. Это уже через Geometry.

Есть ли где общее описание оъектной модели T-flex? TFlexApi.chm - это для медитаций. :evil:
Пример макроса с формой на C#
 
Господа, дайте кто-нибудь пример макроса с формой на C#.
В хелпе MaсroEditor.chm пример на VB.

А на c# я не могу его повторить.

(The name 'InitializeComponent' does not exist in the current context)

Спасибо.
Cannot implicitly convert type
 
Пока сделал вот так- работает.

Код
 
Document document = TFlex.Application.ActiveDocument;
document.BeginChanges("Создание рабочих плоскостей");
ParallelPlaneWorkplane workplane = new ParallelPlaneWorkplane(document);
workplane.Offset = 250;
workplane.Name = "Ещё вид слева";   
      
foreach (Workplane wp in document.Workplanes)
{
     if (wp.Name == "Вид слева") 
   { workplane.BasePlane = wp.Geometry.Plane; break; }
}
         
document.EndChanges();


Но всё таки как присвоить workplane.BasePlane правильное значение из document.GetObjectByName("Вид слева") ?
Страницы: 1 2 След.