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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
& ]) Z7 ]4 H4 k9 x$ y5 @/ p: S4 K
" l' ~2 g7 e0 k+ H8 T我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。( j  O" c" n* l3 F: e7 F3 z
QQ图片20150521182535.png
  Z  K+ H/ q' d% [+ \我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。3 [0 Z6 u3 c$ P# y, P5 S2 b' c* c1 z* ~
5 b5 y2 S, J! R8 _3 J
一段ja录制代码:
7 L. c& a% K' \; j
) F, H2 P% V0 }1 g/ d4 Q; ]        Motion::MotionSolution *nullMotion_MotionSolution(NULL);+ J- [" O/ l3 n( e
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;' `* c: s7 b) x! ?6 l2 \0 j- |
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
5 X; q- S" S- y/ n, x( s& C) r
$ J+ z1 I6 `) N6 Y" J+ m) v! Q, H) V  y7 d  F7 m/ C. k8 c& Z" Z
        motionSolutionBuilder1->SetTime(10.0);
* U$ c5 c7 I; ?* v        motionSolutionBuilder1->SetStep(500);
, Q( B/ v+ P; B: s8 l        motionSolutionBuilder1->SetName("Solution_1");% P/ b9 g6 r, G5 M
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);. e6 x1 @2 l. Y

; T# i" y5 R/ |: m
5 X" g( A! j( f; H4 q
0 o0 e( q9 U# a        Point3d origin1(0.0, 0.0, 0.0);
) n$ d, b6 o- @        Vector3d vector1(0.0, 0.0, -9806.65);9 s" R6 J" {. X4 A
        Direction *direction1;" J, K% a- V+ x/ {( y5 z' C% M& Y
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);& J: N- p8 Z3 p" ?
        motionSolutionBuilder1->SetGravityVector(direction1);: |- Q, V3 _1 Y& i9 R  q. S

' h0 m# s2 E7 t* H$ w# z) S7 p" }' \# e        NXObject *nXObject1;$ V9 w* ^$ L, x0 N% E( R
        nXObject1 = motionSolutionBuilder1->Commit();: L7 c2 x0 h+ M5 W: G3 q% _0 G! \6 P
        motionSolutionBuilder1->Destroy();
  e; `1 U+ g8 i, @! i       
7 D" s: t1 e; t5 g9 E% V+ K        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));: i1 ~6 r6 c+ B! ?1 s$ [  i- }# v
        motionSolution1->SolveNormalRunSolution();
" X( p" D" o) v2 B' M3 Y& D1 `% k2 B1 V' |9 J

/ R& L, D' ]* E2 h
1 {& p% h2 E1 ?5 g- ^就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...( A* s( ^  S, ^( `9 o/ o
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
+ J0 F5 ^8 M, `5 |) x& x/ u2 S5 ^5 F) p$ n' K! Y! I* }
PartSaveStatus *partSaveStatus1;
  q6 [4 o+ a) Y" M3 f6 k/ a        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);$ |* V3 J  \9 q: Y" y" N3 k
. `' J' Z0 E0 U' ^+ A) i
        delete partSaveStatus1;2 d3 m0 U! n( i8 z

" S5 ^. A$ o% `& m! I( H% [. `3 X' y+ O, I/ i! x6 A/ Z
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");: s5 D) b% f: ~* D

* c* E( i3 ?$ ^: g9 K: ]3 u& `" S4 E& G8 \1 _8 [( k
, M1 F& n8 \/ d6 [9 `  }1 p: Q
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
0 N* M# D- e8 }! I
2 J: e3 y  _3 N4 {+ a$ C) W        theSession->MotionSession()->Environments()->CheckMotorLicense(false);: f1 G' x1 l) |( m+ K
5 M- }8 _; X5 ~- M! `7 X9 z" j
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);5 h0 ~3 ?) s2 L; w+ `

8 I. w! ?9 Q$ {, f! x* c; x        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);4 E# b, F$ U0 b  P

; M/ \3 F0 Z' e/ D$ `/ c- `" R        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);1 r  K- |; w5 `3 G' f5 e/ Y& `8 P# T

- G- n; v/ ~( M# O6 t/ T1 b+ l: b/ O0 ^
        NXString motionSimName1;
/ C5 R$ ], {7 e. z: n        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");8 L5 r- I4 R* T+ }. g7 o) `0 y

, X, @/ h' t2 _2 r) v) y: b3 t        workPart = theSession->arts()->Work();
9 n8 G8 W& L$ }: ~5 f        displayPart = theSession->arts()->Display();2 c2 \4 k) c2 J! q* F5 ], K8 M4 a. y0 u/ D
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
  X' H: l6 ?# C0 p4 Z5 ]# I        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
: f+ f: i8 z9 {4 D0 c; Z; n# i5 S' I
        physicsConversionBuilder1->Destroy();
& Z6 x5 N  y; g& Y* F& e5 ~" X6 P
8 |1 M5 n/ I; c6 }        theSession->MotionSession()->InitializeMechanisms();) F& R+ G: d+ K
9 k( p+ m. v9 s$ R) l( O' {
        Motion:ink *nullMotion_Link(NULL);* M2 D+ ~& r2 i' S
        Motion:inkBuilder *linkBuilder1;
9 I$ V5 b$ [4 Q  l        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);& y. ^" e' B" D6 o- U% L/ [

. p3 |2 F1 V  [' H; P( f+ s3 ]        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));; c0 Z% l* G  O5 Z
( B. J1 X) E( [. F+ a
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");4 T9 S; V  V1 z( x% w
5 x! W2 k% W* O$ z. n7 P
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
& G1 V  g8 ~+ h. d2 C
) b6 @, V& U+ `, ~        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");3 Q5 r6 l3 D6 s% Q& Z

9 S- {$ N: R! z& q3 Q* k        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
  l+ Q7 c  |' J6 z( z( B  l- D7 l. Y4 O$ _5 N
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
4 C; a5 h3 f/ k) R) t0 `) M3 U5 |
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");5 z5 z: a9 x( K

' d# P6 |" S0 m' v' B0 w* D        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
2 h; |7 H' @2 U  q6 x7 V1 M1 C5 K% s+ P
       
6 y5 |  C9 `+ f0 `7 P0 P
( `% i5 x3 c( ^; o9 ]5 ?; l( f& k- [        linkBuilder1->SetName("L001");
8 c" X4 N1 [  T. v" ~) ~7 ?# Y6 F: Q

" h3 m( \/ j4 ^! A: j  |        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
9 w6 b8 S6 Y( U: }) n! k5 |% k4 s        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
7 b2 W0 ^3 l1 H        bool added1;: P+ p  Z( T  [9 l3 f8 j; J
        added1 = linkBuilder1->Geometries()->Add(body1);: ^! `$ k7 Z  l2 I& R3 E9 M

; y7 G. K& G5 o) F* ]8 E; c* d3 n        Direction *nullDirection(NULL);
, R0 x+ S/ A8 W4 J        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);9 @9 I' O7 N3 D2 u7 Y

, x+ F# ?6 }2 I# A/ F" ~/ u        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);7 h2 c5 f. f4 z$ B$ T& X3 x9 r
' D7 s# H3 i- ]4 m+ n
        NXObject *linkObject;9 I& j+ j0 _7 u- s3 n! h
        linkObject = linkBuilder1->Commit();0 R  v7 F% D: O- g( Y' B
+ w. s; d1 U* B) T. \9 L
$ R. f  o& Q5 I# G2 H- |, n# r
        linkBuilder1->Destroy();& S! l$ S; ?0 U
1 f1 Z' b, i& _; z
2 F9 L+ X: m5 V, \2 V5 T3 d# G4 h
7 B7 s. C) @. i5 c

2 L5 [+ e# i, H+ M6 t) e       
; m, V  G/ k% a' H5 B+ R4 E, G( O+ y4 A
        Motion::Joint *nullMotion_Joint(NULL);
* {! H% ~* a! N1 x. ]. ?        Motion::JointBuilder *jointBuilder1;- H5 I8 {6 y  {/ M1 f  ?' c( |* a
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
9 M0 F' ~( l' w) G8 y/ N: Q' U, c# v- U& N+ `( h9 C& I0 V

% a; t& I: j: c) s8 O! W9 N/ a# {$ z$ n$ k( k% I8 p
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
' w: R. G* \4 D' Z        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
. k/ r% r3 i" E# w, w1 `        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");- i3 h2 ~& z. b4 U& S. D( H( o' L4 c
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
  z) m+ D" h( s  ~7 q        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
8 L2 q3 \& H8 M4 v4 S        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");- ~4 z* F) n+ e. A* ^! o: C) _
3 e. E8 t- i; Q' g* g' K4 @, u
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);, c" }' n6 T9 _
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" X9 a. F. T8 Y0 {: y0 l  M/ r1 A9 H        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
" B# }! B4 F* a9 F0 P3 ^, T2 q5 |2 i        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);( `2 P& C; B* B5 |/ _- d2 h
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);+ E1 X* F, G5 {# A' K+ \
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);5 r6 R3 w/ }3 e( N4 F. e/ z
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
1 \) W6 ~( W! i" q        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
+ Y* v( l% x7 ~) C* |) ]6 d0 `        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
- T; r2 B! _% b        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);4 x! t5 q$ @8 I
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
- ?- q( M* w6 f9 f8 I# ?6 B  K
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
  m) H) j7 l; g0 M% @  _        jointBuilder1->JointDefine()->SetFirstLink(link1);" j; A4 x0 N5 g
* s& i4 T' v, B6 G7 }, L5 r* a

/ A0 ?6 J, M! C  y' B$ A" S/ _& A- L        NXMatrix *nullNXMatrix(NULL);# z: N+ {, z! N' }5 `1 ~0 u0 U
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
( |& j$ j) S- \5 [) `4 z
* ~/ z% g& f$ a" K; N/ f        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
3 r7 p$ x* L# m: k6 m  {! Y        PartLoadStatus *partLoadStatus1;
# ^% l7 V6 L4 l        partLoadStatus1 = part1->LoadFeatureDataForSelection();( F- H3 w! R- A2 X' J+ ]" |
8 N$ O* C3 o+ F& @" C* |
        delete partLoadStatus1;2 Q( H& M& [( m5 q& H7 z' T
        Scalar *scalar3;7 G7 K- t. w' g9 C; {
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
* z- Y8 @5 S( @# }
& g& m" Y0 J9 e; s; ?& g        Scalar *scalar4;
4 |  B8 G- m+ S; S4 ]' L& k; \        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
1 c; F3 S0 O) N' w& c
! ~0 [. J  p. p7 w2 [8 R        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
9 }$ o" @' c' E$ g5 N# `6 z6 r! i        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
# A) f! \, @" {        Point *point3;; _/ `0 O1 O5 J8 C6 p
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);: F. V% _; o* J  m. ]+ |

. Q" g" d; W* u. e
/ O. e- h, X  t9 `        NXObject *nXObject12;3 ~0 q5 o+ i% M& Q  y) b
        Xform *xform1;
  b- A; ]3 V4 q        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);6 R/ s3 x+ i* F- y! V6 p
2 l: V% z1 x1 ~. V8 ~
        Point *point4;  ^* {0 k, [7 e3 n
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
! n0 u3 V) E9 B4 q' N, I: |: p' Q, `$ v, k5 g9 O+ u
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);+ t0 u- L; u% c

3 |0 Q% U/ ]. n  O2 \5 [( \# r6 V* G1 a! O* \/ S# M! O9 l% ]# h
        Point3d origin1(0.0, 0.0, 0.0);
% a$ e2 ~# e- d7 O1 k8 R        Vector3d vector1(0.0, 0.0, 1.0);
  }" I! O% l7 I$ n  |( J1 q1 @! ~        Direction *direction1;
4 J7 l8 ^0 h% J9 y$ J( T6 \        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
5 r4 h' f3 E2 z  Q- W8 u% V
2 d- P0 f+ R8 x  W( r        jointBuilder1->JointDefine()->SetFirstVector(direction1);
- \( {' f- \4 d0 Z2 B  U0 |9 `: j  A- W' K  E2 @8 g+ b* d
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
( s; x/ r! P1 b1 A2 x3 S- Q  z0 X8 W- \4 M
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
3 a0 ]9 a1 w$ d9 X  I2 w/ x
/ `. U9 Q+ M/ f+ f  u5 k! w        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
" f4 Z$ b5 w3 g& T" z  G$ p  V8 [
+ X, p  F: F% e' c2 Y1 B
  c8 W. m- R0 q6 b; F. N        NXObject *nXObject3;
  R& [; Z) L- q# W) M        nXObject3 = jointBuilder1->Commit();0 f. V( }7 A5 M/ U

/ g1 I$ W+ C; n+ e9 p! ]1 `        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

为什么会有表情 - -!
+ {' ^: Z1 g0 t0 Y4 t9 j! _
. T( }* L9 S, U* y" z有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码" e4 X7 Q8 t: ^$ C/ w4 x. S
. p) i* z8 A! N2 U8 W- s# g# E
.....
4 o' q( H; v/ D9 T  A' m4 B0 y  R% i
4 j" c) @6 ~8 V, s9 \1 |( [UF_MOTION_init_articulation();
& U/ n, a  E% q% W0 rfor(int i=0;i<360;i++){! j; W# q9 M1 S: U- G& w; U
  UF_MOTION_step_articulation(1,&i_ret);
' D. o5 H9 X2 e0 x" [8 j' a" x}
) F2 o  H! V$ M. R# x7 ^7 {* h- I6 ?UF_MOTION_terminate_articulation();
2 |8 G. s, }3 v" a5 t+ _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二次开发专题模块培训报名开始啦

    我知道了