PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了
% q9 \. c* d6 r7 d) D
& }/ O- p8 u+ s- d/ d5 c3 Q我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。5 q4 A$ @" Y3 r! C8 S" D
QQ图片20150521182535.png + y  e7 s2 F4 q9 W) }: }
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。3 c' p, ]( o2 z4 d6 g

$ H/ f4 z% i# V; l& b一段ja录制代码:( j* V' k0 z( S' H9 D& z
0 Q* o  E, @' ]# U7 v) v; e
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);+ x0 y/ q( v9 X. F
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
% ]6 W" W1 \2 ]        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
' H7 E- v2 K, K% x' B# \" G; y; {' U( h- g- w7 m

! @' R: G- t9 N! |/ a( e2 B) N        motionSolutionBuilder1->SetTime(10.0);/ i/ N, B. \7 [! P2 w6 C
        motionSolutionBuilder1->SetStep(500);! f- a( L' I1 Z
        motionSolutionBuilder1->SetName("Solution_1");
: d% A: K  Z7 _$ n5 Q        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);% U3 z( P- E6 N# `/ n& ]1 o

5 J2 h6 l" N4 }5 j7 B+ i8 Q' r' ^( F; Q9 E6 S/ @1 e

8 j% f1 X6 O+ w. ]4 u: n        Point3d origin1(0.0, 0.0, 0.0);
: }0 A( H( h4 B; g        Vector3d vector1(0.0, 0.0, -9806.65);
1 e" M2 B7 l$ d5 `- O# w        Direction *direction1;
1 S+ L/ W' {5 K0 x4 m        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);% u6 k/ ?( G* i2 s9 m
        motionSolutionBuilder1->SetGravityVector(direction1);
! e( i- t( Q" G5 v; B7 p  f0 t+ y3 R+ U6 o: f6 `, S% w9 Q
        NXObject *nXObject1;
0 B& s+ H6 Y/ s! }1 a" [        nXObject1 = motionSolutionBuilder1->Commit();; ~- i' F& w  ~9 S
        motionSolutionBuilder1->Destroy();
; W" G9 E7 m8 ?) b" b9 A* H        7 [8 e: w. B( k) E
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));! H  {7 k9 k7 I% y9 R
        motionSolution1->SolveNormalRunSolution();1 z! e% L& V. [9 \) s1 Q
) k8 K. d2 U2 V

- S% D! u7 v. e+ p' L
. [( P9 y4 ~3 j0 C( m就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
% m8 O& x% g1 o/ ]6 L
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子% ~% \* E' w  t" ?0 Y; u
# k$ t: L2 W4 [3 J/ k$ j( ?- {, Q
PartSaveStatus *partSaveStatus1;
8 ]4 w& L/ V, u, \! |; P        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);; l; H( K# x( P' j" T  K

: y# u5 ]" r! A        delete partSaveStatus1;( |4 Z" u, q# J

) E4 J) n. Q8 @& O$ B# K
" W" W& ~4 c5 Q5 V2 w/ G        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
7 m8 W+ B/ a; D
) k* H% r( `; c: c* v; ]! {( k8 h6 _
4 I5 |& l) b% j1 X9 e- i# j6 v# m5 c7 ^: w6 l
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
5 I7 ^0 y9 }+ D/ M# G7 G1 A" X, l
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);, e" r( x$ K. L1 P7 }  f* i
) }0 Y- e  H2 O1 r; @
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
2 m1 m) {6 o; M1 K: H
$ A% @& N) c& c- S: k        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);3 ^$ n" _9 E7 O1 \. Z' ^" X7 U
, D5 a' \! n" [/ m4 L
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);& @8 C& |* q5 \0 {7 m& G* H
+ U  }* C- U( d0 I' T& ~
5 q: u2 z& z2 q( J- ^2 p
        NXString motionSimName1;
( _- v2 k9 s$ A# s, _        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
6 H" n- ^$ [, k% o$ u3 t8 x# E. B: B7 m
        workPart = theSession->arts()->Work();7 d( j. H  U) [
        displayPart = theSession->arts()->Display();- R( L' c2 H6 }# x/ j/ V$ i
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;+ {3 E, z! Y& F2 E
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);" k& r) d. y' n5 K$ x
# c$ o8 a5 l; h1 j. N: V+ ?
        physicsConversionBuilder1->Destroy();9 k1 n5 `' g) L+ _) x

) y: B- H# w! A( H        theSession->MotionSession()->InitializeMechanisms();
6 p" z& S, L9 s; Y1 Z# \9 f
5 l, M1 h0 c9 R        Motion:ink *nullMotion_Link(NULL);1 |1 a% B$ h1 s3 J
        Motion:inkBuilder *linkBuilder1;3 _0 d! J* h$ ?) J4 y3 g
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
. @# G& \) u' Y1 y7 a& }) w
/ y- ^1 k  v$ P        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
: q- b% r# _2 G7 C8 A" \( ^) w! X4 W
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");" K9 K, q2 x3 Z: X
% W& ?5 |6 R* a5 {7 `8 K/ C2 E" T
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");( B- r) f, r7 L* ]

- g7 M3 i, \+ o7 ?" \+ A. C" ~        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
. q1 ~5 [2 C6 e
# V% h, K* u: p7 f  O        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
8 [. H, M0 H/ H0 J/ E# u8 N# C6 z3 `+ D' S) R
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");' o# V9 B3 X7 c. q) X$ C5 |7 x

$ Z) h8 S  e) E' |, I5 j+ E+ Q' t        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");8 }# R, E  T% B7 m/ U

  x, M4 i- v. L        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
$ E0 r* E, S$ q* H3 C' \: W( q3 u* l& a& K' z2 ?9 a& W
       
" s6 V5 z& a1 i0 W' H4 V8 C: d/ E/ K& J' c2 h
        linkBuilder1->SetName("L001");
3 J6 o/ o7 A. I+ |& r0 i# t6 |5 h1 C) L! s% x

4 ^) U6 r& u6 R- M$ l7 Y& A  _        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
* m$ }/ B5 b  E7 c        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));1 Z. ~5 V% J( X# T- U$ ~
        bool added1;* G" @% z4 A8 _. E
        added1 = linkBuilder1->Geometries()->Add(body1);) i* y( r1 a' s: I" O/ B

; O( h/ R" ~$ o* k$ Q3 y) B        Direction *nullDirection(NULL);
' Y; f' j! p7 ~        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
& `  F1 ~2 e; D- k+ D
0 c' N* s+ C: h2 P8 _" G: [9 C        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
3 b6 Q, I! e; x) q1 L( _' U5 v- z2 m/ C$ k2 B5 g) M$ b
        NXObject *linkObject;2 c4 }5 A( V% n5 T
        linkObject = linkBuilder1->Commit();
6 F, K6 _9 a$ J! B  X! a. x  _; M+ f' p! R# B% M

( ?, n5 X0 q3 l; u0 N        linkBuilder1->Destroy();
' _1 H7 S' T( z+ @
) U# Q' F5 c% V) K6 ]7 b: h- |  U# `8 l/ Z9 Q4 M6 J
5 g# j0 x& p3 C

6 \+ q/ \& G6 E0 M+ r       
- E: p' A+ [" Y9 g3 c3 j4 z
+ W$ e9 J0 B9 \& B7 U+ b        Motion::Joint *nullMotion_Joint(NULL);; V5 C4 j+ H0 C, b: j
        Motion::JointBuilder *jointBuilder1;0 V  S8 J  q, ]8 N7 c
        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);8 f  n4 H0 ^2 o# o; D6 _
$ N* ^: p% P8 R0 c$ Q! Q
# f3 g. V) m. J4 n
- M2 Z6 j9 W! }  \+ X7 q4 g
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");3 k9 h6 d6 }2 A5 S& ]+ ~
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
) [& b$ w5 D3 R% [        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
$ n3 h8 |3 W6 s& `4 O        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");/ h* D: E% B2 k( o$ |
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");0 A. h* c" A% N8 S. f6 b
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");/ ]& W" [% m1 z- z7 O* D
$ W" P" U: c( U3 x0 F% d8 U( l
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
7 @6 v0 O# Y& b        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);: U1 J6 S8 ?% l& N! f
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);$ n% H4 P! o# A/ a+ I  G
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
2 P7 T5 s% d0 Z: U3 G; m* |% o        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);/ m' r- e! i$ I5 I: _8 Y  D
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
3 k8 s1 p% f$ X' U2 ?1 F, |& U        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
, R+ @1 w3 B# m        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" l* x8 k$ J5 w* h' F+ }0 k8 {& q        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");% e, V. J2 C) b
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);2 K% Q$ C, }( z8 H5 {2 i
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);# M) S4 x6 f3 l% p; N

; U* s+ j5 Z( K0 c8 w        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));  e' z, _1 f2 T8 W  _! B
        jointBuilder1->JointDefine()->SetFirstLink(link1);% f; m) ~- p8 T

* s4 E4 i1 L7 ^: k& K; v% u
1 j! @, o8 P6 `" }+ _        NXMatrix *nullNXMatrix(NULL);
, n" @. e+ L1 ?$ C% i        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
2 X8 b' X8 m0 V; ]0 ^4 O1 x4 E' P- E. ]! Y& i- A
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));0 a, e; X, r$ L/ ]
        PartLoadStatus *partLoadStatus1;, F+ {5 m' F9 f9 L
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
& h) M4 j9 L8 ]+ P$ Z, ^' n0 R. R& C6 O5 ~
5 M2 K  e' G9 f! k        delete partLoadStatus1;
7 T  j0 U) y8 Q, ^! W        Scalar *scalar3;' N5 }& g) X# q4 p; ^
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);, K4 J6 B; ^4 v% ^2 r& F& l0 A
" o& `8 ?5 j7 W! C+ [' {
        Scalar *scalar4;' t8 c) V( P5 `6 P* K) Z6 U
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);! G) ^& Z* f) Q! E) Y2 E; J
( @( V6 W3 N7 O
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
1 ^7 _' L1 Y4 H2 R        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
6 }8 l- d2 z1 }0 h) ]! I  I7 B        Point *point3;$ Z" r2 m% j/ L- ]9 f
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);( n" x, m4 {4 b7 v! N
9 n2 t9 n" K$ a9 T

) N# A3 A/ g1 o        NXObject *nXObject12;- Z  N  _# g" Z$ O2 ?. c. g: M
        Xform *xform1;, a- M8 {5 {& u
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);4 c6 g- Z' a( K, R0 j" }9 v; I

/ C7 c. N* F. _  l$ K& V        Point *point4;
1 a- c0 V  u) |        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);; `  d4 }  f# l* r9 E! e
$ H3 T4 N4 Y9 {! A6 `7 g
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);: R2 v& B' t2 ]& d  v! s
$ w# U3 H8 v9 [

9 q! l) T+ w2 M5 r        Point3d origin1(0.0, 0.0, 0.0);
% Z0 g9 b  i5 Y        Vector3d vector1(0.0, 0.0, 1.0);
$ y1 u& R3 o0 O/ O        Direction *direction1;9 r* [1 t* U9 R; h
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
$ f# F. y  K3 x+ N8 h# T! Q* k4 @9 |# m. q$ V
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
/ ]  H2 m* l) D! g# v1 Q. w
  l5 ~1 I/ L% s9 S  f        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);1 K* L0 S6 Q$ }  \- f
& X: m5 u, `8 C/ X4 _" u) ^8 h3 g
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);2 n0 E% H( |0 }5 I* h4 R3 R; ]

* l$ f, b% S9 @! H6 s        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
) S! X' G/ p0 r5 U
% T+ \5 a- [# w5 `
$ c9 h( [' Z: \% d% o* y        NXObject *nXObject3;
/ T$ i5 z8 Y$ n3 f        nXObject3 = jointBuilder1->Commit();
6 F# P; S3 b: t! R% d0 \
1 U% I6 Z$ l6 k$ m        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 b# y2 `. M! F8 I* c
' i  o. b8 b9 T: _+ g( S; a
有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码( R, b! Z8 x4 M# F6 e- X& `( {

# W. F7 \$ R/ e# x.....
+ Y* F$ E; A) w% x- [$ e7 S: i- @/ A
UF_MOTION_init_articulation();# C, b0 @- n* f+ J
for(int i=0;i<360;i++){9 o8 a" J7 `# B& U/ {4 S
  UF_MOTION_step_articulation(1,&i_ret);" q/ k2 r! k$ j/ U- f1 `
}1 Z) Y/ D1 A& f9 z+ f2 C
UF_MOTION_terminate_articulation();, {+ h( l1 x: U- f* g4 m/ V7 `% ?
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二次开发专题模块培训报名开始啦

    我知道了