PLM之家PLMHome-国产软件践行者

[求助] 运动仿真动画播放

[复制链接]

2015-5-21 22:30:13 3452 2

liuyang77177 发表于 2015-5-21 18:40:22 |阅读模式

liuyang77177 楼主

2015-5-21 18:40:22

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
大神们好 - - 我又来问问题了5 f, x6 D/ M$ m, |. t
, U" l6 J' ]( [8 X8 e7 c
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
& W1 K+ i3 r) f8 E" L& Z, `% {! r QQ图片20150521182535.png 8 T4 R( p2 S6 P5 e. a' U
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
& i: I* x) O* m4 f2 M, W2 j
( U8 B  V: s$ H+ A0 @" b+ Z% l# d一段ja录制代码:
) v+ m4 T5 n" A) D/ \% Q# Q: m( c1 P! N
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);+ i+ C* b+ S4 B! V
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
6 e5 }3 x/ n1 X8 m) R+ F1 z, i& r        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);6 n, [0 G# T# G# U

3 N7 n- t8 w5 A9 X4 [* T' Z0 z6 G* x6 N2 y$ J) l
        motionSolutionBuilder1->SetTime(10.0);
# {7 \( G/ M0 M- q& z        motionSolutionBuilder1->SetStep(500);
* H/ N, ]+ Q( r% {        motionSolutionBuilder1->SetName("Solution_1");
  {2 F6 ]: V8 N5 l; o/ d( }& U  }        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
( q& y0 X. D: I7 p: z; ?) Z0 ]8 K9 O9 ^8 a3 \& q" _' V( H" G
+ H& \& y) ~+ r$ z8 a

0 E- j" U, r. h; w) m7 h6 y# z        Point3d origin1(0.0, 0.0, 0.0);+ H! e1 R# [0 s3 t
        Vector3d vector1(0.0, 0.0, -9806.65);
" Q9 z0 d7 M( [; e9 u% l        Direction *direction1;
# i8 C" F  j7 _2 j* G: C4 a6 r        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);% |8 R; F8 I5 g
        motionSolutionBuilder1->SetGravityVector(direction1);
( ~  N$ Z: H* ^, [# t
$ W3 h+ h2 H( L  Z7 p        NXObject *nXObject1;
4 s" c2 K0 F  v, S3 ?2 t2 I" z; q! z        nXObject1 = motionSolutionBuilder1->Commit();
5 {" @" g3 P2 {0 w' Z4 ~        motionSolutionBuilder1->Destroy();
5 z2 `/ I2 _) T' O" p, X. r        ! o; o9 g% c) z) U  c0 S1 \* m
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
, E+ x7 A& @, c        motionSolution1->SolveNormalRunSolution();
! i- i# i- y8 P
7 m( u  U' N& D+ n# a, C2 P) ?2 {+ B  C, @* Q( l& q
; _0 J+ V$ o- m9 M) Z
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...6 O7 [' \- o# B: o7 N
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

liuyang77177 发表于 2015-5-21 22:27:05

liuyang77177 沙发

2015-5-21 22:27:05

再补一段前面建立连杆和运动副的代码....再前面还有建立实体的代码就不贴了....就是还想问一下...我的nxopen++里面的实体nxobject和featrue::feature以及body如何兼容ufun函数编程啊,可能ufun函数有一些可以用的代码但我接不上这样子$ y. i" N8 f9 z9 ~4 ?5 i/ B- K8 v
* @7 ?/ p" `8 O8 G% ^% Z1 T  l
PartSaveStatus *partSaveStatus1;
. p. L9 B" U- |4 K: Y        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);4 j: y8 S! J9 g
0 u8 F2 F3 A0 F3 z' \* |) X; z' N. W
        delete partSaveStatus1;5 l' k" s# h* y* [2 W
9 g. V/ d  S: M! e( }- \" k

! W% G6 f" ^3 I) d; Q        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");- `8 t2 {6 G. N/ l. ?' L
) X& X1 g$ Y5 h+ Q4 X2 t
6 Y. ^# u6 _) N8 G4 J  u
( K: L5 S9 G$ a. q
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
. {6 H# z: M+ }* E" [$ I. C# J" r
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);; A( j+ Z4 U$ L5 l, W

5 x6 q, }& M1 j/ w        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
+ ]6 V" ]( o& f
  \/ d$ s/ ^7 m        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);3 l2 q  E5 t/ Y) f
1 g) b+ c9 ?( R+ A5 |& U9 F
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
6 P1 v1 D" d- E* i' o# T* g  O; n7 P) ]: n, V  A2 f

7 M1 `, d8 ~( f        NXString motionSimName1;8 f: \5 s! E* r9 i* V2 J
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");3 R& |# J8 Y3 s* [

6 t3 Z  n' Z; u; L8 \$ J8 Q) x        workPart = theSession->arts()->Work();  }" a1 k: ?1 L% W
        displayPart = theSession->arts()->Display();
' a: `) G1 Y4 K. z        Motion:hysicsConversionBuilder *physicsConversionBuilder1;" q- I) \! ]. b% e
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
, Y) b& O. V- h- s- R1 i5 C1 U1 x
$ e, d0 e6 y& [: F. H9 U- T- ^3 s3 ^        physicsConversionBuilder1->Destroy();
9 ?3 w3 A) ^1 G3 O
! q$ Q1 R$ a% f; v        theSession->MotionSession()->InitializeMechanisms();
1 }7 k, }9 I" g+ S
( \( \2 Q9 F* K        Motion:ink *nullMotion_Link(NULL);
. R3 O) w9 A9 s# Q. k% X        Motion:inkBuilder *linkBuilder1;9 I. ?. W) N: S* z5 B- g
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);- `, c6 B- l9 M
+ [9 B& V, u& r7 f
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
! u' Y8 i/ n1 e, ~! s9 r1 W
2 @3 w2 V9 F7 y8 t7 Q        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");# X4 ?) @3 {! Z1 b+ g! c% [

: {+ w* c' x( _2 W8 J        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
6 W6 o5 {7 u4 l* U
$ C$ t+ k: S: t& v( q) }8 m        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
8 n: x! [3 I9 C8 i6 j0 E; `4 W+ p! z! n) ]3 n0 J8 q% J/ y
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
! I+ k6 k+ D) }$ F& O3 t, w  _5 c. p7 M, K2 z
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");3 R7 A) _/ t1 [& e; a. o8 ?, g- ?$ X

# `0 X. E! x9 C% }7 d$ b  L        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");. ?4 Q0 d9 m9 h

$ C9 o0 B  u$ M" J. [- `+ a; X        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
3 y1 O8 g8 e8 `; B4 R1 M% A9 h) Z- _  q4 _0 ~
        6 p7 S- K0 }- `! g+ o

9 l- i1 Z  b) t' [- e        linkBuilder1->SetName("L001");2 w: O* a, q$ S# _

- G$ J+ B. S; E
) `  c: A- q) U        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));4 h& u% N. F2 X$ O, m3 ?6 P
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));4 n( z  B7 I$ {: ~. M6 G
        bool added1;  F3 Q% h5 k% T1 o: v  n0 x/ \' B
        added1 = linkBuilder1->Geometries()->Add(body1);
; N. w% f2 _4 r
7 Q  h- P4 b7 h' Y1 Q4 q        Direction *nullDirection(NULL);
. X9 d3 x0 Z( a- h; A- e        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);8 \/ ^: f; \1 D0 s$ j. l. l

$ @; ^* h2 _8 k$ P' d        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);- |9 O! o4 K! d' O7 d; y. M/ y6 f
" w' i/ J" E' @+ j9 p  i5 R; [
        NXObject *linkObject;
+ N: d* o" m9 @& P        linkObject = linkBuilder1->Commit();" m4 f" a& O" F- A+ P/ u
* }8 a- o# X* N1 ?8 E
6 c4 [8 h+ S* |( w2 S. `$ J
        linkBuilder1->Destroy();
+ a" F% }+ J! @
' [7 _# s. S, j9 K1 z! _
; y3 Y( F8 C1 B$ l4 i. M, e) H) }9 [) j; a! A9 R

1 j/ z% ^6 G$ f3 P* ]* q/ J        ' K- `& H- S4 I, z" Q( ?

9 T; z. F, r# T' l5 T7 ^        Motion::Joint *nullMotion_Joint(NULL);- j+ e9 D8 v: b8 p7 W
        Motion::JointBuilder *jointBuilder1;+ }% z  T6 o2 r" V
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);, u1 _- l: f7 B7 t0 |- K# w
: z6 L+ |- g# j) w& ], j8 |
" `4 \2 I) W; B8 x: j, I8 H3 T& G

+ T4 Q1 w1 o  u* v5 E  }        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");3 t- b; a/ f7 A- g5 q4 V/ T+ `2 B8 P
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");9 [$ c9 W% \) [% \
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");. d3 E9 |" I; e& L9 G# ]
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");9 }# S" O! e6 M6 X$ k# J
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");9 H7 u4 o; K  `- e6 g8 T  I# A
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");. n6 v0 Y2 t/ @' ~4 w
5 j8 `7 K( F: `0 n
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);& b6 n1 z; n+ G& \. q! g# X- y
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
9 D9 N/ x6 z) W9 v2 y5 s        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);' I3 B( }' ]5 Q4 x4 \& z
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
5 U, O" c  T- ~- X9 M: A        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);3 F1 O' h% g) i' b5 Y  X
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
9 `4 X; Q/ @, F; p        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
3 J9 n4 o- `* a        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
) V6 J1 T0 ?- b4 X: v: u4 V        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
$ S' U$ |. X% O3 _- m        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);. v1 A; j4 H  {! l
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);$ k# ?7 j' B! `/ _6 q5 \' G5 J, E

2 e. Z) I+ q0 J2 m        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
2 ]( c/ Y! \4 K/ M& l7 q        jointBuilder1->JointDefine()->SetFirstLink(link1);) h! q4 Q8 n4 M) `. X

; v3 ^. N  _2 Q$ w& }1 e3 g7 `8 \  @2 a* \9 {$ ^: k
        NXMatrix *nullNXMatrix(NULL);2 v: z  J/ f$ D( u+ f; N
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);; M5 \$ J: z. J- N. f8 @- u3 B
! k% D0 {" Y  Z: [* m9 |/ @: _
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));9 L1 j# g1 Z1 c5 R* l, ~7 O) W
        PartLoadStatus *partLoadStatus1;7 z3 n3 B: T8 D" p0 v8 ]
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
* {- R& h- a) A3 M5 R6 [. K! r) A8 q# s  Y& Z
        delete partLoadStatus1;$ R0 r" \* f! C' M! i9 v- h
        Scalar *scalar3;
% ]# R1 q3 Z5 E. l        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
; G$ I. \8 k7 M. t% i- r. Y' y! `  |( T' `3 k
        Scalar *scalar4;
* c/ R' z* T$ e) P: {        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
+ M) ^3 k& a* [8 Z. p5 m4 f. [( c. b1 P2 y' Q# c9 Y, t6 ~
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
  z9 B; ?; H* _8 Z$ k1 C7 B        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
3 K# w1 f4 M4 @0 z: z        Point *point3;
9 n$ X. C8 i3 T, j        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);( N" k# @( b6 y
" |- v( N  c* M

# H. B. {1 H! E0 O4 {        NXObject *nXObject12;( I2 y* u) D* E. I7 ?' k) R3 @
        Xform *xform1;
4 s) u7 p- [2 J7 E; v2 E* d9 l        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);. W6 n- J  m3 H6 y, X2 v+ G1 h. J$ u
$ c7 q% n1 {6 q2 ?- v: W/ e
        Point *point4;7 G% t2 m. n3 P: u6 [' y# U% d1 x+ f
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
) D1 Z' I( [3 e3 Q" w2 r2 @  H/ n, \/ T/ [1 I
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
; L% J2 `8 G/ m
$ O+ @/ ]" b% e8 e! R: s, T8 Z" H
        Point3d origin1(0.0, 0.0, 0.0);
4 b' D& V4 e3 K6 d5 Z- Z+ K        Vector3d vector1(0.0, 0.0, 1.0);
/ [8 {' B  Q. i/ ]2 e        Direction *direction1;* U0 ]" F8 \9 w% C
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);, H+ `6 n' W  ?. |
6 L7 _# Y. \* b' w: y4 b
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
4 z' v8 a4 T$ l1 X$ C' O6 k
* x. K; d, }/ t* P! S0 E7 J        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);$ V) x- V' M$ s$ g$ w

7 x. \% S1 n# y+ W- h9 {! T# {        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);/ T! ~8 I& N! }
( s- X0 t! o1 `8 A% R! m) }( z; [
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");1 H8 r7 H, C' L* N. u$ U! C
" }# p0 W7 s4 b# C. M/ f
! o5 z; V) A' d+ o2 ^: r# P
        NXObject *nXObject3;/ H; H3 Y1 K1 f% I! Q
        nXObject3 = jointBuilder1->Commit();% e# Q! y* C+ l3 B) h: X( C

7 g* K  P9 t6 g8 n& I5 s        jointBuilder1->Destroy();
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

liuyang77177 发表于 2015-5-21 22:30:13

liuyang77177 板凳

2015-5-21 22:30:13

为什么会有表情 - -!
. M8 c/ R2 Q( d- N# B6 J" |/ Q0 n1 f2 v. L1 d& k& \2 V( A
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码2 G4 d* C% M1 q1 U% ^' e# w8 D

, ^8 E8 R8 U2 c9 P6 W.....& Z- `. I0 f* U) U

5 c  v, L+ t3 IUF_MOTION_init_articulation();
% [/ n: _) W% v# Efor(int i=0;i<360;i++){
- f" j% b& k( O+ G" T) l" r1 X  UF_MOTION_step_articulation(1,&i_ret);
5 v# n" ]1 A; t, i. ^+ ]}
& b& o" ]( Q( m  A7 ?2 R8 H* qUF_MOTION_terminate_articulation();
0 a5 ^* x) M6 C, UUF_MOTION_terminate();
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了