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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了5 J$ C/ r+ u( c3 h: N" _

0 i) ~; g3 c  v4 c6 L我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
$ Z( [) C# p8 c QQ图片20150521182535.png
+ C2 |0 g  S' ?& `我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
( T  i$ ~4 i9 H& T) s" y
$ W0 p6 X5 v* D' T+ n$ E) g一段ja录制代码:
; z6 W+ H; l$ w9 a5 x" w$ a# K+ E) ?* x# z" Y8 X
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
7 l( j6 {( w7 E- F( V7 G* w( d        Motion::MotionSolutionBuilder *motionSolutionBuilder1;' _# Q$ {8 y' _0 l' W; b' h# v/ B: H
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
; G: X+ k; J9 H3 l, ^' q6 m0 ]( z4 a3 x+ f7 z% N
9 k, k8 {! S' ]) }0 s
        motionSolutionBuilder1->SetTime(10.0);  U3 A& @* B1 w- t% @" A
        motionSolutionBuilder1->SetStep(500);
, y+ t3 ~# _" P2 K) `* T& a        motionSolutionBuilder1->SetName("Solution_1");
, w' h; w2 J  s2 m; d5 K* C        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
( a1 t5 `! Y3 |" v+ g. c
6 d. P4 ~; M7 }9 ?' Q, J
  Z! J3 H  n/ Y- y3 n% F. ?5 P7 r' l. T6 Q4 S! d
        Point3d origin1(0.0, 0.0, 0.0);3 B) y: ]& ]6 E  n
        Vector3d vector1(0.0, 0.0, -9806.65);
, T# P) s: l, T2 `2 b0 v        Direction *direction1;
! h; Y& n, |; T4 f% V( m) X; f  _5 l        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);  U9 R: m! [0 l' a. C- _
        motionSolutionBuilder1->SetGravityVector(direction1);0 v- F- \3 Y. |& ^
( s$ c% q" H4 A! q
        NXObject *nXObject1;
% H7 M; C$ O/ R: z: K        nXObject1 = motionSolutionBuilder1->Commit();
( v' w5 w' _; A& J& _        motionSolutionBuilder1->Destroy();
4 \7 Z+ Z* p) k7 \* I+ [        2 ?( ?- Z% T  N" F& [$ O6 ~
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));$ e0 ?/ ~7 g% ~' N4 G9 d$ @8 P
        motionSolution1->SolveNormalRunSolution();
" M. I9 L2 j4 j4 k1 j, d8 X2 u
, M+ V4 H! _4 G$ X* s' B2 k& z& t) g/ Y. H# \

/ \2 a0 _8 V! O就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...4 ~. B- f! A! M8 X
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
  v' i% ~# ?  m  M/ m
9 \+ L5 @8 q8 w" m4 }$ _/ N5 C6 }# vPartSaveStatus *partSaveStatus1;+ B8 T, h& M. a' q$ Y
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);+ b9 i/ s. Q+ u$ J
. k8 X8 A; d/ a, C2 d+ F
        delete partSaveStatus1;
, F* ]9 S" O; l- K
& W" B$ L, K+ @+ E5 Y# j, I  w* J- o/ M5 W
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
5 H9 s, N& X/ C6 j8 K+ L# c2 H2 y0 k" p- {8 h. r8 D- i

9 \% ~5 s: r5 @( h1 q
; y9 _) V7 L4 Q: t+ @; \        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);% C  c6 i. j- D+ o0 {

) y. r! N9 O5 L+ j" I3 }        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
$ ~' c4 ?7 P- m& p
) \) i# j% Y3 V7 d2 K+ M+ c        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
& x8 n0 I' C3 s1 i! k+ b, A# o* h1 }* X; p4 u( @
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);4 T2 _: o# R+ b% s
* z+ [* X% h1 H  M; q3 G
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);3 G& |7 k/ V$ V
! N$ W+ x5 G, ?% g9 u# U9 K! f- B
, p- C5 H1 \! R0 {  M' d' {
        NXString motionSimName1;- e9 A/ @$ I1 a/ N- s, o# Q* N: @/ f
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");' t* N8 B. G, D1 G" K& x

8 E: H1 s% z7 Z1 Q        workPart = theSession->arts()->Work();
  W& b# \' Z8 g6 g3 w: Z0 ~4 k        displayPart = theSession->arts()->Display();
) o, R/ X1 g; k9 c8 S$ G        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
0 ~* I) o+ S8 j( Y4 [% G        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
/ b8 z; O3 D8 N: z3 {" G" J  X; ~6 n# K: D
        physicsConversionBuilder1->Destroy();
% U% d( Z: H# m8 i" C3 x2 n) U  g/ N  ]7 C" R5 |# J: y
        theSession->MotionSession()->InitializeMechanisms();
) F: k+ d: A% C) F6 j* W- i' m4 \0 Z7 g1 O" Y8 u
        Motion:ink *nullMotion_Link(NULL);
$ l) }+ t$ L7 [1 K$ m# s2 G' @* H        Motion:inkBuilder *linkBuilder1;
5 b; ~' O5 s8 W. o( `/ ~- v        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);! C' v; ^1 J, Q2 F' R
4 }. a) U7 m; O8 B9 w
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));; o6 w4 Q( p% `9 Q

; m6 `1 K" u" K% s: k8 ?        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");! L2 p7 z$ M" L# c5 `
! i5 _, V7 x- b
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");8 G2 I# Z, Z/ H( c# D" o6 A
( S* z# W1 Q/ b$ ?/ {7 F  R
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");) a1 H, r7 B+ S! a/ r

% y% t5 ~' v- i0 R        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");* ?. y* S1 ]" z& `: V8 S* r- s4 y' u
# W" X9 g9 [& g
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");( X! r2 p8 l8 ~' ?: m9 B/ A2 {

; v) r  i% N5 O        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
3 \% x# s; D5 i+ v6 q/ W3 `. d$ y8 g
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");. {$ J" e8 h* y# }  y: B6 U; S

+ E7 ?9 O6 Z# M# ]5 W/ r4 T       
2 [7 v/ p( c" G, S$ b+ ]. f7 `2 h8 p. a- }
        linkBuilder1->SetName("L001");: k0 g! n/ i, l( H( n

) T3 I, q0 @  r2 B, [3 U1 K& ^2 H6 K1 D! M4 H/ G
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
7 e/ `9 H/ E- m1 z% O  Y( ]        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
. W2 }$ I3 Z6 K        bool added1;6 T: V/ {8 }8 T# a: I
        added1 = linkBuilder1->Geometries()->Add(body1);
6 [/ E+ V, l0 C+ [
7 u% I  s9 e/ l: Y& w2 P4 v        Direction *nullDirection(NULL);
. X! L* }. T; C1 |$ q% ~. N; P        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);+ }/ W+ T& I, r) A" A: z
$ I& F. ~4 V3 w7 o
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);+ n! j8 k: F* u1 X2 J; P

; Y3 _" E/ j7 X& Z        NXObject *linkObject;2 T# K6 v3 l. B: b9 s; ^
        linkObject = linkBuilder1->Commit();/ d: z; K! r' t8 y! M

9 v' i( \* w( a- w6 f
; q) q# t( i3 e4 k! z# D7 h/ ~5 a        linkBuilder1->Destroy();% m1 J8 S, l* r
( n- m; H* e% N7 {( ?, M, }
& i4 |+ l& T# Y! [) a

  F8 o* q: A3 _8 R% i4 C
6 {# V  ]5 b' G+ ^% ^5 D- A( s        7 e' Z; f% @* h/ ]' \
# t9 L, u2 ?" O* X% U7 ~; W
        Motion::Joint *nullMotion_Joint(NULL);; U& y& V6 h" N
        Motion::JointBuilder *jointBuilder1;
- J; S! k( y$ q+ {        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);/ \& X4 a  E* K( L& d
  |) j+ l. \9 w* O; |

3 H7 ]6 V8 C# ^. V
+ [3 ~) R& y3 v2 e. X0 w2 K        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");/ r# @; V% y3 {% c5 V' K
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");5 E9 U4 K2 p1 f# s$ }) q9 I
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");( \# c7 \& U4 l8 @9 O9 a$ B
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");' R3 C+ B# R. u; R3 E7 p5 ?( g5 [
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");; n0 t5 W1 I  N' X1 V# ?7 Q
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");$ K4 h: p7 e' H' N  ?- r
! a2 w; ]. f1 g" v$ b- F3 a" c
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);9 L5 C3 T2 J. ?7 n5 r
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);* q2 G2 D+ e# b% G' y/ y
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
5 A. p( B9 X6 J) v        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);# H9 u  ^) w& Y, w) t
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);$ r, o7 }, p% \, m9 \
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
- f, m0 V3 D0 `) y4 |$ y% o# h/ u        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
, F3 a/ j3 o& A$ s: p+ I9 U        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);8 M5 t* n& c7 r+ J: f3 \  T
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");2 s% ~5 D: x" N0 ~
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
- G. l5 x7 x2 |9 F3 E        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);7 m  e- x0 B0 x4 B

* `3 d2 o  A% o6 X; }7 z( \' a/ r        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));# ^9 u7 x1 u. R/ V
        jointBuilder1->JointDefine()->SetFirstLink(link1);" X& s9 h( _) Z# `- I

" q2 o' m1 @( w0 s$ z5 h0 l6 F  K" k6 V1 q, y. T4 {9 R' o
        NXMatrix *nullNXMatrix(NULL);
# }  o2 r- M& n, [# H4 R        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
4 J+ p' E2 }0 ]: R7 [
' F, {0 `; Q4 Q! G        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
. C+ j1 u7 n( G$ _- `        PartLoadStatus *partLoadStatus1;: e* O  h! y) c6 ?% S
        partLoadStatus1 = part1->LoadFeatureDataForSelection();/ n* a) F  h. g) z' G' f) I  L
% [% Z; u4 Q) v( S! r' R
        delete partLoadStatus1;
5 B  r- F4 B/ X$ b        Scalar *scalar3;) A. |- [) v9 x6 g- i
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
) C3 D- B! H3 i4 z" O) L' G
! K$ U& b. n% `: W8 U& S8 ^        Scalar *scalar4;$ v( u3 k/ ^' m& y; E4 U
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
0 F9 x' f% T4 _! J- E) n
& l9 r0 O% k* b% o: i2 Q        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
1 x& G5 @8 o9 k/ C: m3 P5 y        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
6 `: Z" T. a4 v% A5 R! K        Point *point3;
3 v( m+ ]- [# ?0 X: T7 O        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
2 G$ C; S, Z1 S) Z; A( Z
1 k& l6 t5 a- f2 G% V% z
5 K, p$ J3 d' F( Z; b$ W9 P+ ]  o        NXObject *nXObject12;5 {, }* w& F$ p3 e
        Xform *xform1;
7 K' v2 p" e+ Q        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);% p" g" g1 L! r& _- M4 [5 m& D

; Z8 N* k$ Q* i, v+ X        Point *point4;
( y% T% o2 k: [# l( A9 S# E0 g        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
2 N( ~) k( P6 l, y
$ A$ J/ x2 i& C0 `7 i        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
1 g7 {- {* m: k1 ?
2 |6 r6 ?* k9 v0 s- g) f. n3 Z0 q2 Z( x( h
        Point3d origin1(0.0, 0.0, 0.0);
$ ^4 e$ c$ V2 w        Vector3d vector1(0.0, 0.0, 1.0);9 U" |& h( I3 r
        Direction *direction1;2 H4 [$ i/ d% F; K6 i6 @; ]6 V3 m) e
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);  k. ?# |4 U) G" Z

  \: }5 ]! ]8 k% i! m$ x5 N, g        jointBuilder1->JointDefine()->SetFirstVector(direction1);
3 c% ?% f% \+ n
  t6 [+ {1 @. S/ H1 `        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);0 J9 l9 c6 G% H/ d. g( U) r2 T1 m

, r( a) O# y5 C" i5 Z        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
7 }1 q: @3 I$ z3 `2 x0 k3 T4 P4 n- p' P. m# s$ U' M
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
! n/ p" V6 T7 j. X1 |; Y$ v
' m9 q5 r6 ?/ P, R2 h4 ^, f* }  f' \$ W  L7 x" F
        NXObject *nXObject3;
0 _( C6 G8 I6 o7 ]3 H  b        nXObject3 = jointBuilder1->Commit();; w+ W. a- ]) o8 K3 J8 Q

8 @. ~0 c+ q( @        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

为什么会有表情 - -!
% N& i# d- B9 h. ^9 Y! b: h- l# Y. u5 {6 n" W8 G% }8 }5 Q
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
/ E! K* q: r& A! m$ `- Q
2 W) e6 R3 W1 d! k) o) D9 v....., k2 Q" w' O* g: ?4 e4 ]- K

: U5 @! w* R2 c! {* ~( u3 P' XUF_MOTION_init_articulation();
9 r# r' X1 `/ h2 lfor(int i=0;i<360;i++){
/ B4 j' [' B0 H) I; {- z# H+ z! g  UF_MOTION_step_articulation(1,&i_ret);& G' @2 y8 o* u6 G; X
}
- Y! U/ g. ^3 y% x/ ^+ gUF_MOTION_terminate_articulation();% k3 a( H* g. f1 L
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二次开发专题模块培训报名开始啦

    我知道了