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 3276 2

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了( G7 C- ~2 d* S$ v: x7 Q

! X1 n. N3 u5 U! o我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
5 ?  E; y7 C$ j: l- |* I QQ图片20150521182535.png
4 F) N9 z  _" n2 U我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。+ X2 l1 p/ n6 ]% s
! z1 |$ i& T8 \& p
一段ja录制代码:: I7 L# d6 i$ a% e! o% V' o
1 m3 J) n0 U0 s1 e
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
  R9 i& D- j+ X" t( K+ ]. A+ g' T        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
" k: B/ x$ m. z! K4 C) @% B5 o        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);) s# v, v: I6 I7 r  l( o

( g( ~. U5 ~* p; _
4 ?5 v! n$ y. P# h9 [* R( u        motionSolutionBuilder1->SetTime(10.0);
# g6 g/ f2 b* ?) }) s        motionSolutionBuilder1->SetStep(500);
6 \5 t4 O  R  |3 o8 r* T* o        motionSolutionBuilder1->SetName("Solution_1");( {6 C. z% s8 m% |( T
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
2 D3 H: Y, V# p) c6 Z2 C; j+ ^: p6 I; Q( {4 u$ w; m  j

! Z$ b0 G8 g! |4 O& f. X1 }6 `" x  g* j1 C/ O
        Point3d origin1(0.0, 0.0, 0.0);5 L) N0 n. _# o0 H* a1 _
        Vector3d vector1(0.0, 0.0, -9806.65);
+ Q9 c9 m, z' k9 ^& X) A4 V        Direction *direction1;
' Y% e7 z/ N+ B5 b3 ]        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);6 V! V# ~' O" Z, y# Y
        motionSolutionBuilder1->SetGravityVector(direction1);
8 U8 R6 Q1 z- U" B% {
2 d& r+ F% d6 N$ l" l" f        NXObject *nXObject1;, p: T  o6 g' _5 D
        nXObject1 = motionSolutionBuilder1->Commit();
5 `. m0 T0 Z1 @( i3 E3 x' y3 H* T$ I        motionSolutionBuilder1->Destroy();$ L9 h5 j/ J8 ^" |7 f
        9 m4 Z" t# e- Z7 a7 O* _5 b
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));8 @; |% {, R$ S- z5 o" s' i" a" Q3 A
        motionSolution1->SolveNormalRunSolution();
6 s* N& d0 [! o6 G! p) h* v2 z: D/ P( E% f, ^

5 L) N) E! r8 g* k$ h# n: ^' p4 r
/ C7 E5 [, N3 e& w就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...+ z1 n0 f" t* D9 x+ r# p# @
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
1 E* b1 N& T* [$ H& h2 b# n$ p
! r1 V! |5 \& L* OPartSaveStatus *partSaveStatus1;
' f4 a$ ~: k) p* e        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
2 s& W1 x! D9 Y* @! B- T  x! l* B' `- ^
        delete partSaveStatus1;
3 B! G9 o5 w1 u! L
. n5 p: h, K/ K' r) B8 H' l5 ^/ `: ?( q
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");( v4 H# n, b/ J' F2 [

* r. s& Q  A. K# m: ~1 R
# C! L' H4 Y& u. l3 h
, O+ ^. ]  m) R) \. N        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
2 ~* M! f/ u3 i5 O5 n
4 }- u( b! n3 i" [/ E8 M4 F/ t        theSession->MotionSession()->Environments()->CheckMotorLicense(false);/ ~5 N( F, L! o+ ?$ @% |7 Z( u0 F

) x9 P+ a2 K+ x% q1 F        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
" C% R, ]' R: W1 P+ o/ B( z# y* t+ `2 m1 E" [! u) C
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);5 S2 t, d  L& o' g; H$ G
! H* w+ C$ {* ~, Q6 q! K
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);
* S3 G3 _9 U  a( Q: q, V7 Q; N) R8 g: D8 M' H
' K3 r1 w: j9 ~  d7 Y' L" S/ }$ ^1 l: [+ o0 E
        NXString motionSimName1;
: Z0 d5 e3 i& E8 c        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");; N; b) M( M& Q% Y1 Q! g

8 O! V' a1 S- v8 S        workPart = theSession->arts()->Work();* o3 n4 u* k' v) a" b/ \
        displayPart = theSession->arts()->Display();, p  X% D8 c5 I) P* P
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;7 Q  B$ N9 E# a; v. s0 n$ t+ k
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);5 d! q) y* g/ O( Q

3 [% E" _8 Z; i6 T4 o0 W        physicsConversionBuilder1->Destroy();) `0 M- k$ p' d

" |* B6 F# B1 e9 m        theSession->MotionSession()->InitializeMechanisms();
. s' H' J. P. Y* I0 e5 x4 e0 x  H
% f4 N1 Y% E* I. O        Motion:ink *nullMotion_Link(NULL);- B; s0 `: q$ r& {% W* m' a
        Motion:inkBuilder *linkBuilder1;- x: n  d% J8 ^5 p, z' }
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);3 \; r- Q; @9 f( J- M+ G$ [7 C

, W. j" z* I/ V2 k+ ~. X        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));4 {8 K# p9 m# T: ^

. b1 r. y, w3 P+ h        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");$ s& Y2 i, A9 b: K

8 x3 }2 r4 U4 {. K2 p& m        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");& t0 _" G/ a0 H9 {  ?
" f& |! ]  J- [
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
' m( ^" t3 |" u" s9 n: ^
; d+ B# U; F& e8 G; Y$ Z$ R6 k% Q        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
$ D! R. O8 F* e- t, n
  M- p2 l: r2 m8 d$ j1 o" f        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");1 q. n5 e% [/ e* a& |2 S/ V5 b

- g3 z2 a$ e, J        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
; j0 a$ C! o# u$ P7 M1 B; h# @/ W2 Q" B7 B1 E& s
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");& f3 j0 @1 p( _
9 A. j, C2 l7 p& b
          u" B+ }/ T9 }* |+ H( M4 P) w
( s. W7 k% L; `& b2 Q! B# Y
        linkBuilder1->SetName("L001");, F% l  v. @9 D- e, q

( R. \  d# U6 r0 K. X9 }5 s. q, \( d. t5 y4 g, u- [4 |+ B
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));- R) Z7 y! X) y9 D" A
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));5 Y  {3 e6 I" j$ X" X0 {/ U+ `
        bool added1;
8 @6 Z3 k1 Q5 I6 L+ t% @        added1 = linkBuilder1->Geometries()->Add(body1);
, ?5 f6 R! G* T+ i
  R/ Z* O0 `0 w/ g  `& y        Direction *nullDirection(NULL);3 S+ n+ w& u7 ?/ _0 t$ ]1 N
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
: b/ G  O) k! o4 [, U7 D/ J6 Y+ [! `& d+ t3 X) ^
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);# [5 h2 y. G, v* Z; w& D
8 A  O2 y; f* H  L  b
        NXObject *linkObject;) J8 j6 w8 X4 Z. o: F, p& E
        linkObject = linkBuilder1->Commit();
( Z7 G  l, U1 ^" N. S6 D0 ^5 ^* R4 |) l7 O4 E# t

1 Y9 S3 f# G: i$ W7 E        linkBuilder1->Destroy();
- a: i3 f' [+ X' g9 J( \3 r; X. z* K2 l
/ H& M9 b  h& ?* u( c$ c& l3 Y" y

3 w- f, l- q% P4 X# G0 ~$ M" a$ P: R2 ~5 j6 ?, v0 v8 G; d
        * Q- \6 l2 q& P$ c4 O3 B, N

1 T/ A, t6 r" m, J& v& i1 v        Motion::Joint *nullMotion_Joint(NULL);
' w7 V$ f7 e# O9 r$ r. U        Motion::JointBuilder *jointBuilder1;
: b/ M& \% T7 j) J' |3 z        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);3 f& F; U5 ?0 b3 ]. o) N

7 z0 B* c. ?0 A4 M) P9 I) W9 L7 K# F" Q3 w( }! k' O. X# K
! @$ l) A0 B  @/ R
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");0 [: S8 i; f5 p  u
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");8 U4 K& t: F  p
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
& F; m  u: p2 ^3 x0 m        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
, C% T% O9 M! S        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");0 H; `7 m+ v2 x4 y# ?: Y4 }
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
8 ^: Q- y. L4 L( ^' V' M+ @1 A; m& e" h2 l
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 H$ O9 L9 \$ c) @0 x" g1 h
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
! Y9 q/ h! i9 X        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
# n# Y' z7 W( ?) B6 W9 `9 f        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);' Y) ~9 l7 I& _* R8 ^0 x
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
6 L# N1 t, [% ?        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);' `8 n5 C% Q, r% E8 s
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");- A% ~! C/ q" C, p. n1 x
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
1 J. b' z% M/ B+ x$ z1 J& j        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");1 \" i' O, {2 G7 m' h# L
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
! R' d% j: a$ a        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
5 E( j. j  v5 |9 p% P# |
6 B- k: y8 A' @  }( Y+ g5 i) f) z$ q        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
+ O. ~* q" G; k- L; U2 ~* k$ y        jointBuilder1->JointDefine()->SetFirstLink(link1);/ m0 x4 G+ R9 {1 t2 W' U

# B! H: ^1 o  Q
& o) ?% n: p+ S0 Y* Z        NXMatrix *nullNXMatrix(NULL);
0 x4 P& _- r2 v        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
! x: I7 o# s5 ?" g9 Y  j/ D. Y/ ~( \" P4 q$ A8 b6 i
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));1 w9 W: m) ~, d0 z9 f# Y
        PartLoadStatus *partLoadStatus1;( j) t  ?, j# ?9 P# W) t  q& M( J# d
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
% }/ ?" y; W* j9 {8 h2 n# c- w7 g8 O3 Q( n% @- ?+ P
        delete partLoadStatus1;
7 Q8 u" d; d  A3 N) e% A% z+ O        Scalar *scalar3;  M6 o% G) X# J. B( R) h7 L& M; ?( r
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);3 l' O  j  a" t6 Z! p5 J3 T

3 t3 S8 n+ }: u/ [# H9 a        Scalar *scalar4;4 l8 j/ ~7 K$ i2 [! P
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);  |8 c0 o$ t5 K' F

$ w, G1 B) H6 S        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
) j- Z5 ^2 h3 ?! C        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
( P+ D3 m+ ]; T$ M8 a" ^        Point *point3;: _* ?1 @5 k) x9 O" P
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);. D' r6 D- L8 Q) E0 t

" j* p* p& a: |6 N! E9 {! e0 r. C. x% f9 K
        NXObject *nXObject12;
& \5 ^6 }( @/ |$ [        Xform *xform1;
- w( ~! u8 R4 e- |; W* V        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);9 w' h7 @8 n# U! O# ?

4 l* R6 Y6 d# g9 |        Point *point4;
7 K- I9 P; m0 H# s( S8 T        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
/ G) |$ M) G8 c
0 B; M" ~4 f& a' {' o  ^        jointBuilder1->JointDefine()->SetFirstOrigin(point4);. v, g8 [) n9 X, V  z: I6 W
! U1 j: ?, t5 ~$ Q5 r3 Y1 L
( m/ W3 v8 h3 i- ^$ `6 e# }" q; W
        Point3d origin1(0.0, 0.0, 0.0);; C$ D/ Q/ Y# E% f
        Vector3d vector1(0.0, 0.0, 1.0);+ H. o( o5 ]; ]& P+ g" X
        Direction *direction1;
0 f0 H, e4 R$ v% n5 F; C        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);1 I- S  r3 A1 @' Z: R- r+ c% ~
4 t. P6 j0 n- u: l
        jointBuilder1->JointDefine()->SetFirstVector(direction1);, M: N/ d5 w3 ]
- k* \# s+ H( o& b: D
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
4 `+ D% x% ]5 @" d: w# G" H4 c& E+ J3 s& j8 I( c
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);* w) y2 \3 f, Z0 ]- e( I
8 ~4 O# h: E$ _
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
: s$ q# p9 h$ q( W# u
2 K9 [' q& H) g4 S( F* U
  T6 c: W4 B+ A8 K: n  j        NXObject *nXObject3;2 I6 @2 x% F. J7 O: H, ]$ q7 K
        nXObject3 = jointBuilder1->Commit();9 w+ p9 i: S, N* W* f
/ ~! x* I2 C6 j6 d, k
        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 P6 Y0 J; f. }/ X, p' I4 M2 U
  o: f  _4 f$ w4 g有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码+ l2 N! x3 e2 a  O6 h8 [

# V) F4 W, U  e....., h' ?7 n: y8 W7 P0 b

2 B" z0 ?& ]9 z: WUF_MOTION_init_articulation();
$ w# O# W: n3 Hfor(int i=0;i<360;i++){
+ s9 O% B( C; s9 ]6 F3 S  UF_MOTION_step_articulation(1,&i_ret);' ?) T% a- k! p7 l5 p# w
}! @, `9 g2 ]2 b9 {0 M% Z6 a
UF_MOTION_terminate_articulation();
' c* U5 t! ~5 }UF_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二次开发专题模块培训报名开始啦

    我知道了