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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了) c; F: ^- ^, r4 P* j/ P
4 S6 k& {1 l- z: u! d  a
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
) K  w  l' G" S" d1 W& S QQ图片20150521182535.png
3 a: ^8 Q7 p( \+ {) Z8 Y9 j我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。$ p" ?3 Y9 z! \! e
* [5 N/ S* Y: ^% o+ t7 L9 F
一段ja录制代码:
* ^1 w+ T, u" v6 X, u0 P0 `7 S& ?3 b; j8 C5 ?
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);; c0 V  ]9 `, y5 v  N8 m
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
  v- W$ d. e/ _- e        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
% m8 w, \) F8 _: E9 z* G9 d. L- C
' n8 B$ G8 q& w/ q( c9 H( b/ P: V- h2 m1 H- d1 [4 u" R
        motionSolutionBuilder1->SetTime(10.0);
) E$ |4 z( W: m9 H        motionSolutionBuilder1->SetStep(500);0 R! ]1 Q) q$ D$ Q. Z/ `
        motionSolutionBuilder1->SetName("Solution_1");
* a0 ?( v0 ?7 K' _3 \        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);8 X5 O7 _7 U2 k7 |- M
/ L( M+ q) t2 m. G8 Y" _

7 z8 H/ S# e  Q( ^8 s) w0 l
- P+ Q% t7 m6 {' N2 h* {        Point3d origin1(0.0, 0.0, 0.0);% E$ k6 J) l  [  [
        Vector3d vector1(0.0, 0.0, -9806.65);! s; s1 i( W" [: }8 V+ n, G+ `
        Direction *direction1;
$ ~3 P/ \7 B6 }5 {: r( Z- ]        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);* N- @  N1 p9 y- z( \4 v: Y. x
        motionSolutionBuilder1->SetGravityVector(direction1);
% I* F' v$ w$ g0 y: A$ y! j) g0 C. D- |3 [* i7 d
        NXObject *nXObject1;. v, C* Z9 Z( ~& s: n
        nXObject1 = motionSolutionBuilder1->Commit();* P& n1 Y  M3 J
        motionSolutionBuilder1->Destroy();
# l4 r# T* `: V0 ]% U" L; A$ z       
0 E8 {( x$ B1 _) E        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));. z4 a: u+ r% o* f+ C
        motionSolution1->SolveNormalRunSolution();
+ T: j* f3 I# c; C8 R6 `% @) k/ Y- y1 m6 j! @! f& G( h% @
0 W8 u4 q/ G, e8 r

5 X5 F( G3 Y) N+ }/ y' p就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
! R. _$ a# t: L$ K/ B4 z6 U1 `
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子7 w2 |" P3 ?% d  V3 y

6 l% `5 X  Y( P$ n8 |PartSaveStatus *partSaveStatus1;% X$ f1 v0 n! ?
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);$ h2 N! a' [2 }$ O  _- |3 ?2 Z

; b2 U( c8 T3 z8 n        delete partSaveStatus1;2 j0 m- g! D6 S- X5 l; A7 j( w
7 h: a/ Y( [) T. h& ~
1 d/ q$ O, ]4 t% _, D
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");( H4 C: w/ d/ c3 T" P& A
9 o$ f2 H# f0 L3 l

+ x/ J8 w8 V& Y1 p3 }( \; q3 }- d
: M6 N( `0 V, u1 d4 n1 ~7 `. w        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);' U6 a0 l- Z2 M) }# s+ s+ {0 R
- R8 s+ {5 h" T7 P! A% d$ F1 }
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);% q* U8 l' a) C( R: ?9 v, ?, G2 b

) |6 T$ {# l' Z) z: F0 b, J' C        theSession->MotionSession()->Environments()->CheckCosimLicense(false);6 C5 l0 s+ M, |+ j
- ]2 g4 R. P' I$ G' G0 N
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);1 Q7 K/ Q- H. D. N9 \% d

( ^+ N4 k) V9 n0 e: P6 m+ T! a        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
6 Y- `' W4 ?8 H5 t* y
. S1 i7 [& q5 v; [" j% D$ `$ S9 G
        NXString motionSimName1;
7 S5 A  b  ?! I! \! g+ x        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");( l% q2 a* g! m, f6 u5 S$ P7 @

- g8 O' h. L1 e8 v8 h& r- T2 |        workPart = theSession->arts()->Work();
  a3 d! x- S0 s+ Z5 z        displayPart = theSession->arts()->Display();2 {# a* V1 l% b/ o: P1 t! o
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;4 ]# N' A3 O& P' M) g7 K
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);6 t( V: a* a" H+ G( E5 E' K

( Z; Y6 W' ^5 w6 K- }) f0 n6 f) w        physicsConversionBuilder1->Destroy();
8 W( `. z- N* ?4 u* C! ^" C4 U* T! \& j
: T) v+ `& S% G6 u8 Y$ P        theSession->MotionSession()->InitializeMechanisms();
) X" n# K* s; O$ \
) H$ X9 ]2 u# G& q+ {        Motion:ink *nullMotion_Link(NULL);( v# d- v. b( K# r( y5 }; G
        Motion:inkBuilder *linkBuilder1;
( M; n5 N# b5 @0 f, K" U" X8 {8 P        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
! J, {3 g# F5 _9 m  X$ r% I4 ?. k% s% l3 e
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
* ^0 R& ~( }1 G) M9 x* t: y9 {2 A7 K4 u- W; B; }- V
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");+ y( p$ }) N6 T4 S/ w) \5 F+ a1 V+ M* |
% r; J0 h7 |; s
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");  `) w4 m  H" K7 i# V3 V6 a

, C  C) ~% H" E" u" k& X        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
2 `' q: o# q! U7 n% `$ s3 f& S$ Y  `
, j6 `7 a9 x5 L. {2 N$ k: N1 b: _: b9 H        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");% V5 y# X# u- I

, |- x# M0 v9 Q3 }$ [        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");) O, K9 A+ V9 v: U" M7 c: D

6 Q1 M3 }9 C. v7 Q- C8 E4 U* _3 u        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
3 Q) O( p/ G9 T6 n' b% r, q9 G& X& I( x( ^
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
! J0 \: ?0 @4 R& y
1 j% w: {  e4 Q% c! M* o5 W       
. [9 A; g, F5 P7 s
. `  |# ]5 p# G' m+ j" n( u        linkBuilder1->SetName("L001");
9 C% i% T( M6 x& Z. [7 q( y9 U6 J9 B/ @2 g7 e# b1 [
1 k0 d( p8 ^' P' d4 X- `7 h
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
; K. Z6 h! h. L. {4 g        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
3 X& F% d1 n! X+ k9 C* e        bool added1;/ X' v. b7 E9 P3 [* I. |+ T
        added1 = linkBuilder1->Geometries()->Add(body1);5 l! j1 P# r' }. O5 u  q: l- @
$ R+ w1 F* v- b  i
        Direction *nullDirection(NULL);, {4 U% }6 ?0 S7 s# ]
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
+ X- ^- w% L" T. u) l( ?( Q
$ }* |; ]9 @, W& {. h4 I" j$ W4 N, Z        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);+ D' ^  T1 }; j$ n( a9 b/ ]" Y
9 P; R2 k  y0 Q+ @0 v2 Q
        NXObject *linkObject;
# p) P) ?0 `( Q; i8 f5 f* C        linkObject = linkBuilder1->Commit();
1 t& t9 p+ i6 n8 X1 i4 T. f8 R2 u  W7 @4 }
. G) j1 j$ g% ]: W$ P3 S
        linkBuilder1->Destroy();% ]% |) ~, l% ~) D5 l0 Z

! _7 k: _5 g" ~. `! E& z
/ x3 I4 R. S7 x# c
. D7 K2 I' y' d$ ~  C  s7 s7 t" {& E, h3 K' \  x* \, |! f- w7 R
       
2 ^1 Z' q0 ^7 z5 R5 H9 o. J3 W: c+ d  Q, Z1 C
        Motion::Joint *nullMotion_Joint(NULL);/ {8 V+ C2 r1 I* h+ h3 D; y5 y
        Motion::JointBuilder *jointBuilder1;* U* t* G# d1 J4 t+ \0 m
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);. ^' a/ b, t) g7 o/ O

: G. q& i- G1 K
: w* Y+ t7 I" q! \+ M+ R, v- s- }, v
8 j+ T$ _% R3 O! Y6 _( J        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
& P( Y# ]; ~. a# R$ j        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
- C# j0 P; z1 d9 R        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");6 o4 s  L3 ~' U
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");5 B; y  [# H- x) I/ {& T4 a1 N/ o
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");0 e- N( u. @$ S, X4 }
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");0 N' I1 b/ Q$ p- p/ W  _4 [

' E4 H+ k3 c4 {2 {        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" f  R7 E; d5 t7 [. Y: n$ p        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
1 S! ]7 m- W/ J- E+ y        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);$ d, H. q1 l8 c, G9 D. X6 j
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
( {5 t' X3 ?6 I, G9 {* ^        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);0 }  T3 d9 M1 t+ n9 E, R8 N
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);: P9 B' H: c$ I5 a, v
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
5 ^6 z2 }0 S% X& ~( S8 N: H; q        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);1 X& k+ j/ h6 I. J
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
3 B! x9 C2 A3 j0 A/ t/ P/ P        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);8 H( P9 m- m/ h" R- L9 O" T
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);7 @% d# _7 F. N- U3 H4 C

) y% A3 S! D" j) K. ?# n. R  j        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
9 y) ^. J1 _' P. c/ J' \) x        jointBuilder1->JointDefine()->SetFirstLink(link1);
/ l. g8 a; x# m+ ]1 s" e1 P$ T3 m' i7 |+ @
6 }5 r  V" U5 ?6 p) d# D9 }
        NXMatrix *nullNXMatrix(NULL);% K, ^" n9 ?6 N( {3 q
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
: ?% _, ^! m1 K& w8 S$ O9 K6 n" ?7 L6 O# F
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
8 @/ D: J* p2 Q: f! s  O! j        PartLoadStatus *partLoadStatus1;
& y' k  O1 }7 j9 q0 F- _        partLoadStatus1 = part1->LoadFeatureDataForSelection();
$ I( l6 D/ `! R; a$ D* V) }& U1 _  t5 C( X) k
        delete partLoadStatus1;/ q: J( e% q6 R& N0 u: M- B
        Scalar *scalar3;. j& C9 \- ~; A# a6 W! s( h
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
* I9 Y- c4 J$ B, f6 U! X& S3 L6 q) |  _% V) T
        Scalar *scalar4;& y& Z  q) O/ a& @
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
6 Z7 R; T; N7 B5 \2 }0 s. Z0 p2 X: d) B# S# l1 V; i
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));$ y" B- V) a1 U$ j) z
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));$ o1 V7 ?+ Y1 @3 V# l: ~
        Point *point3;* c( q4 `( |# m9 e: @& ]: ~/ S# J
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
3 h# x& C4 z1 g/ E0 r5 |3 v6 W3 H
( Q6 y  S! U0 T# P" O; }; j
. z* p' N# i$ L* M        NXObject *nXObject12;
9 e* f  K! L) \: ~; R5 H& k        Xform *xform1;
& \3 L" i+ d) P) E$ j        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);  m  l7 J2 z6 o! t/ n0 i: X( \7 v, f
$ |. W2 }6 N" Z; T' M0 _
        Point *point4;
4 U" K; r" e* D2 ]4 |5 h6 t        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);% L: l) [1 Y: J

9 O1 i2 p1 }$ N7 p        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
$ I! ^7 [# }/ B0 {, }% z7 h3 I) V1 x! G5 W6 v$ ~
4 o) X1 c: L& K4 P5 y
        Point3d origin1(0.0, 0.0, 0.0);2 b; B$ l0 n7 _: @4 @( h& G/ M
        Vector3d vector1(0.0, 0.0, 1.0);: ?4 M  _1 I; a5 ~) J3 d
        Direction *direction1;/ a2 a9 K- T8 F. V6 y1 j  N7 N/ P
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
. Y: Q/ X' z" F2 q" y7 j9 }9 y; F' P
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
) [) p9 y  }/ i0 l! _4 c
: c+ h. C8 _% ?$ k+ ]        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);* h5 c' J* T5 i1 G" t

  y: a4 }0 W5 n/ t3 r3 N        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);% m& V1 n8 ~$ G7 x  N: W: K% {9 k
5 G1 F! t2 H" J
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
6 P9 I( ?6 s$ D/ O3 I
$ \- e' s& y  T) \
1 D' s, n4 V/ h, V; s        NXObject *nXObject3;/ h, ~. v& k' F+ v" t$ u
        nXObject3 = jointBuilder1->Commit();
* a0 n# B" ?, N1 E9 T7 L
3 M! ^) C- e2 U        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

为什么会有表情 - -!1 X' O4 |8 H$ v7 p3 A
% q4 i5 d1 R* v$ }) o
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码' ]# `; W! `. w$ r# F+ a
, t; e, i8 O( U2 p6 }, ?
.....7 V* A$ H$ ]5 g3 V  v/ O3 [0 e
1 }" e! w  A4 G; @
UF_MOTION_init_articulation();
7 {$ c' R( w, \) @, zfor(int i=0;i<360;i++){9 }% k! R1 x7 O1 [; d4 h
  UF_MOTION_step_articulation(1,&i_ret);
0 W8 {/ Z. m( s! ~# \; M6 r}& |) W; _, X: W) w$ _0 ?
UF_MOTION_terminate_articulation();
8 ?4 {, D5 t: N/ WUF_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二次开发专题模块培训报名开始啦

    我知道了