|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
. s- }5 ?' i7 d+ E" r& S9 b; W. ~
4 E4 |) N( V; R
2 p ? L/ T1 X$ O wUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
5 r. g' B5 [; Z* t7 T }, d% s
% {3 ^6 e% z7 N: y2 [: }6 m此处使用的是 通过面的法向创建投影曲线,可以参考下!
* t" v# U7 u+ l. @) Q4 h
: e( Q( z5 c9 o9 w+ Y3 m( K7 K! [! `, b$ J- c
& |5 J& Y( E# t7 n
* F8 {; L# S7 W3 S' j! q( ]
" T3 @: K0 f; a- S- l/ n' F
! Q; t. w: a( o$ D& q" t0 |; n
3 F- D) W: e+ @ k; I
NX Open C++ 创建投影曲线 project curves
7 c8 ]/ |$ d" k5 @' ]
) Q. N3 m. S/ x @6 b4 I" l7 t, o" X
. W1 F' L0 e1 V4 w; d
3 p/ O) T' g2 A$ Q- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
+ E7 A; o2 c& m) x - {
" R3 g/ n% U5 @4 @, E) [ - int errorCode = 0;" I$ l. Q/ E- G* J& S
- try6 s1 J1 \' f8 X* ]3 e. d6 t
- {
4 B+ Y/ W9 ?# q - // createProject curves4 C4 i. L" W3 J4 e* Q# q6 d% T
* ?/ A& A) h& D! U) u* R, N- Features::Feature *nullFeatures_Feature(NULL);
3 Y9 m' m0 P' ~7 M; R' M+ @ - 6 q4 L) m- B2 Z' X0 W8 T
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
5 d+ Z" d' k1 ]% m7 W: R& M
0 @7 o7 Z: o7 P* o- _- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);! Y0 R7 a# \# V
- & L& e6 b% l2 S# p8 E$ I) w0 t
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE); u+ X' m( t' L* S
- / G: j Q! R6 V1 }4 }+ H
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);: e5 K. i/ s7 m# X4 C, t& z0 ?
' O; q, Q9 p: @% P, r3 i" B- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);1 J# f8 ^% h4 B, j# A
- * v3 B3 U ^3 _
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 o, |- z& c1 R! N d0 [. z
' m2 Q8 Q8 L" _$ E- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);% {# X. I$ R% g$ Q& G* l8 b
V: E3 H( \4 C% M6 Q- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);. G. ^ u4 X/ Z
9 O" \0 M' |7 ^& z' e- int size = (int)inputObjects.size();
) T% c- j4 [ N5 M% g0 E: n" J - std::vector<IBaseCurve *> curves1;
4 R4 }/ n( C: u* \5 f# f( H" g( J - for (int ii = 0 ; ii < size; ++ii)& K- i' J) T9 y
- {
# I' t, z9 B" z- p+ h7 `- S$ M - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));; ^7 N3 _. \* w6 B. r
- }" ?8 j0 d" ^' \# s; Z
- 2 G! U* i8 U* z- I, {5 J% L
- NXOpen::CurveDumbRule *curveDumbRule1;1 Y2 P) V0 C" Q+ ^' G5 j
- ~/ s+ @ r* _% @* ~* ^- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);' G* N2 v- D* w- X
- 2 L# A+ b5 B7 A% ^. A
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);2 o5 L. @, ?" O( A; q8 [! l* t
- 7 X- g' K- O4 V a0 h
- std::vector<SelectionIntentRule *> rules1(1);
/ e* N% j. |% K& y `( O - rules1[0] = curveDumbRule1;( N1 b) b( o) ?5 p
- NXObject *nullNXObject(NULL);
3 V. v# O& U4 g; g% m& l# b, a4 U# v" n) k" w - Point3d helpPoint1(0, 0, 0);
' c$ Y& w R7 _6 {8 ?$ f3 P - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
& x' X0 H2 b, K: m* v3 b& J - 1 A" T; L, k) O" i; l6 j
- plane1->Evaluate();1 {" ?' _0 @0 F; d4 B0 K A
( n+ {9 ^7 V7 T: C% `6 t' P/ L* r$ @- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
3 c) V1 b8 _$ H3 O" ?4 ?& j
% ?5 { B" A( P- o* }6 Y) d& J6 N- projectCurveBuilder1->SetGapOption(true);
7 ^' X7 B! k9 C - # ?0 A7 T6 x" H4 |( K
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
+ @! _4 G2 m3 S1 G6 b
, F" W( u L3 \1 |9 }2 C# `- NXObject *nXObject1;8 b3 ?6 T7 Z: g, f+ N% K
- nXObject1 = projectCurveBuilder1->Commit();
) }( b) u% l% O - % @) \2 I% H4 B/ B
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
3 x9 E9 Y4 _7 i' {9 m' {7 X6 f& Y - ! {2 R! G0 C' R. y. t7 _) Q4 j
- projectCurveBuilder1->Destroy();
( U6 l8 [( J( m. g - ; q$ X: g& r9 E* N% ?* ]" Y
- }
; i2 l+ O8 C9 y8 E - catch(exception& ex)
! |9 \. }. B6 Z, \) L& ] - {2 ?; I' i: A) G
- //---- Enter your exception handling code here -----, n; \" _4 R$ T8 g
- errorCode = 1;" f0 C( c+ h. i: B) z& U* J0 ~
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());5 [' x. q# ~( h. t- P3 U+ _+ ~
- }
' j! I O( o# Q# I - / `1 D5 L( r: \) y) I
- return errorCode;# b. u* Y6 T* n- Y, _
- }: R; B5 I0 W" ]6 x! ]
复制代码
+ B1 P9 A O; ~, r* R5 D' i" ^
& }" s7 F' @6 N1 Y! D3 F- t |
|