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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了. n8 m! \& L" m5 o+ m4 h+ A

9 a9 F4 l# x, K5 |3 F: v8 S* }# }我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
# P/ V8 o% S! n QQ图片20150521182535.png 0 I" b* Y& s" x
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
1 I9 b8 x4 w1 I- K$ M% @5 W  I8 {, n$ [* a6 m( j$ H2 i
一段ja录制代码:% h" M' `6 n: L6 j, O7 C5 R
/ h) ?% }3 J' `( e' `- F
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);0 L! ]; u( x; ]: O* p- y: f2 f; I
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;  F! x  f& g8 Z4 \6 c6 Q
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);1 q2 h  j: e; l' t* d) n

6 v: ?- J+ Y& z- Y0 x
9 X, J1 a; A. o( m        motionSolutionBuilder1->SetTime(10.0);2 N: x2 I% U, e2 n
        motionSolutionBuilder1->SetStep(500);
" a! D' X) s6 _1 B& D        motionSolutionBuilder1->SetName("Solution_1");
9 W/ G3 @. j8 x( }        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
4 |# Z. h3 u- r9 W* g
0 O+ P+ f% e4 {) T# h8 k# C2 ^
: D! A. H$ T+ D6 l. A3 Q7 m8 T/ S0 }% I! c* I
        Point3d origin1(0.0, 0.0, 0.0);
; |$ X# M7 N7 ^& p        Vector3d vector1(0.0, 0.0, -9806.65);" c: v; U6 O- C1 }9 J" w  ?
        Direction *direction1;  w, M' z" ~) V: l8 g
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
- j0 F( \- _$ W+ ?        motionSolutionBuilder1->SetGravityVector(direction1);1 j; u$ p' y4 ~5 k# _7 l: V
" G3 y. O# E) q+ @4 W# Z# E6 g
        NXObject *nXObject1;
( L7 X3 y) A) Z$ }) `% z3 k8 Z$ ]        nXObject1 = motionSolutionBuilder1->Commit();
9 p5 {+ k- l- i8 L* m        motionSolutionBuilder1->Destroy();
1 B' m3 ?! R9 E, j        : A% l1 p; \0 }! g
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
8 i, o3 E2 r- P& _- F+ ^        motionSolution1->SolveNormalRunSolution();
3 G" V% G" F3 b( p4 h5 l' X6 J8 {5 D' k; x
/ V! y- G7 |+ _4 B5 l

+ u2 y2 T$ p: o' |就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
4 x( ~7 K* c$ J* P
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子$ g$ y$ f, b( R6 \

4 k4 g3 z! U9 y4 g/ Q( W8 iPartSaveStatus *partSaveStatus1;
$ p% H* v* h" E4 B        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);+ A. @1 C9 g. ], Y' D

1 i6 B9 x: U' L( U/ B$ M4 v        delete partSaveStatus1;
. R  b! E8 _* u8 {9 [2 V
# s) z* |6 D/ k# ^' Y( }4 c- H, p# j
+ V! f: [, N7 B7 b2 z        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
0 m* d# ]4 M) H" |
4 ^, L! f& `- M+ s! Y, t, z* P9 V4 J4 \

; s* y- W  |, F, Y        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
" J9 Q* O8 E! m2 K
7 Y0 u% F, w7 m+ C/ Q) X        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
% y0 h& w  y7 S& N$ s( P, x8 P9 y# M3 b2 F  ~: t5 C
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
* x, N# \" Y6 s& C" g% Z" Z" ~5 D: h- i" E! Z) o$ Q- v. r  R
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);
( E1 j% X' w0 \6 h9 o9 Q6 L
# N/ Y( y1 m$ E/ p  W# n5 Z$ \: Y        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);3 x& M0 q; G# N' y- b/ p# _4 q
7 y0 L: c( M/ L- f' v- M
6 P8 h6 ~( g* M
        NXString motionSimName1;
% I& o, q6 t# ?3 t: C  G0 d" a        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
8 _' v, N8 w, j0 T" N# P1 [2 G! J! Z
        workPart = theSession->arts()->Work();
$ F5 D6 s$ B" s        displayPart = theSession->arts()->Display();
, U; y( Y/ O+ z, Q# t        Motion:hysicsConversionBuilder *physicsConversionBuilder1;& Z$ s. v# q5 Y$ V6 c
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);% N2 a/ [, f9 R) r7 _& Q/ M

2 I" f) x) l) N' r( }% A0 E        physicsConversionBuilder1->Destroy();
. d8 r' S/ o+ s: H; I7 I0 i& H* N, f2 v4 k& j& ~1 D
        theSession->MotionSession()->InitializeMechanisms();+ a8 {  p$ ^0 D. j9 R

; F+ \9 M) [9 O7 `0 J1 N. _8 A        Motion:ink *nullMotion_Link(NULL);
) w* M' \, A) L% Z3 [        Motion:inkBuilder *linkBuilder1;
/ T$ b% L/ J/ N1 t. N0 U5 l% k        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
/ P( X/ O% H& Y1 j* z
: [, N: [1 P; ~6 P: Z        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
; s: r) G. U3 Z0 ]5 z( I* j6 W% l9 H9 \0 O2 {4 B9 E) u* ]; n
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
) x7 ]4 p+ M  c1 U( B; j* e7 E( P( Z. P' B% L
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
  r; J. e  r+ D7 ?# g+ K6 r( e! e7 e" M" P5 a
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
3 g7 Y0 ~8 K" v' Y* L/ p
4 c5 b+ D5 b3 s7 v6 C, }" W  X( O+ O+ E        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");# l1 p  C9 g5 C' k* e

' z! ~% K6 C$ p# [4 _        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");/ d0 ~6 N2 X! N2 I

. k  j# y5 J$ A8 j5 W* @$ G5 ?        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");
: C) P" M7 E! E4 \% ?" l, M1 E8 T8 L/ {  x+ B
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");, B$ T4 `# H8 M# h" R2 \

" F9 J0 X0 u6 n8 X7 h( \  i       
' K2 X" K6 U/ U) a. T! Q4 J
/ b4 i5 t: i4 r7 s% q        linkBuilder1->SetName("L001");7 T' n; C. [+ H: A) d$ J9 P

2 f7 {5 ^1 l: s- b, W
- D- w7 q3 d" s2 b* ?  d3 c8 v0 ?/ ~        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));$ f+ w# J# E+ l; @1 {
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
8 |( H! k2 y2 I3 i; @4 M- s# w        bool added1;3 t2 [, n9 T1 s: m9 L  s0 m
        added1 = linkBuilder1->Geometries()->Add(body1);. c. ]# m% o1 \; `+ a7 q
& b1 n( ?% u# `0 u
        Direction *nullDirection(NULL);
+ y* M5 f# b( A/ N. V6 k( X5 f        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);: y8 u/ T6 N' X5 M& K2 X
, T7 }* z% i2 V6 Z3 e1 m8 N
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
: l) \2 u2 C: e- d2 {' I1 ~1 k7 }2 b; K  p
        NXObject *linkObject;
/ J# d" r+ J: g! f- J        linkObject = linkBuilder1->Commit();) A8 C1 @) E4 F$ [; f6 r1 m

: u% D. t# J" ]# W. Y) Y2 k* T
+ J8 f, J/ e3 |# M        linkBuilder1->Destroy();5 A) |, Q& C+ Q: v

) L. L9 I( x$ w' M, z6 j
' _- E# `7 J- ]9 y2 B2 a+ }' E. s) W6 R
. O- ]3 [- ?) h6 z
       
$ _' e8 j& n& h- M* f0 T& K$ ]1 ~4 y
        Motion::Joint *nullMotion_Joint(NULL);8 H! V  S5 d2 Y* i
        Motion::JointBuilder *jointBuilder1;
. o2 E0 r% h) J* M        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);% J, E9 r! r  L

* L6 n$ C7 C  L- E. ~, E$ ]4 g& K+ }  C
: N  d) u7 M& }& t# _
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");! m0 B& z9 d2 m* H% k" D
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");+ i8 V% Z2 }- f8 W
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
* v* s; R; n" W* x8 k        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
- e. |( M1 @  c1 t! E( p        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");" O6 t6 y: E0 c0 Z; f2 C
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");- o8 w% k* B" l' i% r; n

, Y+ _6 k- o; ~$ v" |        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);9 Q! b" ]7 [- M- O* B
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);" s  ^4 y2 |0 K- i3 K! `
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);4 k2 z$ u$ {5 ?
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
+ X! O/ Q& H; r) y        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);- U& T" N% q/ _7 P! x$ g/ H* a
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);3 g! T& q# @9 I1 b- f
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");! M) ~2 P' i& L
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);$ X( \& y! u- g3 H/ ^) u
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");6 m0 e$ ]5 I2 p
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
* U3 H9 S4 g$ L- N        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);( h4 @6 X' V& H7 m2 n0 [5 H. K. Y
0 x7 I' G3 Z/ O; ?
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));. S  |, I5 m; E
        jointBuilder1->JointDefine()->SetFirstLink(link1);
- P5 D# C% F! Z
. A; ?. X; L# n/ b$ a2 T0 W  W3 ]3 S" K) M' I' k( D7 H
        NXMatrix *nullNXMatrix(NULL);
8 }' P  J( U& v, w0 Q9 i% b        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);% p3 j3 T9 i5 J- w8 M+ j
) L+ V% C; z4 ?' ?
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
4 I: G9 j  Y- `3 m$ ^: l        PartLoadStatus *partLoadStatus1;0 k, t3 a" c$ N; m& v
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
0 |! f" ~* ^* _7 K1 u
2 [& s/ ~. x$ ?, u' k        delete partLoadStatus1;
/ F  @) j& e! E3 x# r2 l        Scalar *scalar3;
2 m& V+ L, O4 W        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);$ X2 d  p  U- j( E: Z3 i+ ^

% Z: H4 n- ?6 l2 S; F2 T* @        Scalar *scalar4;
2 v0 w6 X" k& u' g& n1 \        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
) O* T4 w) }* @1 z# F) A2 K2 [' N" y) ~1 h3 w4 ^+ h
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
7 G+ I8 S8 F$ a        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));  T. e( h' I" B
        Point *point3;
0 x3 y- H! i5 ~- c        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);8 B  c+ x: H  G) w# `1 b' _7 X4 h

5 v8 M7 u( b1 F% _! a( M
5 g! U5 n' }* G; b2 T' Z& \        NXObject *nXObject12;
' a2 \1 d- m: w( z9 \        Xform *xform1;
! j! r3 S) t9 V6 i( {        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);) X1 h1 }( j' a
& N/ H. p7 X$ \: f* A5 V5 g
        Point *point4;$ e: T8 i, A1 P8 H  @9 r" e7 a4 j6 w
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
/ I: e1 y  \+ v+ S! P) h8 T" q# }7 S. p2 w
( z4 r+ j6 V( |1 U! x- y        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
1 }: b# t& Z) _# V
, b6 n& i. `# h8 g5 b: O0 d: @; H  v" m) Q
        Point3d origin1(0.0, 0.0, 0.0);. T, {  g; p& z9 Z. p( ?2 n& b
        Vector3d vector1(0.0, 0.0, 1.0);
9 W- m6 [' f& o+ Y        Direction *direction1;( W3 ?) h5 u6 ]( \
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
, x7 r9 b4 c+ m- g; t! \3 L0 ~: v8 p" x9 m
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
4 W: I9 r+ L5 A; v, R' J: a' G- Y' h" O5 d5 |
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);! w" F, ?7 I$ c# A
$ S& x# q9 b" f' O& q4 w- y1 W
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);# m3 |& i# Y$ \8 a
9 j) s4 E0 y6 H. U
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
3 ~# Q: q; o5 `0 b  g4 b; t8 N+ V/ d/ `4 _

( }& u* u9 j& ~; Q2 E/ p4 P        NXObject *nXObject3;
# U7 A  s# @; a. p! P        nXObject3 = jointBuilder1->Commit();
" C* ^2 l) [7 M. D/ l8 m* h! A$ K# i/ @+ c/ @/ i! S$ c
        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

为什么会有表情 - -!6 `; `3 Z7 f# S! u' p3 u& C3 [5 e
( V8 F! ?* T( `) @
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
8 n3 ?8 {2 C) S5 O% l6 N& b1 }6 Z+ Y2 Q' v
.....
+ E! \6 z4 q, ]+ T
. z. H0 A; s2 IUF_MOTION_init_articulation();
1 O, b& O1 v) A. l; p2 nfor(int i=0;i<360;i++){& \* c2 S0 [( Z0 j$ c1 o; j# O# a# |
  UF_MOTION_step_articulation(1,&i_ret);9 V1 n" H: L  s* r! _2 R
}6 x6 m5 r( {, u& L' d: H
UF_MOTION_terminate_articulation();5 M" S9 Q  y5 I* j) [: D* |2 `( w
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二次开发专题模块培训报名开始啦

    我知道了