• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Проблема с iComponentPositioner

Автор sanddream, 12.09.07, 00:09:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

sanddream

Здравствуйте. Помогите пожалуйста с созданием анимации.
Имеется следующий код:
...
iComponentPositioner:=doc1.ComponentPositioner;
   iComponentPositioner.SetAxisByPoints(0,0,-RifD/2-internalrad-thikkord-thikverh-thikniz,DlinaVala,0,-RifD/2-internalrad-thikkord-thikverh-thikniz);
   iPlacement:= ksPlacement( Rif.GetPlacement() ); 
  iComponentPositioner.Prepare(Rif,0);
   for i:=1 to 500 do
   begin
   iComponentPositioner.RotateComponent(i/10);
   rif.UpdatePlacement;
   rif.Update;
   end;
   iComponentPositioner.Finish;
   end;   
...
Компилируется, выполняется но вращения компонента не наблюдается!
И вообще хотелось бы узнать какие есть способы анимации вращения деталей типа вал(с рабочим примером).

chelkar

В Prepare, для вращения 1 надо давать.
И с плэйсментом мудрено чего то.

Вот эта штука крутит первую деталь сборки три оборота вокруг оси Х
----------------

import Kompas6API5 as KAPI
from win32com.client import Dispatch
import LDefin2D
import LDefin3D

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)

iDocument3D = iKompasObject.ActiveDocument3D()

Part = iDocument3D.GetPart (0)

iComponentPositioner = iDocument3D.ComponentPositioner()
Axis = iComponentPositioner.SetAxisByPoints(0,0,0,10,0,0)

iComponentPositioner.Prepare(Part,1)
i = 0.1

for i in range(0.1,15,1):
     iComponentPositioner.RotateComponent(i)
 
iComponentPositioner.Finish()
------------------
Текст на Питоне. Можно посмотреть с помощью библиотеки КОМПАС-Макро


sanddream

Спасибо за ответ.
В prepare у меня 0 стоит поскольку забыл исправить(пробовал и вращение и перемещение, безрезультатно)
Я также пробовал вращать так:
for k:=0 to speed do
     begin
     iPlacement.SetAxis( 0, k, speed{90-k}, 1 );
     Rif.SetPlacement(iPlacement);
     Rif.UpdatePlacement();
     Rif.Update;
     end;
Вращение происходит но не плавное, а с замедлением. :(

sanddream

В общем я разобрался в своих ошибках все вращается так как надо.
Спасибо за помощь.

yarikv

если разобрался выложи пример в теме http://forum.ascon.ru/index.php/topic,5841.0.html
может другим пригодится. народ не жадничайте. если не будем помогать друг другу - дольше будем топтаться на месте!!!!

sanddream

Хорошо, выложу скорее всего завтра.