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

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

[复制链接]

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
大神们好 - - 我又来问问题了, O9 S8 i. ]5 x. N3 H9 W8 m
8 l" u- L: |. D( \1 b+ j
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。. Z' x& E; A1 ~. W7 k% }
QQ图片20150521182535.png
! s# C3 a& z) }' c5 O我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
) W! e6 v& Y5 }1 v
% |; u8 X9 N1 l. ^/ [" w- m一段ja录制代码:$ k) O; |: Z7 \1 X

$ y; B$ h6 S. M6 |& H1 q        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
) S, J2 E: D6 L& h        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
+ K! u. Y$ Y7 L# C) t2 V7 U        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);/ w# f$ R0 S) Q0 f) s; l
6 y% v# N% B' l6 g6 |% i; }0 c

) i0 W- ?7 j4 O3 r% T; ~        motionSolutionBuilder1->SetTime(10.0);
4 R! j! i) v' D( ^' y  q, d        motionSolutionBuilder1->SetStep(500);, m$ Z% v) ]7 S
        motionSolutionBuilder1->SetName("Solution_1");
0 n, [7 Q; I! M3 V2 E! P        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);+ z# I' F! L% H6 N6 K; t

3 u+ s8 Y/ W* Q" b; s' J
# D4 }4 |0 v4 z2 k! G
& D9 n5 z* F2 ?8 [        Point3d origin1(0.0, 0.0, 0.0);
2 H! G( I( L" X3 `9 E% K& \% `$ F        Vector3d vector1(0.0, 0.0, -9806.65);( R8 a- g( H$ Q: c' V. h, D9 o
        Direction *direction1;
$ n% X* U7 G7 C        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);+ f' `8 K4 D# B6 e2 p- v
        motionSolutionBuilder1->SetGravityVector(direction1);! |" k8 U# w/ D

1 S7 C, r3 k6 ^. f( v. e% X        NXObject *nXObject1;
  s- H9 n( C! I$ S, l+ q, U) H4 ?/ j        nXObject1 = motionSolutionBuilder1->Commit();( m% K9 |% q+ o; `; m* U
        motionSolutionBuilder1->Destroy();0 D6 v. |4 E- s; W; U" ]0 T
       
, t- s! {8 W+ P1 P4 z6 B        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));% I1 G) c1 S/ U& `
        motionSolution1->SolveNormalRunSolution();1 r3 [7 Z. m7 W; y& l
" g- {9 U* R6 R6 H  L

5 w) L" A, l9 S% v" P! ?8 a  m* k# d+ g6 k' j
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...- T2 n5 Z* l4 e- b
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子" O% S: ~: p" {9 W

/ i' u; K- q+ O* cPartSaveStatus *partSaveStatus1;
5 X/ `" Q! e! H8 N        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
- H& U% x$ J  c$ Z( ?
+ d2 J! r8 M. I' e        delete partSaveStatus1;
1 N5 {* R- r2 d2 p2 u( q9 y
1 a+ n; }# E: C- M+ Z0 s% l) g6 C3 {" @! W
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
: z- L6 i, {1 f, h) ]
. w; g- R; \, Z+ F: p6 k$ ]# A
0 I! f+ u9 I0 E- c" p+ H+ h; C5 Y( r' l2 k! n
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
/ w6 ]( o9 K* R2 G' z
8 _9 p3 L4 x8 ~0 E6 c        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
6 M3 j. \+ T9 c2 X% h
* N3 m" M3 d% g6 T: Q' f7 G        theSession->MotionSession()->Environments()->CheckCosimLicense(false);( B" \* g5 O: z8 m8 @) k
' }/ w% `; U6 O, X# c8 @
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);  n3 k1 G* A& m; Z; A

% E% L; d  D1 d4 y' ~7 N( D4 N        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
' ?: j- r; G; Q" I3 A* A8 B$ z( y9 Z
& Q$ |+ i" W) V3 `4 T. X( U
        NXString motionSimName1;) V7 g% h; U$ D
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
; X& ]9 @* b1 t3 Z& h
# m1 D' R. B* P* c        workPart = theSession->arts()->Work();/ A- K, x4 C% I9 A, ?
        displayPart = theSession->arts()->Display();+ q6 c2 n4 Z2 A0 z
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
, ^  @% {1 F+ ?) |. ^' U1 i2 e        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
9 T/ T0 c* S9 l7 B3 g. S& F1 S, E5 Y
        physicsConversionBuilder1->Destroy();$ X, p5 h3 e2 L% u9 D' c: \
% a4 x$ ]8 g, ^* r0 H. H
        theSession->MotionSession()->InitializeMechanisms();  K% l, k: [4 p3 M) C4 o( N
+ c. ?& Q/ J$ t1 ^* t) q
        Motion:ink *nullMotion_Link(NULL);8 P! H* d: c7 P; U1 F; n" J5 ?
        Motion:inkBuilder *linkBuilder1;
4 V/ d  D) M0 N- c' g        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
" r9 u# J& V: ~5 @! H7 n& f; R7 e' l7 \" `
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
; J$ `0 _1 J9 W7 @7 M6 b$ d' h" [# _- {4 X& f+ V2 {$ J
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
* u8 |1 J+ \, f- U; |5 u
8 V8 i; ?# E% m3 c* r' ]2 h' s4 \        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
# z; K5 Y0 ~' A8 v) @- u0 i+ `3 p! ?; ]0 j/ C7 T1 a
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
' J- y5 t4 j9 p+ _4 R, n. L* \  d, V7 g" \1 ~
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
2 l8 s# z5 u: i) M" Y# n) K3 b$ |
) a% w5 B/ B8 I' \6 }        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
! w5 R6 U% w3 H8 C$ M2 a" j
7 q1 r7 I" p2 Y% w        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
% ]- N9 ?) n/ }9 _% x
1 J9 n8 j# ]" a7 P        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
; W! a8 ]" F; a& b0 b) i. ]! Q- a) B0 p3 v# _' |- I+ [- O3 C! I/ u
        + S! c- [+ g" a+ F+ ?" v

8 D; @! {+ X4 W  M5 h        linkBuilder1->SetName("L001");
. {+ \3 V" N' o7 D  R  e# F( Z; a6 C: Y$ w

+ T' j0 y: h) r" u        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
9 A# ^; q; d5 m        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));6 |4 k- `5 x! C6 F1 B
        bool added1;
' c( T! }  [3 S- z        added1 = linkBuilder1->Geometries()->Add(body1);
9 ?  Z& N& G" Q
( c9 i) P! N2 K3 Z7 S) T        Direction *nullDirection(NULL);- o% d; U+ V# S
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);  u2 A) e6 F% D1 ]7 ?  ]+ d
* p  z$ m" f3 }4 P  j1 v
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);$ P. e/ O& M+ t
/ h& ~& S/ p$ v+ g  m$ d
        NXObject *linkObject;
$ f: Q$ ]: T% Q: r9 b) a7 @# }        linkObject = linkBuilder1->Commit();2 n/ ]" l; T' q: ?6 D, ]6 f
8 b, ]& N; s! v7 @! n
0 I' E$ Y2 A3 Y3 X( y
        linkBuilder1->Destroy();& V) J3 o1 Z1 K  `

& x9 ~0 r% }% m. \- ]
4 x, O" Y: g' W% r0 [- {( b( V$ r" C0 `# S" n( R: O: I) w

2 C& Q! @, T: t, S! ?  _) [2 {       
9 V' o! f; Z, U- r& w
$ [. B- U; h/ s        Motion::Joint *nullMotion_Joint(NULL);
) \% c1 q! ~4 F3 @: n/ k* C/ C        Motion::JointBuilder *jointBuilder1;1 I0 D8 J8 H1 t+ ]$ }
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);) _, j/ ]. p$ m/ q5 O

, E* W) _' Y5 n1 C$ z) `8 @6 `  f, v' c2 s. ~$ K

, r. h- G! I# G% D! j        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
" e1 u3 Z$ y& T9 O$ g        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
1 Z) i* p, |' d. ?        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
& ^3 Y& J% c" n, ?8 i) I        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");& E/ i. D# T& J: H; G# M' W& |
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
$ Z, @  q* |& s        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");) r/ P8 x3 X/ X* W7 m) f* O
3 ^% Q8 Q% `) S/ }
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
7 ^7 U5 U& k5 O: k  N( Y7 a, K2 I        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
4 n8 Z! y4 w1 {$ ~        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);3 l- V5 C7 U% Z3 D( ]
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);! W: X% ?7 X: W  V- r7 u
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);( @9 a% S' ^/ o/ ~. ?! ?
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
! K, I: G+ ^0 V, q/ ^        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
* O# W9 z( D" R1 a2 c        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);/ j* u3 x/ K" M
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");1 f7 m! Y6 Z3 }* b3 H' W
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);  v1 O1 @" J' \. e) Q+ t& I
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
4 R) w1 W* E" F' y2 d
7 [- `" d( g& X+ \        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));9 {6 A7 z- q: R
        jointBuilder1->JointDefine()->SetFirstLink(link1);
! z+ K* Z( Z0 B' f
" S7 h% E3 {& m. P& C  q
& r0 A" ]1 v8 M  `        NXMatrix *nullNXMatrix(NULL);8 v5 [: L! f% M! E( n0 b9 ]0 L
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);4 U* u4 S  M- f: ^) }
. F7 Z3 Z" z. p/ H
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));$ c+ T/ d/ l# }- m8 T( ?' Y
        PartLoadStatus *partLoadStatus1;1 P6 n( K* m- x* s0 h* ^
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
: i* H2 n1 `5 c! g" K
5 `1 t% o( W' G* l5 z% e        delete partLoadStatus1;
7 J! p% W( @# I. n        Scalar *scalar3;) L; S" |/ S1 i0 c
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);3 Q% T5 Z, |* L
1 f  I/ E; H3 J6 t! T# Z/ F, k
        Scalar *scalar4;) s* k4 Q( `8 n
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);+ M) Z  `) b9 y4 r! x! Y! @

4 c+ L  w, R, i        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));# g7 O/ a( V0 e+ [7 T
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
# f; I" J8 U9 |) s0 _  k        Point *point3;* c- ~  Z- v3 f" z2 N& z9 G8 I$ z% s5 O
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);+ x" L& w/ W( a6 I! @9 F/ o

% S0 ]6 N, f5 Y! i  O  J! B7 n2 g$ p2 o+ {* B$ s/ K
        NXObject *nXObject12;
$ e# u/ i! |: z/ m+ _: N, b& j# u$ Y0 `        Xform *xform1;6 T7 f0 o* N. P1 C2 L
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);6 b+ l! E2 q, Z" N9 Z7 v

. u: [& [9 `4 D' b1 d; ~        Point *point4;9 @- b0 A) q2 s  R
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);; E+ E5 K, j( _# ], q) w
7 l& Y$ f& s& j/ g, j; o
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);; n/ G6 u6 Y+ b+ `

9 ^6 R. l. |% x5 G: U4 ^4 I) o# j* T5 W9 h' p
        Point3d origin1(0.0, 0.0, 0.0);1 z0 M* I1 d$ e2 Z5 j
        Vector3d vector1(0.0, 0.0, 1.0);3 J- L) e0 \1 o$ K
        Direction *direction1;. d( w# X. ]6 P% f" L: C7 z
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);7 t; `4 g5 x! u3 t0 I, q, J

' l% r  n1 l( {. E" K# u5 e5 f2 E: X        jointBuilder1->JointDefine()->SetFirstVector(direction1);
' K; B" n: ^' M9 m8 G: `( ?, j! a
( ~5 }: z9 s* F! x* y) z% S        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
. e/ l; K+ K. G# _, `2 d( E  p% Q( p9 [( h
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
0 ]/ h6 a3 q, ~4 K+ M, h& E
* B7 S* o0 O* ?5 U' ]; A$ z1 m. B        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
) V. C* j$ C$ e( w8 A# U* D
  Q. E% T4 t& {" w7 t: t: C: R% ~1 u
+ w) K8 J& H3 k& q9 ]        NXObject *nXObject3;; I: d- \* \& V
        nXObject3 = jointBuilder1->Commit();. {- t: M& {' r8 w* D; W1 e

0 m: c/ }- d2 S4 R% e- v        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

为什么会有表情 - -!) ?  K) a. u6 G; z$ `/ F
( f  x: d$ b' b/ Y/ e
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
4 F- g% L- T2 ~6 ^3 T. a1 l8 u) w+ O# D/ O5 V' F8 ?# `
.....$ {7 N! F1 e: k' D% G1 Z

+ F+ e  l5 y: N; L& |/ w! ?UF_MOTION_init_articulation();
( E: V0 g- W+ Y  z0 w' a2 gfor(int i=0;i<360;i++){
, q5 U! b2 q- i/ H3 ^* P; e  UF_MOTION_step_articulation(1,&i_ret);4 _5 w+ x' i- }0 c
}
; u9 L5 W% x& o6 X, AUF_MOTION_terminate_articulation();
& U% |# Z, K! G5 D1 oUF_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二次开发专题模块培训报名开始啦

    我知道了