PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了; S/ {' n- C4 J% \9 F
: X4 [- q: k' @  O, [; F
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
0 t  O3 \2 K4 t: f# [1 P QQ图片20150521182535.png ( N, ^* }' o7 n6 `6 n
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
( k  B, W2 s1 b3 U! u, \6 q3 @% J  H- J
一段ja录制代码:0 }6 F# @* j3 k+ r
5 O, N$ {5 b! X6 w
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
3 Q+ n, J! V$ `' U2 f0 h2 b        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
- y* O& S' H9 K        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
' k0 K. M( A! Q2 ]5 l  x
, g! W, U8 G* m! f6 V2 }( i
) C2 ]9 A% _# L/ A" h6 T6 C        motionSolutionBuilder1->SetTime(10.0);
; m& Q# i, Z4 i& A        motionSolutionBuilder1->SetStep(500);
" U7 O% @6 U$ E/ O1 k, w  b5 k        motionSolutionBuilder1->SetName("Solution_1");
* e7 ~: P. Z* m" t) B2 [6 Z        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);& z  l$ l7 Z2 S& K4 K" U- F
# W3 o6 i1 r7 s9 U- k  P3 u

2 C5 N+ J. ~$ ~( I% @8 M% U6 ?
9 z( V! N9 }) u, \. g        Point3d origin1(0.0, 0.0, 0.0);
! j- g7 ]* y+ O, |        Vector3d vector1(0.0, 0.0, -9806.65);
( [: H/ v$ W5 M4 N/ u        Direction *direction1;
# ?. R& J) `7 \) @7 U! C$ `        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);; R3 Q: W; g$ _8 d
        motionSolutionBuilder1->SetGravityVector(direction1);
, [8 u% J6 x8 S; f6 d$ _2 r  ]: K6 P/ Y/ M' M2 O
        NXObject *nXObject1;- n0 r& P( s5 n- O
        nXObject1 = motionSolutionBuilder1->Commit();! q) F* A; P( o
        motionSolutionBuilder1->Destroy();/ ~; Z. a2 B0 C; \4 I, u
        5 x% A& ~7 _; a1 N
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
! W9 X- z# @; @. r* @9 I) r) ]. Q        motionSolution1->SolveNormalRunSolution();: B1 @0 H' P7 S4 \& ?8 V
' v5 m6 H( A7 n) e" y  V

+ K# n4 Y3 Y4 @( v
2 U% H2 @  N& U就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...3 N$ {- r9 ^! E6 @
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
1 Q* B  A! B+ ^# m% j
% L2 t" O5 T' l+ ]PartSaveStatus *partSaveStatus1;: N" @# J7 V0 \7 x' s* `$ g+ F
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
2 x- \  k; O* r  ~3 Z" E% ^: Z8 e
  P0 c3 T" E' q" a1 O- Q        delete partSaveStatus1;5 v8 b" \  f4 y! z  q
) W* l8 B& U; Y1 z. E3 V: F

9 e0 b" q. J* o: I; c        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
0 J4 e* c# c# ^7 q6 O, s& j5 s, q. f  ]
. T+ [) t6 S6 b1 D, V
* [/ U, d0 _% H% p$ r
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
3 [- j* Z! G& A! u! q/ u7 a0 `% I* Q; k; G) C% E
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);+ D. K0 y- D# t
# ^! ~5 ?) {/ I6 l4 V2 V
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);: z6 W, K% ^, W
, Z* d. ?. a2 ~8 V
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
" R8 k7 M! {. G2 l; A5 P. j& E8 O) h; d, j
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);- e0 _/ [9 r% r( @+ f6 ^$ }$ }) |
/ |: ]7 ], }; ]: v7 z5 ?
$ t" Q; j$ K+ x" m" b, \1 g  ~' J
        NXString motionSimName1;! H9 S8 `8 v3 Y) h% M0 |$ n
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");; O, u& `- q0 p) l- G! X1 J
! t: v5 o# ]' T% W) H, L9 O
        workPart = theSession->arts()->Work();# I4 f  E' t* m( U- R+ p; D
        displayPart = theSession->arts()->Display();
6 ]( a* ?4 c( {5 J1 v+ T* v( v, v        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
8 u4 i0 p- C9 \( t7 n6 E0 n( p        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);1 g) h3 i! }) {5 I5 b
" r! ~; t4 m0 v; s- W
        physicsConversionBuilder1->Destroy();
, y/ q/ a) ?3 @. C* _- R. M$ j* }6 a& l( y( ]8 ~: L$ \$ ]: l( B
        theSession->MotionSession()->InitializeMechanisms();( O& s1 A3 _; n: }

2 }) ~- o! _) @1 T$ i9 [        Motion:ink *nullMotion_Link(NULL);* b0 H$ [, D2 i
        Motion:inkBuilder *linkBuilder1;
& Q) \! K' a, G# g& V! F        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);9 R' n( m' k- W+ O! v

* ]; Y9 E! o$ c% [" K0 U        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));7 y& M! O' q; |1 O" O+ H: d+ W
1 Y" ?( U9 F/ C  U+ \: s/ ?2 H
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");3 K9 W; S. Z( P7 B- u2 h- s$ i# \
* r& o) I9 u& u4 P
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");; x! p, L7 ~: J# U+ k! `& t
% ~, s# {  O# ^
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");* m' X3 c/ n' k! ?! S9 v' T
6 ^9 G& T5 A. h) p1 X
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
* g3 X- T: N- K  {) c. Y  G
; y  f: s7 _, V7 ~- t' s, d; B+ u        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
" b! B% p: {  Z5 z6 N! P/ J, ?. O8 E
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
1 m; T/ L7 U* W: g7 R  B
0 T! w6 e( f6 n5 C( d        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");& I2 b0 y+ k5 c3 ^. {8 y0 p8 z

- T- l; c9 A, {* ]: x       
$ |8 S  R- `2 z+ `
# b: p7 _9 H5 }6 a; u0 `! l! @2 M        linkBuilder1->SetName("L001");
0 T( ?" T5 u) s6 L% S6 D; J) u) T4 X* J+ `8 ^' B
. m8 V. }, k4 Z0 n; V8 U& @
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));/ j/ V4 ?/ s$ W7 L
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));1 D+ K. U) Z1 p
        bool added1;
: M# j! V7 v# a! z& X3 t4 D        added1 = linkBuilder1->Geometries()->Add(body1);# R- X1 p. @0 H+ J* Q8 E- Q: A" `

& W: V2 j' d9 `4 m        Direction *nullDirection(NULL);1 d; }* u/ y  k9 O2 Y
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
  a+ `2 [, k9 G% i" }: O: y: R0 Q" H6 K- \, P
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
9 K" I9 C4 H' n! A6 Q% N' Z( @( y! s- [
        NXObject *linkObject;
# F5 F6 c3 e6 `+ T1 l7 B        linkObject = linkBuilder1->Commit();
7 i$ ~) I) |& o1 ^8 Z8 [9 [* ?4 H0 H' K% ~8 C

2 K! s4 w; Z, T' L1 A- ~        linkBuilder1->Destroy();! b6 C% R% l9 A/ o' ?
% Q( g: N& Z2 V9 R# o1 V+ {
# f2 R7 v7 [, _2 l: _. J8 u; f- g) }
* P8 a( V  U& ?: x7 [
7 T0 V4 J# m7 P0 s) y4 y
        . }( ~4 N4 c1 I1 v3 P+ E' C
3 `$ y' b' V6 ]; ^/ l8 `1 L
        Motion::Joint *nullMotion_Joint(NULL);
, ^# j  }- e* B- M        Motion::JointBuilder *jointBuilder1;% g6 y% y! c7 e, F) b7 }$ W/ q
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);' M2 H, d% s+ k: d5 h

9 P: P, D; N# H$ U% C8 p) S
. X( R+ q2 k( d* q( T1 |! x) F0 z  Q: u4 F: p
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");+ d. C$ ]. ^8 ~
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
) p) F$ K0 w2 e        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
1 y+ d: k1 j) Z7 Y/ l" B" Y  `        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
- R+ x' c1 J9 x: g- q5 {& ~& s5 a        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
$ u) e5 a, s, {% T2 a        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");3 z& Y4 m% J6 N8 \) M% n, V& z
" y8 A6 P. n7 i
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
4 r/ ?7 |2 N% s5 v        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);# Q4 _4 |$ o" C# Y/ _) r
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
* T3 v6 F% ?: j% h% Y- j6 H        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
: }$ |" s. M: q/ e& l* q/ q# i0 e        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);& L/ s* q+ {' z+ I) v
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
3 ]( ?( x& E4 K6 Q        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");4 ^/ s, O" S+ Q/ n5 ]
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
+ x4 h+ ]9 M3 w& Z        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
1 [7 i* ?7 K! d7 z8 G7 |, @% Y        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
6 I5 H9 D* l( X. f5 z        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);! p5 a& P9 u1 O- r4 U

3 A+ U4 X: O' R* C( ?/ Q        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));( y; x1 v* C8 @" N! P6 q7 @2 k
        jointBuilder1->JointDefine()->SetFirstLink(link1);0 t( t9 w# I3 f3 q

- w! }4 y+ f8 ~4 x1 w/ Z/ B: r1 p+ j  _7 y' Y
        NXMatrix *nullNXMatrix(NULL);0 _, `3 o$ q4 l2 a: h4 Y
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);- l' m0 |. g/ F( N7 z% {: |
" x1 Y+ D- O& I1 t6 B6 O# N: Q
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));4 G5 H- Q( h- N
        PartLoadStatus *partLoadStatus1;
, P0 n: e& T! |- Z$ B        partLoadStatus1 = part1->LoadFeatureDataForSelection();
% t2 m! ~' y  W0 U9 o( A8 Y5 G( q5 K6 I% Q% ?# `
        delete partLoadStatus1;6 h, g& P3 l9 w. ]- Q. n8 |
        Scalar *scalar3;- W& |& K; A0 b3 e- g/ M: @# T
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
0 q8 i6 y8 Z% V& d( @. K; \8 R8 u) F
        Scalar *scalar4;
; Q* N1 R5 a! a  w7 H        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
4 D. R/ @6 j& k5 P0 m# f& E7 {
4 ~+ k- h* Q  E6 l! r% F        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));2 f) [$ G" S* n/ r3 ~9 U+ e) b
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));. L* {8 S# w2 m; u
        Point *point3;
& Y- I( |  m& P9 N0 n        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
& b* I) V  h( m9 C  Q. a7 j
4 R$ s" [' `$ e9 s/ ?: V9 ~5 K' m& n* A
        NXObject *nXObject12;% V. ?# f# `' e4 z
        Xform *xform1;
0 L, j* G9 }' ^- Z3 B& E$ @6 w. O2 D        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);8 }; i/ i) W# V

" X( ~% Q# G: f/ v6 }% O% y        Point *point4;
/ [6 k: p. J: n+ B2 m2 _        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);0 j! R! I# m* n

/ n$ k/ U  h8 `        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
. [. Y1 `% @: ?6 N0 o) k. B6 l7 L' R" ]2 o$ a/ H* l/ L# Z7 J
' A. ]- [* g* o# q' B
        Point3d origin1(0.0, 0.0, 0.0);
. J  N; h4 w+ v- z' G$ E/ `# M        Vector3d vector1(0.0, 0.0, 1.0);; P3 \2 @) A" W4 j% w1 g# k
        Direction *direction1;" }. T2 L9 T1 b4 k
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
7 O+ a. _, d3 `# ^( w4 v9 C3 c& E" y3 L* p7 w
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
; R9 _# @$ v% m  L
7 N7 k1 m4 \! ?+ o) {        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
+ R& F" M% s6 }3 e3 d1 Q+ N% i& N: r0 a1 R+ m; N
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" K0 _9 C7 i( k$ D/ v  B+ [
) x3 Y; a% ~( I: M, n* B) N( g- e        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");9 J/ {3 |4 K9 D* m
" a- w6 c8 B. ^% p+ q* b

$ V) h1 J: {+ A+ C2 r7 i: v        NXObject *nXObject3;
  T9 Z3 ~3 E. T9 o        nXObject3 = jointBuilder1->Commit();
& u( r" p( F: }8 `& x0 R% g( Z- W
" _$ h$ N- y% b. h* c        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

为什么会有表情 - -!
* n6 G" C; S) B+ t' w, O) P& [5 L2 c9 o2 ^5 g* J  C6 W9 J  L$ ~
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
. h/ U6 L5 D; I0 s3 a- O
2 i5 v, {8 K$ o! i5 \8 E9 e/ o.....
% h+ i+ C8 D$ Z, u; n( s; [; j4 N; W9 Z( B( @; Q" X* r# S" e3 c) }
UF_MOTION_init_articulation();
7 G* C+ M/ B$ Q+ w; I5 e; dfor(int i=0;i<360;i++){5 L/ s/ T7 Z( \$ k
  UF_MOTION_step_articulation(1,&i_ret);
# ?4 D  d8 r1 k- Q: a" c% ~}
/ o" f6 ^$ ~/ }( m2 M' I7 PUF_MOTION_terminate_articulation();
/ s  x( }2 V3 G9 T' t/ q5 ~% {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二次开发专题模块培训报名开始啦

    我知道了