PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了( G+ c0 K& t; h! M6 C- x4 t4 t
2 m# r; J8 h! Q( [
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
/ K6 m: y( F# H! D4 Q QQ图片20150521182535.png ( I' s/ S3 q7 i' o8 d
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。; t5 f) ~" M+ \: A

  w0 b, _8 p# D- E一段ja录制代码:
3 x/ G" m7 j% x) q, Z, y( d" b. j3 i2 Z* _$ T% C. v$ Q7 H
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);" a: M. b! X) V$ G/ }: S
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
1 W( K7 R+ W0 z7 [, o' z" P        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);3 ~) d! C# }  C) n3 e
/ f/ B2 ^, y1 o
* ~# K& ?- J8 ]( G) B
        motionSolutionBuilder1->SetTime(10.0);
6 ^. i  m' d4 M        motionSolutionBuilder1->SetStep(500);* i0 w/ o  S; r9 d  R. V* o
        motionSolutionBuilder1->SetName("Solution_1");& e4 E1 F; l' K" I
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);/ Z# I0 R8 L2 `7 N
$ l, X/ q% f. m! O1 H
" Q+ o+ c: d) G3 i' j

. M) [0 X- G% R2 t; K$ ]1 {- W        Point3d origin1(0.0, 0.0, 0.0);: G$ }0 S" z- ?
        Vector3d vector1(0.0, 0.0, -9806.65);$ O8 ]/ W! T4 L/ i6 A
        Direction *direction1;1 Y, A: r" b* q) d# \3 Q. b
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);/ Q: I0 o$ Q. x" D' w9 ?
        motionSolutionBuilder1->SetGravityVector(direction1);
( _, Q; q# D+ f2 W# V; I+ j9 E3 a& M8 D! s3 a0 o5 I
        NXObject *nXObject1;( b6 l1 e8 n& x& T3 i! m
        nXObject1 = motionSolutionBuilder1->Commit();
+ `3 b% [! F. ]        motionSolutionBuilder1->Destroy();
! t* N% i4 }/ i7 A/ ^' s% R       
3 D6 k5 k: F1 h+ f; i        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
6 M, J' q/ e0 _' C        motionSolution1->SolveNormalRunSolution();" t/ M" C, A3 y9 w7 W
5 W4 d; T. M" Q) s) L; V$ T" ^2 O8 U
8 }  ^& J! k) L; b% r9 f! O
! Z! n3 T. o6 Y' [  a  a! v3 _4 T
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
& Z! k% T3 f" @+ _4 X8 E
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子# C& E/ t# n' U4 p7 y6 Q- Q

; ?. G% S$ E+ g! e1 v$ }, iPartSaveStatus *partSaveStatus1;# ^3 n" \9 x3 D( c
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);7 w8 ?3 m( H1 G4 t

- D; r4 Y5 ~- I: S        delete partSaveStatus1;
% ~7 p9 F" z4 m8 o5 h& [, I/ x3 I7 f9 h5 X* s- q+ d, m

0 E$ ?1 O) j% r& i) d        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");) Y4 f. J  `1 {4 a& ?: l4 o2 U0 v& [

$ {+ |5 Q0 j: s* V6 m8 Y" T0 ^2 t" b
( y! F- E( N# y! h5 j8 `* j9 z
3 K: Q0 Q5 Z9 m* r! M1 k/ N( O/ H2 F        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);+ O& m# M! r* L7 X2 l7 F
3 m) n' l2 e- r1 h0 [. }! z) b" M( k
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
, Q- O$ X7 j, ?  d* w( M5 J) ], v8 C3 }
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);8 o4 c2 X1 l: f) A
1 w8 t& H6 c/ L5 F/ I2 k+ M6 h. D0 \* D9 M
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
, o9 K7 H6 a8 L$ r5 w# G
5 Q( Z# s( o6 h+ a% O. y# i        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);3 M: E/ b; Q* q+ f

8 ?2 w( Z% [0 ?
/ U9 ~* v. \. n3 B: l" S        NXString motionSimName1;- M" a% q+ x1 c
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
. d5 R& K4 C! z2 a9 h/ W7 f' z8 e; ]% H9 l- T! k
        workPart = theSession->arts()->Work();
) S0 z" E' V$ Y! W  r: n" V        displayPart = theSession->arts()->Display();
* E: I; U  R8 T! P. |        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
( Z, g* _' ]* `        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
: q( X# f) Z/ l2 {. Z5 X  l' i2 r- K3 w8 \+ i( `0 A% _
        physicsConversionBuilder1->Destroy();5 `' ]# [- }5 q. @$ h; [, C

8 j, l( x) @* M6 c1 u        theSession->MotionSession()->InitializeMechanisms();
, W# y4 d6 w% I- C" P. z" }  E2 w
$ U. _% ^4 V  G: m/ v' B% g        Motion:ink *nullMotion_Link(NULL);6 x) `( o& r5 U6 Q# U) f, D
        Motion:inkBuilder *linkBuilder1;
0 S7 D% z! {5 V$ J, O, u5 c        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
6 P$ E: S( W! T- q- y5 t5 I: p, `/ f
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
  v) ]( V7 I$ \8 K- T8 ~' z7 I% ]6 S6 F' n2 Y) X
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");& F6 v. R) i: m2 Z7 k
9 P+ a# T# ^9 \" j
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
3 n; E' J& K7 f) j. A4 ^! `
% R5 I) D: [1 a0 u7 @8 L        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");: J3 |+ Z, R9 v0 h' F4 j

% y9 g3 x7 v8 p& z( M8 Q; f        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
* h& c4 M- |: a/ l7 `' |
" j6 ]2 }6 l/ Y        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
1 ~6 V  j) |! N9 [1 P( m) z  v3 S7 m+ s( _6 O9 }) F1 Q
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
! k6 z# a* f5 T% L* W- v# n/ R
/ n* I, I8 }/ C# q: D' q. v        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
* {( c6 D5 T* b) `
! j' F$ E6 G% \( y        4 F' R) T8 ~. h2 @
6 f( L) t* j+ L+ p1 V* f
        linkBuilder1->SetName("L001");) H: q6 S- k: O, I5 [

( g: W+ i+ O  O2 X) I
! |& S9 O+ m0 @9 n0 i3 T        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));; v+ _5 U, W7 i; Z# z
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));$ Q- ?& r# V: L, O' n0 z5 n/ h
        bool added1;: t) t2 K5 c8 L9 J
        added1 = linkBuilder1->Geometries()->Add(body1);( R6 i/ W, G3 T! N( S8 {6 A
, j% N7 L# y6 `2 `& j0 ]0 `
        Direction *nullDirection(NULL);% E: ]$ a7 A: Q* J6 q
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
4 u- J  J- X3 m% U0 s0 B
8 f) N, x0 a* x/ f9 _& {- G5 e        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
6 W& M- n( U$ ?7 P; d/ Y5 _
" M. h# g2 s. R% {1 X! z3 w        NXObject *linkObject;
  Z1 j! V' H2 G) @        linkObject = linkBuilder1->Commit();
$ [  I1 t1 s# S* J9 O5 D! k0 W- H1 W4 o6 B4 l$ L# ]$ c  ?+ k
  e/ U7 m3 q; I4 \: }2 i& r
        linkBuilder1->Destroy();
. m3 A9 f: b7 @. C- t
# d+ ?% v' l; O% G1 X4 b* J; f, ]/ k' J$ c& v* j( U( I' }* h

, c, J7 h6 _2 K+ M3 V+ T* C; L; {" N2 ~0 o/ q
        / \( s; V1 z; `

  I& V7 \  e) V5 G1 x9 N. X        Motion::Joint *nullMotion_Joint(NULL);  L5 I. b5 o3 u: m
        Motion::JointBuilder *jointBuilder1;
7 h3 L" h$ [$ d        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
: ?# [6 G& V: Z0 `! d/ [/ E: e& i- b8 l* n7 E; L/ g1 p
2 y) z; ?8 h# s9 s2 t: P5 U
* b+ d; e  V$ y  ]/ G/ K
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
  j  T  L$ P) p: I7 b9 ^        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");- `2 j0 O! _7 m( T" f
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
9 Q1 h! X3 G  N- u        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");! K  }. t9 n& s5 \: k$ i
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");) @1 I3 E8 I7 A% }
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");" _7 S& l, w1 P# h( m5 e9 |( d
. r* f+ {& ]; g9 q6 J
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
4 l) u  l" h) L( r; J        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);9 n' M* v3 h8 f- v$ F7 L/ j: `
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);6 T/ E0 }7 w6 V$ {
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);- H/ \' d: o( a0 \- V
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
( F* }/ C. N# U, m        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);9 N4 G, M7 j$ n" \# t6 f
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");  X. Z* S4 M( K
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);# a5 L+ }# N1 c7 Y+ _- \; Z
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");, p( I/ o7 v, ]2 O! r
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);5 Y9 v- X+ n. T# t/ J
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);7 Q' i6 B! w2 h4 O, d
+ K( s2 V4 z2 [6 j! h" Q4 p( a
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));5 x$ N, n# N- a) v/ o# ~0 b
        jointBuilder1->JointDefine()->SetFirstLink(link1);" s/ q: V/ w/ g0 X: F, ?

8 V# y  C/ H3 s, I; j$ v8 K, S* W
        NXMatrix *nullNXMatrix(NULL);) Q7 a  k) J0 @9 P3 p
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
+ u2 o( H, Y' ?3 m- V' D9 H: t) x' s* p2 Z( J5 H6 H5 f* d
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
7 n1 b* A6 {! v. }        PartLoadStatus *partLoadStatus1;( j8 V+ q2 ?5 f: e; ?
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
. t$ K- H% W; T% _3 m1 ~
* ?, q4 A* K9 ?" M        delete partLoadStatus1;
, y. F) k9 l+ [# T: ], ~! i5 E        Scalar *scalar3;' G* u! A! J; A
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);% n# R2 Z1 P" ?' U) Q/ _' h

$ C- F" j2 ^7 ?- u( J        Scalar *scalar4;0 Z. Q5 j  S( z# q3 k
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
. h0 k' h# e  {
3 R9 w, V! u: G        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
4 x3 y! D" ]8 Q3 m  d8 N+ o        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
6 K( c! n- [" T        Point *point3;
5 n$ m0 S7 k, n4 n  Y! g        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
$ a" S) ^) l* u4 v
- z6 m/ X7 w7 g* d; N) A( y/ E8 P( L% G6 F  r  @
        NXObject *nXObject12;1 X' {7 |# k6 C" Z
        Xform *xform1;
* W( F4 V* d7 q3 a- U2 O. D8 |        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
2 u! F: }! W, B- w- w+ D, O0 @8 Q: N+ U/ Z& m/ L. l: U5 h% b
        Point *point4;" S. {, @8 E( X( A1 Z
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);( r7 _% E8 t$ a! _" l, j- b. u. g
0 Z) E9 }4 u* a( e9 g' E8 B
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
& w1 [5 P  O' v) ~
, f2 [. J; _/ e7 p9 `0 O: O9 o/ d. h; L
        Point3d origin1(0.0, 0.0, 0.0);
  v6 X( W+ S( w5 A5 B1 c. _" v. }5 P( p7 y        Vector3d vector1(0.0, 0.0, 1.0);" _8 e. Y  |: m) O, j
        Direction *direction1;% H) R' ^  ]5 _/ Y' d# F- A) }
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
3 j0 X! p9 V; h; M2 _* ^! x. T9 F. C: Y7 X, ?0 `8 F8 e) w6 l2 t
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
% U& m# l1 S/ {$ q( v& ^8 ]# n' N! c5 c+ X4 n" R) r
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);( p2 O2 E  L" t: m7 R
9 }3 {% I$ J3 O' G- r% Z+ [4 t
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);. Y  b2 X  V& }; Z+ @6 M

1 H- `% M" v, @        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
3 O/ p( [+ y9 g( ]: [) D. S: q8 X) }. w  i) ~

( o. D# G, M6 u4 \1 d* h        NXObject *nXObject3;4 s/ s' G$ p" u' T) X7 B2 y9 G
        nXObject3 = jointBuilder1->Commit();
6 j6 w5 }8 t8 z! }. y* A
% p2 h! P9 ?3 ?" a) ^        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

为什么会有表情 - -!7 p; b+ a, z* Q  W

. {5 I. b9 }6 ]有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码- j/ F& |. k9 w: G; }/ J2 s3 o6 ~
1 z, d6 p0 i  n4 t
.....
/ @1 U! Z1 H' R5 N% h
' p0 N& {9 n9 }8 @UF_MOTION_init_articulation();  {$ v5 l" F1 d6 G
for(int i=0;i<360;i++){
7 t& |5 R) Q" |9 p  UF_MOTION_step_articulation(1,&i_ret);
2 G4 o. m% b- E}3 Q& G! O# V) ~
UF_MOTION_terminate_articulation();
3 T5 n5 \7 y  M. T. u4 x% U4 r" R! P! P! FUF_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二次开发专题模块培训报名开始啦

    我知道了