|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
+ {, ~2 ^$ P3 f4 r# U3 V
3 r' A, q1 Z/ I9 ~0 f# O/ P) A
# ]5 d# u$ w0 |! C# n; |, ]UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves; T: ~# C# ~2 ~1 D' W
8 u/ g, q: d; r4 t& z! x* Q此处使用的是 通过面的法向创建投影曲线,可以参考下!6 c9 l" R5 ^% |0 }/ x( b7 Y
" o( H2 h% O& p- t6 T2 W
* G7 `$ H$ A6 B9 {8 j( z
5 d: t0 B( b& Z8 x$ ^' L
- m, H2 z9 U1 e$ Q1 X0 T; I& i5 d( J3 }7 d
3 I2 g$ {$ c4 W9 a5 t1 e2 E# M, r8 e, ?7 y! T
NX Open C++ 创建投影曲线 project curves
1 H; ]$ H8 `/ b. _. s4 s
7 i& |0 [; e0 J2 |9 ~
% W9 }, k& `( U5 w1 C" i
! v: c5 ^, \2 V, d0 P( `/ x- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
* W+ b: x4 B) d - {3 P' E+ w0 f5 X
- int errorCode = 0;
: I) U \' _' o1 S2 j' s/ N8 R - try+ O M" V% n4 v8 }; U1 w
- {
- z7 B& r0 q0 f - // createProject curves
* G' X9 V! J& R+ q - - Z) ^0 X1 E. q+ p
- Features::Feature *nullFeatures_Feature(NULL);
! o7 }. b, q7 f# W9 U - " u7 F$ h } R& T4 _9 I
- Features::ProjecTCurveBuilder *projectCurveBuilder1;8 ]6 L3 f* Q/ J2 I# @
+ i7 O! h" A0 \- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
* @1 i' h& \# u- Z: k. u, k, X
5 [. H5 U' y' d9 g- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);+ v5 h$ y) k$ w8 G, c# p8 U# e4 s
3 p0 F9 U; S8 b( v0 H- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
8 F% D: h/ f/ T |: |9 h; y - 0 T+ l$ ?# x5 q/ Z
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
F, f% O& e6 r- Y) v, @& |
6 n, _* C1 j" G6 H$ e5 _- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);! `$ H+ ], Q% r/ d/ R& i# |& F
2 _$ r. _5 x/ ?4 B- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
- e6 M; F2 K: r) N. b: M. S# ^
8 t3 w, u1 R6 b8 }- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);. I3 e0 I' P# a
- 0 M& \0 V( @- s1 P
- int size = (int)inputObjects.size();
% o; X0 k7 O% n0 ]. n% H - std::vector<IBaseCurve *> curves1;
! B; C) b2 Q: `0 T - for (int ii = 0 ; ii < size; ++ii)2 o' \0 w6 c7 j* y6 { H) K3 E7 M2 e
- {# v: N+ h) ~1 O) b) L9 r8 g
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));7 U' B4 i9 y% O0 }1 G% v
- }
3 _# [+ D0 k, r& u6 c3 Z, c - ' T. I: _( L+ g4 w* G& K/ @0 }
- NXOpen::CurveDumbRule *curveDumbRule1;: x* r' Q0 O, [. a) N2 j; V/ H
- 5 A& t8 [) F& F% X( i7 R
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
7 N8 m8 y2 H/ Y4 M$ M3 k
0 T+ u1 a" }6 k- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
6 F5 G* }' w& L. Q: }+ s6 e( i" ^" P# `# C - $ I/ U9 D9 m* ?: U; B
- std::vector<SelectionIntentRule *> rules1(1);
5 {9 D+ s% ]* L - rules1[0] = curveDumbRule1;
$ f/ v. A, \7 E! m h5 q - NXObject *nullNXObject(NULL);
9 j5 j# J* O$ f$ b - Point3d helpPoint1(0, 0, 0);% }0 @3 K" D9 s6 F" i. I
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
) ^+ E( p6 E% H, f6 K7 m0 {* b- x
" k s5 ]5 g) x* N* \) ^: F" @- plane1->Evaluate();
& t J$ h) k) M - ) A6 Q( C& F4 b: e# n6 X3 E
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
0 ^/ V: N' V' U' A - ( H0 X" n$ i9 l J0 R
- projectCurveBuilder1->SetGapOption(true);
1 Z. `, Z2 w1 D, B; c - " C6 J5 r3 S% o+ h
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
1 n3 a7 A- V6 q* N. Q - ) j' d$ G! k" R! Z6 X; s5 p2 w
- NXObject *nXObject1;
( r; G$ g! q ~# U& W1 _! c1 R - nXObject1 = projectCurveBuilder1->Commit();
! o. Q* C# M3 x7 |/ v# y
+ l- ?' j/ B8 u0 g- p- projectCurveBuilder1->SectionToProject()->CleanMappingData();
% F- X* ?' h4 ]" F
8 K; |5 s1 {1 }( e. [- projectCurveBuilder1->Destroy();
' r0 L& }! u$ t5 { m9 F - 0 g6 H$ ]3 m3 y3 D; R
- } s: O+ \7 _2 z; j
- catch(exception& ex)
6 l( E& \, `( `8 [8 F - {
- i* l$ o$ P( ]2 r+ ] - //---- Enter your exception handling code here -----
# {/ C/ N3 `- a1 [7 M0 z0 K1 v - errorCode = 1;
# V' X: o& x- ^+ B& T - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
- ]' Y: P: h* C' w0 s9 F - }: O6 A# n' [7 T) `& `5 M7 V
- 0 W% t' y g$ e" }
- return errorCode;! @+ W" G; H# \* g ^
- }" `2 c1 J) P+ U/ V: W7 h8 q
复制代码
6 Q _6 k3 K- V
3 Z$ w% E# \) i; h! F
7 S# P3 O: x; e% e n) G( H! n |
|