|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
0 c/ x& B/ {+ I, }% I9 c' f9 }9 `$ p7 J0 l2 m2 t
8 d! S: X! n% h* W# G% _. C
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
# A0 s4 c3 j7 a! F' C
* T S7 Y0 b/ R& w' j. w+ p( d此处使用的是 通过面的法向创建投影曲线,可以参考下!
( ` u n; X: F1 Q; g
( n2 S9 W6 C+ q) k! k
) W/ G0 @. I6 q2 Z) r- f9 P6 D5 s( R9 e+ j
7 q7 ^/ z0 Z) o# D2 V4 Q; ^- {
+ a' T0 v% b# @9 w8 f2 _% E1 X: @* H
. s1 ?9 e$ ?* B1 v% e
NX Open C++ 创建投影曲线 project curves
( W( \0 T7 T- U2 `
4 A- ~0 S) V% w9 j. x
- f9 a. A4 O$ Z4 ]6 S
' p: y( B2 w0 w; l0 ]- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
5 a# I' e( }$ h$ q1 Z/ S, X% V9 c - {
. U; o, L' N& `- ]( } - int errorCode = 0;
( T3 {! d* z2 M t+ X - try$ Z5 U$ D# N( k% W
- {
3 l! _! w N9 o - // createProject curves- o u+ k/ @4 Y! X* {1 R
- ) A1 e2 A" \$ y* j, g/ v* L
- Features::Feature *nullFeatures_Feature(NULL);
. D0 Q& N# @, ?5 }+ ?# R
" S0 |! _# E G) b) j- Features::ProjecTCurveBuilder *projectCurveBuilder1;$ @- x1 ^* l! p# ?% s& \. a2 s+ |
- 0 K$ J* B; h8 ^, R# q2 E5 i
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
. ?& O; \+ h& ? - : s0 ~/ J4 T' W
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);+ M1 Q- f, B' Q( z' i1 L
- : h0 J A" x. K6 Y9 N" w& k
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);0 m2 H- \) I3 A. e/ Z
8 @& J$ D! H+ n( m- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
; E: W4 |: u8 l b* p: @
* V8 \5 w! D6 J9 H" ] y' Z7 n- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 |4 s6 n+ ]5 t* g
N) j* f* ?0 K5 o5 |- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
6 ` ^5 Q4 k5 O3 a, ~% w- ` - 6 y' p2 p; l' w' ~# c2 o' ~
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);/ [9 Y' n6 y! I7 Q) N- O) q% ^& [. F
* y! T7 [( C! G: y' I- int size = (int)inputObjects.size();' w! n: W7 w0 m' z
- std::vector<IBaseCurve *> curves1;
8 ^2 W7 v7 j( o: Y* c: G8 | - for (int ii = 0 ; ii < size; ++ii)
/ Y: z% n I* \5 N9 i - {1 `. |/ \- C' p' B4 p u: |2 b
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
; o3 G6 S4 F. G( U) X - }
$ e6 j4 a9 z; ~; |4 G; ?4 j
8 ]- j2 j9 [# ~4 w/ U- NXOpen::CurveDumbRule *curveDumbRule1;4 Y, I {3 @: f1 I \8 }0 @+ s: [
, X {8 w* \" R. `7 ]0 m- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);! a* A+ i. h$ G8 M
- 7 n# K. ?* P; t
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);+ P8 o3 t/ h2 A) _: ?7 X
- {% V L0 _& `' e- std::vector<SelectionIntentRule *> rules1(1);% F7 Y% \* h% L t2 _4 {
- rules1[0] = curveDumbRule1;
$ H( B& P3 [! R- s) A - NXObject *nullNXObject(NULL);
% d, \" ~7 P2 U - Point3d helpPoint1(0, 0, 0);' C/ `" ~% F M& q/ j& h7 q
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);5 M2 L/ h: ^5 y. a6 n
- % i1 h9 w/ L$ f' m# p: q' Y
- plane1->Evaluate();
8 l$ u8 }7 e# z
0 J/ b0 O, s/ Q! K" X2 ?/ C- projectCurveBuilder1->SetPlaneToProjectTo(plane1); N) d+ w4 }5 T+ s) I# Z$ }
- , g) }/ N6 |1 P# U& U+ R: h. n6 D
- projectCurveBuilder1->SetGapOption(true);6 ]( r' _( D) B2 G
$ M8 F" ?8 f e! \4 O( s- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
' h5 k8 \! @' C8 g/ f3 t$ c; a - & C# M2 g' g( D. _. X1 E1 k& u3 s" w0 _
- NXObject *nXObject1;
( ]4 M1 G( z1 s8 u - nXObject1 = projectCurveBuilder1->Commit();
, }' t* z- n3 |
* ]8 V6 w5 R# X' ` m; N- projectCurveBuilder1->SectionToProject()->CleanMappingData();
/ M7 R# H" Q5 s5 u, @% [! D+ `
9 l$ y: s$ I S: f$ Q0 u) r. @- projectCurveBuilder1->Destroy();/ ?" w+ q# \/ I' _! o
- ! g! i" p# q2 Q& e" l7 A k% a( \
- }
- Y( g; ~" \# @7 W% Q - catch(exception& ex)
! V( |. S2 p' ~: l( i6 a8 g - {
1 x1 J& [" V% } - //---- Enter your exception handling code here -----$ Q/ W# b# ~2 U* V. U5 x* r
- errorCode = 1;
$ `4 f |! _' m1 K4 e. W# f% I( } - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
! H5 ]) u- D" o* L3 D# D7 m - }
& X0 u! H1 X% y, n$ K1 k* Q. \' p9 C - ; t! C9 I8 s0 e& Y' T
- return errorCode;
' O$ S& V6 [% Z' c7 N7 n - }
6 T( N5 B7 @6 ~3 j! R9 ]7 T1 k
复制代码 ! E1 v2 k: Y1 a2 T6 c$ Q+ _
' e1 N( s U2 Y; C
) h4 @, q7 b+ E% y n' B
|
|