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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了. }& ?1 Z6 b) b0 O
. O( d0 u( e! c2 t, w
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
# W; \* k; \7 d! n6 r QQ图片20150521182535.png
! F0 k- |8 M: f. W8 u4 K我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
5 n$ ~5 |, V9 ~- X( m4 T3 q/ u  r3 c5 E/ n7 b6 O7 W
一段ja录制代码:6 U+ ~1 Q# K* @6 ~2 k- X
( C6 I! e1 r0 p. C! t
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);8 p0 O  N9 ]2 B9 }6 H; N
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
  O, Y' X* G, ]9 L! z        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
0 |; H. x8 Z  ?9 `2 ~2 h' P7 [+ v4 A  ^3 I9 _; P+ F0 ]+ y9 n

* h$ U+ ?8 N# L( G7 W4 w4 c        motionSolutionBuilder1->SetTime(10.0);
1 D  p4 w0 y  J        motionSolutionBuilder1->SetStep(500);
; ~/ s7 M% r) U2 z+ o( p) `        motionSolutionBuilder1->SetName("Solution_1");+ T9 K, K6 R# ^7 s! [1 w
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);) \' {+ z. z, ^( s
; s0 k4 s5 H) \) {( l
% y# S% A' T5 G9 M3 L+ B

- L) s) Y) B* Q" a, H& @, j6 s        Point3d origin1(0.0, 0.0, 0.0);
2 G9 i" R2 V5 f# J, f8 }        Vector3d vector1(0.0, 0.0, -9806.65);" P- I2 D. q, N8 b% w1 V
        Direction *direction1;/ \4 b& n& l4 C- [4 g8 f
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
' _8 j) n, d. v9 ]# R        motionSolutionBuilder1->SetGravityVector(direction1);$ [3 d7 G8 }1 o) D7 m

7 A1 ?; \- P  P* I        NXObject *nXObject1;
1 M) y- n* c/ b: m% n: o& r        nXObject1 = motionSolutionBuilder1->Commit();
0 Q. f! S0 M8 \3 t+ }/ G        motionSolutionBuilder1->Destroy();
2 n# g% ?# w! K: ^  j" T        : w* \- y' V* W& B2 G8 |
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
. y' P8 Z$ v8 e6 Z$ m& a3 K        motionSolution1->SolveNormalRunSolution();1 W% e- W, V# O$ t7 `0 Z0 Z

, t! z) u, `/ {! A* n  U0 G$ M' I+ `% ?
) W' e7 p9 ?" j2 b! J1 F4 d9 Z
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
( x8 d: J8 C9 r' N% e
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子; `) j/ s- u+ w' A  M

8 m% q3 ^" \! VPartSaveStatus *partSaveStatus1;
4 B" P" w  U$ M        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);/ f! r  c+ T' z* _  t

2 H3 ~5 `1 V3 Q1 L+ D        delete partSaveStatus1;: [, B. V* @* X

% I* Z- }9 P  F, _0 l! r. w' q5 ~
6 l- j2 R0 ~( ]$ n        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");3 P: v. C. D/ {$ |0 F

  s7 h: f: _# X: w, T- M1 W( E4 ^% i; K5 ]

! a6 p% f+ |% u( M- {. G. \  @        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
. Z' q: w$ C1 ~+ N  X" n8 k: A7 c/ s
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
: i/ j* g5 V% r# S: K1 Z9 |: o0 w9 r+ t7 x3 ]$ E4 z: `
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);  S' B. _- K& M( @, E5 f$ A* ?
8 N4 E# K& N0 h9 V& e/ I8 M: H: Q
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);0 f  S* ^3 e5 B' g' \# u
$ w. P4 T  S& E% y
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);) h' |/ s0 z, ]; ~7 ~
% c7 h* z3 m, x1 p) m# H) c
! E8 n0 g" B& @- d, M/ }
        NXString motionSimName1;
6 S, e7 l: l1 V8 ]        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
3 K0 S5 E* H8 P
$ X2 B( ~, M7 B! G- ^* t! r3 v        workPart = theSession->arts()->Work();& q# q. W* G1 `2 B* Z" f8 [/ L, i' Z
        displayPart = theSession->arts()->Display();7 S% D3 U! r! y
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;& p: Y2 a" [, o5 t, b
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
: m  G, G3 G, ]* F
4 y7 b9 D' k9 H. }( `# F# Y1 O3 e8 g        physicsConversionBuilder1->Destroy();1 P7 v0 f. G8 `9 K: ~' X
' B- u7 v1 {6 U9 ?. L  n
        theSession->MotionSession()->InitializeMechanisms();
/ b. P2 u! \7 }+ c0 |, Y2 j: ^
+ n5 h8 z4 Z- `# ~        Motion:ink *nullMotion_Link(NULL);
( R/ r2 c1 n" {- Q; a. b# W/ }& @/ x        Motion:inkBuilder *linkBuilder1;% d2 V$ M: F! d0 [; |4 W# A+ S& H  L
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);4 I0 Q- w$ B4 C
* j9 C/ S5 ~& O1 E2 Q
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));, l' }  m+ _4 r+ u4 M

5 I5 l, h9 z) x$ w9 A        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");* U3 S6 t: b& A% }$ s6 [+ M
" c  o% Q0 O& K+ x
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");: k( }8 V. _# S9 c

# e( D, p4 Y9 o* w        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");6 Y9 w% C8 q. A& H

9 `' X/ ?/ [; @% l; m# H        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");  p# Z" s' Q' {# e' f! a

8 H9 R4 J$ j! `, Z- R2 N6 t0 A        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
4 G9 J3 o# K: j6 c7 d  o- W. k2 U# o4 D; X( o( B, z- n! ]* W
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
- l  h) S# p9 N' f8 `3 ^; ]5 l, g* w. T' A# K: U) q% t& F
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");6 f" n9 W1 q# ~& R# e% I8 K

9 o5 Z, b; P/ W5 V( a4 D$ V5 L        # R2 ?1 m# @0 {0 b% C6 Y; a

" I: M% L' u7 R8 F        linkBuilder1->SetName("L001");
) ]% q) q( ?2 s. w" R/ C/ z
# Q% ]) ?# P6 O# o' Z2 o
, s, r8 g( E- y5 ?        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));8 k- T( R  l6 [& ?: w
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));& ^' {# }6 T8 @* m
        bool added1;/ C$ d* {% ~3 v! s6 E* |4 r! Q
        added1 = linkBuilder1->Geometries()->Add(body1);
! R; E- h' y6 ^/ D: C$ U4 C0 C4 b1 V% Z% `5 T9 m4 R
        Direction *nullDirection(NULL);
2 H( t3 j' n  r! n        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
2 V+ B8 _' g1 Y% @; Z
8 k! T0 J& \% U5 u* o9 M$ \- o        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);# \+ r8 R  L+ O" R$ \
# d3 |8 f- [+ f
        NXObject *linkObject;
7 Z# g, q. v7 Q. Z5 Q% Y        linkObject = linkBuilder1->Commit();
; ^* U# I. J8 A9 r! \) p* S( d
3 U2 Y3 p: e: D* ~; @$ g! v3 w/ b
+ z: }- h* Z* f, \: J        linkBuilder1->Destroy();
1 n1 _0 n' Z1 s( P: F# D6 {$ L6 a% @0 r0 p9 E. I# s0 [

- _, l8 Y$ ^5 k4 D; E
& G% t8 E7 d  ?2 f0 L; f  t
% K; I: t* y2 O' X5 x6 b; s; w" J1 H        9 l1 o( o8 v; @9 `
* B8 v) O* [" k/ u. Z, ?8 ?
        Motion::Joint *nullMotion_Joint(NULL);5 R# X$ M$ i" ~8 g# ^4 s. o
        Motion::JointBuilder *jointBuilder1;
+ c8 Q& \8 |  M4 c2 ?        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
# G  Z  w+ W4 g. |; d
7 [5 v2 Z3 [# N3 K8 ^
. R- |, x$ d* i; v4 L5 ?1 i& u3 T5 d. [0 d+ V' @, [5 P6 w' S
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
7 _' [1 s) O5 J. W) b2 s        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");* l, W; d  o- i$ S" g' {8 S
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");0 }, r3 y5 d/ ^8 E2 O9 d' e
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");3 t# {' ]( X0 U6 a  v% O
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");% f. ~; w* f5 d( U; l
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
" H% d! i! t" F+ ?: y$ _2 D& q9 P  m3 b2 H4 I
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
# p( x" L3 [1 k5 H0 ~! X        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
$ Z5 Z% p% i) L% V        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);0 |! n9 B" g1 P- Q- E7 u" b6 V
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
' P- f; L, t, `* @* d        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
8 G# k5 l' D9 ]. F        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
$ E" {" X# ]' c, ]* {        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
8 z" o/ ?6 b: ?8 g5 l  i        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
# L, X2 M1 \$ i7 I+ I* t8 m        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
& Z2 U7 C- Z* |, `. \: E! w0 Y        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);. Z# l& J& \7 E) n% x' G! w
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);+ p; A- f& y  ?! N* P  y
$ |0 d" b3 w1 l
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));/ o5 _: M* K& W- h9 `9 p
        jointBuilder1->JointDefine()->SetFirstLink(link1);
+ F9 t1 d2 ^5 x! R, i/ W: q% W' }( |% `; c( C; k* w; ]
7 [  }9 G* o$ n+ P7 i; C! N
        NXMatrix *nullNXMatrix(NULL);8 r; A& d& ~. x8 H4 ^- _
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);0 _  V0 i4 W9 z  t
$ T% Q9 `9 g- L/ h
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
; `) j5 L( F0 U2 S" i) k4 w3 L        PartLoadStatus *partLoadStatus1;, A+ B' w5 _& Q
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
1 v" E/ {4 g1 n' ^2 a7 R# ~
7 E- ?  O' x( U2 k        delete partLoadStatus1;
2 Q& B" J! A* Z3 A1 A        Scalar *scalar3;6 n; }! L, g" Y' r
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);- V8 g2 u* a- S8 a8 X% ^

% E" I) i% K4 c: q9 W5 p        Scalar *scalar4;
3 S4 j$ A1 P; I& L  V" i, T        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);  d  c" l  c) J- A/ J/ b! s

$ ?' j5 l4 p) A# w  Z; X* c        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
2 _! {' a" ?# k# c0 P$ q        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));! B9 k1 y6 C5 ~5 Z
        Point *point3;
9 i' A& R8 {9 o; }7 d: m9 f9 \% V        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
  d! b- B% ^5 m6 [5 N! K" w7 |% k/ q) E$ X8 b1 |/ W

- O6 Q% p2 K7 A+ U) O        NXObject *nXObject12;
: X2 u+ L# @0 o1 ~) H        Xform *xform1;
4 q5 v, x$ x; k: u/ R3 d$ S        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
% @' V6 R  U( P' K, `# |& h( B0 K( B! y. _( I
        Point *point4;$ R" W: o+ e: X# e
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);+ t6 c. w+ ^# k, E6 v: N. n
+ T+ z9 J  u7 A
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
+ q3 H$ h5 r6 f: w" f9 r4 T- l2 ?6 t) ]" Y" _- C8 i3 j

) w' a1 {! q0 d' R8 D        Point3d origin1(0.0, 0.0, 0.0);
- M: t1 d& g/ \+ |4 K, _        Vector3d vector1(0.0, 0.0, 1.0);
+ r  Q+ f8 q5 \        Direction *direction1;/ y! _6 ~7 g( C5 _& o
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
  @/ l# z6 S& q- i2 E+ s  |( d8 K4 M0 y
        jointBuilder1->JointDefine()->SetFirstVector(direction1);" j( w' ]( o. _0 p# a

2 [7 t- ?1 _0 V9 `        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
( U8 C( X5 q3 Q& y# U. l
5 j4 h7 X/ A3 ]5 R9 R3 L        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);- O. u6 V2 m5 c! E

# f) t9 s( Q$ y# V6 c, W9 h3 x        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");6 w5 N+ T& |8 l% k2 F

$ R8 l3 B, C% ?- j  F/ i; m7 b& s$ |8 y- p% `
        NXObject *nXObject3;
. @, z% ]2 C4 Z$ j( E8 U        nXObject3 = jointBuilder1->Commit();
; c1 P* @( f+ |# }' Q& m, @% o( w3 t: T
        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

为什么会有表情 - -!
: {+ M' u0 A6 I( y8 K: Y4 C9 K% U5 ^
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码$ z& t# u& c' `
; b5 [/ r% l! ]- w# G1 l. |  e
.....: i; ]. l; L8 Q! u% G7 U" z) W
, D( `( ?; P" [, v  ]" v
UF_MOTION_init_articulation();
1 M) t- w0 x& k( I8 S: I% }9 b+ s; ~for(int i=0;i<360;i++){( ?$ L) A! _. Q. M6 C
  UF_MOTION_step_articulation(1,&i_ret);
+ `) a: U* a1 |: @! w/ W}( L8 b7 S8 `/ e" G0 I$ a
UF_MOTION_terminate_articulation();) t- K. M& _- N5 `2 F
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二次开发专题模块培训报名开始啦

    我知道了