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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
8 @* E2 Z4 R! K, I& E: o2 N0 o- J3 ~' k) m+ S: L
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
* v' R# b) p& M7 S: x  J QQ图片20150521182535.png 7 H! B1 Q2 T9 s2 T3 J8 d) Y) V
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。: o4 f8 u! t% T
; Y8 D5 H- S- Y3 b
一段ja录制代码:
5 y" w; D4 d" \* u8 x* D& L% f* X$ }/ M. b! H
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
1 Y+ v+ X' o  F( ?  m        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
2 m8 j2 C4 ^: }( X' @. C        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
. o; B/ K% t8 h! ^9 }4 l8 k9 E& P+ k4 l' z1 M  G7 C% \

# U" j) v! J" A& t8 O- k, W        motionSolutionBuilder1->SetTime(10.0);( K6 @5 U; r' v9 Q" H6 G- k8 v
        motionSolutionBuilder1->SetStep(500);! o2 W+ t" d4 ?! q
        motionSolutionBuilder1->SetName("Solution_1");" r. N& [: O3 r, Z" U
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);$ J- h6 r9 t- U& q

6 d$ J! M8 N0 W2 u. m+ W3 h: {: W" E* F
; K% B+ j) I2 F& z6 v/ S
        Point3d origin1(0.0, 0.0, 0.0);
* h% D6 Y8 K1 o0 A        Vector3d vector1(0.0, 0.0, -9806.65);- o& B, t- L- `7 s  O
        Direction *direction1;/ z2 I0 L2 |% B$ f
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
6 q9 k0 c/ b+ D        motionSolutionBuilder1->SetGravityVector(direction1);4 p' ?2 Z5 T# y5 D; R, T3 {) S
$ s1 }1 j3 n9 g% c; g
        NXObject *nXObject1;; h- K/ ?7 ^. @2 F, j$ X
        nXObject1 = motionSolutionBuilder1->Commit();
9 p. i/ Q4 E  x: c' `        motionSolutionBuilder1->Destroy();
5 c# ?" z# b6 E& s        7 J  P  `4 {) F$ k$ J% V0 H
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));. Q2 W# J: o3 j5 `+ P
        motionSolution1->SolveNormalRunSolution();
7 S, a2 N/ p5 S' a
9 k( e& R! E/ U0 K
! e: S8 W4 j4 G% t
  e* j! ]1 E  \  Z5 C: c* o就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云.... t: [% m9 A' f+ H2 N* u1 D
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子/ H: z$ v& e- e, V# ]
3 ^0 J, J; U! t0 g% R3 \5 V
PartSaveStatus *partSaveStatus1;
8 y! Y' n1 E) ?" ^6 P        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);; K) ]7 u6 H# N& h5 |7 _: }" J
( r4 W% C6 ^* e
        delete partSaveStatus1;, R7 ]& J% w, O, N0 x
$ v4 P8 l' @5 B: q& I

  o0 h+ Y- @% t( R6 N        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");  F0 S5 J" n. t' c( U; s/ J  I

5 ?$ F6 p' c) ~5 c) T! U, p1 V: v; O! t
& B; C  t* Y* U/ p1 ^
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
  K! e1 M+ d1 v& m" |
& b4 R& w5 a& ?6 |1 B  W        theSession->MotionSession()->Environments()->CheckMotorLicense(false);( |- V1 N! V# D* F

( B+ y3 {$ |/ l3 x) z        theSession->MotionSession()->Environments()->CheckCosimLicense(false);0 C5 C. P- |9 I* w* p

: I2 y7 S- E3 l9 s9 L0 N        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
6 m+ G5 M2 r- S3 P, p
0 x; `/ n7 ^4 Z        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
, p  ^! H' W& g$ Y. `( D" ^  h  S; N+ ]0 a$ ?# a, s
/ H6 `" [0 R4 _* J
        NXString motionSimName1;
- [( n9 ^  {6 Y1 {1 x7 v- Q7 w        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
0 A5 m3 E7 Y* Q" d/ Y8 A2 i$ L
! j! B" e. o( ^  i        workPart = theSession->arts()->Work();! {4 P- |3 D5 G5 n/ [9 U& {
        displayPart = theSession->arts()->Display();& e2 J# [4 r0 M
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
* g* J! }, I- W0 A% S        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
( }# M( s5 n! I( {$ a! V9 C& H  M4 o
        physicsConversionBuilder1->Destroy();( {( O$ m# s0 K1 C- C6 V

' X) |2 t/ n3 k- t        theSession->MotionSession()->InitializeMechanisms();9 t! |' I4 e9 G! U# q+ R4 U

' i. c7 U/ p- v        Motion:ink *nullMotion_Link(NULL);
, N" u  X. `& H3 \6 N( ^2 _        Motion:inkBuilder *linkBuilder1;) R: E4 Z7 k" E' S. _* u, s" y
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
' p# T# W5 D$ u  l! n& K3 C$ g3 D. G
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));- i$ N( t5 f7 i' P, }  E

, W+ J( V4 D* U( ]7 `% c        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
+ f! c- _4 d0 X  P+ j1 h* Z' p( N5 f$ ~9 w
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");5 V( P6 b5 |# O2 c3 d1 d

' n$ C( V1 J3 j0 F* Z% A! h2 P        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
. s* b4 V4 J; i+ Y) i) T7 V
2 _$ q5 V# P/ _        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
( W6 J8 w& p( U' a: `. v+ ^# A$ K6 }
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
  l# l( V5 ^1 Y: a1 [6 |
$ Y) k4 }& T3 m& v6 X# Q, ^        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
+ z+ d; T+ y5 W' x
& W0 D2 p4 b- q9 C& M        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");! G- i# P/ w' z2 r2 m: U: _

- }' M5 ~. A/ r       
1 j" V; E# p8 Q7 i9 J; U2 r, t; T6 ?3 z2 |; `5 Y
        linkBuilder1->SetName("L001");& B! c- `( d5 _8 {4 y  D
1 V3 ^" P' ~9 o/ J: _
9 F+ ~! G2 |" h
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
2 m2 G$ M& S8 R  W3 W4 s        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
/ |2 ?& C5 i8 C0 f4 o        bool added1;9 W: J$ h) {6 B. U  o( p
        added1 = linkBuilder1->Geometries()->Add(body1);
. I$ Z: ]7 |1 c# S, `: ?  S
! {5 y% d  r0 c; B8 J1 W) ~/ ~9 r        Direction *nullDirection(NULL);: `& V0 z* K' s" ]
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
- L6 @: ~! e: I( _+ k$ b3 ~, |
* _2 X3 t: V8 n: u, @/ N        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);8 z3 f/ |: J9 p) w% a
( f- h( w& e+ }* K8 V" \! @- d! b1 v
        NXObject *linkObject;8 d$ e; n* L! O; C
        linkObject = linkBuilder1->Commit();% G: @. X1 j# h7 o# M3 g2 R0 T
! Q5 ~, I/ y! h# e. ~! G" X
! \- K. y* q: a! y5 R
        linkBuilder1->Destroy();7 r2 l. H; q2 H" b
, r& C8 L; N, k; N4 p( R% i
( V/ ]* b! Q6 l& F1 X

2 H; A) _" g  ^6 S* y" R# U# e  l3 W
        $ z" X0 [0 ~4 f

% `+ C$ M9 s  c: q* \        Motion::Joint *nullMotion_Joint(NULL);
! h( R4 U& ^5 l3 V1 E9 r        Motion::JointBuilder *jointBuilder1;
& `5 C/ d# P  y' X; G6 ]" K0 L        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
4 I+ O9 p' }! v7 _) B
6 ]% O% \. p7 S& L: }" G& Z; T$ U# S7 @' ?
! b) o/ H/ ^& n5 e3 @) ?
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");8 \& S: q" l. W
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
8 H8 c# M" x" r! E        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
8 J- X7 S8 g. y8 I& v        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");- }& g" d- f$ Z# f, V5 l
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");9 S$ Z# b$ s) r
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");/ a3 e) S. m5 R" A1 Y
; s" B; B% b2 c4 t
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);" S" ?2 o' B  z
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);  B# F3 j4 K" d
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
4 f- K, ?* ^( t5 }        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);, Q) k; V2 D4 q" `% l( D6 t
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);5 K2 @' q  v4 }8 b  t
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
' ^0 B2 {( S. B9 f+ x        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");2 ^6 m) P; ^4 L( P3 O& B" [4 i
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
% @) S% J7 x1 T        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
* t9 T  A6 ^, ]  o9 ?        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);5 _( _- Q3 Q% v9 l' X: U
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
" z! {, r: t9 J9 m
6 z! a7 C: a6 G        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
; Q0 L* ~% J( O, I0 Z. m: z! F        jointBuilder1->JointDefine()->SetFirstLink(link1);
8 f$ ]1 V! y' C, C/ c8 L% _/ m# B6 T+ R" O5 O2 p

. O/ ~* H$ c9 G2 ~: s" v8 g+ n        NXMatrix *nullNXMatrix(NULL);
  t% h5 G* Z9 M2 F3 `! I        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
7 T# E' I1 M7 `! j/ }
  {& [0 d: r& E( B8 r- s/ _        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));; k2 F* c( I2 I& o0 G, W. [
        PartLoadStatus *partLoadStatus1;- w) ~" W9 R5 q3 H; b/ z1 B
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
. K0 P& y5 \% m% `# W2 k( |
% l8 \5 A' @/ ~7 A9 v        delete partLoadStatus1;
4 L( b% P- N0 B        Scalar *scalar3;! g- ^3 N0 x5 O$ r4 S
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);+ [: i- y7 F" N* Y! i
$ ]/ b0 r9 r- Y. {1 d+ Z
        Scalar *scalar4;
( _$ U$ a! G* F% \        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
4 w( W6 o9 `9 `6 E
+ K4 X+ |8 Z- m% ?        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
8 S2 F7 F) x, }) @+ o0 j: o6 K        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));* L: ]3 l  h- B" u: A
        Point *point3;; i  F$ _6 q' Y; X+ h
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);9 [& f' e% V; u/ \+ f

- F8 \; l% E) i+ d/ A6 v6 S5 M+ l
+ v1 Z& ]& |. h" E6 A: W  D        NXObject *nXObject12;
1 F3 S3 U; {: X; E        Xform *xform1;1 t6 H: Q/ O' ~0 U: |! d) ^
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
) ?/ \1 V3 o: A$ R' s
3 [6 R& n. E7 X0 p        Point *point4;
% z' j: ^% X0 A& I        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
- C/ G! v* B+ g- d! @1 x4 }% @$ c, h' [6 b( d
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
7 y, Z/ }5 N; q8 a" F, N1 |- B: N1 c8 L1 i& }. G
9 d/ e8 o/ u$ A4 \% i) [. R9 K
        Point3d origin1(0.0, 0.0, 0.0);) R4 T  a4 }, w: F0 Z
        Vector3d vector1(0.0, 0.0, 1.0);  v3 {6 _" I6 S6 D$ h2 R5 s
        Direction *direction1;
) R0 z" B6 _8 U2 s" M9 j' M" H        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
! ?' B6 @3 r" a# E. e9 b, K( ?/ C( \0 C4 F- B* N! o
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
  C& u* Y7 `& W" [+ a+ J. H6 z+ g% ~& [: y
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
/ g) i+ `+ T- D. G3 ]2 c1 O
/ U2 m8 u6 }" _* \2 M- o        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" W* v  p% Y7 ^' c1 v1 @. r
- J5 R2 f1 S+ A8 m# F) q! g        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");+ y4 ?2 v9 O9 d

% q4 v+ l3 k& q- [/ T
5 C1 p% B  ^) ~. E        NXObject *nXObject3;4 T1 m' P5 R! R6 u( f, w$ P7 P
        nXObject3 = jointBuilder1->Commit();4 s$ L; L1 L7 g% Y! P1 V8 A: p
  F8 B1 z5 o: h* X& `: e
        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

为什么会有表情 - -!
, x( k  U+ h( ^* E) A. f, S2 v- S1 ~- U
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
- i$ k8 e7 L/ E$ X' m" w# a( C7 T, _( T& b& \/ Q; G* p0 H5 [" J: L
.....
% ^; ^7 t/ J/ W; |2 r/ V; _  m# I
& L1 o7 \8 `. LUF_MOTION_init_articulation();
( N" H  S$ Z' X5 R$ Pfor(int i=0;i<360;i++){
# b+ T( a: }! d, v; v( O$ C: z; {% p  UF_MOTION_step_articulation(1,&i_ret);* x( k& Z. L5 k7 R- b2 D
}# Y' \1 }+ R  I! @6 C! ~! v
UF_MOTION_terminate_articulation();
+ `5 U4 c6 G/ ^8 d6 H. n8 aUF_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二次开发专题模块培训报名开始啦

    我知道了