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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
! E; C6 m8 O& Q1 _" a/ b' `
$ a. G5 d+ ?0 a  S* B' z我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
) S2 s+ b  \; \" v: t+ U QQ图片20150521182535.png
3 @2 T+ W# l- q1 t  O我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
/ M4 V* f: a4 {/ U* w' K2 t% f
一段ja录制代码:
$ `7 O" K: T- H3 _9 e, J; x5 j/ l$ X. Z; b
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
5 T  G5 ~, A% H/ Z: m8 B, w        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
( z5 u7 [/ e) T; Y8 @        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
' w$ \% f' R- n( T% q# I
+ p# H/ F" H7 Y- l+ R3 a6 R, N
" u* Z) F. s& I6 w& [5 R! C5 E1 M, ^        motionSolutionBuilder1->SetTime(10.0);  A. i' r$ I% B$ [5 L, e% ~
        motionSolutionBuilder1->SetStep(500);
  n% D& _6 K3 d4 Y1 M0 ]7 e/ G        motionSolutionBuilder1->SetName("Solution_1");
3 d- V+ R2 c8 a* B) v        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);6 K8 l* N. a6 P# ?

- T4 r3 Y; ~4 J; X* I8 S; R& m, m' ^7 ~. z6 ]. b8 O" r3 w5 X5 Q
+ z, x& G3 G6 @& r; n1 b' \
        Point3d origin1(0.0, 0.0, 0.0);
9 B3 ]& W0 p4 h2 y9 X        Vector3d vector1(0.0, 0.0, -9806.65);1 L% ^1 p0 \7 i3 J; _, J
        Direction *direction1;
/ a8 g7 L5 |/ Y8 s7 U+ ~3 ~0 ?, Z        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);; J0 o. v& z7 s- j5 ~
        motionSolutionBuilder1->SetGravityVector(direction1);
' ?1 V4 E; z% W1 v8 D5 Q
* z' k. \$ Y. x6 J8 q  z        NXObject *nXObject1;* U' i" j" ^: K* V# b& E& {& Q0 G7 W
        nXObject1 = motionSolutionBuilder1->Commit();  m" t( Y3 _5 h' M: X$ c: |
        motionSolutionBuilder1->Destroy();7 |" H# T5 r8 c
        / v- f& M5 A3 `: g7 M
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
3 V9 J9 A3 v& c2 Y8 @' I: c0 L+ D        motionSolution1->SolveNormalRunSolution();
# F9 [) ?- Z/ L/ ?9 {1 U3 h: e8 P0 H& y  C5 A# ~4 e: `

4 |3 N2 J/ m7 v+ N" f$ o9 G+ F
0 q: P0 E' t0 c5 |就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...: N* s6 q# w4 s* w& ^* K2 x
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子" h3 k9 U2 P8 {- c, P3 k, [
/ m3 W1 l% y4 ~+ C
PartSaveStatus *partSaveStatus1;6 ]+ ]/ u4 |# }
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
3 \+ j5 e; {: K; |+ u( k1 E5 b  e+ _: `
        delete partSaveStatus1;
, u% ]/ {: _4 @2 r" C' f8 ~' T& i9 d' ]* i9 e

2 I  V0 |3 r' T        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");* l6 m! e( a. z. b. ~
* }0 F' j/ U5 N& Q! j( X% O
" P, G3 _. ]( p  r  q

% w7 `5 ~( k0 a& _2 V' c1 R        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);5 x( u9 O- h* M$ R+ A

6 u2 V1 [0 l3 p: s' R        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
4 W9 m" F% i/ u9 {7 P0 y; r" f8 M3 c
4 v, h; M1 C) U; N- E# r3 p        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
0 M4 V' F) r# u+ G
# e  }1 g4 X% x        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
- T4 x/ N! W* b/ w! f# c. z0 n
5 z9 p4 T) N( y/ R$ e0 u7 z        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);& M1 u6 H' K1 j

" ?! H. c  A+ u+ G8 ?$ k
" Q! B* x' i% z% Z. m7 M        NXString motionSimName1;2 k' e# i* S, L" e8 g; P! w( g
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
1 E$ J: r9 Z7 f% [3 ]4 F& V6 g6 P/ i3 N+ Y% c' [
        workPart = theSession->arts()->Work();- ?' U2 g0 @1 S, b( ^/ [- w
        displayPart = theSession->arts()->Display();
0 I) N3 D" i1 I; `; Q        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
8 a' I" L/ W4 e        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
4 I3 a( b) S" @/ ]/ F* x7 I. c* c; ^: h3 u7 M" D3 k5 K
        physicsConversionBuilder1->Destroy();
6 [, v7 f0 C" \4 H7 z6 b: Z+ i( z4 i7 p; j: B
        theSession->MotionSession()->InitializeMechanisms();
4 J$ B. Z/ Y% v* d
5 J2 K% ?1 G, s4 X        Motion:ink *nullMotion_Link(NULL);: i+ f# i% D0 {5 n! N, L; X
        Motion:inkBuilder *linkBuilder1;  ?% y, J" }$ x  W* S: o
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);" F$ [- x  Q$ A7 P  Z- ^

+ c! W- z9 c: Y        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
6 k1 G. G/ f: U3 C) E
, ^" x- C2 C" y* w7 D) d        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
7 M' x; b" V8 I2 i& }/ [1 V4 w4 W! J5 i) w. R$ x" t
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
/ v9 Y5 i/ A# d! p/ F- v; C! }1 [$ a
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");$ O& x6 P* w3 Z3 m; i( }

7 X4 V8 E. w+ E; g0 l. Q3 W% L" b        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
( j# L4 X% A; L1 g2 s
* t: ^6 ~) M# S& u& A/ v        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");  N4 V; Q' W+ [4 J1 E. k
2 N+ M; K0 }3 v0 H5 O# a
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
1 I' c6 ]/ v3 b/ z. }# n
( v$ @/ l1 e2 V/ X9 G        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
  P4 {" G: b4 X5 m3 t- r. l4 z; ^5 U0 j. r/ m: ]
       
& t% e( h; q8 j5 D% Z- G0 L6 @) G- ?9 `+ }& D
        linkBuilder1->SetName("L001");& G3 U4 K+ Z# I; Q1 X5 m- O* F
. `% K, @( T5 [3 o7 T* s2 O6 n+ E+ L

$ s0 ]  n: l) d. @! G. I. n        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
8 d, ^) _# y8 V2 D# W/ ^, C1 Q        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
7 H9 R% `: d6 \, C1 G8 B" A5 z1 u        bool added1;. g7 j9 Z2 W6 |( N
        added1 = linkBuilder1->Geometries()->Add(body1);
- D; C, n5 e4 j* B& H  w3 A
& ?7 x  Z; w3 ~& _5 L" _4 Z9 O( ]        Direction *nullDirection(NULL);
. i0 F$ i, N1 C5 V: r3 F! M        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);0 b  `  G) n, n
# }! d0 P0 c$ V7 r5 v, Q0 Y
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
, Y* j" U4 y6 c6 e  N" J% u7 T3 S! e+ Y! _# f. s
        NXObject *linkObject;
7 d3 X4 b7 N( b; B& S, W* C2 P        linkObject = linkBuilder1->Commit();+ w0 Z4 K/ _. K3 D5 x4 K

. p( o9 \$ r: L( _/ `- k( p* i
$ A6 p/ F4 {4 e        linkBuilder1->Destroy();
% [( E+ t7 J: L+ ~, p
" H  o3 U! Y+ ^) R8 t( [/ Y+ _8 s! B1 A6 z+ d$ G# U
8 l* Y* }. x  `9 A& u9 P* U
0 h7 ^) _/ F# e* E
        8 j$ X# x0 q! W$ ~8 r9 e9 F: D1 c9 b
5 t" V( P, r7 \) ]" E) I# W
        Motion::Joint *nullMotion_Joint(NULL);/ e5 C/ k+ [3 G0 v- |! M2 z' l
        Motion::JointBuilder *jointBuilder1;4 `, |/ |! |) e1 @+ s6 y- s
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
. g5 |+ f" q! k/ |& o  a
9 A  M! K9 a, Q: u; `4 t2 g- O7 L5 Q. L1 M, P* }

/ }* y6 w% I$ Q  K3 G3 ]7 q+ f        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
6 y: J7 y; y1 y/ e& ?        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
: A  j; T2 d! I: ~9 s. P6 l1 r4 x        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
7 R' M5 D; W  i        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");- Y* M2 M) [3 a9 g: x
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");3 M! @/ O1 f; J9 U: S
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");% f0 U( q! p0 D) r1 h

7 O3 B9 @$ r& |& `; D9 {  J& i        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);9 ^1 s3 f' Y6 h3 Z
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
' L% r+ e+ L8 Y0 [4 R% S        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
' N" b1 A( `/ [1 `) ]+ z' P7 D* h- U        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);) m- J6 G0 q2 S( g6 |; Y5 C
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
3 w" L, K7 X2 [; G3 l7 v: g        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
: Y3 }7 {2 R) A/ k$ E- O" g        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");: R5 F0 S. J" O
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 G$ @1 Z) e# L4 u
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
. O0 J8 G6 k1 ^        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);6 e* E' U. E- l. w# e
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
, q' t& s7 R& H+ Y
- ^5 z) x1 u6 e9 X$ L$ Y        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));; M: g, [& K, J% k6 U
        jointBuilder1->JointDefine()->SetFirstLink(link1);4 J) v, I4 `3 y9 f2 ?
4 b% i5 y6 {- p- n0 z

% v( P/ E9 }8 }        NXMatrix *nullNXMatrix(NULL);% g4 ^. a3 W7 Q. [8 k! y3 H
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);* E6 S6 v. k/ s8 z# `, @2 S) V
) m" w$ _" [/ _
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
0 U8 d  r* i$ [8 f4 J, b        PartLoadStatus *partLoadStatus1;$ T0 w2 M- z, K( o: I
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
* u& ]% T7 O5 u9 Q8 I- P/ _
  Z3 g; o, n8 w3 [9 f. e/ A7 |) T! C6 l        delete partLoadStatus1;
) S) l& x1 E' T0 g        Scalar *scalar3;
" A! g+ Q* A4 e        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
  d6 i* T2 s& }, H  S
, {( l8 J" ]$ T9 D. I% h$ T2 z        Scalar *scalar4;
7 J, E: w8 \/ k! c; K2 _1 C8 j        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
, V+ O# [0 t) U" G  O& ]8 s$ U4 Q! H8 M& d8 y6 Y& T# m" f
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
$ d2 q! }  l0 r! b        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));  F% c' J; H0 A, A5 s
        Point *point3;5 z6 r8 Z0 s' N1 F8 m  O) v
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);) t' P6 O% V& K3 x; N" A

! K9 P+ i  D. q' |- U! W6 ]+ I6 ^; ?7 Y' \# \' W* f9 O, u1 Y
        NXObject *nXObject12;. e& G/ ^' d: O" j: h- m6 V2 {
        Xform *xform1;) m: E5 q* [6 N% X
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);9 c% _- ?0 H" g$ y5 v7 e( [+ f+ x5 ?
- q# C: ~7 ~/ ]  @% m
        Point *point4;
% n6 B, Z4 H4 o9 O) w' w8 d% L        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);9 x' D+ [' {3 Q3 U+ S
# N3 `8 l( g5 a
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
' E$ }9 R# ^+ Y; B) i" c+ ^: _
9 j# P$ Q& b* n$ o* o) D9 N
2 ~/ t) F9 K. F3 [* Y/ v        Point3d origin1(0.0, 0.0, 0.0);% s, y9 E, P% a0 k* H# g9 R
        Vector3d vector1(0.0, 0.0, 1.0);% Y8 t, u) D- \5 t; s
        Direction *direction1;7 i5 a5 b/ ^3 A& s2 [* m
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
2 @# P  a$ K# U* X" E$ E# T1 [( `1 R; c3 w& }
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
1 e% y( a, _3 q( x/ x( y4 s% D8 h0 b0 w- F) c# Y" w7 B
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);6 f8 v( s' [: g% x& N

+ w3 e' p1 a8 r. ~        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
% A( q$ v+ u$ q2 ~  _' c; `+ g3 p5 p8 X' E6 s9 L
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
0 z- f. t- E0 F# H5 [6 U8 d8 v/ A6 e- |: D  d. b4 y- {
9 u# `  m+ ~3 l6 T( E, w
        NXObject *nXObject3;
+ T- j' O! g; Q        nXObject3 = jointBuilder1->Commit();+ R$ K8 y$ q! m2 s3 W

& A8 g" J" i/ b8 J+ w8 W        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

为什么会有表情 - -!: b/ Z5 Y/ r5 k; M( N; B- [0 Z( U
. {! y5 E) u7 z5 ^
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码5 U  @- v0 t( s2 C! R9 N" v* R. b' a' H
5 S+ T8 `; W- D4 C' j
...../ g1 N3 L, s" w

3 v( _' ^: O/ J; ]3 dUF_MOTION_init_articulation();
3 ]+ U2 F* X. h- Z9 u9 Wfor(int i=0;i<360;i++){
  u6 y% _$ g+ C5 C9 N  UF_MOTION_step_articulation(1,&i_ret);- ]6 A9 g6 v2 i9 r( L
}) ^! ^" m% j8 d, _# r+ Z" G& m
UF_MOTION_terminate_articulation();
1 e7 z9 }3 |" |* g/ M6 k! q, H& SUF_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二次开发专题模块培训报名开始啦

    我知道了