|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
7 `. r0 U9 X/ s. i8 \5 M
]5 ^8 S+ D5 q+ j0 h! y
( ~9 l9 P% d, \$ w+ X' B9 G( fUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
& r1 j! \; g9 e, m! }4 E% I/ ]9 M: |' b+ l
此处使用的是 通过面的法向创建投影曲线,可以参考下!- ]" t) p/ \& C0 z; n) @: l
6 ?8 q0 M3 V5 g9 C/ v
; Y9 o. F: W, @) P* [7 z% w! X
5 w2 Y) F7 x6 \2 K7 B8 E
3 T5 u& i$ ~' g# d2 ^( f- y6 N+ Y! o5 w* i
2 Q& Y F" e% m: _. A/ x. D
~$ _. f5 L! W+ J
NX Open C++ 创建投影曲线 project curves
# N8 o7 t9 x3 B% l- v* D" [2 x1 M# K: m
/ D3 z, R4 q: q+ n: o6 x
' w& x# p# g# }+ y8 Z3 M+ Q- ~
8 R6 {! m; {' S. J9 Z$ h$ C" t, M- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1) e. {2 Q) i: k5 y
- {) `: j: n' l6 l! V
- int errorCode = 0;
" ?1 U7 T4 J- T. F( J! U - try% L$ x7 _3 {$ g7 p
- {& ?3 \- H' n& a- {/ M: j1 G% @: o
- // createProject curves
, O: } ?$ m0 I; Q, Z
, O% w, c, y! Y# F N2 U- Features::Feature *nullFeatures_Feature(NULL);
$ e8 j3 o8 w( W" c+ K9 P! Z7 L
' `$ n# O$ K6 n% E9 {- B7 Z3 A- Features::ProjecTCurveBuilder *projectCurveBuilder1;
. P8 x! ~; d: X1 c+ L# P' L' Q$ X - v! p0 g% H0 j9 Q+ h/ }+ ]
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
6 z9 S" c* N* R/ e. T+ H+ g# u3 J - ; V& x; U: g5 i4 h5 m0 }
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);' i1 L3 T5 |/ |) i/ X
. ~5 s& R9 g0 y. c- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);% W0 ]8 q$ I& ]2 C# U# V9 Z/ d
- , t8 ^# H5 |9 g
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);6 E0 l4 b2 A! B1 e6 J9 @
3 ?3 ^( Y% `0 G: ~% X- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);( O, X% I5 _! m) K. \4 d) Y; P( ]# f
+ {- f6 y' H5 O3 X1 \( S5 \- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
h# A- L1 o! M& l$ t - ' P, z @! ?( B! W( R
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE); s* M2 W/ m% |$ P; G8 X8 c
- % m: h& A ^$ K/ o+ S) y+ M' D `
- int size = (int)inputObjects.size();, G7 B9 l* T6 _' y% U9 |
- std::vector<IBaseCurve *> curves1;" j3 m7 N1 |; ]
- for (int ii = 0 ; ii < size; ++ii)" G0 c1 Q, Q& w
- {
0 W# ?% b C. O - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
+ M* q1 i x# P8 ` Z) u' E0 W0 C - }
C y8 J( k+ V5 F- E4 u; M7 z - 0 b0 ^8 h: T$ F: n% H, w: O& e7 U! v
- NXOpen::CurveDumbRule *curveDumbRule1;
5 L& `4 ]$ R$ X* L8 w - . ~% h0 m: b) Y9 e6 \
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
* b4 _: u4 v: |4 A9 k! f, F0 |
3 k& q( D+ d8 s# l' [- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
" d; w+ c' k1 I1 v
; m# X% _1 G9 j0 W- std::vector<SelectionIntentRule *> rules1(1);
- z0 |$ F1 {' q' q) H3 B - rules1[0] = curveDumbRule1;0 u9 V1 p2 ~; T' i1 J: x
- NXObject *nullNXObject(NULL);
7 Q f# @( G0 j$ S - Point3d helpPoint1(0, 0, 0);
f. ?' F7 q2 D- U/ i( @' N( M - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);4 t, y" M, A9 Y+ g
- - b4 W4 \/ _2 F! ^ f1 i$ S5 z/ x
- plane1->Evaluate();& K2 z$ H z! }3 \
- # [3 K+ W- r: r, l- Z
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
. z0 q4 x- G1 K2 \' |
+ @1 j: V* c$ [8 T9 l- projectCurveBuilder1->SetGapOption(true);- V* s! [3 {7 t6 [7 A! d
- $ j* ~8 Y3 q" D5 l0 p" _6 |
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);8 S3 [; q: g/ T+ @0 d- I; ^7 I( X
b- J# v [ v; O. \, G% A# h# ^- NXObject *nXObject1;
3 o4 P/ ?/ _* B9 j% F( [ - nXObject1 = projectCurveBuilder1->Commit();+ Q5 W7 {9 i: u% F
- & \* k( y" _7 i# U1 _, |
- projectCurveBuilder1->SectionToProject()->CleanMappingData();" ~) u4 S- O& d( W8 H0 |
- 7 z8 _+ e! I4 w$ X) b |1 d1 Q+ Q
- projectCurveBuilder1->Destroy();
: [5 ]* n/ g( ^" `: ~
3 a+ ]0 ^0 u+ ?, S9 D# N. u- }$ U4 ?8 {0 t) u) W
- catch(exception& ex)
0 o8 a' E! L" l# N( ?- B) B$ X - {* q( g3 U, k. W
- //---- Enter your exception handling code here -----, {: \' X+ }4 d8 A9 x: y
- errorCode = 1;
8 p8 J( n/ F, N0 M; _/ W# n - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());9 F; t5 ^' v1 b( K$ Q1 @
- }' a9 D# }9 ? Y6 ` |; U
6 @- c/ q: k7 `0 V' U. s- return errorCode;
) `8 z) C' ?! |# ? - }, E4 Z9 J, @: P5 z9 G
复制代码
1 v1 {6 _$ S" _0 ^: P4 _; K( m6 Q& ^) }
7 @4 z3 t( E# } |
|