|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
% s7 [$ P6 ]: S5 @* I/ o
4 \2 ]% q+ p9 F5 ?( o. i1 z X) h* c$ C( u- W# z/ F* N6 M
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves! a' d/ D6 R5 S( i3 S6 c
: V, Z/ [) Z( b1 d3 w* f
此处使用的是 通过面的法向创建投影曲线,可以参考下!
) B. Z0 u' ^. \3 n" F) m+ i/ t0 M% U# @6 s, |1 ]. l3 r2 e& {1 c
4 |# \. v6 Y% l5 J/ B# _
0 P* Y$ ^4 j, @6 Q+ N+ Z3 _3 z' e" ]* n5 q$ K2 a* Z; _( r
7 v5 E& T. D5 n, u: ^
: {+ w2 L+ A% U6 T, O" y- W0 U" j- l
NX Open C++ 创建投影曲线 project curves
1 v8 G$ g: O' N
' d$ O# S- s0 M, a1 H. R$ L ]3 M' [ |+ G3 [
- 3 U) g( A9 ?2 o/ Z- N- _2 p
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
' z2 k' y$ C6 W1 Y) t - {
+ y" i) G" A+ t: Z/ p6 ~ - int errorCode = 0;
4 d/ q. }( R9 V - try2 k! u# V/ b; e+ e
- {: @* y+ Q# h* ^
- // createProject curves; g8 J0 [) H1 Z: U
4 g7 g2 T9 b' s) x& s- g X- Features::Feature *nullFeatures_Feature(NULL);5 O7 j7 H4 t$ k+ e
- 6 v9 t/ A8 V" T# E) k+ Z
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
# X+ ?9 t- v8 @! z
& L5 V7 X- d( l/ {: m1 k& i' K- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
" R( f9 p' n8 P G5 M& Z; p+ ^ - % V Y9 N; [( _. ?* c3 B! @
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
$ g4 d$ L! j) f" I/ \' U! U - 1 {- ^; v% d- h5 M+ D! b6 `1 g
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
; _; e, [" U- H' i7 d& T - 3 X5 T# U- ]6 s/ [ M6 E$ W
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
$ Q# w1 }1 o j" w' H( W - $ n* ]2 T& s1 \0 [' Y+ R0 s/ j
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
. T& o X7 t. ^; I2 }2 X2 f - 6 p5 \$ Y! g4 G
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);( h+ l0 j2 T$ w% D! L" h5 x
- 0 n7 x, N' T, w& T8 e( ^2 W
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);, ~$ @' k+ p2 v$ l2 ~2 g/ J
2 \3 J! ~* c' t3 d# I; v( p5 ^- int size = (int)inputObjects.size();- U9 m8 X& r6 d$ {
- std::vector<IBaseCurve *> curves1;
; Z3 U1 w2 N/ a$ B' q1 y4 A - for (int ii = 0 ; ii < size; ++ii)
1 \9 u* F+ b* _: ^. S - {
) H6 F# D W8 P% B3 v, `0 s U& o - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));, R0 D" L( P" o
- }
) n; F$ L& O F7 t. o
# _ W9 o W- E" u) L6 d- NXOpen::CurveDumbRule *curveDumbRule1;$ p# _6 e; P4 C) S6 e0 w% `* w0 M
4 m0 t `1 `/ ?- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
1 P6 a! M# @3 ] F! H2 Y- y$ h9 x
, V* g7 o' k9 z' p: G w- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);7 p9 g2 ?1 T/ p. t# o) ~+ G# A
- 4 I. {/ c2 r7 y* g
- std::vector<SelectionIntentRule *> rules1(1);( d3 b" n7 n3 |' g. S2 ~
- rules1[0] = curveDumbRule1;+ d4 ?2 U. p* `1 w8 S. s H
- NXObject *nullNXObject(NULL);' f/ A/ _0 V) q! T
- Point3d helpPoint1(0, 0, 0);3 o o" T# k/ E5 \8 w
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);! `# V: v8 g! e
6 _8 m/ L' |, }8 J1 R; X- plane1->Evaluate();" j% Q4 P' Z5 D Z& ]- j6 V6 @
% w- t# t( c3 O- projectCurveBuilder1->SetPlaneToProjectTo(plane1);, O9 ]# l% n2 J& F: L
- 0 n) E+ [' q) U9 n- h/ C
- projectCurveBuilder1->SetGapOption(true);' x: O# B* R/ b' y' \- a$ Z
: g: a) q% J+ C! d' }' ?5 ?- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);$ T. P) b0 T G5 ~4 s
1 t( V5 W+ x4 ?( O. I- NXObject *nXObject1;$ d0 y9 K T8 n ~: B! O l5 k
- nXObject1 = projectCurveBuilder1->Commit();
$ v4 s9 D; N# e& u0 W$ y# D
# D0 ]6 h2 ]# A5 _- projectCurveBuilder1->SectionToProject()->CleanMappingData();
$ X# l9 g3 f6 g) ]5 Z; h; K" E - + U# K- k+ ?# u) l9 Q7 C. |
- projectCurveBuilder1->Destroy();
4 y" }" d, k5 j* _0 i( x, L - " q9 J1 c2 H1 D: y
- }& \( f' o/ _8 s: T
- catch(exception& ex)
3 d5 ]2 \2 C' B9 I: }; W' u - {# E/ [, H0 i& m* |3 l. _( f
- //---- Enter your exception handling code here -----
/ A8 V( t' |7 ` - errorCode = 1;
; Z9 ^7 P: G! o" Z5 b - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 w2 |' Z0 b4 h) z& G+ s4 O( ~
- }
+ m3 O+ @1 ~1 d$ e; P* I: {/ e3 _ - , k `) Q3 ?$ a' |8 W
- return errorCode;7 u/ A- g/ J9 z0 w% P+ H
- } v* C# {2 Y. T
复制代码
/ X& d' j) P: u' p+ J
! m+ G" h3 R6 ~; i4 S
) Q p# B" U: x5 n# Z, r- H# b |
|