|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
. ?- b* d9 W8 g2 Z3 |, W, T! c. N
: N c0 Z! F5 |) m9 o
6 w. Y ^! e% @' R' oUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
: L3 a9 K( ]% j1 \% A+ [# u( s4 [- ?9 r/ ?: o7 g: F. `, U" U
此处使用的是 通过面的法向创建投影曲线,可以参考下!
8 Z6 c) m& i1 j( r" H- q. g0 }2 ]+ X. `
) e$ @* O/ F! E) v1 X: f0 V, c2 e
' g5 M$ A: b, U8 P9 n
9 ]# J0 D% J1 x' w+ Y- ^. ~8 i- V/ T0 U8 G3 X
! D; v: _- D$ w1 k3 h2 K0 Q
, C& z& _& ?* L; X, l+ o! \
NX Open C++ 创建投影曲线 project curves
4 }) @, w* N3 b# L! E+ V- t. L5 S+ Q+ W# V( B$ [; l, ^' O7 _- S7 o- K
/ l% l4 x% ^- E* ~- ' F' g$ C8 [, Y: e1 s
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
) V& y2 N' i: M4 Y# s - {
2 j- m2 o7 t) X5 V1 b" i - int errorCode = 0;! s! V) m4 e7 n; M
- try
- ?" X$ c- g. N$ c5 [6 L$ U7 N - { F. N0 i2 j( U# _1 ~" n
- // createProject curves0 K" L1 K. H( ]9 Y( V, F8 h& N
- - _6 F4 V* C9 c3 G* B6 o4 ~9 [
- Features::Feature *nullFeatures_Feature(NULL);, \5 D, r Q* H# L+ K# f
6 D) F+ u; l" Z0 Q9 L- Features::ProjecTCurveBuilder *projectCurveBuilder1;
+ I2 k# I+ ?, D# F - 0 m1 ~' G' a& e1 M
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);; _; U. A2 _* x2 d- b' }4 U
% d' i5 r$ o4 Y6 c- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
8 y) q# _ n; x8 a7 f) E2 I7 {9 U
4 S0 |4 h' t" c/ W( h- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE); ~! x+ J9 ]: a* Y3 h9 Q" b3 y
- ) l, T: l/ k" a& l5 C9 q2 i$ h, F
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);8 T6 M) S# s$ F- _# c3 N
B0 e. y1 P3 u" Z4 ^2 c' K- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);) {7 T8 y K" }( B7 L$ {. y
- 0 L2 t0 P% W) p* p* l8 B! k2 @2 F! I
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);( ]. n" {6 j6 Q( I9 U" J
- 6 w# A! M& [) f4 S4 D! Y4 `/ Y+ T: O
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
?& a9 w1 s5 M5 j
( `- t( m% J6 v' u6 x, `- int size = (int)inputObjects.size();
w% R/ Q3 I! L$ W" a" w+ c; D4 V+ F - std::vector<IBaseCurve *> curves1;
/ A9 }3 v, f, |4 h - for (int ii = 0 ; ii < size; ++ii)
& W, T& D3 l. K9 b) ?% l - {, L6 Z/ q' Q( k2 M/ Z9 k7 L
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
$ D z# n7 g% F- N$ X, ?6 f - }
/ i' D3 o. J8 g9 d5 T - ! k& `4 P9 V0 U0 q8 @
- NXOpen::CurveDumbRule *curveDumbRule1;) X! {7 B( g I7 }% \/ u5 G
- 2 _% b+ ?9 T L
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
- G* Z: f. |$ g, I9 m6 A; W/ ~, m - U; m; F4 F8 ]" H2 n W
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);0 C K9 h! d3 F0 Q# J
- . B5 Q# ?- ?7 v! i# _) ?* y
- std::vector<SelectionIntentRule *> rules1(1);
/ \- m$ F9 u/ k& A6 l9 l. V - rules1[0] = curveDumbRule1;
/ Y- b1 F7 t9 n: n6 | - NXObject *nullNXObject(NULL);
) P" c# l7 `( B! e3 w2 ?5 f - Point3d helpPoint1(0, 0, 0);
% ]9 w1 v$ Y) a6 i - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);2 E8 y0 j/ l$ s3 j
- 3 d. M' [+ n$ p/ K. \) A+ x
- plane1->Evaluate();
* _; w& N( H+ ]+ f V' ]
, {' E1 W2 \$ w( ^* p; z- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
3 @1 ^8 u. y' G, u; ^
: o# V: K5 {; d" P' E- projectCurveBuilder1->SetGapOption(true);3 ^4 d3 C2 M) A) I
) R+ |' ]* p t8 g- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);! _9 B! v, G/ _7 E9 t" ~) r& ~( m% A' `
- ; ~$ W# w) J. I$ \* H6 k8 b
- NXObject *nXObject1;
3 W7 a }0 e+ T" N+ P8 \ - nXObject1 = projectCurveBuilder1->Commit();$ J2 l7 a+ N3 e. M/ W; J3 f$ B
- 6 ?; m' g8 P; P+ K
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
}" ?. h( f/ k6 { P3 j - * i" H0 a1 s D: q# K7 n7 x. X
- projectCurveBuilder1->Destroy();8 \, ^5 x2 [0 f
- % ?. c5 h7 ]$ E5 l. g/ {
- }! l4 e" t( Q7 K. C5 u" b& J
- catch(exception& ex)
7 c( ]) U, Z& S( y' R$ p - {6 E6 M. W. ~, I
- //---- Enter your exception handling code here -----/ M' B) V/ T7 M: D, n1 N8 v+ G
- errorCode = 1;
% ^* s6 m- ]' X - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
& ]- j, d n) g+ S/ b - }
P/ ?- ^ n, U" c - * i3 O! X- n$ E0 J
- return errorCode;
) ?1 o) E* Q7 i - }
( o+ m$ u: f7 [* G1 K
复制代码
3 M5 R% [" B7 @. L. c# A$ q: w- w1 t$ Y( G
3 q7 _- s& i' ?# c
|
|