|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
" U! V2 o( T% S2 {. P" q1 o; B# A/ }$ f; O* V3 t$ J
3 | r4 p" @5 H3 KUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves2 P1 F! {, ^$ n
3 f# E+ R3 U2 k此处使用的是 通过面的法向创建投影曲线,可以参考下! j% w; j" `) o
. i! C% j3 u/ K( L$ z
& k% d+ D: S9 V$ C) Z( k1 f' v# |# Q* p6 u& l- D; H
( J' T% I( @1 E% @& d# @
9 g) ~- c$ B1 ]/ _& Q1 b1 _& @% i+ I$ m' m* }$ f4 f& k$ U
i# V& _$ Q0 K# y6 ]3 ?
NX Open C++ 创建投影曲线 project curves
) h$ }0 X5 V2 t/ t" e
# p" L& Z- x- L3 r# l
" l( L. i4 t9 `3 u o+ d8 T
* T0 [; Z$ d$ V- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
" p; S p% t& X8 G# d8 } - {
! `# U: l* a8 H- q$ v( z' [ - int errorCode = 0;
z2 g3 L$ R3 T. p' C) } - try. \7 H! n; X! x# Y ?( w/ ?) t
- {6 C0 w0 U2 z, J8 A0 w
- // createProject curves4 D: }, j, q* H1 _, w& Q
- + e2 P; X) J% @$ p5 Q$ N/ W; ?. S) b
- Features::Feature *nullFeatures_Feature(NULL); @' O! l/ g1 p9 }& V9 D5 t0 p
* Q: c# W/ ]4 L) Q! ?- Features::ProjecTCurveBuilder *projectCurveBuilder1;1 @2 d! R, ]0 x* v$ g
4 Z4 ?, Q' F4 `9 T3 ]- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);6 b( I6 n W. \& r# A$ O
& `% H, W4 W: |1 l8 N% f* w- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);4 z: y$ E5 J2 W- A* }. f% g
- 1 N7 V3 u0 {1 c# y0 T/ ^* |
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);7 J1 b! @) i. Z# n6 K" T) `5 D
- ' R9 ~2 O7 @. Z4 G/ W9 P
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);7 {! o. M" K- R! i# y2 s) F
- - T( W2 T' H5 w8 |% v) \0 u. M
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);% N2 V$ D9 l4 V5 Y3 O( y$ T- r
- + N- l# ~* }( I) B3 b# D
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
( S% ?! G: {# |& v3 v. v
1 C6 b4 Z3 @7 _# z# P- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
9 G0 Q% F- ^' |8 J- [
7 Z9 [/ g0 h3 P) v- int size = (int)inputObjects.size();
+ r# m; x n: A - std::vector<IBaseCurve *> curves1;
7 S ]+ o/ f2 s5 |& l) y - for (int ii = 0 ; ii < size; ++ii)
" H% E# l( p% t. Q; n! I - {
) O. h9 i7 Y3 k$ U/ B - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));( i* M. M4 z# y3 L) F
- }/ l: h8 V* d* G4 T" ^+ L9 k/ w
- 2 x5 I7 C$ X- C2 l& x
- NXOpen::CurveDumbRule *curveDumbRule1;5 W# [6 f; Q+ ?7 s
- 2 F `) z5 j: C/ b5 b2 ~
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
# [8 Q9 _& i0 k2 ?. v - - k- q9 C6 y9 U$ E, v9 n8 u7 b
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);' J& @7 p1 P; q% o0 l! R* ` G8 A
- # G, s4 }7 T2 Q a
- std::vector<SelectionIntentRule *> rules1(1);
: E7 m2 _2 w) a) Y+ F! ?( Z - rules1[0] = curveDumbRule1;+ v7 g& J2 n) e
- NXObject *nullNXObject(NULL);
- d. c/ E- w* c! H* H% \9 a - Point3d helpPoint1(0, 0, 0);5 q' Y7 h: ]/ [& v0 ]9 Q* W( F
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);) P; ^3 S0 f5 G& k# i
! K; K: `4 W0 x- x% u- plane1->Evaluate();
5 g- v6 q: W2 o3 l! j
5 @" G; c E0 F# y" Y3 C. P- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
, |8 ^7 S8 a. m) H& x3 d - $ r M6 [ P2 y% p% `7 {. }/ v
- projectCurveBuilder1->SetGapOption(true);
# k) B" y4 O9 I: `
0 U! j r* _! Q" Q7 ~9 r9 ~- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
8 s9 T4 ~6 i9 i - ) Y1 M) y8 P8 S) {. I
- NXObject *nXObject1;' g7 w6 u# t+ ~$ n W
- nXObject1 = projectCurveBuilder1->Commit();$ Q( t" M2 ~9 V. a; e& _+ I% k6 s
3 N/ H5 p7 M4 D' `( g- projectCurveBuilder1->SectionToProject()->CleanMappingData();
* }4 `. V" v; \2 H$ l+ A, W - $ b8 J& j6 y6 L5 [6 D7 k
- projectCurveBuilder1->Destroy();
: Q9 M2 r4 a0 K6 r7 { - : i; {$ i. K0 L( n" K2 D% O3 z
- }
. Z' g+ k7 b3 T1 U! b0 o. X - catch(exception& ex)
% T4 q$ T! T1 g' E( K" U4 w - {
0 b# D( Y3 { N! L/ h1 t( x9 n; b - //---- Enter your exception handling code here -----
5 L, L7 B/ l: S* H9 L4 e - errorCode = 1; a2 f6 G* o4 f. v" f% H
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
- g/ Y/ A' h5 ]1 M% R; G. P+ Q - }4 c3 l4 v% n5 m9 q" n) q- J. ]3 J0 g
- 4 R6 \& t1 f( U# P
- return errorCode;% {( _" q% T `: ?+ s! D% u
- }, I9 |" b& Y" L& l/ e' {* W: Z
复制代码 % S4 d) y9 r3 }
7 t( M J3 F" r4 }! s5 w! a
2 I# |2 Q( T, }: R- m( ], f: T
|
|