|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
; h! f! B" _: B/ {
" j2 z% k, z' S
5 H1 o8 H2 S* y( u+ V# [
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
4 i. A& v( D5 [
- l" C" z# P3 }1 W5 \! q. H此处使用的是 通过面的法向创建投影曲线,可以参考下!
! X/ I' x0 m- R
# R/ C" _2 @( V- ~' k+ l# g
. T6 z2 C0 D2 }" ~
( x/ K9 M4 @# Z& g7 |$ ]2 l2 {6 r" N
/ Z/ \# u' h( d+ M/ p$ u. D
: Y0 |* x1 u, v
' M: D+ n1 H6 s0 d' Q3 T5 H4 T) {# e, k4 H# {) s8 i! x. h% T
NX Open C++ 创建投影曲线 project curves
# @( e; g) Y, ]7 H# A% {/ }
8 p* `. L- m7 D
! h: K$ j& c8 |' P# Z% a1 a9 k- E- 4 R! @7 T* h8 E; X0 w7 \
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1). ^, ?" R$ C. e! _4 S" F6 R
- {
, R6 q9 j5 I W- r* ^% H4 ~+ B1 p - int errorCode = 0;
# K9 \ w6 v3 D. k' Q8 v* O, n - try/ w* M/ C) S1 M) V7 s
- {
9 q8 w) }: n7 e3 G: I" L8 @9 {' y - // createProject curves) V7 N. m; u5 e
- 2 D( @* Y- L3 E# H: i( h
- Features::Feature *nullFeatures_Feature(NULL);
* c& x/ _& I& Q' t4 E& O
1 w9 z O! e; U; E- Features::ProjecTCurveBuilder *projectCurveBuilder1;
1 w2 i4 p' _0 V4 z: n. ?1 ^
5 u3 `7 M% q& e" _6 h7 X6 q- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);% q! h; s# f; C; Q
- 7 y1 J' \, Y4 q4 A% I/ Q9 U/ J
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
) P5 }9 [! ]1 Y% `
2 L, M5 k9 m, c; _: G& q- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);$ ~. Z: ?* |# T' u; i, ?% ^7 h5 w
- & y# U, F+ K+ ?; u( S- Y
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);+ w b5 y _; h/ {: S
4 o: l. G$ k1 @, n$ d: b- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);. ]# f) c6 D+ r8 z! {, C0 y8 T
. z4 V# I0 j/ K) p: F, q- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
& [+ Q7 ~% A4 p
/ o+ t1 R: u4 D" A% \' B- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);' L, c( p/ ~9 \( o+ _- F! y7 K8 c* ^
- 4 l- L$ S, ]- k; M
- int size = (int)inputObjects.size();
3 R) R. y( \% Y: F4 _ - std::vector<IBaseCurve *> curves1;
: G, g7 C- E% \" D3 \% u - for (int ii = 0 ; ii < size; ++ii)
9 ?+ E2 J! W2 p' `1 e8 g" S - {: w2 s8 r6 f& y- Y- r# a
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));2 m4 q4 Z& R( t/ s) ^
- }
! H" L6 R6 J r% `: J; G
: d6 s' V" W' h) S9 u- t- NXOpen::CurveDumbRule *curveDumbRule1;
0 U+ o R3 W# S$ } - . o( I# r; K- k, ]2 s6 T
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
9 R) y$ {6 s3 L, v3 _( C
+ u: O% |4 @# l q5 T9 F v- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);: O! I/ w7 L, U/ q; r
5 {7 b" ]6 n' w6 H, @- std::vector<SelectionIntentRule *> rules1(1);
- `/ P. Z1 b" Y- g& z. {: S - rules1[0] = curveDumbRule1;
$ Q1 c2 c0 ~6 D A) Z/ t - NXObject *nullNXObject(NULL);
6 G* H: p% l$ \ M8 ]9 a9 I4 g& G - Point3d helpPoint1(0, 0, 0);
! I! `; T: E. G. s; g5 ]5 h - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);' Q) W% c4 r) D! S
6 d, \% ^7 L6 j- plane1->Evaluate();+ f6 K- n( Q; b9 N
- ; b5 ?8 F2 c1 S8 {3 f0 D+ t
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);! H+ ]# m3 s! o6 \/ Z, P
9 c7 q; S! h5 T% U" w- projectCurveBuilder1->SetGapOption(true);
: q1 V; p6 P$ m - 8 O* V, m, s9 J6 ~% P @: u- x/ V, U
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);5 X1 r s% Q2 H& C5 p$ s
- + O% t; D2 A) M/ v7 K/ L! O
- NXObject *nXObject1;
+ l3 T& s- N2 y9 q; f# _ k - nXObject1 = projectCurveBuilder1->Commit();
. R* F: H5 H: V) Z$ Y) x
4 M, F# a+ U7 q) E7 F4 c. ^ s7 E0 f- projectCurveBuilder1->SectionToProject()->CleanMappingData();
3 X( J1 @' U! Q8 p8 x+ p# O, s
, i- s, S5 U1 }" x7 \ C0 D- projectCurveBuilder1->Destroy();- J% [" r- B r9 d, V0 P7 h0 b
0 y9 V5 s- j; Z1 d6 W$ G- }4 ~, ~* N: O# _: w) b- i' N
- catch(exception& ex)
2 `3 w+ M! m$ ] - { L7 c9 R$ t/ S7 O# a I
- //---- Enter your exception handling code here -----, C: n3 C6 `, v: }% e0 i
- errorCode = 1;" z$ {; G, T/ P+ e8 |/ |
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
/ Q' |3 L7 c( E/ P - }
; e" z- b* K! y - + F7 T8 Q$ K& o& E
- return errorCode;
0 e0 I" r" Y3 k - }# m x' x- w2 j) ~" C* Q P
复制代码 ! M) G5 n' C2 `1 \
' {/ D" ?8 ~" ~
6 _+ _% F" h6 I! E; y: G6 l& s |
|