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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了: @, Z0 H5 H$ e% |

! \0 A3 K6 u& d! u  D- H9 h我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
7 V$ W& _4 s; o; W' H& n; q1 ]5 b QQ图片20150521182535.png
- S8 @+ i7 v6 p1 c+ n! y  A5 R我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
+ Y+ z1 U/ I: j% m( g6 o% o  [
一段ja录制代码:
! O. e8 p2 p  \/ j: G" o( h  W0 @+ ^5 J# b/ P
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
8 c8 S% D3 H1 j5 M# v( Q* q        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
: ^& E" x& E( g5 q! q2 C# F        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
, J3 T9 j! w0 m
9 S" a7 i& T* U$ n. c. Y- c/ w6 A
9 v- F+ v9 A7 O# J0 Q% }4 I        motionSolutionBuilder1->SetTime(10.0);: g$ ~" }8 H1 `: ]# S
        motionSolutionBuilder1->SetStep(500);
- P5 a) a$ H. a/ ^  W        motionSolutionBuilder1->SetName("Solution_1");  ^/ [4 C+ m! d$ T8 a/ w
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);# W1 Q9 O6 M; {, M

0 w# h. Y3 H8 w6 y4 N! r  ?' o
3 a1 d$ G- G% w; A4 {
# F  W4 V0 }. ]        Point3d origin1(0.0, 0.0, 0.0);
' Q; ^8 n4 j  ]        Vector3d vector1(0.0, 0.0, -9806.65);3 f! }- }2 Z4 x0 b1 D
        Direction *direction1;
2 Q; Q4 O2 n( ~2 l; ?2 K! H        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
  U) o, F$ P$ ]: X/ L        motionSolutionBuilder1->SetGravityVector(direction1);) Z% t0 k) }* `( i/ b6 i

' X3 d! n+ G- l; w4 I  r        NXObject *nXObject1;  P! b$ e/ B/ _/ X
        nXObject1 = motionSolutionBuilder1->Commit();
! L2 {0 y& Y- g* f- H, |( R        motionSolutionBuilder1->Destroy();% A- t: ]3 V% O
       
: b8 p* j3 r6 U+ T        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));4 z( L$ L5 b& m! F, v" b1 f
        motionSolution1->SolveNormalRunSolution();
! c1 H# w- ?4 M9 Q6 {1 s
/ q% r2 F* t- c
8 T7 P$ F; k% |# y! ?& x" m; p$ [( A2 c6 N
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
( z  A9 z  ^, 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函数有一些可以用的代码但我接不上这样子; M, |' {1 G  r' V) [+ e5 C

6 M7 F" U7 e/ T5 L6 vPartSaveStatus *partSaveStatus1;
0 A/ T9 n, J) `: K. j8 B; I! d        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
/ }9 J, H8 F$ O& x$ a0 v5 e
+ A8 `; s5 `. b# e' V: u        delete partSaveStatus1;
' _; \. E7 j& U4 ?5 {. F% u( c9 P9 p( O. O* g. }. ?& i- g% X5 s  s- |7 Z

1 Y3 E/ J" ^0 V        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
  W, V' I5 H+ g- o& b) Z2 h1 V4 N
  x# q+ k( q8 a. u) U0 ~. [: f* k9 p7 T5 u
( K. ~2 H; F8 F
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);; G, w& o. D1 G3 ]' B% A- Q
" j: U' S; ~6 N  ^$ ~! X
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);! i3 g: E. [" ~3 X; y

  E3 F3 Y, I( ]" V/ U        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
% K0 `4 e. G4 `0 L6 q* J8 w: I  G* Q$ Z
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
+ k0 Z. a8 y8 D7 [6 W4 l5 R6 A& j3 F) }( B3 }
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);9 c0 A/ O: q( O2 Q  R# P' g
. I6 G& z& {. |
- q& ^2 V1 |6 M; Z$ Z9 N
        NXString motionSimName1;
# Y) ^2 f& N+ H3 s( q" z$ \( |        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");$ _: v6 A: a. n, T- e

# d- }7 @6 |; n        workPart = theSession->arts()->Work();$ @* I7 g1 Q+ E
        displayPart = theSession->arts()->Display();
) g" F# F# _7 U" d, O0 V        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
' ^1 |- P" ?& |. a9 V9 {        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
) n: f# K7 Z% c' l& j, K( q& T0 ?, I+ s3 n  y7 v& w/ b
        physicsConversionBuilder1->Destroy();+ V: n( q3 }' ^$ o

+ v+ N2 a- s8 R3 J( a5 I6 g        theSession->MotionSession()->InitializeMechanisms();
% {( d2 _! k! n6 i' v, s, h: v$ e( _
        Motion:ink *nullMotion_Link(NULL);1 B6 _/ O/ R) K& I) W# O6 W
        Motion:inkBuilder *linkBuilder1;
9 }' f0 C) X" @+ x) L        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
& E/ A4 L& P; B6 Q; E. d
% I2 c# T4 o, a' H2 k        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));6 Y4 A. Y9 w' A

5 a8 {3 S/ V* f' w4 b# S1 ~        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
; P0 v4 A1 A$ ?  @9 K( D) A% h! `% `! o# f- P, m' S/ o1 l
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");7 W5 |" Z/ L% K6 h5 V+ l: L
7 p" F% j8 U. r# l% L
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
2 A7 ^8 o0 Y+ a- e' g( O6 S; m; r5 G5 ?% K- p; c! `
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
  x6 d8 h7 t6 d5 Z  G
4 P* M; N, `/ R- G! B        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
% Y9 p5 y! B6 X9 n5 r' y. N) X
* E) Z" _3 g' \        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");. I/ n. z! U) X1 c( c

: R+ S8 b' J6 ~+ t! b        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
0 Q* m' F% I7 M7 j( D# O9 @  K' Z
        $ h. E7 v0 m1 J$ T9 ^# h

& o; t5 t2 [# M( P: i        linkBuilder1->SetName("L001");
8 s. W6 I" f* P7 s9 o% C& l& }& O2 x8 q4 h& i5 A9 F6 d
7 K9 d/ E  A$ N  o6 C! J$ |
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));+ }6 ^, N1 m; [/ h$ K2 o  }
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
5 N) _# b+ }/ W+ F3 ?) t- q. x) \        bool added1;
/ K1 P0 V, l/ ^1 f' j0 p        added1 = linkBuilder1->Geometries()->Add(body1);
: {3 S4 e2 d  j9 Q1 \* k% Z0 U2 j
; T- T/ n0 W- Q; e        Direction *nullDirection(NULL);
7 a6 }# e( n0 t7 e        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
) Q: s+ q2 D6 G- g' `. U" g& Z2 W6 e; B+ N/ H3 f0 w7 A" I
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
7 \: X5 ^4 V' T# d4 L: X1 }% w; ^  F7 v" l9 s; m" r8 c
        NXObject *linkObject;/ j4 o- i3 x/ ~, S
        linkObject = linkBuilder1->Commit();% V( z" F! _( h1 z2 h+ Z

) O) B& [4 x3 N/ O% N7 {
6 ?5 g4 n5 x# m8 s        linkBuilder1->Destroy();( Z* a2 A, E) [6 m: l# m
, [" d. `/ F" n$ S) V+ q
2 k9 h! H# H# |$ B9 z4 h

7 w) T% u- |& f. {9 W  W: C/ R7 y" v2 s$ U' `
        / n6 K. S: M. I# U$ v% P+ u, L

/ l$ n. J8 D0 m  s! t        Motion::Joint *nullMotion_Joint(NULL);/ q  P& _- m  q# d. ?/ a
        Motion::JointBuilder *jointBuilder1;
. e% e+ ^: M4 H2 G# w        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);% n0 `1 w8 m/ o

! a$ I4 W! s: z9 i1 X
3 g3 F5 R- C6 ?- s
6 c: D4 ~$ T: t0 _6 k% S) {        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
( G, [! P1 e5 Z        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");$ h. [- X/ S; S( @/ |8 ]9 c
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
, X5 I: d6 Z6 G/ Y4 n        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");: ~4 ^: g* D* H, z: G$ e1 V
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");. ?3 F% k. }) [: a6 ]1 E9 n
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
# D2 B; G2 y! L, i: Y0 F  i7 I/ ~! ^& y
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
# m, L8 q3 x* F2 K( ]2 u        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
$ I( @# o' u6 w( Q0 i        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);! b9 d3 K$ Y4 D1 A2 l- H% ~, t
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
: ~2 S( ]  m; G+ i        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);5 q4 v6 f! N1 |2 @
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
8 p# V) J& m: M( h& h        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
! O( T, S( Q- y        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);+ B3 Q; {# d2 k; ?9 s
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");$ N& g: B4 x6 f) Q' T
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
1 m/ Z8 M, X. y9 ~  F) Q        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);1 E& [0 z; o8 ]+ H4 |' E# \

  R) r7 J! s+ ?, |9 x7 |* b        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
* w7 Z: [. s; ]8 ?        jointBuilder1->JointDefine()->SetFirstLink(link1);! y" u4 {: S! v, i+ U

" C' v5 w) d" j+ e) h0 T7 }) O, h
1 C# B+ F/ D3 T        NXMatrix *nullNXMatrix(NULL);1 J; Y7 P$ C; `% G- [, |& w
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);8 O9 r+ e3 t7 l6 ]+ o9 m

+ x8 s! N+ z$ q        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
1 u9 s9 [8 M# p        PartLoadStatus *partLoadStatus1;# c; ]  E8 q* j1 t/ b4 m. @
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
' o. N& V( n2 q* L4 u8 N, e
) H) J4 R, v( m! M# B6 |        delete partLoadStatus1;5 K& A" ?: o  l% Q! ?1 T
        Scalar *scalar3;
! @  [2 P; _& e# z- ]/ W1 e8 X        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);" e- H+ u5 s3 d) j, v) E, V
7 O7 k& u) m' y& w  F( t
        Scalar *scalar4;
1 |  P! R0 k3 E7 E        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);; V( g/ X7 d% e  ~0 F8 u

0 G# ?9 Z, I  Q7 ]  \& k        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
& h: \9 t3 @$ Q- S1 ?. x; }; o        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));- I0 r3 e* K0 B
        Point *point3;) E" [4 g4 c  g- _. [
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);5 v) t1 U3 I/ z0 u) v$ u

. ]+ M( n% d( m1 Q3 J) ]
" l9 g; @! s( w: L& n! z        NXObject *nXObject12;( q- b( d% C- |( _( h& K* [! j$ `
        Xform *xform1;( k( S7 d& T( r" x3 S7 b* ^5 V$ [# ~
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);; _& v7 t' Y( L0 F8 f
! R7 B9 C$ ]8 N
        Point *point4;
6 l+ v  f4 \( S5 z" o% }5 K        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);' a5 T4 H1 X: c  y; N) W& Q- D

7 J6 _8 D6 X/ Z' ?6 `        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
# c- D) S4 V( F$ ~! M  s( {9 d8 }% w, ~5 }3 m5 {7 G

6 D8 m  M) x) W" T, u& y        Point3d origin1(0.0, 0.0, 0.0);
. T( E) g$ l, s/ o/ [        Vector3d vector1(0.0, 0.0, 1.0);
& Y  @* K- b8 r4 Z3 b        Direction *direction1;
7 j  s* n6 j, H" L  h3 O" c5 _6 F        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
0 t# V  R" o$ H7 M* L" b! ~/ n  v9 |1 q
        jointBuilder1->JointDefine()->SetFirstVector(direction1);0 W( @/ O; ~$ x* f8 G6 l9 N6 P5 D6 w

/ C9 a4 ?1 ~- N) X        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
( C8 s0 s) P# S- d. f- t7 H- {7 |3 f0 g  Z7 J0 ?" M) X
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
* F0 `0 s. S: [) _
" R, L7 [3 A: m6 w7 }1 }; e        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
+ A  {; d& l4 m) ?& n# l+ ~" X* Y: e( w# f* U  ~
. P8 U0 U$ ^. \" Y
        NXObject *nXObject3;
# R* `7 q! j4 u; `9 x        nXObject3 = jointBuilder1->Commit();
* o% r9 s. x$ w% o/ u
8 Z- o/ h) n) O7 ~5 L/ N, B        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 N; f6 ?( G- P; q" c( M
& t9 ]; n) D; u0 d2 W有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
. `7 O5 E9 h- P8 D$ j+ p7 L* z: P9 p  I1 @
.....
/ g* y9 n# e, w8 Z9 r+ w! M6 A. ?" }. I7 j. r. V( M7 Z
UF_MOTION_init_articulation();- K( i0 D7 o" \; z! g
for(int i=0;i<360;i++){  |( w( _3 O; e& I. q
  UF_MOTION_step_articulation(1,&i_ret);( q7 K. ^& ~+ W9 l
}* {4 `' j3 ?% M0 S) t$ W
UF_MOTION_terminate_articulation();* W: q" }0 y/ r0 S/ v
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二次开发专题模块培训报名开始啦

    我知道了