PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了$ T. y1 v6 \- I9 n
7 ^5 _* D4 ]% V! B
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。1 @, Y6 ^& C7 O/ {9 t
QQ图片20150521182535.png 8 V& r/ e' e: K; H1 b
我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。4 K7 R# }+ h3 e9 d% B' c2 U
+ L  Y2 D+ y  K! B+ ^
一段ja录制代码:
4 o3 E; T( i- E7 j; K" _( M
5 W9 p4 f- N5 J6 n8 T" c5 |* k! g- {        Motion::MotionSolution *nullMotion_MotionSolution(NULL);6 k. y2 ^4 f# _: v# y( i
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
8 R7 Z+ f9 a' ^6 b# s, N& S. _3 n        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
% r$ ~4 q7 M: @0 p6 `8 b, c  q3 C& X% s4 v

' l1 Z7 f2 V- D, i9 L! g, S0 c9 a        motionSolutionBuilder1->SetTime(10.0);
. b" E- Q$ c& M* D: b$ J        motionSolutionBuilder1->SetStep(500);1 a6 y$ B% Z, Q0 H: n  p
        motionSolutionBuilder1->SetName("Solution_1");
0 U2 i, T% D) l& b0 b6 P        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);6 V+ n( J+ G0 _5 [8 m
* t  w2 Y/ W5 p  P1 S) x) ]3 ?

7 k, @5 _9 }4 b; I, z* s  c; ~) n  z$ V
        Point3d origin1(0.0, 0.0, 0.0);+ q8 A5 r) k! H* ^  Q6 j
        Vector3d vector1(0.0, 0.0, -9806.65);
+ @2 s0 z1 K0 e        Direction *direction1;5 g" q' h. Q- K% o
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
; J- K' [1 k* g/ }$ K        motionSolutionBuilder1->SetGravityVector(direction1);
8 L& j" j4 R  S! U3 ?6 j  N+ d3 u. V  r* k, C$ r
        NXObject *nXObject1;0 d9 B) Z. K( K
        nXObject1 = motionSolutionBuilder1->Commit();6 F2 X# ?6 Y7 k
        motionSolutionBuilder1->Destroy();2 z; K7 ~& p5 M& B6 ^: y
       
' d7 ?+ V+ W+ ?) F5 E        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
) G/ x, U1 r% Z/ [" |, q9 Z        motionSolution1->SolveNormalRunSolution();
1 k( ~3 R" a4 L( z- G! N8 {, o2 }4 t( c$ F# N3 f0 L

. V- p6 k  q# }/ [
; s. S. G1 ]; C5 j0 _# b就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云..." n) s5 V) _; e; q2 ^5 o( v6 s3 F
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子* O( I7 Q- r5 p! i4 ]( I) Q8 ~# U" S

$ y$ X3 P, \# H: N  L! f2 pPartSaveStatus *partSaveStatus1;0 ~" J4 B9 m" |8 ?
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);/ Z7 V) e( W8 ]$ Z' {
' V  z) V6 U5 v1 ^
        delete partSaveStatus1;' c, D/ I! c: A$ U3 |, |, E
9 Z/ l+ Y) u7 q4 @) z  l0 |

9 c7 K! v/ l, t. R+ d1 [- b, s        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
4 Z9 |2 n/ `9 F$ H5 @6 r6 [5 L# S. a; j/ K8 p- u# @# r+ m
3 ]0 k& H3 v: I" S* b, V# A
0 L. \- n5 ?% @# K' I7 w
        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);# [7 w$ [3 s2 W" B0 \) _8 a

9 \0 S7 K' X/ J# @$ R        theSession->MotionSession()->Environments()->CheckMotorLicense(false);
  [. [9 U- e4 ?) d
; `& L2 N, O7 o+ G  ^4 r% J# o        theSession->MotionSession()->Environments()->CheckCosimLicense(false);2 O5 K0 n: s2 K1 B+ l3 z6 f

; U0 L, g+ c: A: V7 W1 {6 V( n        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);8 D- I- t  y7 h1 J

+ P& I3 p5 j' i. [! u4 G  r$ K        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);* E; F3 J. o/ B$ x; E

4 k) I2 b: ~9 I+ D( x8 z$ K6 {" K" @& q5 T$ X5 ^) r- L
        NXString motionSimName1;+ R; @( I' R1 O# \8 Q- h: h
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");1 ?6 o5 T: f) s- @- z

, i' m/ Z1 L: ~4 T  H+ {        workPart = theSession->arts()->Work();
1 h9 i; Y- }: f+ h! N6 X        displayPart = theSession->arts()->Display();
3 |3 y! w! }% y  N( C, v* |        Motion:hysicsConversionBuilder *physicsConversionBuilder1;+ V1 P8 g& p6 S8 a4 {7 |
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);2 H9 e6 R6 [+ X3 T% l/ s) {. n9 N
, v1 ?  a$ X' w: z! n6 t& o( f
        physicsConversionBuilder1->Destroy();& |" o. [: }( b

7 x/ r. ^% b7 w3 b* \) Q        theSession->MotionSession()->InitializeMechanisms();5 u; |" S7 m9 r- n
6 U& M" j) |( y9 E
        Motion:ink *nullMotion_Link(NULL);
& p1 ]: [' S/ _  m/ z2 v: }" S: u9 i        Motion:inkBuilder *linkBuilder1;& `, I% L& N" i4 g
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);  V% O! j9 A5 }$ `9 S$ Q# ~6 s
6 r) a4 x* z) i7 Z
        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
' [8 `  j  m0 N% z
% O; U* D4 M& m+ Y        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");5 v' j% }: ~& E7 s

7 h0 C' n1 b; w4 V4 J  z+ \        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
/ [) `- R1 w) U9 \0 }8 e
: |2 x5 R$ N# h/ E5 E7 h8 F        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");2 |, I2 T9 s9 j1 _

+ ]! V, x7 W/ w$ I; l) X        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");4 E' A; s) ]% n4 m+ ~8 ~% X& r7 v

+ G. V3 r, K7 L# O        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");7 C: H9 r0 v. ^5 ~
+ c8 X$ h6 w  W( K+ [2 v
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");3 f3 U; ~  g1 ^: q) u% Q
* R- Y: h" b0 N5 R; D
        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
9 D/ ^( ~8 p, m- N, `5 e
" B. n0 E  Y+ u, {( B6 Z; S       
& M1 F+ z1 S! q+ B# I( m# H2 ~# r
; U( I2 a, @0 @6 \        linkBuilder1->SetName("L001");0 A! F% J: K+ z5 I  W

8 d; N' y5 l1 ]9 F4 r' W7 ^6 ~- w6 B: J2 q' o4 Z+ B
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));6 ]  ^7 [" a: O
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));" n% K9 b4 ^  J  b
        bool added1;
5 F5 O. W" q' A        added1 = linkBuilder1->Geometries()->Add(body1);
7 r% M; ~( A/ d+ x. n# V* p" @: C5 H, ]5 M
        Direction *nullDirection(NULL);
! p8 w6 P. Y9 c+ m9 |* B5 {        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);8 M& X% @) Q( `. d1 ^1 A+ E1 U  k
" p' U# |; Q7 O: \
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
! v" j$ w: u& W- o0 W
3 p- R' j1 V$ I        NXObject *linkObject;& X$ }2 p+ b% \6 Z
        linkObject = linkBuilder1->Commit();
9 c+ n$ z; j( `) T( H" t, O6 p8 G: z2 C& F
9 X4 z0 v6 G& R4 Y9 j  b+ M
        linkBuilder1->Destroy();8 p. J) U% a) M7 i
& `! c. L, E# C' R+ |

( t. D3 I& ^! Y! l$ ?( A: A4 k) _2 P; R% {. ~% K4 q$ u1 e. s' Z

, _0 c( B* O+ t0 O2 N6 `       
; f; r  ?3 e" l7 g1 |: [- `  i* A+ S
& K# N/ |3 @( _' {& O$ E# s        Motion::Joint *nullMotion_Joint(NULL);0 G1 R. O& g0 {, D; t2 {9 T: ^3 }
        Motion::JointBuilder *jointBuilder1;
( h& m4 |0 g7 r+ K        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
$ {: N+ h+ a, S( l2 n2 ^% H
: i8 e1 ]2 L( G1 }# i( p( f  j" l/ @9 N( G+ w, q7 K

/ Y2 ~  h+ X  E4 t4 m( O5 u. S  G7 Z0 j8 s        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");) }9 F  f' O, i4 b1 e
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");- I: s& m' h3 ~5 U. f$ G
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
# o  `% A& c5 G/ t        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");
( g5 k9 F; v2 c& n        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
; ]' Z/ w) G  C9 ~$ N7 d        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
: L6 C, X7 a) [7 n5 q+ O, a/ P8 s1 O8 L3 a7 A! ^
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);! P* L8 h1 A% V
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);& Z, l# ~4 }9 i, i7 J% U1 T7 z* h
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);  I% z/ n1 s, i: r
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);3 B6 O' F3 v! p2 R
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
; v4 D) n, D8 f; \: w" V/ B        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
. K( P( Q( C6 ?: M( l        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
% b9 U$ e7 r/ ^        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
" c; k7 k6 c6 _/ _        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");
' e. [% K2 o6 d1 ]        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);( c0 L: Z0 h( b
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);0 w  T! Z1 f$ n& R

9 r' e8 l2 P0 J" V  C6 d        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));7 f* m3 P# a( X+ k/ P  F0 H
        jointBuilder1->JointDefine()->SetFirstLink(link1);
2 ?6 W: K- r. w  x% l; j
# J4 U8 ]9 L; l5 ]9 `) J: l, a% _7 I9 K' x% c4 _
        NXMatrix *nullNXMatrix(NULL);
) j; M  e, s( a# y: k) B' r        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
" z7 E* r  u6 K# n, C: x: v  b6 X! ~% D
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));
$ ^- d" ~* U" V& r        PartLoadStatus *partLoadStatus1;
1 D; d+ T8 Q" w6 }        partLoadStatus1 = part1->LoadFeatureDataForSelection();
& F7 u+ Q" B2 Z: F" R7 x5 ^0 d
4 Z2 E8 n5 |  y* _2 h4 _- T        delete partLoadStatus1;: Y8 w9 v+ `5 e" I
        Scalar *scalar3;
/ A; H" E. A, F) l9 \3 i        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
0 l6 e9 E+ O& ^  u1 M: h
/ \7 f3 o! Y; t; ?6 R, Y$ x- |" u* ~        Scalar *scalar4;3 m. k3 ?5 p2 H3 J% V- j
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
; m7 ?1 C" Q, _/ ~; k0 J+ x3 B8 V2 I
        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));# h9 a3 O9 x/ [! b& J/ c: i" G9 ^
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
0 h8 `4 l3 ]3 @: I; H! O2 s6 _; H        Point *point3;) U2 B; [+ q- f8 b
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
  {/ Q# X: p2 b1 N# E
5 p7 r" d* z: \4 v) f0 h7 r0 v
3 j( d0 d; \' K. r  A        NXObject *nXObject12;
% H$ L+ p* L' m( S        Xform *xform1;5 @: t) z& K4 w* {6 q6 V. ^" a
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);
, P1 b, {( O9 I) Y  a
4 C" X1 [) z$ p: c. l$ I        Point *point4;$ y2 @9 B  I  @) @! e
        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
- H! }( y) [: ^  t2 V4 B+ L  \+ Y
        jointBuilder1->JointDefine()->SetFirstOrigin(point4);; k+ Y6 k% L1 b7 E6 q
. ]: u3 c! b5 ]3 s8 W2 j
0 s' h+ k  J: M6 Y. w. ^& L6 s: O: Y
        Point3d origin1(0.0, 0.0, 0.0);
7 Q9 Q& G) m+ }- D3 S6 J        Vector3d vector1(0.0, 0.0, 1.0);! G3 Y0 X7 K+ |% J6 y4 @
        Direction *direction1;* Y$ C6 n6 ^7 o' |  w
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);3 `9 C6 ]: u; D- Z; I2 h8 p- F

- v3 n% ^; N# p8 i& l  |4 T        jointBuilder1->JointDefine()->SetFirstVector(direction1);
$ N* o  `0 d. R% T9 X7 m$ _- N: a- V. I# F+ L( w
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
7 U+ u+ @. G+ k7 H% x6 ~5 j3 s$ d
# }4 D% i' z, |, R        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 u" z7 S8 n& Z# A# q
% j! X, _2 v. C" `) _
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
! V7 A9 H4 ^6 s% z) V% |! A$ Q, a6 a. ?4 S+ `! K6 s

' E0 V5 O6 k; J1 X        NXObject *nXObject3;! _' n' e) ^& P/ h) ~
        nXObject3 = jointBuilder1->Commit();7 {# |- C' i( h

# K/ G# ^9 g6 N! W/ P# z2 J        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

为什么会有表情 - -!
: L! c6 ]' {$ T5 l* o( b& k
/ W8 a- l3 b; X有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码# |- y( Z  t! D2 _( V
0 Q6 d3 o, s) m1 z! y6 f
.....- K. h% F# j* p7 u3 y3 _" @$ Z2 p

+ u/ D" V( Z. H) G( pUF_MOTION_init_articulation();0 e' A2 G1 X1 @& s' |' _
for(int i=0;i<360;i++){
, ?2 _; b- K( k; w5 `  UF_MOTION_step_articulation(1,&i_ret);. m- x  d3 C& ?5 T% {
}  h0 y$ p& u0 f: w+ J7 M
UF_MOTION_terminate_articulation();
% E, l( e  s3 t6 j# {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二次开发专题模块培训报名开始啦

    我知道了