|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
PLM之家-NX9.0 二次开发实例视频33 NXOpen C++创建旋转特征
旋转草图
G& R" F) W4 w( H
9 f8 s0 p o- i. Q' _/ E' j4 w
内容:
8 C; I8 m. y* m. O! m( y通过草图创建旋转操作4 H t. D2 m- q, g" \$ }
目的:8 y4 ?# L( \7 c. F$ |$ v
在NX中,使用NXOpen C++可以很方便的进行JA的录制,草图的旋转可以通过JA生成代码,此处旋转草图的轴通过界面选取,可以设置旋转的角度。代码需要显式设定公差选项SetTolerance(0.001), ^7 a! @; o2 W9 t+ X! s9 c# E
" V# v* B) Y. F! {
6 X" L! O! v$ I1 J
PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(1)创建项目! Y3 D' S: I1 p# ~
PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(2)代码分析
: l1 ^7 Q/ w; l6 C$ c* j PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(3)截面代码定义
P5 b+ n8 L* w. B PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(4)UI关联7 M0 r, R; }, W. R# P) b
/ U- a+ n! p: t1 @2 G1 B" P
关键代码分享:. ~* x3 Q: t4 k8 l
o t& Y- F( p5 U7 i& S0 ?1 @void lesson33_createRevolve::createRevolve(SkeTCh *sketch)
3 R; ~) m: {, r. J{6 O6 ]1 K# d& `) q8 o
Features::Feature *nullFeatures_Feature(NULL);8 ~( U- E* n3 z7 s+ w
- T1 \: G. b, q Z Features::RevolveBuilder *revolveBuilder1;* k% k7 c H% c. z: [
revolveBuilder1 = workPart->Features()->CreateRevolveBuilder(nullFeatures_Feature);2 |- u9 ~7 f' {6 q5 e
revolveBuilder1->SetTolerance(0.001);
" T& l& K9 s' s6 q Section *section1;/ J; X7 N4 f' p0 w0 C9 P0 ]0 h
section1 = workPart->Sections()->CreateSection(0.00095, 0.001, 0.05);* X' q _% g, `, T, z
revolveBuilder1->SetSection(section1);, y. Z3 n5 I8 A, O: J/ Y; p
std::vector<Features::Feature *> features1(1);6 I' {; z" `1 N
features1[0] = sketch->Feature();$ @2 C2 I2 F8 _# |" Z2 E
CurveFeatureRule *curveFeatureRule1;
_6 y. E( y/ N3 C1 F9 g6 f curveFeatureRule1 = workPart->ScRuleFactory()->CreateRuleCurveFeature(features1);1 B1 d& q6 b) M9 f7 N
std::vector<SelectionIntentRule *> rules1(1);$ p2 R$ \/ ~' Y/ f
rules1[0] = curveFeatureRule1;
4 R9 o' n/ A0 J- t N y# I1 w NXObject *nullNXObject(NULL);! ]9 v# z- w, ~2 T2 Z: @- ]
Point3d helpPoint1(0, 0, 0);' z8 ?$ `! C S
section1->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);$ `7 @% p2 d3 J, \! U
revolveBuilder1->SetSection(section1);
+ J; n9 d8 N5 Y% M1 N V+ @// get UI value
6 \$ o' }9 F9 e, p, D$ L( qvector<TaggedObject*> selectedObjects = this->axis0->GetProperties()->GetTaggedObjectVector("SelectedObjects");, Y9 g' q2 P* d+ z$ K$ V2 M# H. a3 t
Axis *axis1 = dynamic_cast<Axis *>(selectedObjects[0]);
' i5 G5 I1 t: K/ [$ K) yrevolveBuilder1->SetAxis(axis1);" D5 |" I& r( o a+ {% K6 H
double startValue = this->expStartAngle->GetProperties()->GetDouble("Value");
8 z9 {7 ?* l; x; X5 h% w5 }double endValue = this->expStartAngle1->GetProperties()->GetDouble("Value");
1 [1 e/ [+ G9 r3 n$ m5 f8 a! p. }" F stringstream s_startValue,s_endValue;
4 Y2 w3 L9 J% }' e s_startValue <<startValue;: ~; X8 l/ c( M& ?; ~# x
s_endValue <<endValue;9 U5 G/ M& |: i( ^$ G7 |+ V
revolveBuilder1->Limits()->StartExtend()->Value()->SetRightHandSide(s_startValue.str());
0 a" k! p8 g) X" _) F* |7 { revolveBuilder1->Limits()->EndExtend()->Value()->SetRightHandSide(s_endValue.str());
% p* r0 m7 ^! E- a" \ Features::Feature *feature1;, w7 I+ x9 X, {9 ~
feature1 = revolveBuilder1->CommitFeature();
, Q0 @9 v8 m g; F; r. p# ArevolveBuilder1->Destroy();
0 B+ s" ]% U+ W5 F" i: j, |7 }4 `section1->Destroy();
" r& O, s1 c. ~1 e}/ E0 R* F/ |( Y+ }
8 n {7 m" ~! b& o- p3 b
9 }" n! O+ i) k1 X. g" ^( v- }7 k, q* M
" b5 r7 O) w7 L( s% W, r
% t3 a. o( F5 x- \3 B# p, @- q, A- w0 v$ z0 {* I& T
) Z$ |3 A) T! B
3 K' n: J. r% M- f& @3 Q
0 Q' \$ m$ F* `8 r( w' x
|
|