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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了% Y+ P6 y6 T6 D+ v1 d

$ y+ T8 y! |8 b9 M& q我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。. o: l, C1 w* i- q$ X9 ]- Z
QQ图片20150521182535.png
" {2 }+ \. L7 K. k4 ?我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。4 D; H( O: _/ S3 }" B

2 }4 }$ W4 u  N7 a, {* H一段ja录制代码:
. v: T6 P0 y7 T  g* m' p, h8 M% E+ I  p4 T$ _: u: V
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
/ J) b. P5 V7 \# P" R! P        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
0 y& r; {7 X7 `; N+ m        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);' w2 r* D7 J: A, S/ G/ R3 n1 M
# R7 A7 {7 Z& i  p
2 Y0 l& [2 Z( X# f4 O* Y! R& n
        motionSolutionBuilder1->SetTime(10.0);4 @. R$ n0 y! _1 c
        motionSolutionBuilder1->SetStep(500);+ r; N0 n2 n/ T8 s; A* k
        motionSolutionBuilder1->SetName("Solution_1");
2 Y( d# [  ~! C+ x7 T        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
# N, w6 S' Z! ]6 ^6 }  J# Q" U. z7 L* r

) x6 e8 w5 ^5 `; p
8 I5 b9 ^1 r3 G        Point3d origin1(0.0, 0.0, 0.0);( e& R- E( {, V2 o' D5 _0 q
        Vector3d vector1(0.0, 0.0, -9806.65);
" s# K# {, q# j/ p6 l        Direction *direction1;
5 ]/ Q/ r% u+ x( F, ]# O& p+ r        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);" s2 p1 w7 b. ^( h* O: i8 k
        motionSolutionBuilder1->SetGravityVector(direction1);
6 U/ M) h$ A2 u3 o, r1 h' ?1 R: V8 p4 y. R: i+ ~" g
        NXObject *nXObject1;
+ ^  x1 h& S7 Q( c" [        nXObject1 = motionSolutionBuilder1->Commit();
9 k' A8 _0 |/ ~9 v# ?8 H        motionSolutionBuilder1->Destroy();4 ^8 e% N1 U- H
        0 U" Z* n3 [$ B# o# O; x: V
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
. s4 a+ A5 F7 c4 n  d        motionSolution1->SolveNormalRunSolution();5 @3 Z' {0 O% b2 j+ b/ T7 d. U

+ J: B0 ~0 l9 D* |# W
* D. w# j; p6 P: h, y& I
- @# D- T+ ^! G2 |0 P8 o7 `4 u就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云.... n% B" }9 g7 \. V' c9 q. N
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
7 J9 \0 S( y( ?7 r. I: r" K
6 r7 E1 W. m+ ^. |4 j# P+ CPartSaveStatus *partSaveStatus1;
& Q+ N: ^  F6 _4 _, ]4 z        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
7 }1 r; W5 u/ @9 B9 G1 y9 S; f( C! @; x) A3 c
        delete partSaveStatus1;
3 A/ F! m! m5 |0 I( J3 o2 ]) f; U/ X, v6 p9 k+ j

5 v: y5 m, j+ b: j' L, Q; S        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
) I5 H* i* U( {7 ^, ~/ T
9 H0 k( L" s! ~) y% o- v. K# h( e4 `  ?9 I5 k* k0 w- e
) \( p4 T+ i) b$ ]% M0 {. s9 P, w! d" e
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
/ |5 W: p( a6 p. X
8 {; D5 s+ N9 N        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
: P, Q2 K, b% }3 j! ^5 ~& E  D) h: B; C( q
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);  P9 B" P7 C' e" M
* k/ U4 M. G* b0 r8 ?8 b
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);) D8 H) G. z' }" E' K0 u# w
, `9 X; C  w  ^4 M' h5 T
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);- o( F8 {7 Z8 ~7 s$ q" A

. _/ @( n( Q' Z- G- k( H  ^* W8 z! B- ]/ y$ R+ @7 C4 T. I
        NXString motionSimName1;6 n2 L  c' `$ l: `
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");2 j9 k  w( Z2 V& p2 c
' v" j+ c: ]% o
        workPart = theSession->arts()->Work();) S& {+ g0 `+ |; l' O/ j
        displayPart = theSession->arts()->Display();
7 `! w1 [4 X7 r7 s* G( u- Q$ G        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
0 `/ t7 ?7 w: v* m' x6 H$ _        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
" x: b9 H2 S: n( i; G% @. o
# G3 v5 ?8 j$ e& ~5 R0 ?* g        physicsConversionBuilder1->Destroy();- c: N. D" z8 p- A9 H7 W
8 h( G3 k. o: N0 P
        theSession->MotionSession()->InitializeMechanisms();' i! e9 B0 L! j9 T

. R4 T/ e2 t5 i, L$ W0 ^8 A        Motion:ink *nullMotion_Link(NULL);: L; U4 l* J( q" J
        Motion:inkBuilder *linkBuilder1;% t& D' l, Z4 |5 B) s2 D
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);
' A6 o$ h" n* e( H8 ^/ N$ g4 a9 e; c( e; `( G# U9 h
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
8 [/ s2 [( t2 z5 f5 I& ?$ o+ |+ q4 v6 L) ^6 u/ `4 ~6 V5 x" f/ d+ ^' @
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");
  O5 J$ P  Y( Z7 m! K
) D. A5 P! p9 E* N        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
' _5 K! @( p, ~- u0 ^. F
* [2 P; O/ u( J- o        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");: e% F( Z; E5 o/ ^' L
2 ?( O( {9 G! c- |1 n
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
# }4 V) X- H# y9 M3 o  T: K8 N5 V' Z# n) k* k2 }# r
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");7 h# {# Y+ K0 U# n
8 N% o) H. F7 h, q: y  u8 e3 ~
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");! D7 x/ C6 _% n/ C3 ~

$ R% |& R0 P) a: k- G0 j: V        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");. Z, D* L7 U# V: a6 j( K

; b! n# S  y* ], n3 ]- }        7 ?* }2 g$ V. ~8 U) @: {/ H

" P9 T% V3 A( w# ^& L. I( D        linkBuilder1->SetName("L001");: S) `: N; Z; T% h
" W( |$ O. a% ]9 ?( I+ |( P; v" D
0 m9 h9 \) {' q8 f' x9 p+ `- u
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
; x& o5 {8 e2 u' X% i. n% [# E        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));  P0 ^- f4 F4 Q
        bool added1;
( }0 ]: H5 D5 l/ C# M        added1 = linkBuilder1->Geometries()->Add(body1);
3 {- y$ Z+ J% y: m( K6 J( s1 d8 U! q2 t
        Direction *nullDirection(NULL);1 L: B( b' g- B2 E
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);  w, O' }8 g9 S/ J: E! m& ^
% M) k7 h: F- E1 ]* W2 r
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
& y8 q0 T' a1 s6 z3 [7 L5 G3 D0 L9 ?3 {$ @- v* t' b$ [
        NXObject *linkObject;
8 G% V' v- T2 O* V" V% e8 V        linkObject = linkBuilder1->Commit();* d3 ~7 c/ b  o3 B! Z: C; e8 Q
  r" E" [9 R; W" q$ H) I2 y* e# a/ C

/ w" w4 Y% R/ R# h; Q% ]- Q        linkBuilder1->Destroy();6 j. f0 t7 J* Z' ?  f" o: o
) Q4 k9 j. v, b

' g) C% C' d  U5 O- y$ q3 }0 C, C, d# t& ^( u
: ^" q9 c+ t; _5 }
       
) O. x* n: }8 H" W5 \, B% g' ^3 a+ Q/ n
        Motion::Joint *nullMotion_Joint(NULL);
6 ?2 x; Y% g, C( D* T        Motion::JointBuilder *jointBuilder1;
8 I# s3 p/ c2 ~- ~6 d/ I) \        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);, S/ I- @) U' I; f% Q, ?
( I* [3 p4 K0 c+ N  b( I
. V! j8 }) r; s

  p. r# R4 s+ r. \- x; A# n0 T        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
; C! ^9 R( h9 n5 r8 P        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
3 ?2 m  _9 |$ ^! P2 g4 e- M        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");5 Q+ v# s. m, p/ x; S- t, B; d
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
* L7 B" ]6 d' w3 ?0 ?        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");2 O1 L7 N6 _+ j  o2 X
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
1 ?2 R/ T, m0 `# w
8 \6 @& Y; w8 |2 R7 @% S1 e% {. I$ z/ M        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
4 |" ?9 q! b. o# g        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);, }' [2 Q8 O: i' N: `
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
" h- J1 V* r( K# W; ^7 Q        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
+ V' D4 {8 F+ K# R+ M0 s        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
" z3 I  q  O+ \& W2 t        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);! r& ]) B7 X8 J
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");  F  V4 C2 Q+ g4 a' _
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
2 ^; x$ o# [5 \" r- N6 {  X& l7 q        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");4 q" D- z  V1 A1 m
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);$ x; }1 d4 h0 i+ ?% X
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
+ }* A# b7 \' u0 |' q. l* f/ M
2 w0 ?# o' V) }/ F) r; K0 C4 ?% X        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));5 `- x/ a% m' O# p7 ^
        jointBuilder1->JointDefine()->SetFirstLink(link1);
% u1 Q( h7 m$ v& A. M5 G
1 w9 \7 b' N: G2 d9 _' b
: b. L! N7 c0 r! ^1 E! q+ d6 W5 A+ q        NXMatrix *nullNXMatrix(NULL);4 c# w: ^8 l. X, b6 n% j3 V- t
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
$ w4 v8 Z* @) y: E% C, |. b0 j, G8 W7 ~2 [9 D! {; t' c
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
' z! d& ^  i; i5 S* _. J* B: c        PartLoadStatus *partLoadStatus1;
: V% i+ Q$ a: u' X6 ~9 @% A        partLoadStatus1 = part1->LoadFeatureDataForSelection();1 z5 Y5 q8 Y9 v* ^. m3 q6 D+ N

, \6 V$ H4 c# M. I        delete partLoadStatus1;, a; b" c: v/ {4 \7 h
        Scalar *scalar3;) ]9 y0 u& K: N; w* K3 n4 W
        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
& B9 P  H& ~, ^. b0 h1 @9 @$ h# b9 D: e- \  j, ~% v" N
        Scalar *scalar4;
( R. _9 ]" t: Z  o% |0 [2 p5 z) Y        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);: L0 B: Y% w+ n/ {. Z9 d: s: y

! j3 h( e0 p# e0 y        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
7 p( m# K  G- z2 J  v, A; {        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));" P- |& o& v8 ]+ {6 v$ \
        Point *point3;* t8 D9 X* E( L- X8 z  N
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
# M8 k' s: j# y4 r5 @" D: F! r+ g# q

9 A2 k3 q. I' z' l8 @& s7 \( G        NXObject *nXObject12;
5 i. g: b  a- T        Xform *xform1;! ^$ V. S) x6 `( D" q7 K
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);1 ^. ^0 X; h- |  T& F

  M( v) [8 c9 z9 D        Point *point4;2 |* a! w( }6 u3 c4 x* L
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);* T3 m6 ^$ k, U" p* c# X4 H

5 y  U/ K$ Q& B9 R3 N        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
9 {! w$ A, ]& v3 Z+ \) a* k+ G/ q/ F% X9 A% w/ w( g

4 V  ^+ B) @% @; _, H: }, u! ]        Point3d origin1(0.0, 0.0, 0.0);7 q' h& |: r3 s0 z& `3 z7 n% R! w
        Vector3d vector1(0.0, 0.0, 1.0);
- t9 b! V) A7 b9 H        Direction *direction1;
1 b+ Y2 o7 p+ |0 p4 z6 W        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
- g$ a# Q$ o- }8 E5 L. ^* N4 {* Z( Q$ q* I8 W
        jointBuilder1->JointDefine()->SetFirstVector(direction1);
5 v2 N& X, D4 m5 [4 \1 r" U' A" G: D$ @9 G" c, a5 a5 Y
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);4 N5 U5 O) f& a0 [

2 }0 J- M# Y* P0 V. A3 P: A9 V6 n        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
/ [6 n1 Z' d3 u$ J2 A) [$ q* ]4 ^, c, o
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");8 e$ R7 p) o/ e: S. p

+ d" W* d- ]+ k# M; d, b- e8 s! F4 H2 s" O
        NXObject *nXObject3;* B: ~) F7 Q" M1 r; f1 y
        nXObject3 = jointBuilder1->Commit();
2 h' U" l! b7 U
9 a* ~9 `% I) h0 P" g8 f" T        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

为什么会有表情 - -!7 J: v) i- e9 p. o1 i; Q/ g. k

1 m. Y! n# e3 _有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码7 ~! y4 u% E) g0 @) `# Z. }4 _
7 X7 S# `  n9 O, c% b
.....
% o4 F6 l" N; Z7 J& D: C( I
0 @& W/ q& l2 Q9 HUF_MOTION_init_articulation();
1 s7 I: E" h& Lfor(int i=0;i<360;i++){
/ z/ ~) c" f. R# g# w% {  UF_MOTION_step_articulation(1,&i_ret);
0 U2 W7 t( D- r* f8 ^. @& Q}+ a; q6 D7 l, s0 _
UF_MOTION_terminate_articulation();
1 y- P: J4 x8 u- }" mUF_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二次开发专题模块培训报名开始啦

    我知道了