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 3390 2

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了8 {5 o1 X& y" C1 I& `+ d) o; x
4 F" f3 ?5 d/ |0 r9 r. W2 u+ X' H
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
9 |% P0 n% G1 J, e/ G% V QQ图片20150521182535.png
6 O+ _5 o' W/ Y: T$ q我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
5 i7 K! g8 G! |+ _9 n
0 M0 D  Z7 p3 h9 S; H9 m; M/ ]4 @一段ja录制代码:9 S, q2 j+ L5 {4 }* e* F/ x
. M6 P9 _4 v4 L! j. z
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
( p: U1 H% ^- T) R        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
6 ~! O2 b" I7 P0 r0 q        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);
. }/ w6 p9 F% Y( t) `  M0 d2 i, T! B$ f9 e3 i% p5 f
! [6 O) f+ ^0 h# X; u3 \3 ^
        motionSolutionBuilder1->SetTime(10.0);
3 X% D2 B. e6 _1 r0 w9 i        motionSolutionBuilder1->SetStep(500);/ J9 c) s6 k1 W5 _& B( P3 L2 S
        motionSolutionBuilder1->SetName("Solution_1");
5 ^) O# l: @) g* T1 L' y" ?        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
( Q: @5 f" k- y7 v7 p3 @" s, [
- j) a+ @. I) i0 F6 z
  ~1 p8 L, O! z% F, Z- k5 z4 I# v& S. G  k; j' ^& T, b# M
        Point3d origin1(0.0, 0.0, 0.0);. u+ u$ l1 ^- k: e' C
        Vector3d vector1(0.0, 0.0, -9806.65);
) J7 R, l& b, g/ b4 W0 ?: T& |; H' j        Direction *direction1;1 _0 W. A2 d4 S: g7 H; |$ d
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
* ^: ]; y+ ^" \  O" |# K        motionSolutionBuilder1->SetGravityVector(direction1);
; L6 F. p6 R1 b9 H9 Q! E; S# o4 G! f$ o8 z" ^1 |
        NXObject *nXObject1;
% b% W3 n/ \# ^        nXObject1 = motionSolutionBuilder1->Commit();
# T# a. l* Z* e. ~, B: W8 b! i        motionSolutionBuilder1->Destroy();3 a+ b6 m# |8 ~+ A( `. _, c% F
        9 b! A9 ^) M; R) T6 a; t9 @
        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));
  ?5 v4 Y2 \1 j8 _% D# I/ ]        motionSolution1->SolveNormalRunSolution();3 J  ]- N7 y% l0 [5 G

9 I& p$ K0 Q4 L4 [: `; O: w
$ g! f6 R; e& v/ }/ r; `  N9 W1 a; ~3 q$ P  J% x  P$ l
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
1 u2 U7 g6 s! Y7 X8 U
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子+ I: P* m. Q1 V5 ]/ u' U

, ~2 l& ~+ H$ l$ L5 CPartSaveStatus *partSaveStatus1;
% Q, I% q( y0 ]% l2 Z8 S        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);3 {! F9 w" D! ~: {' e

* N1 Q1 j- q1 Y" H        delete partSaveStatus1;
2 J' E1 S8 X5 ?" t3 b8 J1 u; V
: ~  Q# \# U" j8 H9 N& V" U0 t- |, o  A, o$ ^& \! \
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
" `& b5 y5 b2 R% e* o
* k% A. X8 ~0 T! c  B4 ]$ N1 T, g6 q5 {  Y9 Z. E8 U/ j4 f" S

& V+ w/ j& ]6 ?% P: h4 {1 Y        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
4 |- @" s. H, A2 g
) a' Q3 q: d5 V9 L        theSession->MotionSession()->Environments()->CheckMotorLicense(false);6 E7 ?. T: u0 L( W8 T% J

- A3 v$ j: E- ^, v7 l" q        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
4 P; z) }4 T2 Q8 P. Z
% p2 z' e; G) ]5 s        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);9 I1 ]' K! \5 a# Q0 V

! h/ F& G1 C2 u: E        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);7 S7 }( r0 b% y2 c4 L* U! v8 Z

4 B: E. \$ L5 ]4 s, D
* g, d8 ~' V; d* P$ O        NXString motionSimName1;
0 ?+ _5 H7 L* B4 M1 \8 I        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");
/ w! P) r: u- d
4 e! L( n1 z" Z3 s        workPart = theSession->arts()->Work();
  b! j$ b1 s7 G, W, }* G. K( l        displayPart = theSession->arts()->Display();, ~4 k' T4 E! L, X
        Motion:hysicsConversionBuilder *physicsConversionBuilder1;" ~# j3 ?& I( `8 A+ z
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);1 ?! {! v% y. D6 L& T0 L# i! J

3 I7 @1 d  j- [# v7 f        physicsConversionBuilder1->Destroy();
% D& ~+ B8 Q1 }4 F5 f+ c% A& y
# T' a$ ^6 [* u+ F) W9 K/ l        theSession->MotionSession()->InitializeMechanisms();; w1 }9 m( I1 V8 }2 K

( S5 L- _0 y5 i! n$ j        Motion:ink *nullMotion_Link(NULL);
% s- q5 r( Y) d0 Y0 @0 O% u        Motion:inkBuilder *linkBuilder1;
/ _3 B4 k' F. G. [        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);6 u5 e" P3 P# q' x

" p# i3 A$ f, K9 e1 }' j& A$ E, ~        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));2 S7 Q4 _1 c% @" D  k# k( L
3 W# y( j! s5 o! e! I
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");% A- ~3 m0 }. [( I( N

+ X" n" j9 A, ]6 B        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");$ U: ^- J! Q/ v: n. B3 A# Z

# L: I( P: R/ I+ ^, h  t: j* F        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
& r7 I! A6 X; r$ q" q# f3 M3 K+ _4 b; O  H0 s0 u' @
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");# F3 X7 w- }$ P5 `
/ q0 x! D# Q2 ^
        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");
, C; H" y: O# H9 z  l0 x0 D+ c& T# x2 j9 c5 ~6 T1 }) Z( t+ ]% e0 Z/ @
        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");# ?7 D& D2 g1 ]) y# `( w

! K# w" X# Z+ Q" W5 G/ u! H        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");5 v' Z7 Z+ F- t: [2 _4 ]3 _2 t

$ f2 G6 K1 P! B' |        / n0 N' r! d6 j; @0 L" y7 ^$ o/ e

" \+ y# w& U* c; O& ^! o% c        linkBuilder1->SetName("L001");
! ?& P. X: r3 X/ d6 V" R  D
# ?7 Q+ v6 d: K/ F2 F: y6 D
0 L$ L! P2 ?8 \- L: |# o# C        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));. E" f# Z8 Q* c. l8 I
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));
; J9 X! X9 L# w' \8 D        bool added1;
& w- f$ Z7 ^1 V4 O" T# h        added1 = linkBuilder1->Geometries()->Add(body1);
7 \$ F3 b/ b8 Q" q+ C+ G
- w: e# E. I3 }* A- F        Direction *nullDirection(NULL);0 J% T) a, Q- y1 F* p
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
9 F" |4 @; T% \  f- [6 _0 E
& p1 b/ E/ U3 B        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
  L2 s/ }) ~1 I2 e: n! g
+ I- o2 v: s$ N" g( z# ]        NXObject *linkObject;  x3 P: Q2 G1 _$ Q: }. b8 x
        linkObject = linkBuilder1->Commit();
. t0 J1 O5 Q& U; e# y
7 m9 b" V- \% k  l6 m0 L' [  ^3 i+ B" X5 v
        linkBuilder1->Destroy();! F  K3 r: Z3 t
- O" ?7 @$ z( B

& z' l1 Y# @+ I# {' V; Z
$ I) ?" J1 z' S% Y
, T  _3 e, N+ B7 O# J        ) r8 A* j5 x3 R9 y
6 D; \% |) h  E4 h! v8 g
        Motion::Joint *nullMotion_Joint(NULL);% |. j! ?/ \1 }4 W
        Motion::JointBuilder *jointBuilder1;
# `/ s9 C6 Q7 f        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
" c% ]5 t7 L- |% U4 s
0 E- w1 `% [' q* a9 {0 b$ S
+ u' t* w$ I: l3 t
  \3 o3 Q: U: ^8 N0 J% i2 ?6 \        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");' m) Y$ k* ?+ {1 s
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
! g* p9 _1 J! Y4 T- `        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
2 G0 k1 G' {% y        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");( S- m6 w+ b8 g6 `9 k, z
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
7 k' x" f; z" L        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
$ t3 |: \( A5 b. G) W
2 v4 e  _! S- n; u' j+ u9 |        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);# N  x& F  E* v$ Q1 y5 V
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);* F4 P( S: B- W7 H: y
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);2 f4 s4 O2 Q& {' \, b
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
9 l3 m1 U3 ]9 n$ ]        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);3 M! a+ F& a9 }$ T& E" K( c7 Z
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);  X* m7 [, W* A. x1 D
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");0 |3 P: r$ Y) Q6 u
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
2 d* A$ [  d2 x8 Y2 x& ]        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");5 A9 z8 Y! s) ~" T9 N
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
, ^2 x# u& s7 G. O        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
: Z1 K4 X( H  _
' I. W2 I1 m- l! J( v        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
: s: z! I) v+ d( ^' `6 Z! l        jointBuilder1->JointDefine()->SetFirstLink(link1);6 X/ [0 i7 y( x

3 p/ q2 R) l4 m; a/ S
0 K: Q% u& A1 ?        NXMatrix *nullNXMatrix(NULL);
2 b" A: {  e  i2 g% G        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);
! a  X* N2 R$ w; `: k. Y
9 y1 |% H+ j& e& B& l        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));3 @; C- N) O. n2 j
        PartLoadStatus *partLoadStatus1;
6 R  [. ]- ]; s* L        partLoadStatus1 = part1->LoadFeatureDataForSelection();9 ^: i: l; I9 Z' `4 G8 d

6 V* V) i/ T% o; q, I' P$ q        delete partLoadStatus1;, f( V( _2 @, B& w+ a
        Scalar *scalar3;
4 q/ A3 H2 U6 u; k" d4 T        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
. c* m% d9 F# R2 J/ h7 R$ ?% z$ w# k- [) ^/ X7 u
        Scalar *scalar4;
6 E+ D! _* C- d3 E* s        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
% g  Y- A& Y& ~
$ B+ p2 B9 N$ T! C% S2 E$ R        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));1 \0 x: X$ d* u, w
        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));/ N$ L% x7 s7 u
        Point *point3;6 K& b: ~0 p' @! H7 L; i
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);( L) F$ g. f: n: e: z' H
6 I; R+ }- u' b* B1 }# V
* ]8 |3 e+ L9 ^, K$ W
        NXObject *nXObject12;
/ H. h, O" J. K4 K2 [        Xform *xform1;( G% ~+ X" W, l  Y1 @# V) d4 b
        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);% Q" K8 A* Q" q, P& X8 Q) H4 L
7 w! ^- y- @$ ~* ~% T
        Point *point4;
3 X6 I1 R: ]8 q! m1 Z        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
* }5 R% L, N9 ?$ N8 Z
* r0 w* d* K! v8 U        jointBuilder1->JointDefine()->SetFirstOrigin(point4);; X, U9 i' {! V8 h

) ~; l2 V1 }; F* e/ Z8 g: v# U
, ]7 v0 Y4 w+ A! _1 ~) }        Point3d origin1(0.0, 0.0, 0.0);
6 {- `! F% L2 f) L        Vector3d vector1(0.0, 0.0, 1.0);; s3 \; B( u# i( l4 M
        Direction *direction1;& h) Q7 K; P, `# d5 M5 e
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);2 l' Q6 e$ x7 K, A/ Q* u' Z

( H2 i( P8 p6 K4 w2 g8 R        jointBuilder1->JointDefine()->SetFirstVector(direction1);
2 M' X: P! E6 Z  k4 U& D0 H$ L9 I
0 z1 U* S9 w  [- y        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
9 F! o' }% t! Q* p2 o) b8 M3 v  G8 h3 k9 H5 }; P5 ~, l
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);6 l1 M; f, ]% M
2 N. `# {" S/ C* }# O
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");, g4 F3 W8 w6 F1 k" @

2 N; a1 ^% U3 P; w
3 b0 P  {6 G+ p6 r0 I  M        NXObject *nXObject3;/ V+ C! o- y6 s3 S3 |6 n
        nXObject3 = jointBuilder1->Commit();5 O, R* a5 {( N  H

! a+ P( i! _( w5 u        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

为什么会有表情 - -!
% ~+ K& s9 r% h. B! v7 d% r
1 M2 [$ \9 ^$ d1 M% N5 Y有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
2 o* n' M) z, K& q1 h0 c* y6 n9 R; F
.....
+ e1 Y, F, M3 D) z  b! h, p* ~4 y4 a
UF_MOTION_init_articulation();
9 N/ f0 j* a# z8 p6 t$ k/ hfor(int i=0;i<360;i++){8 I9 }3 d1 B: @; [
  UF_MOTION_step_articulation(1,&i_ret);
# a% m+ m+ @" t9 |0 d; M8 ]}
3 r( {: T% m! Z! ~( u) p$ IUF_MOTION_terminate_articulation();
2 C1 P! V% P' f6 {0 ^0 |8 A9 ~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二次开发专题模块培训报名开始啦

    我知道了