|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
, E0 p; r/ } ]- e( r
! F" v8 k9 p% d. I7 d6 t# D$ x, J/ W3 Z2 W, P: J2 B' k3 i# R1 A& H+ M
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, d: B, Z% y5 P" s- h+ d( w# c1 D- D5 d! H' _$ S
此处使用的是 通过面的法向创建投影曲线,可以参考下!
+ Q% o% _ M% j% {
6 S$ P9 M! c$ j8 |: t* P. x# {, y$ X9 u6 G7 z1 s
( u/ J9 S7 x0 ^& ~$ ?# Q" C! h9 C; \' |
- [, i9 @ F, o# u8 ^9 H
: Q4 K9 q: I2 W, _3 H+ C: D/ { B+ m( ]) X
NX Open C++ 创建投影曲线 project curves
5 O6 M4 g. e# `0 ]( K3 _: W* k2 K% y6 T- n6 P, M
+ m4 ~3 N0 ^$ A
9 E6 Y/ w/ T* J- h" w- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)( e6 d8 h" g! H5 j3 ]2 Q
- {
9 |% P/ \7 U7 _$ d, I( J5 H ? - int errorCode = 0;. O! {: T; |+ {! K9 K% g$ r& ~; W* t
- try8 n N7 _- ~4 |# o$ `
- {* ^% o! L A- t! q- ^4 l
- // createProject curves0 |3 A# ^$ ?5 l4 `" }& S' |$ D/ e
5 r% B3 ^6 A3 B& f- s- Features::Feature *nullFeatures_Feature(NULL);
' b" o6 S1 J% x& m8 _
" |# x3 j; y4 }8 X- y% o- Features::ProjecTCurveBuilder *projectCurveBuilder1;7 b- |2 A+ S" Z3 d D Y
- ( a. l. H! s, S- I" i: v7 N
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
; b5 J; r8 ~" a w - 6 z& ^- {4 P6 U8 X/ I1 L8 h- x! e
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
/ r0 h; R2 M' d1 T+ I- \
. I5 y; G! v8 p% c) s7 g/ N- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
8 R0 q5 w9 x, r l5 L6 S
+ S' w9 O* g7 T; v- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
, f* N( \+ { r8 T' Z) d$ D" K
6 ~$ X( D) T0 ]3 m/ |7 Z- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 {3 X& e4 H' y g, g
4 F F! [# l4 U& F- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
0 q6 A4 s* H& j7 M! n" W! E& A - 3 `* X) f0 @9 Y! x
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);" \% E, C9 n) U! }6 ~
- ! i' L+ n$ b! H$ O8 f
- int size = (int)inputObjects.size();
1 w# w- x7 [, Q0 t - std::vector<IBaseCurve *> curves1;5 x2 s6 G5 m5 _4 L
- for (int ii = 0 ; ii < size; ++ii)3 H8 U* E- [% e" k4 j( ?5 ^
- {
' H) i- O; }8 w* k% I - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
, u+ e: {; ^2 o2 z" T# G. m: r - }4 d! K2 J- u( K* a& h, n
" a: n4 T: B. L9 P- NXOpen::CurveDumbRule *curveDumbRule1;- E0 X: I2 {& G; V! X" `3 ?: ~
2 y5 M8 L4 Q9 S% c% h" k- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
# _4 Q" N N! h Z$ n
* Y$ H3 x+ s& T& o# V- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);9 }0 q( q% |: p
- 5 R) |5 C" j- Y) s2 f( v" |
- std::vector<SelectionIntentRule *> rules1(1);
; ]/ T7 G+ v( G - rules1[0] = curveDumbRule1;+ C. q& G9 g% Y3 N
- NXObject *nullNXObject(NULL); V) Q" p) D$ m6 i4 c$ F
- Point3d helpPoint1(0, 0, 0);
0 i, P3 U1 y9 N& T4 C - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
9 W! @- i& M& j- `$ F9 G% ^ - 8 q6 p1 m4 @/ ~9 c J9 Z
- plane1->Evaluate();
! L) ]* L$ O) @" L# Q
8 D0 @8 J7 H1 A- projectCurveBuilder1->SetPlaneToProjectTo(plane1);1 x$ ^1 c' |: N" |. ^
- % E( M) J' G& |3 H) x9 j3 I
- projectCurveBuilder1->SetGapOption(true);
2 ^2 [* B- ~6 @4 f8 v# b
5 E4 s, k; ]. c- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);+ n: Y, w! W* T# T* y% ~, t' t# \; ?
- # V. m4 w/ L8 k1 V
- NXObject *nXObject1;
2 h }4 D j2 I4 d3 @( C - nXObject1 = projectCurveBuilder1->Commit();+ n7 h# H+ ^4 U* O) m" @( a( U" V5 A
- 2 d- {9 z1 H( f1 J9 E: ~
- projectCurveBuilder1->SectionToProject()->CleanMappingData();. w$ t" }) F8 T( z" [
- ; C& j0 B+ Y$ s
- projectCurveBuilder1->Destroy();
! O1 z: Q/ C$ O/ {2 A Q
: q, {* c7 c6 u; e* ^5 m- }0 |6 ]# s; q; S4 T
- catch(exception& ex)
, P9 H2 A; A$ K; [' } - {
$ u) ^- R5 D& \6 ?6 _$ s - //---- Enter your exception handling code here -----5 B) Y8 j# _2 ~) X# Q3 i$ p% w
- errorCode = 1;
% |1 _+ K+ j% D- @: i - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% } |! r6 J) _
- }
; Q! C! l! E6 I - " S4 r6 T1 U7 S* H# g) M& s
- return errorCode;+ n' |- W7 g* J d
- }
3 f/ c- E) y% B$ D& e
复制代码 + }1 F0 H% H' s0 t% K9 J
6 f- } P3 l: [7 e
. S+ K4 N) [: H3 ]6 w |
|