PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了( e6 ?4 A! r, v1 n2 M8 r' W2 j
  C$ y; K  p! b/ Z
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。5 ~5 W/ h, U! m; [
QQ图片20150521182535.png 2 }& f7 ?' ]+ P
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。9 ~7 N2 ?* z- X
1 }. A, y9 r0 Q2 h7 V0 V3 f
一段ja录制代码:$ r, b3 q. H4 s: `, u

: C  I$ O) ^! M" e3 F0 V$ s! w4 a& b4 C        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
" N" o# f- |; q3 K0 H3 ?) y8 ^. V        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
4 H6 j7 U+ Y# b" {        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
: d9 R3 @" k/ Q3 J% y  h
! }  D: z& B2 i( x" V/ |# A3 F
5 U# l; d6 g; M1 ^6 t        motionSolutionBuilder1->SetTime(10.0);
/ h- ?4 W' m1 ~  I9 z5 ]        motionSolutionBuilder1->SetStep(500);
. V' t$ [9 L5 @' ]/ m3 Z4 }        motionSolutionBuilder1->SetName("Solution_1");& v# Q' O; M8 `! @4 r5 E
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
: {' B/ p; X0 {) C" V6 r9 }
3 K' w* y/ S8 R5 j3 f" l) M" w/ T4 N1 X9 G( C3 `
! I6 m1 z3 b9 O- T
        Point3d origin1(0.0, 0.0, 0.0);
7 R* @5 h8 H3 ?6 A8 H, ^        Vector3d vector1(0.0, 0.0, -9806.65);
; j2 j7 d7 v! o( h: W" t  h+ b        Direction *direction1;! w3 x/ y: @( [3 s, [
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
: o6 ^2 q( r) f$ Y        motionSolutionBuilder1->SetGravityVector(direction1);
7 C0 }9 o0 e7 S4 O
. g) z- E; {1 }7 v  L. {& `        NXObject *nXObject1;+ s1 g9 I, c* ^) Z
        nXObject1 = motionSolutionBuilder1->Commit();6 k- m" [; |" Z) q
        motionSolutionBuilder1->Destroy();  Y! {( L) Q1 h9 k* i
       
( G! @5 g& Y8 R        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
4 X' H5 k4 Y% {) G; q" H! u6 L        motionSolution1->SolveNormalRunSolution();. i/ M  s+ S3 V: `& \; \" w. y+ w
9 |- o, T1 _/ i. r
: B7 ?- c  F. d
) ]) p) ?7 F3 i3 T1 J3 l
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
( X; m" D+ L/ ]
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
, h0 h" k) @% f+ a
2 T8 u! U' x7 W) i7 ePartSaveStatus *partSaveStatus1;
2 k$ n- V2 ]- y- }; o1 t        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);) ]- r  ?. J% @$ \6 ]/ h

' o3 v/ S* B+ f9 i        delete partSaveStatus1;) c* i' F- _% z! P1 W& S1 F
* C7 n; `# Y; ~( A3 E+ p" l

4 P/ r' F3 o$ ?  w5 u+ k# R; y5 r5 C        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");  p& S  i! d+ t! N

% H$ X/ r7 I1 j
+ U* w8 Q! u/ {5 n% h  ]) n# D  C" h& y- }
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
; P: {6 m; P* c& w$ u, p
$ g* I% b! W- o& Q        theSession->MotionSession()->Environments()->CheckMotorLicense(false);- m: W0 U: U' h4 @6 t( B& W
, D- B! a8 k. `& K- e
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
/ F( O/ I" k0 U: ^& O) }1 W) |  T; q* e5 n% ?
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
+ q  @( A, D6 R+ G( l+ ]3 d3 C/ H% C) Z
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
4 S+ H9 N: n3 L4 x, ^0 }) V3 h2 ~7 ?: d7 \

/ N  d5 l$ |' \# v2 M7 W" |- c        NXString motionSimName1;
  S; Z& p) f% r( T        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");- w+ ~: M0 [. b2 E& m: z# u% g
# ]# g- r- {) u+ }
        workPart = theSession->arts()->Work();8 A7 B- Y- j+ ?7 b2 D4 f0 B
        displayPart = theSession->arts()->Display();
1 P# Y+ b, O  n" ^* _9 l! i        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
  T6 o- L( ]7 P        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
8 `* D7 U2 w1 F5 ]# O3 X8 K+ o+ w5 A6 N" }: o% G1 {- p
        physicsConversionBuilder1->Destroy();
; f3 l! p* C" F6 i5 Q/ H  X& Y+ ^0 ^% v
        theSession->MotionSession()->InitializeMechanisms();
! i2 H1 d* Q7 q$ h
: C4 k3 T/ f5 y( q) y        Motion:ink *nullMotion_Link(NULL);, {* G/ @8 H8 t; K$ a
        Motion:inkBuilder *linkBuilder1;; S' i  q1 I$ R8 s3 j7 C
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
8 c' V( Q' s  p+ C  S5 y/ n
: s0 q# i1 e' G        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
* Z1 N1 K* l  u# j: y/ U; ?3 N& ]% ^# W4 u
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
1 y" `- I5 f4 }7 `- P5 t4 ?$ U. P
/ C# ^' e! h( k% m- L        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
0 y2 r9 o' h- B+ b6 ~
) [2 {9 F: p1 r# P/ M$ m5 r7 ], t        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
4 J. e2 X% p" q8 Z) a: s5 b7 X% K
+ }8 y& l. ?- u        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");2 A  @- R8 B! d+ z+ x3 V9 ^
' w9 O# l# W: h& n" y3 x
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");$ `/ G1 ?% e/ M) a7 j, Y( o! B% m
5 ?: ]  x; M9 L, ]2 c! s( ~* x
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
8 a7 r( {5 l- u# h) }3 K; m
/ H# u1 Z6 h3 i6 \! f        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");6 m/ [7 K7 B& J2 i+ r
6 e2 d- V) i+ N
        7 T, f9 Y8 l+ C8 p3 n

+ z" p0 D- E( w0 T. s$ f6 i: v" k        linkBuilder1->SetName("L001");4 B# i  i' P  b% m8 k" N
. R# }, H+ K% C' R0 W% I
3 c/ U0 G( b; j7 s5 |
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
: Q# l0 _* l2 K/ X' r0 K4 `; d        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));' l" b, U8 v1 j* U3 |
        bool added1;  U! ?; U9 j+ M5 n/ H' j' L: \
        added1 = linkBuilder1->Geometries()->Add(body1);
! w* S4 b& }+ T8 D; ?) f. j4 G4 I6 x/ I8 k/ `4 Y
        Direction *nullDirection(NULL);! e" H3 l' u; \6 d5 t6 S" a
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);% ~* u* \0 l) s: ^

' n5 g& i4 ]4 c$ x; F        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
  G2 p1 K' M. h; ?7 I5 X; Q
% x$ n' R; b$ X; c  ~: x5 G4 e1 x        NXObject *linkObject;; k; F. H/ @, }5 v
        linkObject = linkBuilder1->Commit();. Y6 z* f) T: L7 C
2 }9 n' R1 d9 x0 r# G& C5 s
2 g$ m# X% y; G5 A8 U/ y" a+ t
        linkBuilder1->Destroy();; C6 o) @$ s# }

7 G& P6 W2 d$ x6 ]
# }. X5 u; ~# q. E. r2 L3 B# x$ P
4 Q5 _" \4 B: X, u
/ f( p5 s7 _: ~0 ~" F( x       
/ @7 V; Y) f7 }& J0 Y
6 {9 e% x: u3 e/ t6 b! ~  ?2 u        Motion::Joint *nullMotion_Joint(NULL);
% k) }% M6 ?5 \% Q        Motion::JointBuilder *jointBuilder1;) d  n+ z9 U2 a- X
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
0 l; b3 }# ~; c$ U/ Z
9 s8 V& U6 S/ b8 F7 R+ u5 n) ?2 K9 T/ @6 j& w$ a! c1 T- i

" w- U5 O& ?/ ?" a* [: p+ |        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");; Z$ R: _( ~: a5 f- L
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
' m" J$ R9 x1 ]0 b$ d1 o: x        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
8 n" K3 t$ _; e5 p5 d        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
+ @- Q7 x# a# w        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");; D3 a# ]6 h3 S! O9 P  K
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
" p2 V, M& w5 K' d0 d2 ]4 {  U8 ~- t: V; h$ {" ?. u
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
* S- Y9 @1 N- Y' i$ o6 K        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
* h* u, r8 j& l& S& {4 ]        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
* E1 H, M& v1 N' a# U+ z        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);6 W$ U: v! D' |1 c# I0 J' Z2 G# m
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);9 Y) n, }: m( t2 Z
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
) ]) Q+ |8 E( s" a4 @        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
3 o' U  e& [6 T" c, O# u        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);. @1 E& o2 j$ e8 ?) ?0 r
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
& `  z8 ^, A+ q% C6 |0 M" O5 |        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
5 w$ `) P2 [  F$ P% q- U. H        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
1 p3 K% W; z5 f0 v9 K( G- |: r' Y7 |' c5 |, J
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));3 f) s7 E: ?' _$ r
        jointBuilder1->JointDefine()->SetFirstLink(link1);
. d) ~) u7 D" `
5 V) A5 l! t6 M+ l( D& u! S+ u0 `* i" y' b7 y
        NXMatrix *nullNXMatrix(NULL);# I5 l0 e, j5 o7 v2 y
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
- T! W8 |+ R" h2 W+ N/ r
# o/ o! I. c2 n        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));* D/ B, D2 s+ D4 O6 V2 g" H
        PartLoadStatus *partLoadStatus1;2 \# `  F' G8 o5 w) l) ^! \
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
$ M, j2 v; g4 }5 w% J8 v# R% w- W  G
        delete partLoadStatus1;( U/ e0 W% m/ w5 @9 J7 V
        Scalar *scalar3;
$ k9 R. _8 ^+ n4 v8 n" k' @        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);5 f) K3 D2 ?3 ^4 N; F3 `: f
( I5 w+ L7 H8 }; ]: K
        Scalar *scalar4;/ h1 r2 x6 }, O# q: |* f
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
" U7 P' U* g) P! N# w. }5 a) W: j  ?6 w. L' k0 E2 v4 H
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
2 z0 x; M. h+ e; F" k* n        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
! y# c. Y" ~& a: }6 q        Point *point3;% S5 H9 y* o5 n( N! a
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);# f; a8 v. S  Z% b- k
6 o2 C5 f  r2 Y% y3 u4 k
9 K( z1 ?9 H0 I* y1 A
        NXObject *nXObject12;) v$ V: p. d* x: X5 c& `5 |0 T
        Xform *xform1;
% W, b3 F, i  P% _        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
: I8 c4 b: p- s
1 f+ O) e% b7 T+ e- A1 O  `. @; C! J        Point *point4;$ s! u% V: s, V% l
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
$ O; H' x* K$ \9 f% Q% D
# T' D1 A, T* [8 @& s        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
- O' y: d2 J9 b* R5 S! X8 r
: F6 C2 |4 D) P" v" Z+ @! R" E( n/ l( }0 `
        Point3d origin1(0.0, 0.0, 0.0);6 a% |; B& W, T# @
        Vector3d vector1(0.0, 0.0, 1.0);
9 q9 Y, |1 D- J- T9 i        Direction *direction1;
' A' T5 T3 E; _1 J        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
' q; c. l' Y2 E
- I; _- [$ N2 k/ A# X) n        jointBuilder1->JointDefine()->SetFirstVector(direction1);; y7 B: U* b& p+ @7 [5 k6 Y
, M# ]0 A# u3 X" q
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);& Y$ E4 J3 _6 z9 t) r# T
! C* `) f$ g% [
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);. u( f8 J8 v( v' [- T7 D& e

0 z  g; |$ b' [: F        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");+ Z3 C$ G  s6 H& G; b5 T6 d0 O
, G1 K5 a% J$ d* f

3 u+ K4 K: t) u. {$ A# x9 ^        NXObject *nXObject3;
+ U4 i  X1 k" ^1 u        nXObject3 = jointBuilder1->Commit();* r2 E+ |9 B2 c' H! Q2 n7 u! o2 N
+ N9 P$ g/ ?8 V! a7 l8 \6 d- ]
        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

为什么会有表情 - -!5 Y* m  h* _6 N9 [: `

/ u$ q$ \" i: b& C4 K# h9 F& N有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
4 z5 y. P3 C; U: H- j! A; ]4 {, S4 B9 o  ]+ i( V# M. u
.....
. y  k* O0 U& o# J- M" |2 F- q2 e) O/ \& u" B
UF_MOTION_init_articulation();
( _: g: @2 D( n: K) [' Cfor(int i=0;i<360;i++){1 }  P' {& {/ i* V( I  r  n
  UF_MOTION_step_articulation(1,&i_ret);
. K! j# r/ c# j}9 r, E2 E9 A; k) H
UF_MOTION_terminate_articulation();  h' q+ p2 f- H0 t5 Y! M2 x
UF_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二次开发专题模块培训报名开始啦

    我知道了