PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了! p5 O& T6 X$ ?. W8 q/ E

! P. |" n6 a/ ?* W! W; z' y+ m我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。8 M+ `' B* e6 a( F8 k0 W/ r
QQ图片20150521182535.png
8 o% n  H! S8 y# l8 e, a5 Q我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
- o, @6 c/ K# m! v7 I2 @# R5 w0 M- f8 ?4 g5 c4 E3 [9 v
一段ja录制代码:
$ D6 I7 t- `) j+ ]4 I" T$ p. e) w1 X# G: N& W% ~8 _
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);- X3 j+ ]0 D' b3 H3 a  |7 C9 ^
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
3 x) q2 |0 q% M; j, ]5 b        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
! j: @* E' ?! S) Q' g: H3 `6 |0 ^% q  g7 o2 o8 ?1 h
+ y6 {) R7 s1 |- u! n
        motionSolutionBuilder1->SetTime(10.0);' h* `, A! r9 D
        motionSolutionBuilder1->SetStep(500);. @/ L2 V7 R3 \$ X8 D/ H
        motionSolutionBuilder1->SetName("Solution_1");8 G- A& n3 K# N+ [/ f. L1 |
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);/ n' x0 A( E% I' p
9 S9 H$ s1 S, x

( l2 }5 {- K# {* K, H0 i! w: ]/ U2 I/ p
        Point3d origin1(0.0, 0.0, 0.0);2 s1 Q. L, \9 @, P: f8 [
        Vector3d vector1(0.0, 0.0, -9806.65);
4 {' Z) X& _/ |8 F        Direction *direction1;1 D3 r/ y9 j: T) h  i& B( ?4 q' t
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);+ _2 S8 H. c0 K; A
        motionSolutionBuilder1->SetGravityVector(direction1);
+ P# q8 J; ~0 t& j+ j  c, n
0 S3 i) Y8 {  ?) L$ n8 N        NXObject *nXObject1;
2 E& Q( l: l7 ]1 K        nXObject1 = motionSolutionBuilder1->Commit();+ `* y& E, r! ^) W
        motionSolutionBuilder1->Destroy();" v9 k: S( h, @2 G6 U4 W& P: e. T
       
/ J( J. Z$ g" R        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
' `' v1 M2 X9 _9 O) e        motionSolution1->SolveNormalRunSolution();. V7 E! _- v8 D6 t  G* O5 [
  ~1 j9 Q4 s) o7 x
0 [% ]7 A* }9 _5 @1 j9 k8 h
! [  Z. z7 h2 G+ ?; @7 m, P5 ~& i
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
0 P+ m$ r. G- [; r
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子. v8 S+ \5 r3 ~0 i6 l8 j
5 ]' R" U' w+ U1 ?, F0 F
PartSaveStatus *partSaveStatus1;. C* k8 j( s9 O' F' D% t
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
0 h/ Y8 f1 q7 |* o
- C7 h9 S8 w9 D        delete partSaveStatus1;
4 S  W  v8 l8 m1 F2 y- n& @) W! z+ n3 }7 y+ m. a) `2 U
5 r; ?- I( Z- }% G
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
! e. E* L* y# a* `7 L7 ~5 \" m! Y. w; F' X

' n( j& Y8 c. m0 Z' U8 h0 N; E& \; z; V& \$ @: s" ~1 C
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);, j, e; V0 S2 N/ [3 C, c' n" q( U
  I; ~" T% p7 d$ D' S0 E
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);  a: I- e6 S! n" n' C. \: ]
3 @! b7 c" K/ O) b5 q
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
/ Y% f& h. u, i+ R& J  ^; _1 G) `* N, ]: Z5 t! N+ Q
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
' n2 `4 u  k1 Z$ {- G+ V
' o8 n6 R' T% G        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);. {9 K' m3 T- P7 J9 P
& x2 Y. H) X# S2 M( ?+ j0 v

$ P/ R: x) X* X( h, P% J3 `        NXString motionSimName1;, w# g, p% l4 j% z. ^. v
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");- b" t) F0 {, O
  u, k! h0 _4 [0 \7 X0 [4 h
        workPart = theSession->arts()->Work();
# j5 ]$ j* r) S) V3 j. k4 o        displayPart = theSession->arts()->Display();
. z. e8 z/ q3 T        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
4 f2 R6 j5 Q: c" r. |1 A        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);# {" Y7 m. p) o( ]; l8 B: A% d

5 K& E, W$ C& r3 f        physicsConversionBuilder1->Destroy();8 S( x- h8 q8 F6 W2 @- n7 O

1 s' s1 c0 j  h/ I7 F! u        theSession->MotionSession()->InitializeMechanisms();. t, Z0 \  Y: H; {7 _" s$ i$ A
$ b2 `4 q# r% P6 l
        Motion:ink *nullMotion_Link(NULL);, a: ]3 }6 b1 z& j4 }* h
        Motion:inkBuilder *linkBuilder1;, i: Q' o; H( ]6 O
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);2 O* ^* u9 l. K  Q( ?, e6 B

/ f+ v6 k0 l3 M# p, l# M; b, A: Z        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));% d# l8 ^7 _2 Q& F- J

  q* A- V4 W1 z6 m        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
" s) i6 D- y/ K( l3 _8 |: G) N2 h0 b1 \1 O
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
# X2 t' e2 B1 i% _" m* o; t2 g4 `# k
( W! W; X2 U; i' d; x* V1 H  z        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
  e7 t3 }; N; K2 F2 @, I7 u  h- W) p
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
5 Q2 f# E3 l# M, ?9 ~3 L5 o6 K+ w4 u5 B& r6 y7 T. n2 l5 n1 D
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");9 L7 @& C  l4 a- Q+ ~; ~5 a

; J) G6 l% D% o$ m. a" Z4 T) N        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
' j# I2 J2 `6 f$ V" k0 O9 N  P& W" r* w, f
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
- `) j  P* R, Y$ }4 P
/ n+ N2 c% f' b8 Q: ?2 Z3 F2 b+ f       
0 P  d) R  `) q* F+ D+ `& y) t5 Q  E* R8 M% u
        linkBuilder1->SetName("L001");
' E8 W- y0 a6 ~0 x" e
* Q0 F4 G% s% j9 I8 j% F. [6 S: Z. e: m# ?
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));3 i7 h0 g" H+ V3 |2 r
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
% g: y3 s) P/ s7 z6 x. C# F; w        bool added1;& E7 F# a8 ?$ P$ e
        added1 = linkBuilder1->Geometries()->Add(body1);  n; T. i4 H0 k, i6 s; U- |

- K( ~8 z# b6 W. ^* |: f        Direction *nullDirection(NULL);$ G4 @. k2 B! O" g$ N* O
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
. U$ f: }& }1 `# B- D/ f2 `7 [7 G# ~+ p
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
7 F$ b$ e! Q; Y" E1 K  D! y' T, }6 O! D  ]
        NXObject *linkObject;# J  w" Q* i  p: @* D$ R
        linkObject = linkBuilder1->Commit();) w( o. p& u7 j* [5 A9 p/ X) X( l
+ d0 |( m$ j" ]6 ~0 S; h
; ]8 M( ?2 i5 V. P: ^. Y
        linkBuilder1->Destroy();
! ~. R3 l$ S" @7 F9 U# \* s1 g2 ^2 a& ^0 u/ V/ k

' ^4 H. y6 w3 [# i; D6 w# v3 [
3 W) ?$ l9 ]9 Q: G, k% c
3 k6 {, V; _# m" }. K       
) m$ X; w2 s% }! D1 ~2 F: q% V- a7 x$ N
        Motion::Joint *nullMotion_Joint(NULL);9 s# ^7 Z2 ?5 k: `! t: O' E& H. @. C6 |
        Motion::JointBuilder *jointBuilder1;
% G' i# o! }# f) _        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);  _5 U9 y" K1 Q% A

  T0 w0 I( l, G* @! b+ m: Y
0 }$ Y. l% i! g
  O$ A  y$ A% y& B! m( U        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");: {( e/ m/ L/ }2 _1 V& k: M8 u5 }8 V
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
$ h9 X: k( {' z# O1 f$ ]1 v        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");. Z: ^0 ?8 @. [- j, a  ?$ _$ A# e
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
, G  l  ?2 i& S4 O        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
9 ?4 ~9 u! o) }, _# {( d3 W        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
: D' }# A. e" ?( t. f! A  L% L/ H& R2 {' U
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);* F4 w6 w! K! L; H4 p. K
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
9 V+ w4 l3 z5 W/ X' d4 X3 N        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);! S3 J2 W4 [& |7 |" c: V
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
5 s; B3 F6 h& U6 G* w: F2 I        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
7 _3 B- j- f6 w. D0 W2 Z& B+ G        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);, i7 t/ ?5 k  ?: r. o9 K
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
3 X$ L# \& K; W! v        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);+ _' u. T; Q7 L& R  Q# i: A( v
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
7 I) |$ G. s+ N; z" }6 n        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
' f# U4 N% X& j' ^8 R- c        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);3 g2 y0 \! s1 o' Y6 B" L% |
0 z4 T1 h  `* @0 N/ A+ i
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
6 Q7 Y: g' }% ]8 ~) F- j! g/ }        jointBuilder1->JointDefine()->SetFirstLink(link1);
/ |5 |1 O5 `5 \! |" p
; M4 u& Q; T. C
; x7 J& g. L+ Q+ A0 o8 h. [        NXMatrix *nullNXMatrix(NULL);
! `: h1 ]) A  j  C1 K0 x        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);8 m$ ?" S( R3 w8 T' V
( H2 x) N3 m- G4 @, t' J/ l3 S
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));5 t3 v/ U6 `( M5 B
        PartLoadStatus *partLoadStatus1;
; A' M% V" i% S) h/ o6 P        partLoadStatus1 = part1->LoadFeatureDataForSelection();
' Y, r. j7 Z; z/ r6 G' Z. d  V! }$ Z% c% Q
        delete partLoadStatus1;" h$ l8 X2 n+ h0 V$ r
        Scalar *scalar3;
8 e/ w. g8 L) {( e        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
/ L8 K6 b( J( B/ J3 H( m3 U7 c8 @" ]" z
        Scalar *scalar4;
8 G! w7 `! u* I& ~% F( U        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);, i7 E8 `0 y2 ^

7 `3 O: X9 T! F3 a3 E: v        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));+ _7 `0 k+ p4 Q6 K/ p7 j
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));; ]' }/ H; c, P/ J. g& M8 a: a, W
        Point *point3;4 H, O- g2 k& h
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
  U& i; D4 U7 @# N% |3 W( J* J# H1 t4 m  t: a7 h8 _
2 L' S- E, J: c1 K. p6 K5 V6 J# o; N
        NXObject *nXObject12;; Z+ h1 p7 _8 T! W7 T
        Xform *xform1;
3 Z" }& t3 |. L        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
1 r/ R( T# I- i! b5 }0 e7 L0 o! O  r/ @
        Point *point4;) [. l+ q$ f* _8 E. ^  ?
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
+ c* ~1 r2 E- W9 j" w3 b4 C& y% ?$ Q4 C
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);; C) r' T7 z2 g

% j3 K# k% C9 {1 i* m4 J- ~. [& s' s2 Q$ H0 p
        Point3d origin1(0.0, 0.0, 0.0);: Z! q# z  z* ~8 {8 t" O, S
        Vector3d vector1(0.0, 0.0, 1.0);7 P5 @. g( [7 v: b4 j0 u1 _
        Direction *direction1;0 I' o) N! n" J5 }( i) V
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
, L) e, C3 w4 @3 A- u' |
+ k: l5 g: y# [- y7 L; {        jointBuilder1->JointDefine()->SetFirstVector(direction1);
6 M1 I+ L4 e0 z: Q
1 J3 |! Y  ?# g/ p! y' X: L- O+ |0 d        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);% |$ o5 i. @, h

: x5 p! v7 A* a: Z) k! H% A1 n        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);! S! }# D: N$ ^3 c- g

, G4 e: `$ R( q        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
+ E3 Z1 e$ V& e
  i$ Q9 Y" V+ B$ l# a
8 ^, P3 R& U& k: j/ n  \0 D        NXObject *nXObject3;
2 X5 n( q1 x( F9 h, j$ I/ ?/ d        nXObject3 = jointBuilder1->Commit();
- t& r- \( J# q! d( [- q! c& S) F' Q- v8 C# ^0 g1 D  V; N- S9 H/ }
        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

为什么会有表情 - -!8 G8 `" I5 z% z% h+ \
' N& h/ W+ i- P0 J7 |8 Q( Y: J
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码7 Q1 I- j* ]/ H, j' J5 C& h

, _; d, }+ \' }2 L* \& ?. V.....% g4 V2 O' B) Y1 n) o

) t4 `$ E; E, ^! v% C" y1 R: R6 `. dUF_MOTION_init_articulation();8 J& i9 M/ N: }9 I
for(int i=0;i<360;i++){" y! p. l' [5 b( O" f2 W! w
  UF_MOTION_step_articulation(1,&i_ret);1 j+ c4 A0 X: W/ v
}  x  ~: k+ I) ]7 P# ]: J/ \! a, F. t( _
UF_MOTION_terminate_articulation();
8 I* i8 g' ^4 m9 `8 vUF_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二次开发专题模块培训报名开始啦

    我知道了