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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
' N. q+ T9 g$ R5 d( @* C8 E9 F
: p7 P$ p2 {- Q我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。) e) n4 l5 J) |7 m2 r
QQ图片20150521182535.png # t5 h6 Q5 X1 ^) e7 v! i  C% T, M
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。+ x5 t( M7 C- I' w# D1 k+ ?8 Q

. [8 p: f- L; Z( Q9 X一段ja录制代码:0 N  S1 `* m' f+ P1 N' K8 q

, j" r  I5 K2 r# E; C) ~! m# b3 ]0 ?! P9 _        Motion::MotionSolution *nullMotion_MotionSolution(NULL);: B1 t8 \1 H- i7 m* h9 A
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
9 x- Y8 k3 L3 T4 q# a( i! _  b        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);4 d0 Y4 o7 Z$ p& v

! G& _& H/ t8 I6 ?
+ `3 r8 D; p' Z" y) y$ _        motionSolutionBuilder1->SetTime(10.0);4 F3 z; @5 k; Q- W3 H* `* v" n
        motionSolutionBuilder1->SetStep(500);
: h/ }0 w+ ~0 a        motionSolutionBuilder1->SetName("Solution_1");
, Z& E7 ^# y( }9 o        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
& ^4 W$ I; g9 J3 }$ I3 Q/ `& R- K. c+ R, l
: M2 U' ?+ J5 g+ ^9 w( X

* ^; g1 q" L4 r, n( K) d        Point3d origin1(0.0, 0.0, 0.0);
9 o7 x; ]8 p7 Y7 r$ }( C1 F        Vector3d vector1(0.0, 0.0, -9806.65);
7 Y( K4 N( c8 I( K        Direction *direction1;- ~: e! z4 Q: x1 I# s* }& \
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
& W9 T' N, @% ?( y, A/ `        motionSolutionBuilder1->SetGravityVector(direction1);
. g$ N4 ^# h) K9 g4 V- C7 \) V! X/ @/ b4 J. l7 ]4 H
        NXObject *nXObject1;
. p8 h+ B  ^* [2 E& \4 j        nXObject1 = motionSolutionBuilder1->Commit();
: E. |6 V) m/ z* X; J        motionSolutionBuilder1->Destroy();- z9 [, a) Z, C* B. _
        # a, r0 X8 ^+ f5 _# h: u, N% X
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));& i! w% B$ y! ^0 z7 G# h3 _+ y
        motionSolution1->SolveNormalRunSolution();6 s4 x4 o  ^5 U3 `9 ^; L
& s0 ^0 h2 J6 y9 z

5 l/ p9 G% M/ v: e  w0 }* r4 R2 B9 S, F; |- v, y0 |
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...& G7 i1 a7 j8 k: i
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
6 }2 o: J  B$ n9 |6 D7 f
" T, S% L) S, P! }- xPartSaveStatus *partSaveStatus1;2 u- W( O' \) r3 d' p- h  R% }
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);, F4 C2 U; Q4 ~( E+ t) s

7 ~* f- U9 J% {; t5 I        delete partSaveStatus1;
* e2 M* Y$ h. N8 O' r  I
3 e& Z' K3 m' j1 O
4 X$ _4 L8 D( Q        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");( L3 q. i  l0 u$ O6 _& U
* j4 b9 X8 {% \
% r! I$ t9 d: l, j  m- Q
; r. H0 ?/ k) p: N  [
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);) |% O  W: D/ W1 C, x$ Z

1 J$ `# n, S5 L+ D; C        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
8 k. p. x" B( K) g) _' n
, O( d( Y7 O) H6 A) `, C4 H; x+ Y# X        theSession->MotionSession()->Environments()->CheckCosimLicense(false);5 r2 n" b* U( U0 @6 ^7 f* M

; X% B, v9 d6 E" C$ C        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
: `, \. y/ M2 w2 z/ V
. G4 z5 c0 A. v$ J. V        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);! J( k; u: ^- y/ Y( \4 k

3 w  ?, C- i9 U' g- ]: v2 P8 d
        NXString motionSimName1;
5 }) W& j: H$ l. R; m% A& t3 p        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");4 Z, Q, w1 a9 T
" M; K! H/ s- G6 O, g
        workPart = theSession->arts()->Work();5 o4 `3 M" ]* B8 [8 Y# _4 `( N' `
        displayPart = theSession->arts()->Display();
6 U# I' z' H' S/ R2 w* Q        Motion:hysicsConversionBuilder *physicsConversionBuilder1;* @4 B) c& ?' K# g
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);: C* _; y& M7 I3 W) K
2 U. D4 v, Z" h$ b3 ?1 d4 g
        physicsConversionBuilder1->Destroy();( e/ P  A/ B2 S5 i- J. o

+ O8 x4 Y/ H  D        theSession->MotionSession()->InitializeMechanisms();; O6 ^2 U- W: V  `
/ a% E* d  A: ]) J" c9 ~
        Motion:ink *nullMotion_Link(NULL);
- ]) h) q3 c$ L; \( T        Motion:inkBuilder *linkBuilder1;, r  }7 {. P! d) K& Q
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
9 }8 q/ f3 n) \4 [3 x) W
) _! e) T! F. B" {, v6 R, Q4 t4 K- Z        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
0 A- F7 F# v" D3 P; V+ b- I/ u
8 o1 u$ E0 ]+ I8 \' B- G  b        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");# F$ G, h# y3 M+ U7 _: G0 p& e

& R# f' V# t) h* @8 a& v5 X0 H        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");  E# n/ e+ _" w. A, T0 r* P

& r2 z8 i2 o- ?8 H& _  N8 R        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");; G" y, n' D) k) J7 F" I. e$ M. H( \8 d
+ w* r) O# w9 p) P' b" @, e2 ]
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");7 r0 C! y! ^, Q( ?- Z- O# l5 e
; P. A: I% K, h+ E  E/ C: q
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
/ Q. [# R# j: r+ `4 b( ?6 i
7 T) {/ q4 a/ q" L" A2 g        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");5 o2 \' N" A# v0 q2 M0 I7 Q
- ^/ B1 P, w; l. Q" R6 }
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");5 z9 ~2 K5 m' J/ X9 Y, B& d
, D, }! g- x+ b5 H9 `8 v# M
        ! ]- {/ M4 y. ^- s- m

' O9 B0 T# @3 u& Z8 `# n        linkBuilder1->SetName("L001");
/ T, {; k9 R5 c- ^5 Y3 Y$ y3 `% c$ N4 A* b9 G4 G0 `1 C5 _1 T
9 ]! H6 d& b% n* g  Q3 t
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));9 K. d; M$ I" t" z3 |
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
6 z5 a/ s" P% o  L7 j( G        bool added1;
& T% t; M5 j+ h6 h0 a* J        added1 = linkBuilder1->Geometries()->Add(body1);
5 |: V7 s4 T, k9 i- Q8 X' t& p1 K' |/ ~
        Direction *nullDirection(NULL);8 F; I, E) S7 C% N$ g
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);+ A1 ]- i+ _) ^8 d

0 b8 h6 U8 U' y        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
& J2 Z3 z0 e( Y
+ Z5 B" S* |/ w; h        NXObject *linkObject;
" Y# v4 {. i/ I        linkObject = linkBuilder1->Commit();
( {" o* a$ _  P: O( N# O! w5 {" z9 G7 a1 x

0 r! ~9 T: h6 x        linkBuilder1->Destroy();% J: J6 |) p2 U5 X% k
& t# d4 D0 M0 O$ }

* e& P& a# m1 t2 k
! J. ?/ L$ q; a. Z) `8 [+ j: y/ `  K' h$ O3 }) `$ x2 Y- L3 x4 [
       
5 r9 a8 B8 k( _- M7 U2 I7 o
! {# B6 @9 O) m        Motion::Joint *nullMotion_Joint(NULL);
( L- P* k# u  m        Motion::JointBuilder *jointBuilder1;
' `5 C  g. z% [' r2 g        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);  C0 L( p- e1 D; |7 C: g

. K0 n) Q1 C2 n
) q! t. I; r, N7 u! y: g3 S/ Z
7 z( L) ?2 }9 b& ~! ]+ B        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");" {: x( {' `3 _. \
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
# d+ C; v: ~0 @4 a/ D# `- J        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
$ R* Z# ?3 F8 G) S        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
  e5 I/ w5 _9 i        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");! ]4 F; }! ?0 [# t8 O0 V, Y' |# w' u
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");" |" c8 y0 k( ~! Z# n: g

/ m7 Z! r0 z0 e* ~- c        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);0 N% {& `  X! O, h# J% K: Z
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
% D0 j# G, ~" D        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
$ R& B7 h$ E; X) _/ u        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);2 d8 |5 h$ M, r6 F9 c
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);$ a/ G, u( c) P! d8 N8 [. e
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);) {; q0 |" F! n6 N
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
5 ~! [. q1 r8 u2 ^) Z        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 ]) |2 \$ z7 ?$ e& q9 j
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
! M' P& y9 \9 j. k; ?1 B8 _        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
6 g7 m4 T9 Q; F( l/ p. j) Q        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
; t, j& Y9 x5 _# ~4 Q) [! B7 r8 _) C1 c. o- X$ t7 P: u& K# V
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
: ^$ }9 Z( H8 S- i# a/ @) y        jointBuilder1->JointDefine()->SetFirstLink(link1);
6 W0 S6 @3 n1 s# N
- E- o4 m! _' H( j$ b) [7 p
0 J- r) h6 J) w: g- k        NXMatrix *nullNXMatrix(NULL);" W0 _3 n# ~: w/ r+ o3 R* s4 Y& g# f
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
4 R, T; r* m" v3 f9 T
* Z  a' A, u( N        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
5 @- h7 o4 D0 Y! y        PartLoadStatus *partLoadStatus1;( k& n) x1 r8 s1 M9 M$ U
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
5 B2 W( W3 `2 @; `2 M  I8 L' h; K, ?& }) Q% ^2 r( h1 D
        delete partLoadStatus1;) X- m- l) n- N- Q
        Scalar *scalar3;1 B1 d7 [( l% h& v/ z: C
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
2 U  G7 X. R* U3 t5 Y: u$ m$ t
! {7 g) w% X) r2 i1 ?7 V7 N        Scalar *scalar4;7 X# ]4 C) j! j7 H# ^, l! ], }
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
/ Q; u1 c7 p/ C7 N; c
: G& t$ i* w( w. V/ Y9 n& c        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));. O2 h' s3 U2 t+ Z) F( A$ E
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));; W+ k0 H9 s! u) r
        Point *point3;6 q. @% S/ q3 Z' r0 c
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
- s  p, C. c# I6 o7 P# V& d. k2 c$ ]& w6 ^
+ L: m) E; w) `! {# ]( ^4 ?/ r7 M
        NXObject *nXObject12;0 c: L" i/ Z+ q9 M# G4 |
        Xform *xform1;- ~& k1 {- r  B% v0 _! f0 I, K$ V  {
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
* p9 f6 c2 Z( R+ _. f) v3 C1 X* b9 o  E$ j, G
        Point *point4;5 I, j7 L, L* i2 v' [" x/ I
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);( s. U- ~4 \, A4 B8 U

+ s& U6 Q2 I9 G+ F2 s) H        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
7 x6 G, B  X/ I3 O4 M# X! q0 T7 s! o4 \' D  z( }3 u  P$ t  @
, p/ m* A$ ]/ f% m! I+ P' K. ~. k- Y
        Point3d origin1(0.0, 0.0, 0.0);2 v/ d' i* R3 P$ B+ e) D. ~
        Vector3d vector1(0.0, 0.0, 1.0);
+ T# J" I& r: j6 D        Direction *direction1;
) y" z; O" E" e( |9 k5 y        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
4 r/ w* ?, C) j& L+ N& h4 D
, g; D5 Z5 d: o        jointBuilder1->JointDefine()->SetFirstVector(direction1);
: c3 n3 j/ ^; e2 r8 A2 Z( [; f  |* R9 w. l: F3 Z9 O
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
0 I; h' C; ~- a/ G' c& \- I* I5 u4 ]$ X1 T
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
, K. ^5 y# a0 Y! b5 U8 g. r
# L6 w7 C9 _9 K9 L        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");- f1 R: B) S0 v% t, e; J
+ E( ^  A3 ?% ]) ]" f/ N- s4 v

: E; v2 p1 w" z' l1 q3 _        NXObject *nXObject3;. L) v2 i+ l1 ]& B) C) k
        nXObject3 = jointBuilder1->Commit();! r  }3 }& S, e& P4 o6 p1 K$ [
9 T& L8 `0 \, z. P/ {: 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

为什么会有表情 - -!7 t& A/ r/ Z; r0 h* F) ^
/ A6 e" ?' l" M; v! u' U) O
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
7 R5 X1 X& ^( ~8 _3 ^! X" n4 q  u6 t
.....
% g8 [! E; g; Y$ D9 }1 [2 {
5 i) w1 ]$ w6 C* S6 GUF_MOTION_init_articulation();
& `5 R" |/ ^8 Ofor(int i=0;i<360;i++){/ `3 S) ?5 `& k* i! z
  UF_MOTION_step_articulation(1,&i_ret);
3 ~6 Q( W4 b0 f' d# X}% W7 z9 D% j/ ]6 z3 H( w
UF_MOTION_terminate_articulation();% g: W3 B  }/ |5 i# A- K
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二次开发专题模块培训报名开始啦

    我知道了