|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 m+ |& Q( ^: C# ^) O% u) q( K1 u6 j0 N) p" |1 t( n6 L
" t6 M$ p i4 l ?UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves) l- l. i, ]: B& L* S: c# c3 \4 Q
0 G# g$ [; i4 A% N5 }8 @
此处使用的是 通过面的法向创建投影曲线,可以参考下!
" U" w7 ^* S* |) L7 ?7 }6 s& c+ n& C6 V2 ~3 T6 g
/ t" |' q; P& c( n3 Q; k; x% n% M2 p1 e/ w0 M
9 N, o# O$ ^: r* K o$ m$ d+ e0 P4 h5 A& K( i0 W; w! p/ l/ _5 {
2 ^/ d" B$ t0 R7 c9 r5 C: \) J
0 x X) A, m5 o
NX Open C++ 创建投影曲线 project curves
0 E2 G( n" _1 I1 q2 c+ M0 g. Q Y7 h
4 N/ o# ^8 {8 c, v" O% o. F2 `
' {; @( t/ f# Z( N8 d1 p- 4 V/ i/ [1 w% G2 q9 n1 J
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
: W1 T# v1 u( d5 ?: q - {
1 e/ w5 d( ]8 G/ A D; b3 q - int errorCode = 0;
5 ?, N5 {/ F0 ]; M$ K% E& O( T - try7 [8 l& Q1 @% j/ I1 C
- {
' \2 y& K2 `6 q U - // createProject curves+ x8 Z/ t' S- B# C, p
7 h3 u3 [, A% J7 a1 u2 R% b- Features::Feature *nullFeatures_Feature(NULL);3 [" |6 l( n4 D5 _' g
- 4 Y8 |6 Z6 T9 s/ v6 Z3 K/ X
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
) v& D9 o0 Q" D" I
5 b) z+ K$ T; q" ^- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
; R( g, O6 m# g9 J - * q4 l: Y$ a7 Q# G- E
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
, ?% X$ v2 r, {0 _, ]8 @ - 6 z. [1 P+ Z4 U
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);5 L5 z; c5 U& R8 ~. u* B7 J
- 9 T5 B; \" C1 W& C
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
$ @7 K y3 Y$ V* Z P
- G$ q8 {6 q( U& w+ U) s) b. }% C- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);8 h5 A/ k4 R. [! E0 N
; l! s* f' X9 c- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
. ?* C- [$ Z3 q& Q9 r
; ~1 f$ N X* ~3 o- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
- t8 r0 Y1 G' c" _& H5 B. |
* E' ^! ~/ v8 u; Y0 I" P- int size = (int)inputObjects.size();
6 F+ q! a" f D* _% f - std::vector<IBaseCurve *> curves1;/ h; w2 P; K# n3 ?9 _& t0 l: w2 G
- for (int ii = 0 ; ii < size; ++ii)
7 E) x: u7 V8 r2 m4 N' A P - {" x, N2 F r# Y6 ? m3 y- B
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
* J; L5 j7 f7 \ J9 `# V" E - }+ w9 i9 m5 h, x* T& G0 L' d
s7 x7 |1 T @- NXOpen::CurveDumbRule *curveDumbRule1;8 G" }- M" a5 x' r. M3 \: ~2 i6 c% Y
- * ]/ |1 r g( c5 Y" ^) F( P* J
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
- p H) `: O5 Y6 \" U1 h8 y! n - 1 k/ Z) l: ^- k$ \2 M3 B
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
5 w/ @$ t8 |: T$ {" y
; }; u1 J, L9 h( R) m5 h9 u2 S- std::vector<SelectionIntentRule *> rules1(1);. P. c( l8 P5 t3 [- K0 S/ Q
- rules1[0] = curveDumbRule1;) a7 Z; N A5 Q5 X
- NXObject *nullNXObject(NULL);
, m$ N1 J, L6 ?( U0 i - Point3d helpPoint1(0, 0, 0);2 ]0 ]* V, N k
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
- Z3 q! a f7 e
) P$ B7 b, N3 x2 {4 {: P- plane1->Evaluate();) b3 P9 Q( s) Y b
- 6 o- d6 t# b* ^, W* v9 P% ^
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);% `/ o/ O4 r! m5 y+ S W
- % ~/ x: h/ _( G. l) A7 w, Q
- projectCurveBuilder1->SetGapOption(true);5 k; y8 [5 S+ ~
- x! u1 U. N- A3 z! l- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
( L& }" F5 c* c, Y- W4 D) B/ b
2 O) C$ v; m4 E1 U- NXObject *nXObject1;
4 S$ P) |- l+ k6 z" d& J - nXObject1 = projectCurveBuilder1->Commit();5 q* [* m( C. J# ^" Y
% V; F2 K0 @0 }' ?' d8 t- projectCurveBuilder1->SectionToProject()->CleanMappingData();
2 [8 ]8 g+ A6 I
' `7 j9 O' S( r+ k& x, ]4 ~- projectCurveBuilder1->Destroy();
4 {( X1 L) _ {( S( g# n
6 `! ~. U1 M" F: E8 w7 B, Q- }0 s1 b6 U/ {2 {. T* Y
- catch(exception& ex)
- o4 `/ V7 c. g0 F$ ^/ H - {
* G. C) e/ J6 c - //---- Enter your exception handling code here -----
/ N! O2 y7 o" G: {: j2 v1 q: E: Z - errorCode = 1;
: K6 a% o. p P& Z0 c4 K - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
5 Z; M5 i/ J. c) G6 {5 | - } p+ o8 t9 f8 w7 Y0 e
- : F# ?6 n8 }: `, L6 q3 X
- return errorCode;* X* | G/ j6 j; C# G0 A" u
- }
2 c6 L0 N6 i& S" Y2 C' u4 v6 T
复制代码
1 r$ _/ w# q" l1 {
: _& \ ^2 m& W! @' F! y! k
: G; Z* M: a% c0 v# b; }& _4 E |
|