|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
PLM之家-NX9.0 二次开发实例视频33 NXOpen C++创建旋转特征
旋转草图
, U: `- n' h$ k. @& l3 G, g5 n
6 y4 R3 z. e. S内容:
0 B0 p2 ?) l4 b6 v: _通过草图创建旋转操作
& \0 ?7 I& |$ r4 b- Y4 }目的:
: \7 _( g: d! ^6 \在NX中,使用NXOpen C++可以很方便的进行JA的录制,草图的旋转可以通过JA生成代码,此处旋转草图的轴通过界面选取,可以设置旋转的角度。代码需要显式设定公差选项SetTolerance(0.001)
# ?8 d: e5 R4 |8 E+ A$ m( b! j
9 ~/ |: b' m" F
$ M. y5 n" v$ q8 X) n: T PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(1)创建项目+ n; w3 ~, _% O% d' v$ e T
PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(2)代码分析3 p$ j/ }/ P& I! ^0 P
PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(3)截面代码定义
* x% L( O9 c5 ^3 _5 f PLM之家-NX9.0二次开发实例33 NXOpen C++创建旋转草图(4)UI关联9 Q3 L2 A. g5 @4 d p
; B) i- o* f+ a6 I# P" z, D( q关键代码分享:9 M6 {$ {( l7 [
2 L6 k0 @# t/ f1 k3 ^( f" b; _4 cvoid lesson33_createRevolve::createRevolve(SkeTCh *sketch)
7 s8 r" N% c- [{6 `; I& d& y6 N/ _
Features::Feature *nullFeatures_Feature(NULL);# Z8 ]: p$ a5 v1 S' r3 `
, [2 b' p1 n p2 m e
Features::RevolveBuilder *revolveBuilder1;- J3 s9 K) T' K" ~3 R% O, j
revolveBuilder1 = workPart->Features()->CreateRevolveBuilder(nullFeatures_Feature);
$ ?1 f5 T3 Y% x) T3 p/ v3 BrevolveBuilder1->SetTolerance(0.001);
# y3 }* T* K) `+ d! V! _ Section *section1;( A9 _3 D2 R0 c- Z) m. B
section1 = workPart->Sections()->CreateSection(0.00095, 0.001, 0.05);
/ K2 m/ F; u- V9 p revolveBuilder1->SetSection(section1);+ w; O" f/ O' ?
std::vector<Features::Feature *> features1(1);. C; ?1 M; V ^0 r* O3 w
features1[0] = sketch->Feature();4 `. t3 L' @. a9 j# i: b
CurveFeatureRule *curveFeatureRule1;) W! K8 e" V& {+ K
curveFeatureRule1 = workPart->ScRuleFactory()->CreateRuleCurveFeature(features1);7 `3 c/ h4 Z/ E1 `* Y: ]
std::vector<SelectionIntentRule *> rules1(1);
( I2 ^1 n2 q- e rules1[0] = curveFeatureRule1;
4 V; a, |6 h: Y$ j5 E/ }% ? NXObject *nullNXObject(NULL);
' b0 {+ |: d5 k6 P Point3d helpPoint1(0, 0, 0);
) y# \. k5 U7 g" M( S2 e* [! t9 F section1->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
p& m3 P+ _6 W) i: S& \ revolveBuilder1->SetSection(section1);% K* v" L* J1 ^8 c6 [
// get UI value
8 J. K! L6 ^2 m; Z; U: b+ J7 ?) {vector<TaggedObject*> selectedObjects = this->axis0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
$ J6 E; {& k5 _( GAxis *axis1 = dynamic_cast<Axis *>(selectedObjects[0]);
0 ]0 y4 O* Q6 F, Y- u- z2 jrevolveBuilder1->SetAxis(axis1);/ I+ D# I2 I6 u
double startValue = this->expStartAngle->GetProperties()->GetDouble("Value");# Q0 N- d! t2 w7 k5 E
double endValue = this->expStartAngle1->GetProperties()->GetDouble("Value");
* ^& J; M) W" Q9 M) y6 d3 H stringstream s_startValue,s_endValue;
: g# Y9 B- H. p s_startValue <<startValue;
) H' G( b7 [- f5 w6 I, B s_endValue <<endValue;
1 ]" }$ k3 V7 L; x6 f revolveBuilder1->Limits()->StartExtend()->Value()->SetRightHandSide(s_startValue.str());
/ E) A1 D0 @; T3 {" T, ]# ?# O revolveBuilder1->Limits()->EndExtend()->Value()->SetRightHandSide(s_endValue.str());# ~) F. U1 y# }( v+ K
Features::Feature *feature1;. ~1 O* m) \; s) q6 _) a
feature1 = revolveBuilder1->CommitFeature();
7 k6 G$ \+ L8 r; }revolveBuilder1->Destroy();2 w3 G# W. ^, b; i/ f, }
section1->Destroy();5 N0 A: ] j) J2 \( u( V
}, X$ f# K0 c& b2 j/ \8 d& R. J
* K" K# P! C( D0 k4 F7 ~; T. F9 @$ b1 g9 ]
1 s' J! u: e& j* I; y9 M2 F. ]& g Y5 _. r% w# [- q& n
( p* V! ]- l! r" ~) L
8 p8 o2 t& U% L @ X {4 Z) Y( k6 _: f, q1 S7 O% u" o+ w' L
) I! E6 n: g" N5 I* ?! Y; G
9 W& W( Q* v& b. Z( t* _ |
|