|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
PLM之家-NX9.0 二次开发实例视频32 NXOpen C++创建拉伸特征
NXOpen C++创建拉伸特征
% }8 v# b3 `: z' G ~& J9 q
内容:! Q6 ]/ T# d, Y
通过草图创建拉伸操作
: f& R2 B$ f0 L) _9 ~6 c1 C. q目的:
. [3 Z x" n+ N在NX中,使用NXOpen C++可以很方便的进行JA的录制,草图的拉伸可以通过JA生成代码,此处拉伸草图的方向为草图的法相方向。需要用户输入拉伸的起始值和结束值。草图创建过程中主要是对section进行定义,在定义的时候需要考虑到选择意图selectionRule的定义。
# M$ B2 N: C4 R5 ` M9 A
5 D; n% J, `$ ]' {8 G M6 R" j9 ?5 @ P+ ]5 ^; \
关键代码分享:1 N; O2 d! Q& r7 [2 ?1 ~7 ^( p- C
- : P9 g( E5 V# h3 t( s& w
- <font size="5">, _( p6 P- M* Q8 z* Y; d
- </font>
! A& {* { z3 R. J- X7 b - <font size="5">void lesson32_createExtrude::createExtrude(SkeTCh *sketch)# t2 w$ Y* F0 [# D4 c! Z
- {4 T; C; Z6 O. X t# H3 Z6 U0 H& ~
0 s* r9 h8 s; ~4 k" ^4 [- Features::Feature *nullFeatures_Feature(NULL);3 u8 `/ o% i7 _. c4 p# D
- Features::ExtrudeBuilder *extrudeBuilder1;
+ y' ]4 P" v" D - extrudeBuilder1 = workPart->Features()->CreateExtrudeBuilder(nullFeatures_Feature); g1 n1 i1 v y
- // set parameters: K& O$ U" C' O& |2 i( N
( A9 M7 T5 a6 e3 I- // create section Start1 ?& v+ N- m0 r8 l
- Section * section;) d3 K; `$ W D) I1 u* {8 I& w& L
- section = workPart->Sections()->CreateSection();
; i5 n9 P) v1 L9 U. D5 o - extrudeBuilder1->SetSection(section);: Q u* H8 F5 M# S4 }1 V
: j# Y/ w1 U, g- CurveFeatureRule *curveFeatureRule1;
4 X, N) m7 q9 B/ B% `8 s6 e - std::vector<Features::Feature *> Rulefeatures(1);
! A: ~6 }+ d3 B3 S4 t0 F - Rulefeatures[0] = sketch->Feature();) `4 q: C/ N8 u6 ]8 a- _1 }
- curveFeatureRule1 = workPart->ScRuleFactory()->CreateRuleCurveFeature(Rulefeatures);
a! f, P! Z$ O" x7 d% f9 g - / b4 t" z( t0 N$ ]% o% u7 K+ |5 M( A& @
- std::vector<SelectionIntentRule *> rules(1);0 `1 W. M- ~' x8 W7 i9 T! C7 ]8 V
- rules[0] = curveFeatureRule1;
3 O: j7 j9 |" S - / Y; p: r, u( e+ S" p
- NXObject *nullNXObject(NULL);; C. D) \2 s' P9 B3 k3 r
: ~! \- q5 c' v: x! u- Point3d helpPoint1(0, 0, 0);
5 G& f/ C6 w6 p; L- Z i1 q1 T5 I$ T - 5 X- f t7 Q4 F0 E2 v' k7 E
- section->AddToSection(rules, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);( b/ H1 q+ n" i {4 R- p
- 9 Z( p1 O, y7 g/ \7 v8 S% w
- ( [# B! u9 ~* R. A/ h4 c8 i% u0 p
- // create section End4 R1 j8 R% m* V9 n5 Y
- , [$ Y; q; S5 u k
- Direction *direction;! J, A/ s' A" k
- direction = workPart->Directions()->CreateDirection(sketch,SenseForward,SmartObject::UpdateOptionWithinModeling);
3 J2 y+ C1 @- I- Q - extrudeBuilder1->SetDirection(direction);
) z" Q/ y' F7 H$ ]/ a# v - . U+ A9 m( h: i4 ~! m( E+ m
- 9 i: ]1 ]: r/ |4 y8 ]
- // get the UI value# m5 Q( @7 N( q- C1 |) Z
- ) Q M, J7 j2 ^+ C& n0 I
- double startValue = this->expExtrudeStart->GetProperties()->GetDouble("Value");
+ D& U2 \' w2 W& Q0 k% W - double endValue = this->expExtrudeEnd->GetProperties()->GetDouble("Value");6 L H |4 [; A- }8 h |. T! |" u
- stringstream s_startValue,s_endValue;; {2 @" x h* J
- s_startValue <<startValue;7 a, `5 J; O- A G9 A% X
- s_endValue <<endValue;
! c8 q7 L9 `6 ~% f p2 a - : p( W7 ]/ @, Z- N/ L0 @9 ]% K
- extrudeBuilder1->Limits()->StartExtend()->SetValue(s_startValue.str());- K, o4 t9 ?- b1 L9 t' n
- extrudeBuilder1->Limits()->EndExtend()->SetValue(s_endValue.str());
% I1 u1 L) B$ b' d/ F+ `$ j - 8 V% G' Z4 M+ z1 n Q2 e
- // commit feature
, j+ [; b1 o2 \4 l% I) i5 S - extrudeBuilder1->CommitFeature();
) N4 j' B9 ~& l5 e& B7 n; U - extrudeBuilder1->Destroy();8 X6 ^' N: p& u) K* o% z
-
5 |" a |; B; Y - }</font>
复制代码
& n1 l7 C5 u5 C5 m, Z4 V( `
3 }6 L0 T2 O* x' i: {2 Z7 j
4 O8 @4 c* T/ W( @2 q( t4 ?) }6 o8 G% |, f, Y* B; z+ W0 n
3 |) t/ f3 U# X; _3 u9 O/ G/ Q3 @
9 I8 k: a; m8 I! x( y0 J+ ]3 z6 O
|
|