PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了) j/ B- G4 \7 a+ i, f6 `

- I! a3 u# x/ ~4 q3 [4 M我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。# C" W3 M+ a4 \
QQ图片20150521182535.png
5 |: U5 g( O: D& x# ~9 w我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
- V. R+ ]$ ^- P5 _; S4 D
4 L& J" m* C/ H1 Q. L一段ja录制代码:" c; z- p! L5 q5 j

' ]2 Q7 X( N7 y, ^# L8 L) s4 L. n        Motion::MotionSolution *nullMotion_MotionSolution(NULL);. z8 Q: _$ f- D( d7 S+ e
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;6 \' ~! p( {" B" o3 V' p2 J
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);" g+ r. ^( G0 D* B; _) B: n
: J9 C2 h( V* }- N8 h

8 u+ V; R9 t* @7 {6 _- y3 ~        motionSolutionBuilder1->SetTime(10.0);4 O/ R) Z1 I9 O* U2 c# ^& K
        motionSolutionBuilder1->SetStep(500);
; c, k# v  P. i6 o+ Z; F: P% m        motionSolutionBuilder1->SetName("Solution_1");: F( J, b# n5 M/ y* U: Y
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);. N/ ?. n- N8 g* U7 c

0 X7 b$ u" K: @8 V5 L9 P4 M6 Q/ G4 Z! T5 r1 U6 `' z5 U! v$ P4 s; [

( p2 l2 b* w2 l4 _  M$ v# D        Point3d origin1(0.0, 0.0, 0.0);; ?! B  j; I: Y
        Vector3d vector1(0.0, 0.0, -9806.65);
- f1 P) O. n) \: v        Direction *direction1;1 z" H; h( i1 E! o3 k7 a
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
$ V- ?' @0 _" @, N% W7 O2 X        motionSolutionBuilder1->SetGravityVector(direction1);" J" O- H" b: ]

3 e: M: V1 U% k7 A" Q& _        NXObject *nXObject1;( g- b# d9 W9 N( [& Q" e
        nXObject1 = motionSolutionBuilder1->Commit();) Z( R) o0 P% j8 ]1 X. @7 N
        motionSolutionBuilder1->Destroy();
& k( g: z4 E# l        & v6 I4 ~9 I( p
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
6 D: A2 g8 l3 y6 C, ?- z: t        motionSolution1->SolveNormalRunSolution();( z: F! n2 P0 w8 V0 H; w

+ D! B( d; s# m7 {' w2 L$ j2 d# P9 t6 W" T4 y9 ]# O' \' a2 f5 ]! X  p/ |# o
3 S  n- ]1 u1 V
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
5 R- \$ i# E+ y1 M
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
% @* G( i% g8 w  c! y% w+ d" t/ \, y* l. B5 J1 ~6 @; E
PartSaveStatus *partSaveStatus1;
4 g$ S8 y, X1 w, C/ Y6 D$ a2 o        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
) W- t5 z; C  L9 S6 w
) c" `( ?9 o+ k$ l( @' _2 C        delete partSaveStatus1;
/ A4 N- O+ y. L
  t6 B; x, ^& d2 D  H
9 z9 H' M, Y4 H3 k        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
8 W% V8 A- x/ `; m/ q; g) D- b( o% w, A6 F& C) c
* S6 o+ d+ c2 T- m/ [

/ U/ n+ C5 D; C9 S8 N8 j        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);5 O" p1 ^" K/ w. F  ]( n
& A6 \7 f5 a$ o6 J
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
& v5 q& d4 V4 z3 l' ?) ]. ]. d. H+ i; v8 {# w/ Z2 y. ^
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);$ X6 d+ o6 j0 i0 t8 N
% C7 Y3 Z' W( B
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);+ L  L( J) |/ f+ p

  d' d7 x5 Y3 f! H' w' y        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);) {8 e4 u+ p+ r& Z1 L
) Q1 I8 K! l) m7 Y
6 w% U* ]( t& N' L4 t, K' s
        NXString motionSimName1;
$ X5 \) r5 e. q0 v. F- A        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");& N$ w2 D, v, g- o6 E7 k
8 ?0 W2 R. E# j! t4 p
        workPart = theSession->arts()->Work();
" q4 Z5 b- a9 }9 ]9 L        displayPart = theSession->arts()->Display();& Y* j( ?, n/ h9 d" \" F' f
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
) B5 v4 c; {( e) F' w1 G' H        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
3 u+ [8 S7 L7 j0 u& S, w( `9 d% [6 ?' N, w0 @' o
        physicsConversionBuilder1->Destroy();9 D; y" v1 N( E7 T. P7 U5 e
( v6 s6 k9 v" A, G. m) V* I
        theSession->MotionSession()->InitializeMechanisms();" h) S- h  M) j: L9 ~8 H! w- ~

  }* b; i4 y9 r$ L' m7 u        Motion:ink *nullMotion_Link(NULL);
8 C$ ~; [4 X3 I3 J; Z        Motion:inkBuilder *linkBuilder1;6 e( j2 r% _  Q8 }, }
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);* f: }8 H3 Q( z1 T6 t2 u% _
' _$ t8 `" z- K* S
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));$ q: q1 U" B1 p
. d: v* l3 ^5 y
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
5 O% l% I$ w/ l/ ]( P! l7 `# D5 O
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");9 V+ F4 x1 e- }7 M; D
4 Z/ V/ q! z3 @! }1 H
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");; S7 M# i+ l0 h* S

2 b2 R3 k# a1 J6 _+ ~; ]: y        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");) Z3 M1 X' a# x# L6 ?4 J

3 O& ~3 N5 ]/ f) x- S5 f9 N        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
) I0 A0 S& p. h, G5 B. M  G
' e* }2 O: U$ y9 {/ h: N& w) s5 W        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
# d% d6 k  D3 F6 }* b0 C! s' W* c6 Z/ Q$ H8 ?& X" E  J
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");8 n/ s9 |2 i' O

3 j" ^* o8 h4 I# x" P, r       
& y) m1 x5 I  ~* {4 N! `
/ i, x2 F0 G5 k! g% d0 }  P% C        linkBuilder1->SetName("L001");1 ~* _$ d( h7 \4 u7 P( Q

  c$ a1 u, t( F/ s* i2 K4 u' R7 J6 F
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));* J2 X3 M, A& X  @
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));, s. Z+ s+ j$ n9 P& i! ?
        bool added1;
: u6 L& f7 [7 S8 D8 q2 d4 C        added1 = linkBuilder1->Geometries()->Add(body1);
3 g+ V8 z) g; y7 Z, A$ p, m( {0 z
1 m  l0 s, y' F, |8 s( e        Direction *nullDirection(NULL);
  J8 t7 E6 G* m4 D        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
" g( ~. ?; z) I" p; Z/ o7 ?2 n$ e+ y4 p1 ^3 ~
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
0 Q" n+ {6 h- [; F8 @6 c6 o% L. V( ~9 ]5 m
/ g: v* ]+ {) R0 ?5 \! v( H& T        NXObject *linkObject;
$ ?  b* G4 ~0 u) V0 p        linkObject = linkBuilder1->Commit();
7 G: ]8 q* a3 l' W& U6 I; }7 \. b1 j6 M* y$ c; D

) @0 d" H* J! V1 B; M+ H        linkBuilder1->Destroy();& i4 E1 K; _7 B( t: f/ S

* q" N4 R0 T$ }
7 i' m% I8 A7 r- U5 h, l' |9 s
' u( X( j' Y- ~8 l8 R. t6 h* X
$ N$ ^* s" e3 @9 a        % o. U+ ^- ]% e$ I# b& Q

" e6 @  ~5 F4 P- C        Motion::Joint *nullMotion_Joint(NULL);4 |$ J  c  J+ Q/ n/ R- \
        Motion::JointBuilder *jointBuilder1;, L5 I( \( z$ [
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);9 d) h4 o! P, o( t; @) x! Z( I' h
: W( e% [2 B: b8 x; t$ ~

/ A9 _+ Z, k5 N* F8 z+ j) k5 s$ n
3 ?2 [4 ?' b2 L" c+ C0 l( [! j        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
* G: p& R* t  m        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");! W! m( O: [- G0 M& c  i
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");( |$ L5 Y, B% J: m( {+ W- S
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");$ ~3 r( K  i. u! j: D
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
$ e7 A) J: ]! n* H/ ?% \! C        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");8 |& N. ?; j/ @* F

3 n/ o5 N' k+ m1 W3 l        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);, {5 S7 v. |" k) v, v" k% G3 h  ?
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
* U( u4 V- S) e; `. e7 [        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
$ _, v) p% j- N5 i        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
6 l4 z8 }9 r* q8 I4 B        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
$ Y! W$ N, M0 u" L        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);  Z, N5 t* v% y; w) a- c
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
8 i6 D& l" Z4 T  s; ]' o        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
  v* I) R7 q% P0 ~8 {9 o        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");# n; c( m: f' c) Y) K
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
  l, L6 R) C/ B# o, |4 g- N4 X, f        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);& c, Z6 c# H( f3 n
. i6 N+ y9 D: C! e* N5 c
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
% M; L. v( E4 v# T5 a        jointBuilder1->JointDefine()->SetFirstLink(link1);
0 c' X, _$ o7 W. F' T9 Q  ]: w( l$ m3 o% i! V* i( m, [% A
0 E- Q' G6 O% x; I+ q- j7 X  _
        NXMatrix *nullNXMatrix(NULL);6 o2 t" X* I8 J% o
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
6 P! Z5 L! r8 f4 ^. H+ E: M2 L) z( d% g5 k
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
0 b/ l+ v: u5 J6 P  J        PartLoadStatus *partLoadStatus1;1 g# p. ]) L" i9 y0 X& l& z' |  v$ ~- z3 Z
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
7 k( X; `5 K( K/ A, Z% p1 O  G1 c' e- ]* G, x) h' s+ b% M
        delete partLoadStatus1;; w( o  X4 B; i0 l" U
        Scalar *scalar3;2 A$ S  Z6 p8 L" D* ?% H* z  S3 m$ g
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
: u6 z  w7 G9 H$ _% f' ^6 J* ~" G  q* M; W; x* O9 `
        Scalar *scalar4;$ @" Z* y4 B/ x0 q
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);4 @* h" O# h! f

: V  I" }- ^. H4 \2 M' ~        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));  T7 X& A, j4 f: m0 P- N/ o. \4 ?
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
" K) z! w  J$ a6 s        Point *point3;
0 `3 o2 i7 A" x" n1 K' _        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);% y: @! J! C- V

' P0 j# j2 U0 b) `5 Z4 P8 V6 p4 a5 f
* M% b7 Q- A7 Y$ I  F0 T: _: J        NXObject *nXObject12;0 q5 M  U- o0 y- d  q0 A3 C
        Xform *xform1;" ]+ d$ _3 Y( |+ n# G
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
* @5 A7 m3 i5 T3 E4 o- @% q5 @( L1 P. @" z, B
        Point *point4;$ k2 b4 J0 I# \: e0 V7 l; f
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);# r) Z' T* X+ T  p. m5 R  b1 r' w" z5 t

2 m; G% h  p) |4 P% x$ W' l        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
! p  V2 C  G4 z
1 r+ [& {' ~1 s" {& T  z8 c$ N# o+ J9 F
9 c& C  a4 G# e7 i( L, p! j        Point3d origin1(0.0, 0.0, 0.0);
5 c% U; u  v" x7 G* m/ \        Vector3d vector1(0.0, 0.0, 1.0);
9 u3 c) Z) i7 K; B        Direction *direction1;
; `% P  w9 p$ U: @; U/ T2 [4 w        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);# y1 e" ?, o2 o5 N5 V1 @
0 j" E' B( K2 `/ g! ?! X% ^
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
- C- Y4 X+ K2 f, t3 Z) m  P2 M6 K! ^; S0 `; r' g9 }" Z
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);! {6 L9 A! ^: c# _( n

. ~, S5 d( a1 b9 l        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 ^$ S* l9 q. k/ P
) o1 \1 L% `: o
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
- ^  T! \- P+ a: A( \; C' \- P
  ]; O9 {- ~% D1 U( J; [6 i5 @: m% A$ |/ o* Y, M* Z
        NXObject *nXObject3;
; U5 U% q, U' |  l2 q        nXObject3 = jointBuilder1->Commit();
- j8 `+ n2 o/ i; e4 Z, T  P
0 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 [2 J9 P, u; Z  e5 i% V2 K/ O
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
; @; y) Y( t; J% z4 E
2 T" }( [  O& p0 Z.....
5 I2 Y4 s3 {* o/ c3 t$ H! D* w0 g. L0 U: h, e1 _4 G- {
UF_MOTION_init_articulation();
& z; l( o; J. W& t, M6 ~for(int i=0;i<360;i++){  ^/ l* I, P7 z
  UF_MOTION_step_articulation(1,&i_ret);3 ]+ O7 z& x6 p, a2 V% n( _7 S5 `
}0 R, {! y4 t0 G; ]7 c! {: [2 l
UF_MOTION_terminate_articulation();
6 r2 N; [2 ^# p- u; u, w7 l- XUF_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二次开发专题模块培训报名开始啦

    我知道了