|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
; C4 u" Q1 E+ H" J
( h7 ]: D! `8 S0 `, ^
# n4 T! s0 ~; wUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves) _' Y( N% T4 n$ B
# W6 \$ ^8 s; t' m. e. ]+ s y7 C. ~' @
此处使用的是 通过面的法向创建投影曲线,可以参考下!
3 H4 | y$ |) h) Z7 h' b: O# N$ g4 p
* r* d- @$ }9 H# ?. k( Q! H' L4 L% g- D5 z" b9 s* i1 B6 d/ H
( S' ?0 A* x& w7 z6 K4 C" i
" U6 x+ i; }& o7 P' w' ` J* c X0 ]; U: N
# y {5 t2 C8 c* \1 H6 w+ b8 K
- h4 N ]& o$ p% H( W
NX Open C++ 创建投影曲线 project curves
4 t" R; h7 p% j8 {2 d8 G
1 h3 P4 s+ ]! s+ N
: o# d) t, A2 M' Z% u8 ]9 J5 z! ~
- ' M7 }' g" G3 [ L0 y9 r$ P
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)7 N9 q# v8 h" Q4 L# M" }/ K
- {
, D4 ]; R0 `$ x% j9 U( v - int errorCode = 0;2 z4 {# L2 n0 m7 K
- try: m# P0 E+ t& [1 h! b/ b
- {, \/ S8 O J. J' N$ s2 I
- // createProject curves
/ s2 ]: |8 i4 b3 X+ ?& J - 8 Y6 ?% r7 x0 m7 j6 U3 F5 M
- Features::Feature *nullFeatures_Feature(NULL);$ M5 s" T: [7 Z0 A7 w7 T% @
2 X4 ]( v3 }% v) K6 J$ z" V0 t- Features::ProjecTCurveBuilder *projectCurveBuilder1;
# T7 n) g% w/ T2 Q' I A" U \ - ) {# U. [+ a( l0 x
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
1 l- h' F& Y7 h - : D6 @ ~8 q* R/ t1 h2 s; G$ q5 z
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
- g+ _3 I4 u: U" b: s/ V
! j) y ]) A5 D* D x4 Z. l- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);! A2 f2 L, B8 @
- k. H6 s" \/ }' ]8 x- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
2 {5 d( F! c' k* i - 3 c4 X# }; Z. J1 ?
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
! o& |' ?+ M- h! U8 z0 @- P: x - 6 J! E) t& T3 l: ?0 l* q" v+ Z7 b. K
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
3 _2 s Z5 i9 ` f3 Y% L - 3 r1 L t$ \4 G) u
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);/ F( e s: `" j9 n
- 2 M4 J$ z0 P$ A5 _( } |
- int size = (int)inputObjects.size();
3 p( S3 I& J# \" A& P! | - std::vector<IBaseCurve *> curves1;
8 p! J0 ?- E8 x3 D( M - for (int ii = 0 ; ii < size; ++ii)
$ b, ~7 E' b% Y - {
$ i! j' F2 {* U - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));& X, b8 e4 Y+ P8 s
- }+ A+ H. e* O A
- % M% _/ J5 [- p+ t% k
- NXOpen::CurveDumbRule *curveDumbRule1;
) N u- f" A. r# D) I1 m4 Y5 I8 ` - # m; ]/ k) j# O8 ?
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);- Y$ e: g: E9 L1 L7 b) s
- ( ]0 X* [6 z4 {! M
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
9 D3 w0 S4 n" o5 L: g( i
% y. v9 c4 ^2 p9 j9 O" d) `; F+ C- std::vector<SelectionIntentRule *> rules1(1);$ y9 ]. j" z7 X( n
- rules1[0] = curveDumbRule1;: z; W5 ~: P/ p) b
- NXObject *nullNXObject(NULL);
) _0 v1 W! M3 \7 O& B" t! f - Point3d helpPoint1(0, 0, 0);, ^7 M/ k, ~) O, f. G# d5 o
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
( x/ R) E4 Y; d& J4 s" V' `" I - : g) k5 R2 S( ]* f% O
- plane1->Evaluate();9 c/ ?' n( H/ E+ N* ^
- $ L( w; `$ o% F! t
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);, u" y. H8 P) \5 q
) c9 _: D; t) m2 T& o- projectCurveBuilder1->SetGapOption(true);% t8 e }1 I% N0 @
" M$ p( S, j, `/ ^( q/ F) x( z- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
. f* P5 s" i! L& j1 O
; p8 p, ^9 v" H. `$ k% S5 @- NXObject *nXObject1;
$ ^" I5 i9 E9 V* \ - nXObject1 = projectCurveBuilder1->Commit();1 W' \5 o% N5 B" H0 r
- ^7 c/ W2 @8 C/ f& r% ?- projectCurveBuilder1->SectionToProject()->CleanMappingData();
9 t; S. @5 R! c. g
* {5 L( a9 f4 S- projectCurveBuilder1->Destroy();
" I% f2 V% G& `. a9 I - . L# h! a3 b' o3 L0 }7 e
- }
0 F2 \4 A* O, Q4 r3 n4 C' f - catch(exception& ex)
" c( d' `( H; Z& o - {
2 i: y* J' y* c9 m% m% s# r - //---- Enter your exception handling code here -----% e7 s% l1 S( Z; A
- errorCode = 1;! l E4 k5 O/ [# b6 A
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());9 a f) [' _, Y. e
- }0 B0 ]2 I8 E. j" I
- 8 k9 n" m# l" C! T/ x7 S' s
- return errorCode;
( p: `: a' Z I. B7 d - }
; |0 \( A+ \& O s; F
复制代码 : [/ Y/ b( z* x# F0 o8 R
; k# z2 J& I4 x, _6 v5 n! ^0 _- g* M( Q# Z$ }1 B2 h
|
|