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

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

liuyang77177 楼主

2015-5-21 18:40:22

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

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

x
大神们好 - - 我又来问问题了4 W+ S- z% J, {, q1 X1 v% ^

* O" m. g! V9 ?& h我已经把程序的基本架构代码弄好了,扫掠问题已经解决了,现在我们这项目走到了最后一步,不过似乎做不下去了。8 C9 Z; ~& v/ i  l' @
QQ图片20150521182535.png
: t7 S6 R! e  l# X1 m* o我要做一个运动仿真带干涉分析,但是NXopen++不给提供运动按钮的ja录制,我似乎也找不到如何可以通过语句使得运动自动进行,求助各位大神了,是否可以通过某语句使得动画开始或者做一个步进动画,还是我应当如何把我的open++里面的语句转到ufun语句的架构下来做动画,谢谢老师们的解答。5 d/ F. _$ v& E3 U3 e
" R. U3 C' U6 m
一段ja录制代码:
# x) B( H' w) Z' X/ `+ O* c" S
  f( `( N- Z8 G+ \8 e6 m  D' s        Motion::MotionSolution *nullMotion_MotionSolution(NULL);
( M4 O  t. s' ^4 f1 _+ ^4 l        Motion::MotionSolutionBuilder *motionSolutionBuilder1;
: y% B$ t6 i0 u        motionSolutionBuilder1 = workPart->MotionManager()->MotionSolutions()->CreateSolutionBuilder(nullMotion_MotionSolution);8 ~( \7 E. u' f- p) M# |4 A: a
- Y& d0 r' F) A" u
2 X* R; M8 y; r) l, u) Q- w
        motionSolutionBuilder1->SetTime(10.0);. t$ N1 q% d& z! d% m# o0 Q4 |7 L
        motionSolutionBuilder1->SetStep(500);
* w2 v1 C4 P6 m! e        motionSolutionBuilder1->SetName("Solution_1");- u* M: A/ W4 c! M2 S
        motionSolutionBuilder1->RecurdynSolverProperty()->SetStaticIntegratorType(Motion::RecurdynSolverProperty::StaticIntegratorTypesRobustNewtonRapson);
5 x3 i( K" t4 ?1 |7 I5 r1 }3 f6 l- v+ o/ y" D5 V0 o
% f+ \: o% @3 B) L) k# h
+ S+ E, H/ M, e
        Point3d origin1(0.0, 0.0, 0.0);
1 ^& b4 D" k% c3 |) x3 ^" J' {        Vector3d vector1(0.0, 0.0, -9806.65);7 w0 W2 ]# w0 V! b" y( ~$ z
        Direction *direction1;! {& g8 I( N0 p( K& H1 l) F" B
        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
+ r. w$ i! V' h9 h+ w/ q        motionSolutionBuilder1->SetGravityVector(direction1);
' G! ]7 U$ h: W- b0 u: m9 T% `0 ^5 r0 X4 B- m- w0 E
        NXObject *nXObject1;1 T. P4 C' O) a1 J( U" w7 h% t
        nXObject1 = motionSolutionBuilder1->Commit();
" q0 `; n$ `" ^3 w; g7 L6 l        motionSolutionBuilder1->Destroy();7 ?8 L0 R: q3 a: p1 V
       
: D3 i8 x* n7 S2 j3 j* s- }        Motion::MotionSolution *motionSolution1(dynamic_cast<Motion::MotionSolution *>(nXObject1));1 D8 @9 h& U% d- S
        motionSolution1->SolveNormalRunSolution();1 M  c4 d. B  Z) s
" P& B; k+ L- ^* F  k

2 X- a" P4 c' V4 O* q$ L
+ W" }+ L$ n/ N就是我想通过我建立的这个motionsolution (在nx程序里是result) 通过语句命令开始动,然后动画结束之后删掉部件云云...
9 X2 O$ a& y: A# P) m6 z
上海点团信息科技有限公司,承接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函数有一些可以用的代码但我接不上这样子
0 @% i) J) P) r6 m  f7 X# ~/ P
1 ^/ E' t; a3 A; S/ w) N" s& v$ APartSaveStatus *partSaveStatus1;3 X* A: U* H: @( g* Y* U
        partSaveStatus1 = workPart->Save(BasePart::SaveComponentsTrue, BasePart::CloseAfterSaveFalse);
2 C2 Z% I" d8 z0 k3 ~9 R( d+ {. F9 [" b: U
        delete partSaveStatus1;- u8 l. X; u$ M6 l

) Y7 B& y) K6 y( m* z2 l6 b- i
+ g. `2 E1 u" @9 u2 d* Y        theSession->DataManager()->LoadFile("G:\\UG\\UGII\\motion_try\\motion_try.afu");
! Q# W. G: F/ z0 G" X; {& f  |" @. p0 u; J, `" _3 I+ s
7 M$ x% g  W/ d- N+ i

. o1 B: Y. x& _0 R        theSession->MotionSession()->Environments()->SetAnalysisType(Motion::MotionEnvironment::AnalysisDynamics);
, d3 y2 x1 w5 O9 D0 D5 N' D
/ _3 [+ c) _, }8 j$ k2 O        theSession->MotionSession()->Environments()->CheckMotorLicense(false);. v- }4 i" B" @* O& U) W3 T. Q
2 t3 z+ X7 u5 s7 c/ }5 A) L
        theSession->MotionSession()->Environments()->CheckCosimLicense(false);
2 J* y4 {  c0 L" B) h3 s5 q% ?4 J& T0 f
        theSession->MotionSession()->Environments()->CheckFlexbodyLicense(false);" k4 x6 A2 C; x
# H/ s/ Q8 t, P& M8 e
        theSession->MotionSession()->Environments()->SetComponentBasedMechanism(false);; N& {; n4 O) @, l! z0 U! t4 W3 f3 @3 [( |

0 z6 l" m+ q2 H) L* |2 h7 g( t3 l
. ]& F  n( C' ?, X        NXString motionSimName1;
# G  d5 B5 e* C8 A- w7 n        motionSimName1 = theSession->MotionSession()->CreateNamingSimulation(workPart, "motion_1");( c0 f3 ?3 Q" g+ W! W1 h" U
2 `0 y1 {5 `, e6 E0 {6 E# p
        workPart = theSession->arts()->Work();0 a. @3 `( Z0 `
        displayPart = theSession->arts()->Display();
: `9 q. p7 T: D+ s+ ]- J        Motion:hysicsConversionBuilder *physicsConversionBuilder1;
1 h6 m, p  [+ R2 T        physicsConversionBuilder1 = theSession->MotionSession()->CreatePhysicsConversionBuilder(workPart);8 G- h: p1 k  |  ]3 y

3 I3 |, ]" O0 O" u) Q& `        physicsConversionBuilder1->Destroy();
: y  p+ T2 G6 i5 j$ C, I; [1 \& w; A5 a$ J+ k" q
        theSession->MotionSession()->InitializeMechanisms();8 M+ L$ C! R/ m) H) j; R
2 s- M+ y  z+ d! V
        Motion:ink *nullMotion_Link(NULL);
: |8 c7 ?1 ?3 V        Motion:inkBuilder *linkBuilder1;
9 W; h$ s, ~/ K* g        linkBuilder1 = workPart->MotionManager()->Links()->CreateLinkBuilder(nullMotion_Link);( G  I2 B* M# `6 n) ^4 L

/ Q% f% C6 f' W8 O        Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));0 Q& e! ?. B1 k  f0 M
, U# M5 O( Y9 O. W  ]2 W
        linkBuilder1->MassProperty()->MassExpression()->SetRightHandSide("0");5 k; a' n( E3 I  l4 V

* d4 [" I7 c, K- h, @        linkBuilder1->MassProperty()->IxxExpression()->SetRightHandSide("0");
, M. q$ Z- ^  G- e" `7 d
9 ?; B- p0 j5 O1 _( N" f8 R        linkBuilder1->MassProperty()->IyyExpression()->SetRightHandSide("0");
1 [0 d0 I% y9 j4 ~  U3 v' A& m3 |+ h( Y' H2 Q
        linkBuilder1->MassProperty()->IzzExpression()->SetRightHandSide("0");; ]3 F+ z" f4 G" D1 l

# V; w; i' V: [3 _: n* y1 L4 E* X        linkBuilder1->MassProperty()->IxyExpression()->SetRightHandSide("0");& L% R7 ^3 o* f: l' X( M2 l  }

6 [0 f: z. J6 ]# D) }        linkBuilder1->MassProperty()->IxzExpression()->SetRightHandSide("0");. {3 A" p5 h0 G) `8 @3 Z, C% W- \

8 {( u' o) P4 ?4 q7 v" O7 |" i        linkBuilder1->MassProperty()->IyzExpression()->SetRightHandSide("0");
) U8 Z, G; s- @0 e. r* Q( D. |6 m7 i
       
) B5 z) w( k9 R. o0 g
2 D% K2 p& a: b! Q: o. b! J) F        linkBuilder1->SetName("L001");! R+ G7 A9 A0 f

& [# u1 w) p3 ^) w/ i  I5 z, z. [- }9 n; r8 r
        Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT motion_try 1")));0 a1 ~+ N- o4 r8 E% {+ z" e  W# F
        Body *body1(dynamic_cast<Body *>(component1->FindObject("ROTO#.Bodies|"+obname)));: @7 f; }  U6 v$ s( v4 F
        bool added1;
/ y/ t5 r7 f: y# F( j        added1 = linkBuilder1->Geometries()->Add(body1);
; h2 q: x* U. N4 c! t, R$ ]7 F- b
        Direction *nullDirection(NULL);
' q# V. r9 \! k9 c  i" Z& c2 |5 t        linkBuilder1->InitialVelocity()->SetTranslateVector(nullDirection);
8 |3 g& U; H3 a  C* ]' q) v; `: v* Z# Q' {0 x. }, S8 h$ m
        linkBuilder1->InitialVelocity()->SetRotateVector(nullDirection);+ ?$ c( \3 I: U% o! }: p$ Z
2 W* x5 Y% ]( Y0 ^( T" q
        NXObject *linkObject;
" h$ `7 V  \, [( v- {6 e        linkObject = linkBuilder1->Commit();5 X: d1 Q2 [" _7 }0 \

, k9 w! K# A2 o" o1 y7 k
& i7 F7 {! v! ~0 V        linkBuilder1->Destroy();
: j- B" K/ L7 A1 T- ]' q/ O+ f2 P$ J% c

+ R2 r/ g. \) W* ?
1 |5 V) }) o( y6 L
) D4 L. h# O' @; [+ x4 O       
0 z$ P* g% @; S# T# R. b8 h# h( r$ @: R# N% V/ j4 o
        Motion::Joint *nullMotion_Joint(NULL);
5 B! N: _1 S2 r: F% \( s- L5 o        Motion::JointBuilder *jointBuilder1;
( p. u3 W- j$ Q  |$ C& i        jointBuilder1 = workPart->MotionManager()->Joints()->CreateJointBuilder(nullMotion_Joint);
4 k8 t# Q0 ]. W  j: {1 s1 \1 ~3 {, n: H+ L( _

2 I3 g) n9 o9 ^# \2 v7 f1 p
% c" R6 p/ x6 e, F. l) k* }' v        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->DisplacementExpression()->SetRightHandSide("0");* B; O& K8 q' f+ N; b5 q7 e
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");
' g9 e5 Z$ e( T        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->AccelerationExpression()->SetRightHandSide("0");
3 t+ K! R: J5 M5 {" }3 f2 b* @* q        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->DisplacementExpression()->SetRightHandSide("0");( v6 T6 K- L) X" E8 @1 z% ?  L
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("20");
$ F# m' y& ]5 e9 l- [        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->AccelerationExpression()->SetRightHandSide("0");% W& [: N% o# q
" |0 E6 |% f7 j, D; L
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
0 h. N4 |; O0 w0 I' @( G        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);+ c" M  T, M/ G. O# x+ Y
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);
  R4 n9 }# c. Q' _% ^9 ?/ y! h        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);3 E, \* Z4 X4 F$ N. S
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);
6 i: `8 I' W, \% v* Z& ]7 C9 I8 J        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);8 E* N7 N1 S2 d# |1 z! r& W
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("0");
4 H7 s/ ]9 q8 |8 V3 r- v0 J7 A        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
5 F2 j* a5 H, [# p. i        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->VelocityExpression()->SetRightHandSide("0");1 p0 y/ T  X5 I9 V- }- o/ _4 w3 N; `
        jointBuilder1->JointMultiDrivers()->MotionTranslationZ()->SetFunction(nullNXObject);, ^$ y7 r( l) Y4 ^9 M9 t
        jointBuilder1->JointMultiDrivers()->MotionPointOnCurve()->SetFunction(nullNXObject);7 V1 u$ B0 |6 ~) n' m

2 f* o& t" R% w        Motion:ink *link1(dynamic_cast<Motion:ink *>(workPart->MotionManager()->Links()->FindObject("L001")));
: h5 M( k, L9 E        jointBuilder1->JointDefine()->SetFirstLink(link1);- B& I) P- j  M
5 n; i/ _' W* f" r: p
& O1 c( u. Z7 r, m
        NXMatrix *nullNXMatrix(NULL);1 N' O3 K% o( X4 k
        jointBuilder1->JointDefine()->SetSecondMatrix(nullNXMatrix);2 l/ C2 H2 V$ N5 i8 o8 ~  w
& ~1 u. S9 i" ?# ~$ }: C/ P
        Part *part1(dynamic_cast<art *>(theSession->arts()->FindObject("motion_try")));) }7 O! D0 U) U) R$ e& k
        PartLoadStatus *partLoadStatus1;- A& L- p* {/ n; Q
        partLoadStatus1 = part1->LoadFeatureDataForSelection();9 M. U# ]# E- Y7 t

: M( u+ K) u( U$ j8 l% f        delete partLoadStatus1;
  F2 n& b+ @9 z& m# S        Scalar *scalar3;
+ i0 F+ b. T( o3 P' P        scalar3 = workPart->Scalars()->CreateScalar(0.46951534452273, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);2 f5 _8 K) }2 w  i
5 }' |/ a/ J$ \' {
        Scalar *scalar4;& y) f) a, _3 L9 Q8 ^1 r! U
        scalar4 = workPart->Scalars()->CreateScalar(0.440129914258558, Scalar:imensionalityTypeNone, SmartObject::UpdateOptionAfterModeling);) V6 e5 E' {. r8 x, q

; _- x+ V% w$ F" E2 ?) B  t# G        Features::SweepAlongGuide *sweepAlongGuide1(dynamic_cast<Features::SweepAlongGuide *>(part1->Features()->FindObject("SWEEP(7)")));
! H+ Q% P9 ?. T! [        Face *face3(dynamic_cast<Face *>(sweepAlongGuide1->FindObject("FACE 10000000 {(-0,0,0) SWEEP(7)}")));
7 D5 [( m. F( p        Point *point3;$ L: @, U* w" `: T( ]3 T* d
        point3 = workPart->oints()->CreatePoint(face3, scalar3, scalar4, SmartObject::UpdateOptionAfterModeling);
0 B& v, G6 f8 O, \3 L; B: {1 ]+ F2 H8 ]2 B

7 ~$ p3 H! B1 y" S        NXObject *nXObject12;4 u. `6 Z5 D/ i) v: v
        Xform *xform1;
7 i7 S7 L$ J0 B  ]- U& J  M        xform1 = workPart->Xforms()->CreateExtractXform(face3, SmartObject::UpdateOptionAfterModeling, false, &nXObject12);# ]3 S6 e$ \$ l$ z3 J7 O: Z+ r% e

1 X: X6 e( J* A$ K& c& S. [8 g        Point *point4;
0 q2 F6 Y" l% U7 k        point4 = workPart->oints()->CreatePoint(point3, xform1, SmartObject::UpdateOptionAfterModeling);
% M+ ]. _0 {& Y/ D( P1 Y
# ^2 [8 n4 g2 s7 R8 ?        jointBuilder1->JointDefine()->SetFirstOrigin(point4);
# O. |& i  U# A! r, X! `0 z6 ^6 x; K/ m, t2 V

! a* P7 {4 Z  u0 u- _' `1 C! R& w        Point3d origin1(0.0, 0.0, 0.0);
. E$ p' N" ]8 Y8 z  b        Vector3d vector1(0.0, 0.0, 1.0);
; j. }5 l1 a: r7 U9 _1 {        Direction *direction1;
3 z2 L, r/ ^$ y. ~4 ~        direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
; X3 x' a+ k' h2 v6 o# x
3 u; T( _  P4 I3 O) [) C6 ~5 \2 @        jointBuilder1->JointDefine()->SetFirstVector(direction1);
4 x& b0 {; a8 J9 d+ U- n) p0 c1 m) j- s6 Z
        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetTypeOption(Motion:riverOperation::TypeConstant);2 [) V8 i4 w8 [' d, S

3 b1 n& [* I9 g  L+ N, |8 d        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->SetFunction(nullNXObject);
: H% B4 n* ]0 V3 V) a7 y! M
1 l( W" h5 w0 U/ s7 u        jointBuilder1->JointMultiDrivers()->MotionEulerAngle1()->VelocityExpression()->SetRightHandSide("20");" B! x/ z7 M1 O+ T

/ \8 `  G3 E4 |3 G
" _* k6 N9 q2 {/ _        NXObject *nXObject3;
1 m7 ?2 d3 k/ `* R" F        nXObject3 = jointBuilder1->Commit();
4 {' u5 I  @# ]: H- g1 C# L
* l) [& a* J1 Q% i5 d6 \( k        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

为什么会有表情 - -!
. ~1 A) H1 E8 I6 L; U0 K9 n) Z' {
4 K( P1 l$ t& M4 @3 f! I有一段ufun实现步进运动的代码请老师们指点,如何兼容已有的nxopen++代码
7 T& _& \: c  K6 |( p% e( W4 e% M
.....' F9 I! {% v0 n# C
6 d/ q  Y& ]7 U" u5 f
UF_MOTION_init_articulation();
! ~! [8 t, v1 h) ~5 L7 b3 cfor(int i=0;i<360;i++){& Z* [& o* s' ?, H# m# Q
  UF_MOTION_step_articulation(1,&i_ret);* z" K+ I( r- H5 H7 p/ x) a0 |2 e
}
2 k6 P3 U; @7 j% B6 W- m4 b+ BUF_MOTION_terminate_articulation();
! `$ X" C: `/ D) T/ PUF_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二次开发专题模块培训报名开始啦

    我知道了