PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

3

主题

17

回帖

135

积分

注册会员

积分
135
发表于 2015-5-21 18:40:22 | 显示全部楼层 |阅读模式

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

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

x
大神们好 - - 我又来问问题了
6 K: ]7 |$ W, }3 }) b& d1 y* q" H1 X6 Q; ]
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
" U/ x. p/ q7 `+ t QQ图片20150521182535.png 4 F; w; X" g! X( H
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。1 i3 |  t5 r0 D, C- M3 o
3 _$ b0 G7 x8 B$ G
一段ja录制代码:# d1 i% K! x- u2 x, R
9 \% ^& _9 a2 B
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);* m5 K5 _. h; M/ n
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;, U- O* A& s6 b
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
6 @9 R* H$ b/ a/ o9 b" c
5 x, S0 C/ ]2 o8 y+ ?' ?$ l0 q2 X$ A* F; E( Z/ c. r
        motionSolutionBuilder1->SetTime(10.0);
7 f4 w+ Y$ q0 v9 o        motionSolutionBuilder1->SetStep(500);
9 g; n  A# w6 D6 S        motionSolutionBuilder1->SetName("Solution_1");, M6 Y/ H* ^1 r( B. A5 W
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);1 D  ]5 h4 y; O

4 N  o' e6 M. _  P  a. W" x; A- k7 X) Z  V. V# s3 E

+ a$ F' ]5 \+ g( L9 q; e+ H) r        Point3d origin1(0.0, 0.0, 0.0);7 e. l7 d+ l- Z6 _0 M
        Vector3d vector1(0.0, 0.0, -9806.65);& [- j6 _, Q' Y3 l& M& v/ T- P1 Z! \
        Direction *direction1;
% ?+ c$ X3 b1 c0 R& V        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
7 e7 J0 I; J2 c. d        motionSolutionBuilder1->SetGravityVector(direction1);+ Y) y$ ]7 J, e5 ^' c, ~( B

) `" y' R9 n+ ^0 G& P, Z% O0 B3 _: E        NXObject *nXObject1;- x5 N- }  I4 S
        nXObject1 = motionSolutionBuilder1->Commit();9 u' r7 g& Q, \9 t
        motionSolutionBuilder1->Destroy();6 X2 F. D5 |7 b; l2 f( u4 G) X
        5 K& S+ N5 c5 A' ?& I, f! w
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
3 d" F% O1 B* p0 f        motionSolution1->SolveNormalRunSolution();
( J% x9 ?# w  ?3 h" Y5 h0 C; [& ^# I! u' t8 ]. v6 I* I

0 `! u% k/ m. J4 o
; Q9 b3 l0 k# s6 _就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
2 L2 x8 d% X) ^" I# f0 Z
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复2

3

主题

17

回帖

135

积分

注册会员

积分
135
 楼主| 发表于 2015-5-21 22:27:05 | 显示全部楼层
再补一段前面建立连杆和运动副的代码....再前面还有建立实体的代码就不贴了....就是还想问一下...我的nxopen++里面的实体nxobject和featrue::feature以及body如何兼容ufun函数编程啊,可能ufun函数有一些可以用的代码但我接不上这样子
) F+ ^, Q. M8 q# A" {: u2 }8 Z! E, A) K! X/ J3 V0 ~# S6 B
PartSaveStatus *partSaveStatus1;  @) t; Y" f4 g" }  |; k, L0 o7 q
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);1 Q5 O6 y0 C" h! ]" B4 A8 A  H

  Q! M5 o8 K, n. _. a        delete partSaveStatus1;
! ]' R9 n% l  O- V4 k  m+ y
9 l( ~; z/ K  G% {
5 l% Z% n& V$ P' }' {        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");" ?% u" v# Q: W! x) O

  o- D( Q/ j5 m1 H* |+ k  s
0 w9 F' r( B# C- }& Y+ B2 @
! |) a! j  X  N7 H0 E, X' m        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
5 i& V" a3 _: j7 T3 G
" H; t# d2 B. L        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
3 _! T$ r% `2 G
6 j2 A4 o/ p  [$ M. i8 n! W# W2 G        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
- o( j( y; J- i$ ]* X0 I
9 m9 V$ S8 s  w3 y5 D        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);* w+ O8 j( I' E3 r8 V
- {$ r" O  j4 P. D* ^  ~
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);. H( v- R* \4 M" g' y

( s3 W. n; k8 f8 X& \+ U5 y3 {/ G5 C, i, [) D& o1 Z
        NXString motionSimName1;2 e: B7 ^" f/ A+ [: F0 B
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
4 ?% V. n3 Q# H8 ?  ~) N, O  d3 g' m1 c9 W- V$ x5 F
        workPart = theSession->arts()->Work();0 i* x) |8 P6 }7 J0 w
        displayPart = theSession->arts()->Display();/ a$ Z& e1 |( C  H& w$ j6 S
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
7 Z- R0 h; n3 S# m& O3 y        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
9 t3 K: w0 l  R0 ]7 Y# o
1 u5 I9 K5 }1 m* V" G) _        physicsConversionBuilder1->Destroy();' \+ d0 g! K" t; Z4 _: l

; {; I+ }7 l% s4 j9 X- B8 Z0 m* w        theSession->MotionSession()->InitializeMechanisms();
8 d  g8 @- H0 H! \% V' h
1 I' [( M, @9 E$ [0 |! ^        Motion:ink *nullMotion_Link(NULL);6 H2 k3 [7 T% c) ]1 v& ~
        Motion:inkBuilder *linkBuilder1;( E3 U1 s# p. }; h6 S
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);9 r' s& a, Y% w
0 Y; I- u6 a5 o3 n* P4 x
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));7 L% C& ?, x% v0 I- A2 C
8 e. e8 q7 V$ R) `% p' l
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
- n  X0 L; H. X6 ~, c2 `5 `4 V+ ]3 `! Z2 l
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
3 L6 H& I+ E$ I; a  S0 o$ t/ P# |
5 `3 y- |' ~+ x  y1 A; _        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
' J7 Z0 E" u- e" t1 u* P& k+ T. \  R2 R8 a7 Y  {, h; l, d0 d
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");5 c# h& q9 i- H6 d* L# [

! z5 L; r: j3 I0 [" |        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");- m% b8 F# x& p, c. G5 x" n

- Q5 d) _) D1 M3 v" O9 X2 ]# M# s% X7 h        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
. \, n' _1 ^: b* i7 c( l' v/ `: [8 U/ j: u' k, b4 y; i
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");7 }+ j" [0 o' ]! B: V9 n
! j0 {9 L$ g7 M7 E& K
       
) Y# I2 h' E* d" h7 n7 [; z
, {$ X, S3 t( B5 `! D        linkBuilder1->SetName("L001");# X' D+ U. m4 _3 @# C. h* q- f

) N& a, t' h0 K/ O3 [1 H$ l& t6 M% \
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));7 C5 ^8 D  J4 i' @" o
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));7 e. i! a5 J! F
        bool added1;* w7 B, A: B/ V# q. K! ^- d! _5 U
        added1 = linkBuilder1->Geometries()->Add(body1);; P, Y) L8 N+ C4 U
- k2 q9 n$ S/ @* }7 q' t) H
        Direction *nullDirection(NULL);( m' U5 v/ N, ]% |* E4 x
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
- C8 X' f: h8 z2 o' d3 Z8 r+ ^8 {( m  m/ ]  m
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);- H4 y# Z, X8 y
$ ^, l4 d- W* k" o
        NXObject *linkObject;! d/ p; p; m6 ?  j0 R
        linkObject = linkBuilder1->Commit();: g) P9 G7 a0 o  |7 g7 G
# ?! W  _1 t$ |# I8 D
& o( p# U) z9 P' q. _$ ?
        linkBuilder1->Destroy();
5 Z* e/ J5 n+ b2 F) X8 M8 q- ~2 p0 C2 A. \5 q& [/ A
, q/ W- ~2 O$ T# s) i( T, l: O( d
( U. j  m9 G! b+ `
& P# T) C( V" u; Z3 B: h
       
" v( q. J) h$ U7 k7 F& ^# J- f2 \
7 |4 P) L3 |1 q. ?        Motion::Joint *nullMotion_Joint(NULL);
+ T6 s7 q. T. Y% l        Motion::JointBuilder *jointBuilder1;
4 R5 U1 ]! k9 C& X        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);; Z2 X5 i- c! e8 F6 R, U0 L

9 b! b5 o8 t# J" t
5 k3 \( ~4 k& x, Y! I( H) k
- E  b( C6 f4 V- g' }# ~/ i8 ?        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
- |  m  I1 M& M        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");4 X1 w* v9 g4 [6 P/ }7 w, q( \2 w
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
& I3 S; N* g; S, ]7 j7 }  q        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
9 W2 ^7 K0 q9 ~& L/ S' s8 ~        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
& G' O3 C1 r/ N+ j4 I3 B+ v        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");, O+ H) S( Z. G0 [: s* z) _
  _! t. @1 ]& M' C9 E. w# b$ {3 p! K
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);- W! b, j6 m) o' @! R$ O7 T8 `
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 \1 N5 C# k& n$ e8 w: S
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);' |/ G+ @2 m% M" P# p: J
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);( F: Y* v5 B2 b4 @  u! K0 M& a
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);7 u0 u- U( U! f. g6 S8 Y: `8 A' e
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);& C; ^- C/ L, H4 E# K; f' U
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
1 Z/ ?* q' g! l' f        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);5 b8 h. P8 |9 p' d+ b2 \
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");1 m: Y& S/ P  R  V: N
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
) H5 m0 N, X6 k+ r- j; ~+ B. V        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
# m3 W+ ~5 u( [7 p
. P; x! r/ N1 m8 K% A3 a        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));# c# T7 K2 M2 g" ^7 a5 Z
        jointBuilder1->JointDefine()->SetFirstLink(link1);) p) `* T( \' I

" U' l. s, K0 C
5 s, H% y5 w7 e/ y. X        NXMatrix *nullNXMatrix(NULL);
% J; S4 T0 \2 ^        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
& H* h5 Q. ~" \, O
0 B) N% k- u$ N2 B  f, R* o. F        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));4 V" L+ n# n) R
        PartLoadStatus *partLoadStatus1;
0 l; O8 d6 T$ P8 z% n        partLoadStatus1 = part1->LoadFeatureDataForSelection();
, W7 J! G9 G4 j% {1 Y+ g
: Q6 O! r8 @) g) \- F2 m& y        delete partLoadStatus1;/ t& v. ~. N1 g8 }" n9 ~
        Scalar *scalar3;- f5 f/ e: [$ b( ]2 ?
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
# y2 a( b2 d' A3 n6 a% G+ f
: A% V7 o/ n0 M6 S# x- H        Scalar *scalar4;
, F( _% c( ^( a0 G# _        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
. U% _5 E& i& A" G4 P2 E4 x2 f/ Y: q2 n* k
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));, t; m# j( [1 I) ]
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
; {5 E$ R' ^# V* Y4 V        Point *point3;+ V# W* u( Y0 O: H% ~
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);" z+ z8 l7 E" m. e8 \; x

9 z' A6 o0 D; x$ n
6 z' ~4 O8 ?# D# @0 g" N4 `        NXObject *nXObject12;- d6 |2 x, x! K0 {$ n# d' Y/ m
        Xform *xform1;" }* O8 h) W" ]* U' ~0 u* y  r! g
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);8 V" \0 r/ [  W3 w; k# H
4 T/ `4 \6 L# h: j" \. j' g! l
        Point *point4;5 O1 x8 f3 |8 f4 Y+ }
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);( h7 e8 o0 \0 g  `5 f
% v! z3 J8 ?1 Q/ G
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
! n! U  ]- K3 {9 y+ X; Z! M! k# M+ H
% i$ [6 N$ R! v( ?. A! r7 l2 y- i; {! e  q+ e8 }4 s# Z
        Point3d origin1(0.0, 0.0, 0.0);. }3 f- b& Y: ?$ h. M
        Vector3d vector1(0.0, 0.0, 1.0);
. `* f+ `1 D) @1 D5 q        Direction *direction1;; Q" h0 S$ F- z1 ~  l5 b
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
, M6 a. }. N: [( A( f# d
6 k. d  K2 a& u) W' ^- D. W        jointBuilder1->JointDefine()->SetFirstVector(direction1);% T; j1 d% C+ Z& l) F/ W9 f/ A9 {/ }
$ i. n! B) l9 Y+ X0 V7 U5 \
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
5 H1 }" z% C( Q/ M9 w3 }6 \' Z
, t! t/ O$ X9 ~1 ?        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
4 J  G+ g1 V+ f. D& u' I. P  o- t: p3 c: n
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");: p2 I* r- c0 j7 X6 i% F
8 h) c/ K' \7 @+ {/ h
/ j. _$ R, B3 O& \8 z, h- l
        NXObject *nXObject3;* M# T2 w& C. B2 x6 `# f
        nXObject3 = jointBuilder1->Commit();
+ I0 r; @% A9 b2 o7 t' E
- X8 e+ `0 ~5 F; p% A7 K1 `# w+ O        jointBuilder1->Destroy();
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

3

主题

17

回帖

135

积分

注册会员

积分
135
 楼主| 发表于 2015-5-21 22:30:13 | 显示全部楼层
为什么会有表情 - -!6 H; S. B7 q: q3 w+ K

4 b$ h, ^4 w6 h# x; ]8 D有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
( l8 a$ ]; W9 ], W/ x, U
3 s/ V% y# w" }- Z5 d& u.....
% B* h' f% p( {1 s0 v0 B1 q# t2 F1 q
UF_MOTION_init_articulation();
3 v% {8 ^6 g, y0 @$ h3 ?0 zfor(int i=0;i<360;i++){
& l% f& H; `3 t; {  UF_MOTION_step_articulation(1,&i_ret);
/ a2 \1 ?, e8 O, ]}
0 A3 I2 w& t9 p5 t2 L. N! SUF_MOTION_terminate_articulation();
, W7 g1 z+ x! p1 X. H- l& cUF_MOTION_terminate();
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了