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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Анимация с помощью макросов в T-flex Open API
 
Нужно, чтобы "маятник часов" в 2D пространстве при вводе высоты h, угла качения (альфа), диаметра тела(d) и ускорения свободного падения(g), совершал поступательное движение.
Изменено: konoha - 26.10.2014 17:05:13
 
Всегда хорошо когда нужно - делай.
 
Ну это то понятно =) просто сколько не искал, нигде не могу найти как сделать анимацию именно с помощью макроса. Может кто то встречался с чем то подобным?
 
Находишь формулу расчёта координат маятника (уравнение маятника) и через API выводишь в 2D :) Или тебе обязательно нужно использовать анимацию T-FLEX CAD + макрос?
 
Я при выполнении похожей задачи использовала формулу затухающих колебаний Y=A*cos(wt+f0) (приблизительно, с поправкой на греческие буквы), параметрический чертеж и изменение переменной t с помошью анимации; учитывая специфику ветки вместо анимации можно использовать макрос с циклом (при этом помним, что маятник не катается, а качается ;) ). А на одном из CAD OLYMPов для анимации 3D модели маятника значения отклонения брались с 2D графика.
 
В том то и дело, что мне надо как то с помощью макроса создать анимацию) фигуру маятника я создать то могу, а вот как заставить ее двигаться, да еще и по формуле - это для меня нелегкая задача
 
Я пытался сделать антмацию с помощью цикла, но у меня не очень получилось
public static void MOkrujnost(String p1, String p2, String p3, String p4)
{
Document document = TFlex.Application.ActiveDocument;//Получение активного документа
document.BeginChanges("Создание окружности" ;) ;//Открытие блока изменений документа
double x1,y1,r1,l;
int i=0;
l = System.Convert.ToDouble(p4);
while(i < l)
{
x1 = System.Convert.ToDouble(p1);
y1 = System.Convert.ToDouble(p2);
r1 = System.Convert.ToDouble(p3);
FreeNode n1 = new FreeNode(document, x1+i, y1);
CircleConstruction circle1 = new CircleConstruction (document);
circle1.SetCenterAndRadius(n1, r1);
ConstructionOutline outline1 = new ConstructionOutline(document, circle1);
outline1.Color=0;
Area ar = new Area (document);
TFlex.Model.Model2D.Contour cn1 = ar.AppendContour();
i++;
document.ApplyChanges();
}
}
Здесь я делал отрисовку круга и пытался создать его перемещение как анимацию. Искал как можно удалить обьект, но так нигде и не нашел, и получается, что круги размножаются, при этом все происходит мгновенно.
Изменено: konoha - 27.10.2014 23:29:36
 
Цитата
konoha пишет:

Искал как можно удалить обьект, но так нигде и не нашел

Метод DeleteObjects находится в классе Document.

Что касается скорости исполнения (чтоб не мгновенно рисовалось, а с каким-то промежутком времени), то тут нужно использовать программный функционал .NET, не относящийся к T-FLEX CAD.
 
Цитата
konoha пишет:
В том то и дело, что мне надо как то с помощью макроса создать анимацию) фигуру маятника я создать то могу, а вот как заставить ее двигаться, да еще и по формуле - это для меня нелегкая задача
И как? Получается?
 
Как вариант, круг надо нарисовать в 1 положении, а потом его перемещать в другие, а не отрисовывать заново, в этом и есть вся прелесть параметризации ~~:-
К сожалению файл не сохраняется :| при попытке загрузки, поэтому - ссылка Простейший маятник. :nono:
Для анимации сторонние средства не потребовались :applanse:

З.Ы. А вообще странно, что никто до сих пор не подсказал. Раньше тут хоть что-то шевелилось помимо смайликов
 
petrick, Спасибо большущее :) . Твой метод создания анимации идеально работает. Немного только не понял как создавать потомки объекта, но думаю разберусь))
Изменено: konoha - 09.11.2014 15:38:23
 
Цитата
konoha пишет:
petrick , Спасибо большущее :) . Твой метод создания анимации идеально работает. Немного только не понял как создавать потомки объекта, но думаю разберусь))
Так они созданы не программно, в макросе только анимация запускается, а 2D сделано штатными средствами.
 
Дмитрий, я знаю, просто до конца еще не разобрался как все работает))
Страницы: 1