PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了5 @1 I* g3 q3 _" R7 ^
* x" F: `( G2 |- g" x; @% b* j
我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。
5 l9 b- |) J) {$ E. `3 { QQ图片20150521182535.png
: K4 L1 ]( v& E% B9 g我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。
$ [6 q2 `& q9 w: h8 \
2 m2 ]5 R; j8 h一段ja录制代码:
: b$ @9 [$ X" u. X3 v, L- I# n1 C; Z, Q# C- M2 B
        Motion::MotionSolution *nullMotion_MotionSolution(NULL);. G5 ?8 y3 s# ?0 G; b- M
        Motion::MotionSolutionBuilder *motionSolutionBuilder1;+ G- q3 ~: ^4 ~' k6 D! M8 s$ @
        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);9 @8 ]" B2 p; J" }- I$ e  s6 x

1 S/ i8 k( f2 ?, ^% c9 {) [: }: Q% C9 e7 N
        motionSolutionBuilder1->SetTime(10.0);) ^3 h! v) i% b1 d9 r
        motionSolutionBuilder1->SetStep(500);
; [+ l' u, r3 Z# o5 d5 V' J' g9 r- b        motionSolutionBuilder1->SetName("Solution_1");
2 T! {0 e; J" M8 h: z4 A$ X8 @8 M        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
+ U# F" A1 [1 N. y2 A- a, ~6 X" k0 e. y* @5 ~

( j6 g# Q! q5 d1 B9 R
) n$ Y3 D' @' L        Point3d origin1(0.0, 0.0, 0.0);# r5 G! d/ U' h3 h7 m
        Vector3d vector1(0.0, 0.0, -9806.65);3 P7 k" f' S  \
        Direction *direction1;: t5 g/ _5 f1 f2 v& m
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);# f% H; L* _' S+ T; _# t; L
        motionSolutionBuilder1->SetGravityVector(direction1);
) r# p$ i% `0 Z  b* ~5 y
: N  a9 ^$ y6 g        NXObject *nXObject1;
1 d& u2 B3 k# y; D7 f        nXObject1 = motionSolutionBuilder1->Commit();
" T  B8 q, J/ y        motionSolutionBuilder1->Destroy();. [# K# r, y! a" n9 N( {
       
8 Y* M6 L5 o1 `# y        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));9 d: y6 d; J% o$ o" U: E6 ^
        motionSolution1->SolveNormalRunSolution();8 Z+ d- O+ d/ O% Y9 L9 ?7 n" I
' h; I7 W6 E6 ~0 G* A

: a$ E6 z- T' Y* B3 p4 k2 Q0 n( e  B0 B# N- B( g8 |( f
就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...2 v) L4 m& m9 m, K- ~
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
3 j* }$ O$ W/ M  t4 a( n+ d2 n) h/ h) ~: C8 m
PartSaveStatus *partSaveStatus1;
5 y0 m. Y, N2 W" D  P% h        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);' o$ u: k8 z4 J9 U" {3 j  j
' U, Q4 T! J5 q+ W! H9 J
        delete partSaveStatus1;( u6 h9 J9 E5 o2 L: M/ J
* C  Q( @( X) g. n8 B
# U& P1 s% E* H8 q! d
        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
! |, W/ I* j/ f( I# b; h0 E7 O; J( b& T% g$ }- y
. {3 G2 E. q- y

" }& b! y; g6 f! I* I3 @        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
! X/ J: }. p4 p" y5 p7 `2 y0 k8 t' N, x3 B$ E; R
        theSession->MotionSession()->Environments()->CheckMotorLicense(false);9 x) }& o# F9 {  {2 M
- F" L( A* r4 |$ Z9 W! T
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
0 j3 j$ }* G  g
) g+ t  l: ?6 {2 a2 n* O; ~        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);4 h, |$ T* z% z) \1 e, m1 [) u

8 ]+ r2 L6 _+ l        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);6 ?9 R3 y! Q3 e# o  \
5 R9 F4 t& N) Y- k% O2 ^7 C

! R# [' |$ _1 a+ |        NXString motionSimName1;- y. @) J/ S( Q$ ^0 b
        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");9 E. j4 }7 l3 G2 h
1 {1 X7 P: o9 t% A, Y$ b3 d8 H$ @/ i
        workPart = theSession->arts()->Work();
* B, m% f- O+ E7 b        displayPart = theSession->arts()->Display();
7 j! S$ d/ p" r) s        Motion:hysicsConversionBuilder *physicsConversionBuilder1;5 H3 r5 ^  i6 q+ h8 m! u
        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);
/ d- `' W2 S0 s. }& P2 X$ \% O  s
        physicsConversionBuilder1->Destroy();
$ G# y: O1 [3 F4 D& f% Y! L, h- N% X/ D  y/ \* ~* W7 u1 x: H
        theSession->MotionSession()->InitializeMechanisms();5 H. e; x1 U7 b+ B8 Q, u& H

7 t( Y, `$ P( O$ f        Motion:ink *nullMotion_Link(NULL);
3 ?3 P. V& M$ I: B        Motion:inkBuilder *linkBuilder1;5 N5 q. M9 J3 Q! {2 P" o
        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);( i' q# Y1 [4 {

; y( U) A8 m1 D: X) G( H. g        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
4 p( P6 c9 u& o3 {8 R4 C0 E
+ p; Z1 m6 C- S        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");2 Q2 o* o( F/ x* [8 D; j. P
( j9 F/ }$ |4 m3 J8 T
        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");3 {4 k# K/ m/ F# a/ z' E
+ i0 ]  U& x6 j  |' y, |: H% N
        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
% |, a2 g# O, N% l: U2 w' ^) i1 y1 k1 C6 r3 P( _% q
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");
4 b- ^4 [- B' x" s
/ z1 [" O) C' T* `2 ^        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");. i+ o! f) ^% V# V- M8 q! y

, i* Z  l$ f, a        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");1 {, R6 t$ H5 }  f  F/ g$ a; `

2 U0 u6 P0 y9 Q* ?! O& R        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");7 |+ N# T! T. z' G; V! q2 K
9 d+ s7 X( Y: J4 X1 [7 }& c/ n( x) L+ g
       
/ V$ {3 S5 f) Q  V0 H( d1 }' u7 @# `& s* h, p
        linkBuilder1->SetName("L001");2 S$ L3 J" p" \: s) L

6 O& [: _/ |; w/ ^3 z" h6 E2 _5 y9 n$ p1 M  K  M
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));
+ R* f7 y8 Z7 j: T+ m7 s& R$ a! t& P# c        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));* @, E& C, B5 l7 Q% K5 @
        bool added1;$ Q. F5 n& j9 }) u6 r: \
        added1 = linkBuilder1->Geometries()->Add(body1);3 K2 C2 m. N$ c( v( z7 o
2 x) @2 @, M0 p5 _+ R
        Direction *nullDirection(NULL);6 ]( N+ w* _4 b* T
        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
: Z, H+ x1 Q& v  h
; \+ r3 T1 Q8 o) j& ~8 x! ]        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);
) F7 u+ a: b7 _. S- Y
& L; `* s0 \8 \; n) w, K* K        NXObject *linkObject;
$ E* X1 l- |& ~! m1 M        linkObject = linkBuilder1->Commit();4 w- m  U0 Q) q3 z+ m# Q

6 f; D, o! [- [
4 C0 G) J- r* j7 [  c. i        linkBuilder1->Destroy();
+ t* n# V+ t5 U8 u. Z! Y
2 W5 o" r& D- H! p3 k5 s
3 {" @; ^1 s6 e( j2 k+ F7 a+ @+ ?$ T0 }' k! c
: q  ^3 d# [  U. ?# H0 o; d
        ' K) x9 a2 [3 D2 H" V/ M- c8 v

+ G0 |3 R3 m* E1 Z% j4 e( I        Motion::Joint *nullMotion_Joint(NULL);
0 }# G# v& n9 q) P9 W        Motion::JointBuilder *jointBuilder1;
+ I0 }  c8 }( m- a; \        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
; B) p. Y  B1 N1 u2 [
4 b) m" Z2 e, w: z- e+ Z, \' h' Z" `7 L& w: ?# y0 c8 t1 L5 `: D  Y" F

7 ~: K9 K) D, d/ K  z" s        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");
! t0 b% I: E9 K9 v9 i        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");! V! Y$ w' b& M
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
" ?/ y' F( m( e9 V2 h        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");( e$ n7 i; k9 q
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
3 G' B0 I$ J' x  p' \3 H5 }        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");
, I& \6 a! \) }5 s% L' h
; H9 u6 v: f- v" `0 s- z' {6 g! N        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
# J9 U/ W7 y2 H1 V        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
+ K- W. t3 G( W1 f" _        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
+ D7 |, ?7 b9 F  W+ X        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
- E3 ^9 E3 `0 H5 O' I, g        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);- v7 R1 S4 o, A
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
- p6 u, j' t* J0 [/ v- Y8 }        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
$ s% @" ~( q& }- R9 k        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);4 l! X9 V3 P1 m& U
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");% T# F4 J7 S) o- k! v
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
. j" D- ^4 K5 O6 X0 Z) Y6 W0 S        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);. M; k, X& a# w6 h+ B) j
+ Z8 r- r# o' w
        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
- U3 y* n9 s# g( P5 g        jointBuilder1->JointDefine()->SetFirstLink(link1);* J* P/ u! H( k/ s( u

" j1 i( `9 v1 h9 ]# b! `7 Z, N( Z, B# Z- ]+ ~1 N) u3 n9 T! M
        NXMatrix *nullNXMatrix(NULL);
" Y' I* o- H$ n9 W        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);; f3 j! p5 c+ D# n: F9 U: r

; W8 R8 \- [* q+ }7 w        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));+ w5 L. _6 Y# m& B' E) [& e
        PartLoadStatus *partLoadStatus1;( E  c  |9 n, @4 d: t& w: x
        partLoadStatus1 = part1->LoadFeatureDataForSelection();
$ k/ r  z( k# S7 w7 d% u/ H$ I$ d" ]! W0 l
        delete partLoadStatus1;; c; a1 T& ?0 p
        Scalar *scalar3;
- D, X) m+ t, @        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);( b+ ]+ I- H- J" P
+ I, G7 L9 H2 Z
        Scalar *scalar4;
' |! p; q3 E# K2 {& |7 e# m( G        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);
' b6 k" h( ~0 t+ A, h
" A* l' K5 B5 u# K; z        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
; }' \4 ^) F" b) I% R* ^3 L        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
/ ]0 q8 |% v1 y. f$ y        Point *point3;
4 Z& i) x& B6 w& q% d2 p5 I        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);6 ~7 q2 ^3 ]. a
7 B7 Q% }' K% t8 U1 ~7 f
$ s, b5 m7 `7 n
        NXObject *nXObject12;
; u& `: x* N5 a- s1 u        Xform *xform1;
2 L( G8 o, L& i        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);5 H, @+ V; [- m$ ^* p: _
0 y9 L8 |) J% n
        Point *point4;
$ Q  F- n0 ~( T% B/ N, l        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);/ V5 }7 h3 H5 ?" r

% O5 M( }- a. ?+ g5 J9 t        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
2 m7 I0 n% C8 `( \
; c+ b, P) M. R& t, ^5 t( H; h* s7 V$ B. b. p3 Z
        Point3d origin1(0.0, 0.0, 0.0);2 D  ?: {2 s  d. u( H
        Vector3d vector1(0.0, 0.0, 1.0);
  U) Q/ {" L& N' ~' {, N        Direction *direction1;
6 `( h' N/ e' Q3 @        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);5 E! \2 [) t$ e  c, X, H1 w
# P7 s  x. }* W
        jointBuilder1->JointDefine()->SetFirstVector(direction1);  l4 r8 b, ^5 m1 P* X

' c. Q: U; G! ]        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);
' U2 A5 |* |/ l& W; Y
( b6 Q& O% K. Q: J2 Q7 ?  W0 ~        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
  j- _3 m1 I9 ]# _+ E. ~* D( i$ z' l! S! w
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
$ E7 i! D! l+ K6 q
1 C8 ]* U  c' c( Z7 Y, _6 K8 n9 J/ B) [6 _* R- @+ i- {
        NXObject *nXObject3;1 B/ q  k0 P5 n4 d
        nXObject3 = jointBuilder1->Commit();' P0 S5 O2 R. U+ ?
3 r2 l' A! p8 X' R
        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

为什么会有表情 - -!
4 {7 X. B* b" s1 f1 f; \" U
# Q- k7 e% Q! t% L8 E有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码2 z* M; v6 ]& ?8 R3 E6 [% h" v
7 }+ }1 O% }0 Q8 T9 x' Q: |/ e
.....* [( R0 X( o3 N% x/ Q6 [9 f
! Y4 K! v+ u: ]
UF_MOTION_init_articulation();
- N/ y/ X3 O) T# \' B' sfor(int i=0;i<360;i++){
: b  y3 n6 ~: e, V7 p( _& T  UF_MOTION_step_articulation(1,&i_ret);0 j* w- s* m+ v4 O+ y* D: z6 G( ]8 e  R
}! @* J9 l' M3 ]! q# J8 p. y
UF_MOTION_terminate_articulation();5 R' L8 ~, u1 i( m3 l, E) k
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二次开发专题模块培训报名开始啦

    我知道了