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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
( Q; H  c7 j7 U9 g/ f
  L. D% t) X1 ~3 y2 n. O, m我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。& _' ~& P7 h; s4 m. z+ A4 G; U' B
QQ图片20150521182535.png
! ~9 b) P+ d- P5 o+ h8 M$ J我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。' C/ ~6 ~1 [$ M% b' }. D

* C6 Z, S# L3 r: _" {3 D  p! P一段ja录制代码:0 N  U1 A, {/ ^) C

+ e) V6 z. N2 `        Motion::MotionSolution *nullMotion_MotionSolution(NULL);) L% f. C5 e  P3 [# I, a# k
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;4 p4 X- X6 m7 }- g( S* x7 v' H
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
4 p( ?3 b1 T0 v  D3 U( c
8 J# [8 E! P0 ]) C% U, i$ }# |4 J  Y. F" w
        motionSolutionBuilder1->SetTime(10.0);  E5 {( P9 C5 `1 b0 L7 F: g$ @! O
        motionSolutionBuilder1->SetStep(500);
4 G( H! O+ f8 i& u! O1 D9 a6 A) N! o% {        motionSolutionBuilder1->SetName("Solution_1");! W) ^' ^: u# p8 X; j
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
7 d  @+ {; c. ?7 H' S/ @' \4 r: e. n7 s6 ~6 w/ ^% M, r

4 q9 R$ t7 R( v$ f8 |, A
+ p$ l1 ?% {4 j6 k5 ~7 G" c; y# V        Point3d origin1(0.0, 0.0, 0.0);
5 p" g% Y& Y  z        Vector3d vector1(0.0, 0.0, -9806.65);
, q% o( A/ e. W2 _0 t        Direction *direction1;2 W  S) q* ^: R! k5 x
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);$ H1 S, x% h' m2 E" w; C
        motionSolutionBuilder1->SetGravityVector(direction1);  S. I4 n. O& U7 E$ X: a  Q

$ t8 i5 d; `3 F5 G) s; t  _2 {        NXObject *nXObject1;/ A. F7 `/ E" F8 O$ M6 D+ i; ?  Z
        nXObject1 = motionSolutionBuilder1->Commit();, d$ e% s* L  `7 ?  Q6 x# S5 B
        motionSolutionBuilder1->Destroy();
: ~2 i8 s/ o7 z1 E4 o  ~# r+ [9 _        5 i: Q/ r: T! Y) s
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));7 O' q- A8 }0 x! U
        motionSolution1->SolveNormalRunSolution();
% W  g: g/ ], l2 _$ U( H  @
/ U. R+ o! j. M+ g
3 P. R; D* O. U. d
6 Y: [/ U, |* i. P0 d3 r/ m( g" ~就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...' u5 s$ y% b% L8 C/ {
上海点团信息科技有限公司,承接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 y* \! c% u* E# i+ h' Y6 Q3 |! p$ i3 L1 I- {5 b1 _
PartSaveStatus *partSaveStatus1;
0 G9 }( }. Y/ i# ?7 d, ]- T1 _$ ^        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
5 A+ u) J$ H$ l0 w6 ~" z7 n/ @
" B6 B" Q' v  _& W; y2 \) A        delete partSaveStatus1;
4 H4 o0 R4 {7 K! x# d* q. P$ v- B% ^3 P$ X$ ^5 i* @. t

! k6 {7 S1 x4 F. K2 N( X7 H        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");, D4 I6 e- ~( u" x- X

1 ~9 k* ^9 V& E2 N& O8 M, Y
2 N+ Q" O) y$ G& Q3 Y4 a. R
& y2 p* F3 k8 f8 X        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
% Z; I& X- c7 L1 i- Y
# D& I2 K4 ?# O; a2 G) N3 j        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
. W1 \' v0 o. E! ?+ D4 k! o5 f- w* C5 c$ n5 o# X# p
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);/ c) G1 Z0 F4 o6 y
1 V$ b) Z$ E# v3 K- P% [
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
& J- l/ F' c" w% e& g. Q, Q* X
% K) i+ m: f" h2 |- g        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);& d, t& t3 Q. R7 C7 B/ t' D
0 _6 k6 V  ~2 W

% I8 l8 i0 |. ]5 l9 N7 C        NXString motionSimName1;6 {: q  P6 o. z( w, D
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
+ p: E* p/ _% L
& c' |% {+ t' F; a# z/ m, _        workPart = theSession->arts()->Work();
  T( ^& P& C( O" E0 ?+ {1 O3 B        displayPart = theSession->arts()->Display();
6 C8 n. v4 J4 O* I4 G        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
0 ~+ _: C+ {% x$ w        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
4 _0 B7 p% C" O. z3 Q& y6 n$ i; V2 N7 Z) R/ M2 O% T; W
        physicsConversionBuilder1->Destroy();
* P9 U. j& s+ }: m/ b2 E% b3 ?) b: _6 A
        theSession->MotionSession()->InitializeMechanisms();; N+ m3 W8 r5 D3 K4 d. K
& m- J) }; t& e7 \' ^
        Motion:ink *nullMotion_Link(NULL);
2 q0 H6 g6 n3 g) h) t' S, ~' d        Motion:inkBuilder *linkBuilder1;: R" `1 |6 Q8 w$ z# S
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
( F' C7 P& o! w& U" K
/ ^* f+ A4 D: N+ |$ h2 w        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
6 `8 i6 g3 Q+ S/ F' p
- F1 A' h" @* p* F' N+ C2 j* e5 o        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");& p3 T/ k2 W: @# T- k
$ \. Q7 |( b) B4 z( }0 r4 J
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
' o' [+ ~* v6 P) c; |0 _% A: x4 ^2 ]
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");2 @% `  f; [' F  ]) |2 p+ l) u
& ]$ |& D. }; |  f4 ?8 R: f
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
" d% m  t4 K& S6 x7 R/ M! V4 D" p. Z1 _6 j
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
; ]( t2 c* I1 f5 W9 N5 l
" K; y; i" k3 D        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");$ t6 l+ B3 ]1 N8 o+ K

# U* C3 t( b- H7 R        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");* B# _% b1 t5 J$ N5 `

- Y) v7 b! }. i        ; n/ B) ]  M! ~) a
$ u9 m+ S! Z. \
        linkBuilder1->SetName("L001");0 ]7 p2 J. l) S3 T

. ~# A& Q8 A3 Q2 n) j$ U+ L( P3 W; S* i3 b/ @8 p
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
5 u0 F4 S1 z5 p5 Q- C/ ^        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));/ }% h: p1 T/ J/ a$ |+ _4 C0 H
        bool added1;
9 x# u; o; |# L7 X% c( Y: I        added1 = linkBuilder1->Geometries()->Add(body1);* [2 s7 c% i4 i- N5 G
+ Y& x* F. g5 d! |6 ?, @
        Direction *nullDirection(NULL);( f/ r8 P/ h- g+ `% @) F3 B: Z
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);( E; ?  K. j, u0 Y. e  q2 h

( {* o! E& G, {2 I' p! y        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);& O, O* F2 |# ^7 U  q; C
  h! U$ _( }* D/ }
        NXObject *linkObject;
6 X. T7 [2 |$ s2 a  [! Y        linkObject = linkBuilder1->Commit();" z0 ~0 N: H3 r1 q, V! e
! h/ r1 a+ P3 \1 r( F8 R
8 ]+ t8 k6 U  }8 l3 @
        linkBuilder1->Destroy();
* p% }' q  w. H. A( L
; [# z! C! H7 O4 y0 z  x. L* ^
" `, |0 D' k' P8 q+ u" n/ G" X+ e2 s$ j# t! M' J" i3 l
$ n% c  E$ C  b/ ^" l6 z/ z$ Z
       
) N- I- g" l! {6 R9 d; W/ a/ Z- v4 b' B) W# L9 S/ x1 S
        Motion::Joint *nullMotion_Joint(NULL);5 y: e1 a: B6 }9 b9 ]3 i4 c0 h
        Motion::JointBuilder *jointBuilder1;
2 `! |( X" e- J( t7 G' w+ x        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);( Y& \( T) e  n

9 B2 |8 m) ?9 K  Y, t5 w4 U' g  m4 F6 @: E) n$ m

$ o' S2 q% V! M+ \  R        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
( A/ n) d! |0 f/ Z        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
+ m, v; _5 X2 a5 E" R; H4 P        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");1 B1 ~) m" g$ W7 {# Z" `
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");! w4 m3 x0 q9 }3 v
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");" A" {$ z; m% X$ G
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");" ?3 b- o/ J4 F& y) o) H% T* n' Y
8 @6 A( h- |" S( _! |
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
( G9 S" q, b" Y' k% d0 g        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);9 ]$ o# q" E1 Q0 C
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
1 f4 Q: x3 h+ w        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
# ~! {$ j+ F5 P4 b, k0 i$ b        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);9 K- K( ^* J1 o* [' n. T* l( }
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);0 H" i# r# ~+ u0 s5 f
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");, K5 R' j9 d8 o' X5 _4 f3 m
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
; b! O! ~/ b) |9 i0 G& m- h* N& b        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");7 I7 O& |# o6 T" z
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
4 Y( e1 Z* c4 S! C$ N2 P, K- Q( J        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
$ S5 P; D# A. M2 v3 [
% @3 Z8 ~. c6 V- W+ n, Y        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));7 ~8 C5 n7 Z) Q( x
        jointBuilder1->JointDefine()->SetFirstLink(link1);6 T% u' ~! l; x* q

6 s; T+ F# J+ a( K' H+ \2 A5 G' R# l( U/ R( B4 l( e
        NXMatrix *nullNXMatrix(NULL);4 w8 f: n& E. `3 }2 X
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);- S' Q4 b8 X8 _) E) H  b. ?6 [
1 Y5 D$ C2 l! o
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));- E5 E' u5 O3 ]( G6 ^+ U4 w; ?
        PartLoadStatus *partLoadStatus1;$ F0 J- ^6 \0 f" C9 q9 q
        partLoadStatus1 = part1->LoadFeatureDataForSelection();( \  X  ?; o3 g8 {7 r  Q

) Z5 O" E. D/ B( y, p        delete partLoadStatus1;
; S& ?" B0 S3 B        Scalar *scalar3;$ j, ^, j; Q# ~7 J) F4 l" Q- u, w5 {
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);  R1 ]- ^3 c! P$ j. W) A  u3 u

8 ^7 i  N" s+ Y7 H" D        Scalar *scalar4;
' Q8 ]/ n  o! k: [8 v* E) W        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
) Z. ^9 y+ W$ \% J* e4 Z; z1 O1 ?5 O
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));/ @* ~4 W. y: g9 D- @4 t) C+ {
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));7 x2 g& Y( z# T4 i1 U
        Point *point3;
9 \& f" V/ i0 Q3 x( W' Q        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
) Z# U9 `- p9 S7 m6 K; ]) m; E$ D5 |. T+ E4 j4 v& g

% x3 T. h4 }" _! u        NXObject *nXObject12;2 x9 V$ X7 O6 Q' I
        Xform *xform1;
; ?+ _  `9 n3 t2 C        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);' S: p( e$ V: U' m9 e

# z" a3 X% f4 @3 Z" ~        Point *point4;
! q, u& t$ h4 x0 J        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
1 [1 U7 e% h# }2 F- y0 b5 |$ ?% ]; p/ U4 K
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);& [8 `. }2 o; K8 o+ G- ], I) \
( y" t! u% c, A: k- F- Q0 C" X1 O
* j2 J) o3 w/ b; k
        Point3d origin1(0.0, 0.0, 0.0);
' `0 s6 S7 o1 A+ B$ Z, D        Vector3d vector1(0.0, 0.0, 1.0);6 K5 L, b3 Q( x! C8 y4 Y  o
        Direction *direction1;
9 \, Q. r, d( r/ o3 z2 M        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
& Z& b& E# z/ G6 L6 T" [+ ^3 o0 {/ m/ q- _5 r
        jointBuilder1->JointDefine()->SetFirstVector(direction1);& F/ P: c) f% t! {% Y& R
2 d! c% Q; a0 G: D8 G1 L
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
) b# v% ?' `9 n
( b- J) c  G0 d; R6 Y% y& S        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);/ X6 W$ S0 v- f8 g  U
) N7 C: @! A# o9 p3 P
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
+ F$ ?1 Q5 ~6 {0 e9 W+ B% Q( U
) j/ d4 x8 }! D" O  A$ Y4 Z  q8 V' k4 z/ J% y! [7 B3 T
        NXObject *nXObject3;
4 ~3 @$ x7 ~. z3 u- \8 t        nXObject3 = jointBuilder1->Commit();. b! E$ s+ r* X
7 H2 y' z3 U% f$ u; _0 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

为什么会有表情 - -!- p9 E- K- T. g/ h, m. F5 `3 ?
- P" l& s  n) w9 _* y6 h
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
- h+ [. g+ k4 U9 |- ?" s* F% n) U# m% f
.....4 C$ [8 x6 U# b% |2 e" G$ N8 w5 T

/ j% @7 e5 F+ _UF_MOTION_init_articulation();
( v5 _9 Y" P7 C! _for(int i=0;i<360;i++){( v* u" d/ T5 S9 [5 Z
  UF_MOTION_step_articulation(1,&i_ret);7 e" C& D# w  e& w; G
}: L: d+ b7 N! n, h9 b- v9 R
UF_MOTION_terminate_articulation();6 L" ?* n1 W5 N8 j- H* D
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二次开发专题模块培训报名开始啦

    我知道了