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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
) s( I7 c% o) O. M# |
$ ^7 T* Y, D1 }! u2 w我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
) ^  D& J8 Y" U( W QQ图片20150521182535.png 0 p' D  w9 F2 T& X
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
6 \$ Y' a+ w( o" n: @: x4 m. L" I8 n( j& j/ l6 Q' u7 Q/ `
一段ja录制代码:
7 |7 o  v2 H: t5 s& E( q- F- R
# t0 ]  N+ \. c9 B1 n6 ^        Motion::MotionSolution *nullMotion_MotionSolution(NULL);- _9 g3 S" g; H5 H+ Q: Y
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;3 y) ]1 ]5 V3 Y' }/ B7 j+ b: o, L
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);) l4 t" }' ~( O

; J; l+ B! ]) i. C, e4 c3 s0 V2 _1 r% \- z3 y" E, Z* S
        motionSolutionBuilder1->SetTime(10.0);
% o+ x- U. c: [0 A6 E; L4 q        motionSolutionBuilder1->SetStep(500);
9 h2 ]  q7 G. K' Y! ^$ h9 A1 A        motionSolutionBuilder1->SetName("Solution_1");
0 o, I% n6 a7 |. U0 F& E        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
% E; [3 M8 X/ Q7 g( E) L) T# j+ K: W! N0 W( V% M! e4 f% I

$ t, \9 S; U  P9 Q2 K! |
$ x% C9 z3 L) y        Point3d origin1(0.0, 0.0, 0.0);
) A2 |% ]0 Q' M6 b, H7 S        Vector3d vector1(0.0, 0.0, -9806.65);. Y0 j0 g" R) n
        Direction *direction1;' W+ x6 l5 g. p$ H% @; ?2 f
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
- c  k, I2 z$ D$ _        motionSolutionBuilder1->SetGravityVector(direction1);
1 I( h& H4 @* k, Y/ ^' h: R+ Z5 ~6 ~& }; n
        NXObject *nXObject1;
/ }/ `  ^6 o+ X7 W0 _) Q1 l        nXObject1 = motionSolutionBuilder1->Commit();* g  ?4 |$ t. j$ |0 @! r# ~- u
        motionSolutionBuilder1->Destroy();. u8 Q  e2 D' c  O& O7 P6 k0 O  J
       
+ r( Z" i% J( G( r" R" Q+ U        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
2 E8 G! E) g' s6 L; \        motionSolution1->SolveNormalRunSolution();
' r6 ?/ f" g* i+ b, t- o; E
# i* V( L2 a$ L1 ?; o
" c+ L& Y: g  D$ {: i" s1 I
8 ]. E$ W) d7 [1 T1 Y: B就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云.... L* E+ w; E) A$ Y' r, g2 C
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子( h' d( G% k& q) @" d
5 ~; d9 C; k; o4 J3 I
PartSaveStatus *partSaveStatus1;
, D5 g8 ]/ G' B- E        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
6 z6 N( [- W0 u$ D" ]+ [- Y# B% E1 a& D9 Z# @( D
        delete partSaveStatus1;. F2 {# E8 q: c; u# c; Y, H! s

) W; F% F, O6 i! _4 O5 N+ L; e/ x$ e8 I  ~3 s  _0 d5 Q
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");7 {) n5 I# [' A+ l' V1 H
8 e  H6 q" ]/ r* e

) N, b( O/ j4 @4 N1 Z2 B2 o1 k3 u, M& M' b1 _2 ?! A& Q3 j
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
- w. _+ ]1 z& g2 X/ \4 h+ u
& i* d0 X8 m" {        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
8 Y% j2 l" r( P% _  H0 ~% b$ \
5 c* b# {) H* M( N        theSession->MotionSession()->Environments()->CheckCosimLicense(false);% s% C, Z. x: l/ g5 U$ {
) y9 ^' K6 W* F# P! q
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);2 Y+ M  U# g8 P, o
+ d5 p8 P% {2 B0 r! Q' Y
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);* D$ l* y* B/ p

7 q: ]7 l+ [  H( o8 F
1 k, _% ^6 h8 L" S& ^/ C        NXString motionSimName1;
9 T, W' y4 g" T! k  U' r) t        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");) s7 l+ z, C$ b9 C% [: X# B  [

0 X# u, N3 [; g* o        workPart = theSession->arts()->Work();8 b. f  e) R$ v$ j: x
        displayPart = theSession->arts()->Display();
3 ]0 U, H; `& I% U        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
- f3 ?, H6 f, X' ?: j" G        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);5 }: D2 `3 ?: d

8 i" |  v0 s5 {3 A9 ]4 K  O& Y        physicsConversionBuilder1->Destroy();2 V, i* ]. g3 N6 _& B9 O
3 W3 U4 y9 Y/ {- L, }5 Z+ e
        theSession->MotionSession()->InitializeMechanisms();# @( j9 c( N, |- j* g

) k- {5 A8 Q6 I1 k        Motion:ink *nullMotion_Link(NULL);
6 v0 s4 Z, A/ Y- B( [% ?: _# Z        Motion:inkBuilder *linkBuilder1;
$ ^1 @3 s/ Y0 z        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
, \% h; r! ]0 j+ D5 F
' g" \2 L' |" P# {1 {        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
0 E9 \. v7 j0 ?5 ~/ F! j6 _! j" a! ~( |$ L2 l
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
2 `: U/ {/ K6 {! S" I
0 g5 Y- e' f3 t3 d+ q        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");# [+ H2 M7 H: }' p' y! s
/ o" E6 [; z. t: m6 p1 x
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
1 N6 U3 Y: \6 f+ ]& x+ E/ b' g$ H' C: D/ `& J
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");2 S- m, r8 k  V% C
  w1 u. O3 @- @2 B2 m
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");4 j. A4 Z# V, v# `1 G2 w
0 Q1 ?! m& @6 E) d% V. |
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");5 X. h5 P7 r& {; T; ~, c. L) I

  j) s) I8 z  J4 D1 m2 S        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
+ ~! h$ G4 ~7 d- z: y/ _$ Q
) H1 k$ F; p! y3 G) T  g/ R( _. ~. H2 K       
0 K' j/ }3 r9 [& g5 f
* I1 d- I0 B; y' d+ l        linkBuilder1->SetName("L001");' v' J0 K% u$ [) z# l* Z: \

3 e( \3 x/ I  `, i
+ w  X7 E, [% v! E; g3 j- z' R        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));9 a) w3 R% q3 z4 n6 B+ `6 _
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));9 h! G4 `9 I, S: M: {0 B
        bool added1;& J  x0 e' E7 I- i+ u& S; C
        added1 = linkBuilder1->Geometries()->Add(body1);# ~: l- u: b# o2 M, o' y1 B8 L, d
; v* V  H" j3 y
        Direction *nullDirection(NULL);
3 |( T6 [. K; X        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
4 G1 U; C( A0 p7 H6 ?2 ?& ?
4 p9 j# c, F: E7 ?& G& H3 M4 H        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
# N: ]% c( u3 B% ]- e  v
8 v; J% E$ m* J' Z1 b4 R        NXObject *linkObject;
: j. I- ^" W% @  c        linkObject = linkBuilder1->Commit();
0 j9 J/ O" H% _; `0 {3 v  ]! B% ]: n; K
! a; H. L6 b7 H$ M
        linkBuilder1->Destroy();9 {: Y2 B: ~( L  A6 A, C

+ ]. |& m+ I# ^4 {9 m( i; s& \0 O: o- W0 g. X: v4 @+ k2 C; L9 p

; Y1 a+ \; A4 y  l) F7 d2 x1 [, f4 f$ P& ?7 O! N; X
       
; o3 q) y8 _2 k- l
5 X* @' Y7 M  h        Motion::Joint *nullMotion_Joint(NULL);
7 l& ?% ]0 O. ?7 _$ l2 B        Motion::JointBuilder *jointBuilder1;( u+ c" M- M% [6 E$ Z7 J
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);. q6 ~  K5 n0 h0 K
6 `9 n" h" ^" c/ h$ h/ R/ m- i

" `$ s$ h3 F/ e9 A/ p1 N8 e- K9 a; w- X
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
  Y$ N& O- n7 Z. ?# K        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");4 U# G+ |$ c1 z, E! j" f4 ?
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");% [, s( ^# Q! H; G/ M
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");( q7 N+ z) Z. {
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
3 I6 p/ l5 ^7 b3 c        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");( ?% q1 d8 ^& s7 D3 F6 F5 L
- P2 w1 p' W$ J
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);$ ~9 ^- V$ q: l4 q" r6 `
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
: @6 j$ c( T9 A! h# o        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);& w) y* z, u+ e1 L/ R- J$ r
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
. i; u- O* d5 H6 W        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
, [( V$ }; ]! @; L9 O$ A7 a6 t# r        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
% b" m' K# T8 H/ H8 B! [' B        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
; V' c# X# s/ X$ @. ]        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" y* Y; S# \8 O" H; D: V! J        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
% P. F9 o2 H+ @: ^+ ^# `        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);0 i' a+ d" V+ @6 z$ v4 R
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
# s3 F$ a3 j  N6 [  I( A9 o% V" j1 N2 k' R8 J  l
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));% {# ~7 N" [# m! s  a) h; w8 s
        jointBuilder1->JointDefine()->SetFirstLink(link1);
! d4 H+ `+ g( C9 P
; \1 p( O. ^+ d0 K& Z
9 n2 Q1 e4 G6 N% K3 O        NXMatrix *nullNXMatrix(NULL);
6 ^" I. P2 K/ r        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);! d6 e; ]" p, U- L5 Z4 B1 ^

* o9 I. b. C3 Y        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));3 g  ]; s3 I' n7 s  q* k
        PartLoadStatus *partLoadStatus1;, F0 @3 M9 K: G! ?2 A, _
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
  Z3 y$ ^& L/ k* O/ l8 {  o+ @$ \6 a3 C) V
        delete partLoadStatus1;, ?, b0 }& s7 e6 t2 K+ g
        Scalar *scalar3;/ J" N% J+ d& D# W  {; A* `
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
" v) h6 E+ V* G2 o  [! _8 ]
6 I7 J  U, u4 b7 j        Scalar *scalar4;, }+ b6 }' I! g
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
- N* @5 c" z, j1 T
6 c0 i5 j" b4 @& E        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));- \$ o% q/ X9 t" b8 l/ d( G
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
6 g: n& K) e: w' H0 \% N        Point *point3;$ |8 w+ t, S) m, i1 c' o9 _0 u
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
5 u2 m4 ?7 w7 I# b& R: ^4 n* S4 j) E: ^# N6 @2 F% D1 M3 j

# i3 n( Q# ~  y, I; N- l5 s        NXObject *nXObject12;
& _2 P  m5 h/ z) [' Q        Xform *xform1;4 O# F, P  ?8 \8 X5 s" \1 K. m: `
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
) R0 m. w9 m' k4 ~+ V# Z& i0 B# r' Q7 F% k# ^, d+ T9 L
        Point *point4;
! C3 w1 [4 ~9 E9 b% U2 M        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
2 c: N, Z9 r. R- b+ P" S) ?6 ?+ i3 J
' e' k0 a- h/ |7 q        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
2 S- M% M. {4 ^4 a7 X
' L! I4 x' ?  P; J
% x. |4 R! h6 g7 H        Point3d origin1(0.0, 0.0, 0.0);
& L2 ^# I, A: X4 u" m        Vector3d vector1(0.0, 0.0, 1.0);9 D/ `+ w- C! i  d1 @4 P8 K4 U
        Direction *direction1;
1 r% j: ?% v3 Z7 L& u        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
! h( s; A( V, j8 X+ {6 t3 g+ }
9 q$ f$ O2 l* {$ N& t4 \* u! ^        jointBuilder1->JointDefine()->SetFirstVector(direction1);
/ H9 \3 w: u) X0 W6 f" T" Q5 ?3 V- u* p4 L. Y/ |2 H% O- {
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
0 b. e! t2 W% ^" _) J" m
7 D$ Z' Z* S6 g0 B3 o        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
7 X0 }$ b* F& T4 o4 F: v3 [- w$ h3 r8 w8 S) b- ^1 R) e
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
9 p4 E7 y( m: H1 t% h) Q7 {8 W# x% k" X5 [
( y: ?1 @# z+ c# y! W+ |8 |
        NXObject *nXObject3;
  W: g8 s: D9 I0 N0 |        nXObject3 = jointBuilder1->Commit();
, d# z. D  F7 _/ ?' V& l  g  ^0 ^: b8 O! H% X) C, t8 W2 n
        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

为什么会有表情 - -!5 _2 u% Y5 X* i+ F- u0 r2 S5 P2 s
2 h- p) _- L' c! o0 w
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码1 I1 j) |2 g4 J+ x, @' ?* j% t
( w" {# _$ r3 n- S2 _
.....
+ M4 B+ q8 m! X' d8 M) O3 ?& E( F  j' k4 ~2 |' I
UF_MOTION_init_articulation();
# ?0 x- ^- O5 C' k' s$ z4 E8 Afor(int i=0;i<360;i++){+ L, G( j$ |2 R: |) |, u
  UF_MOTION_step_articulation(1,&i_ret);' d% L/ O- Y. A1 W5 K% P
}! c4 c, B5 J2 {% h" w* @
UF_MOTION_terminate_articulation();0 o6 h1 j% ?: {* l( u4 [, N) w' q
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二次开发专题模块培训报名开始啦

    我知道了