PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了6 r7 ~3 z( P6 N" {% G1 O

5 m8 J% }# q! H% k( m. g4 z1 u我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
+ f% G  R9 R# M& a6 P* ]5 l QQ图片20150521182535.png
1 _) G: l: y/ J# q2 G4 p' p我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。' _# t' q. K* L1 ]1 k$ T

7 J" O2 E# A# A一段ja录制代码:* K# B8 b* x4 B) n& X& W" v* p

8 B3 n, H6 @8 E& t        Motion::MotionSolution *nullMotion_MotionSolution(NULL);2 ~9 k# e( ^! H7 t! W
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
; _( ^- U( o! [  v+ w* y: n        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
$ ~+ b! L3 \% r" {- j0 \) ~  ~& D* [( j; V3 {

' b9 n0 d4 Z. f        motionSolutionBuilder1->SetTime(10.0);) }# _  ^+ p7 d7 R1 A
        motionSolutionBuilder1->SetStep(500);; S, R- ]) b1 Y
        motionSolutionBuilder1->SetName("Solution_1");" {' ]- i; \) [9 ?; s
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);  x' V! v" J! V  [

3 o* r5 ^! p0 T* V  i
0 e% x3 A" Y$ G5 k
/ }% C( |& o! M. P1 G: p1 z! a. j2 P        Point3d origin1(0.0, 0.0, 0.0);" [: w& [6 a" S% R
        Vector3d vector1(0.0, 0.0, -9806.65);  J( E0 F6 g  A2 G! x4 N
        Direction *direction1;
9 V* `2 x) B. P  Q: a, U: {. L        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);& F+ Q# A5 K& a
        motionSolutionBuilder1->SetGravityVector(direction1);
& ], A) [" t2 @! l' e$ g: f' b% B2 c+ Z
        NXObject *nXObject1;8 P' T$ h1 S; z: Y. T3 m8 }# O8 P
        nXObject1 = motionSolutionBuilder1->Commit();
: h7 x; t  N3 i% I& x! w        motionSolutionBuilder1->Destroy();
% ^: R& B  A" u9 [3 N       
# c$ h* d. y# q4 I4 V* N6 G        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
. n3 E2 }( ?/ R' D% ~        motionSolution1->SolveNormalRunSolution();
& y" J7 B  X* }8 r$ U" T" D( U
/ V- [, x4 F& o. p$ f, e% \
0 Q9 A9 u6 P. g0 z: X: o+ s1 P
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...; F6 \7 s  h+ L
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
4 {& }- r: x4 X1 \2 d1 j( @; B, X
0 N" i( S1 [0 _, ePartSaveStatus *partSaveStatus1;8 A, \: l* A& k$ L' x! O9 B
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);# F* c6 \& p, x
( V' W! t2 t5 r' f4 x$ V
        delete partSaveStatus1;
8 Y1 w4 N- [; n" r* }! _8 O# Z3 s6 {* u- x- M1 F
3 `/ E3 {1 {( |6 \7 F$ Q, B+ u5 D* D
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");( I  H/ g$ ^1 A" |6 \* A

( _4 v6 M& W6 \4 O) t8 B( z" {+ ]# j+ \- N/ Z% t# l
, L8 `# j% L5 ]5 Y4 f7 b, w
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
* U9 O* U5 b9 q' @5 s, R+ k# y& b; Z6 u
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
8 @5 [& [# s' S% _' p
+ d  H/ [2 W" N8 x$ x7 z        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
2 \* ^: Y2 M2 w8 u4 u* u# S* F/ O) A: L( F8 Z8 \
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);0 M$ T, l5 U9 b! [) E6 c% d" Y5 J

+ V" N& `3 N+ V. ]) @- C6 O        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
9 G; t0 w1 g6 u. z% q
, |: c' b) f( f* ]& B4 G5 d' V1 a8 O
5 A- q& N1 w1 f- x1 g' Z: n% I        NXString motionSimName1;
9 I+ T. O2 Z. ?) y4 V& ?$ `# H6 Z; C        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");8 R4 b* @* [9 e$ }; @

5 ?8 _+ V2 ^9 t+ n  V8 o' `        workPart = theSession->arts()->Work();' V$ j. j" f  l! ^1 y- Z6 z
        displayPart = theSession->arts()->Display();
/ Y5 |# i7 I! O        Motion:hysicsConversionBuilder *physicsConversionBuilder1;% I8 D4 V1 t7 |  o" y
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
4 l# r: ]/ |% l$ Q4 o/ ^: _1 Q$ J, x7 T, U2 D. c
        physicsConversionBuilder1->Destroy();" V4 }: _" Q% X" J0 ?( D8 j$ H

# U/ G) b4 M1 ]        theSession->MotionSession()->InitializeMechanisms();
& j+ R( p1 c9 O% a4 l
  O( ?+ p# M% D" k. I; {" d        Motion:ink *nullMotion_Link(NULL);- ^- f; l8 n5 Q
        Motion:inkBuilder *linkBuilder1;
1 ^! r% }3 X/ R& _3 r        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
" z( P+ D9 J6 @8 u8 g3 _$ x
2 P: W3 T2 F( i( {3 Z8 j        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
3 G7 z/ E5 g0 j6 l
& t% [9 }, \; C' _! I# w        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
$ m9 {3 T9 I) z( @* }* ?
- P# {. }. J0 n1 c6 J; ^0 V1 l8 y        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");, g4 \; a8 z' _  u! T! q# ]  A

+ T$ f$ @: N9 ]' t% p        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
* s+ [7 _7 f  C
+ V+ \( h3 P' D4 _        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
! c' D' o3 |  ?8 {7 X5 h
9 k% S, s0 {6 h, h        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
$ W& |/ ]: A5 P) D* g# B- w# g* n" c4 m$ ]7 }3 U/ B+ d( _
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
- Z' [! _" I% ~; l$ R* o
) J4 G2 e" N; Z5 e        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
/ G# k3 T& ~# |5 z: B9 e
5 E% T( h1 }  F, C# n       
1 R# Y9 ?1 X/ W. L  [0 |8 P- Z- V0 L9 m* P8 [  m
        linkBuilder1->SetName("L001");
3 B* r+ l8 o6 m( j) ^) m' F
# h8 Y* @5 `" X
3 L7 E+ Z* G! y% Q0 i* a, c        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
' U; N. l. U; \1 W        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
  h  N7 X  i% {6 b        bool added1;) y  d( D. K) `
        added1 = linkBuilder1->Geometries()->Add(body1);
- ]8 K: ]" Q' m" o, O. k4 o4 h& }" s; F% x* `. a: A+ `
        Direction *nullDirection(NULL);1 n# h1 V' m/ }
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
" J% o9 P/ ]0 g& U* V1 Q4 V
* g) \) z5 Z0 A2 C( N- E8 w        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
/ k$ y% ~( H! o" o2 d0 Q! k2 t: e+ J( |5 t4 C# U
        NXObject *linkObject;* q9 p, F6 G, K) q5 d/ W7 h
        linkObject = linkBuilder1->Commit();
' S. E0 W& o, d; N) d/ d: q# O8 k+ M- p# U% B3 I5 \% z
% F; l% o; j' x6 l) C- R
        linkBuilder1->Destroy();
% K0 o: X& m; M* N6 @% H- I6 J- v& w& P/ A+ c* H

" @4 E" b+ r1 k. C9 w" d/ g. r( n1 O7 I9 z! |; m% s/ F

9 _+ J) I& z% Z8 F  [! s* }$ ]       
  x) r3 |: h- W" p- m' p
' I8 a! i: x+ u( }  E# C( I4 I! P        Motion::Joint *nullMotion_Joint(NULL);
$ }, e5 T' K( f* y        Motion::JointBuilder *jointBuilder1;' `' W0 s" L4 A" D" u0 m
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);% o# }6 E; J7 Q- D
7 `7 q5 t6 S6 F# ^$ ~2 F4 F3 c0 L
7 `( a2 D8 O, K5 G
) f7 c& c$ S1 c4 [
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");( W3 _" J$ j* F% W+ n9 w
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");% A: f0 ?( s4 i# ]
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");+ ]) U% x+ `0 Q8 U! i* x+ G& `
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");8 q; ^* E# H- M1 B7 [2 I
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
& E) B4 I0 t9 ?        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
- p* r* v; e+ {" f
1 I$ @/ L; D* L% w# {& ]" g, U        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);) y+ `. r6 J) @. M0 B7 Z1 q' q$ A
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
- g9 g9 g$ J- w! F8 w        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
; Z" f0 k6 a; T3 h. P+ j. [        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);7 T1 P9 T+ g* m1 ~' l$ G; m( H
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
/ ^* U5 x: a7 g. i- k' s3 t        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);; a6 ]# O8 r  J: v( h- W2 ~+ P) g
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
) E- K# _+ q' u) V4 b0 u+ r        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
# D* b8 g- S3 j& j" H4 o! n' b# V        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");& `8 \, u% B" I1 V3 A: C! U
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
) c- _4 F  `% c  Y        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);/ u- n! s) I, k" j$ C* D
; H5 q( C: ^9 U7 L  a) H4 ~, K4 k8 G
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
; p9 a* m9 c" j  K  `. k        jointBuilder1->JointDefine()->SetFirstLink(link1);
5 a) u- n0 S% S, V1 h
: P* k5 _* o/ @' x% C. a9 [% R, ~% X4 v! a. m
        NXMatrix *nullNXMatrix(NULL);3 H' Y8 h7 C& B3 x/ Q+ N$ j
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);) k( r8 P2 C( e( F$ ~2 V# V7 g& ^
. [* U( b. |/ D6 A* A$ Y
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
$ t( Z* a2 x3 H& D& c        PartLoadStatus *partLoadStatus1;
: \; p  p- Z: V* }! d        partLoadStatus1 = part1->LoadFeatureDataForSelection();. n! [) E0 ]  \3 o/ e* B; p2 @

- B  O( {$ r% e. R        delete partLoadStatus1;" |) o! q- c) Z$ o% N$ t
        Scalar *scalar3;
, O# r! ~& l  l7 u; O1 J        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);' r: e, x& ]! L0 x/ b2 |2 U
7 {" L6 e# S) q6 I
        Scalar *scalar4;1 F, L1 O0 {) E
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);! A7 F$ p6 T  n5 ~/ p8 k/ a

8 t; y% i4 h. c        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));( g* l2 c! `/ g  m0 z1 v5 f. I
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));7 \" d* V9 g8 h! Z( }6 \( h5 N
        Point *point3;9 u& a$ B# p6 l9 I  s0 z
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
- P" `4 p7 }* K" P* c" y4 Q% H& W6 s* Q% f
6 `% {% c* S5 P) y- B1 K
        NXObject *nXObject12;
+ m% F% C6 `6 Z& ?* x# e        Xform *xform1;
: L2 A0 {$ `6 L  O. E& ]        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
- }& [3 }! L- o) C
7 x( t5 q3 b" q$ p9 }/ p4 u        Point *point4;* C/ W% L" u/ f! Q; U
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);8 W6 {5 i6 Q3 [# E

( n2 x, P7 L7 l' A/ F: ~7 X- D2 @        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
* o; x' L' H& H3 C2 Q5 e2 |
) ^. ~9 e  @# L! T$ `4 Q7 N" ^5 N5 B! l1 C1 H
        Point3d origin1(0.0, 0.0, 0.0);+ D; J6 X1 L7 y% C, ~+ I- d
        Vector3d vector1(0.0, 0.0, 1.0);
' V4 E$ G, L3 S6 W        Direction *direction1;7 ^1 R, S; [2 Y* M+ Y* Z6 H
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);2 R6 k, z3 B. r) Q

7 C/ X. T- C0 m) y0 ]        jointBuilder1->JointDefine()->SetFirstVector(direction1);
9 S, H, V( I4 W, ]' ?3 Q
6 P* m1 d0 l( p: G        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);2 d" v& A$ X) ?* Z/ K$ }' D

4 N7 [. @- q8 o3 s        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);# c: h4 |; x  N, V6 ]

7 k3 o8 q0 c! J        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");% z  P- f% }" l6 c9 R

5 k1 T% p( T( H8 S& u7 }% Z+ k6 |3 [7 P8 I) t% V$ ?8 g
        NXObject *nXObject3;
# A2 }2 r, @4 n. r        nXObject3 = jointBuilder1->Commit();
. }/ \! z( }$ T( ^8 B
7 I4 L+ s+ Z6 o& n6 _" g1 L        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

为什么会有表情 - -!! U1 ]; n# D* |) {$ X: O( \

& O5 c: O5 B! d( C  M6 C有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
% I* y& U' @. M% z; ]* z; T
: ~8 t  D# W" T) U$ k& L' m, x.....
" S- q. w: E* N0 r- ~5 `4 {/ N: j* I, Y  p. z% ^
UF_MOTION_init_articulation();
  B+ m1 F( C! P" Z3 x% Sfor(int i=0;i<360;i++){+ a! s3 a* N4 Y7 C9 \8 Q
  UF_MOTION_step_articulation(1,&i_ret);" {) F- F2 l, P1 N
}- n, x% n$ Z1 z. M/ ^( Z
UF_MOTION_terminate_articulation();
3 ~1 V* k: _3 d% {$ tUF_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二次开发专题模块培训报名开始啦

    我知道了