|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
9 C; b$ R. ~! b7 t
/ u) h% I& E+ v b5 |
6 V+ l+ N. b! C, z0 S- i' U& m3 Z' l8 DUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
4 w1 n4 z l& g8 i7 _# \! ^
9 T+ B: f3 ~% m, w! b% Z! h a此处使用的是 通过面的法向创建投影曲线,可以参考下!
# t. R& l6 |7 C0 g* R- l
; C2 Z l/ {+ |5 Z9 W' B! m, p, O
4 L/ M" y. k! o- a
5 e# f( U5 F B. D+ {' ]5 G% M0 `/ [$ g9 V
' v5 q0 U* I# t0 g
7 b8 D& T4 Y/ M+ H6 g7 a$ o9 v2 `
NX Open C++ 创建投影曲线 project curves
+ @1 ?2 n& b4 g# C# x# l, Q% J0 a2 m) B k2 E* P1 T; n
4 M+ q2 h7 ~% J' }: j' B9 f
' L- _ ?1 z6 X& C, W3 u- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
1 M9 ~7 W4 k7 ?1 T5 X - {
0 j7 c: H1 r1 S5 x) E - int errorCode = 0;
1 C2 O L( {( B; Q+ Y* n- Z - try
( `: E0 f& L! z* N5 c0 r* N# E - {
% P9 \; A3 ~( F - // createProject curves8 m/ }) I8 ]" I2 g6 A+ C/ c
6 g# i* S) z" i6 e" P2 I% i- Features::Feature *nullFeatures_Feature(NULL);7 B; B: G u1 R4 o
- 2 t: D1 B5 K' F U3 d- c
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
1 |9 V: z! P; x* Q
$ _3 U6 g2 s' Y( h+ N! K! N; O- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
1 K6 w& U* I. g. z" ~ - 6 ]% \, L* p" q- l Z c0 I
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
' M7 \; D, j0 |, \% A
0 m) [1 C6 M- _3 a |$ G$ P# l# u- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);& p' {9 @8 m; Q9 X) @
7 v. Y7 d. B' d- z0 g* M- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
0 I" M" _+ V* }
$ `$ L9 G6 O: H. {8 b% c- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);: O% j' I6 m; Q$ Y, ^+ d
- 3 d5 F! w* B2 Q$ B$ ]
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);2 V/ d h. o0 K' n
- " F( s( {7 a2 g1 h( Z
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);9 x" T" f& V" o) i) w7 x
. S* K, Z0 z& Z' a+ }# D- int size = (int)inputObjects.size();8 F+ f: A2 \6 A' b Z* `* G& @/ e
- std::vector<IBaseCurve *> curves1;
; M3 C3 V2 E4 |0 D2 M& D1 y - for (int ii = 0 ; ii < size; ++ii)
/ z& ~" ~" U+ A - {. p0 Z% f+ v v' s
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));% v$ A% Q4 r# f$ v, W( |8 N
- }1 ?4 H/ a! H* W F
- ' M4 S/ F0 r8 G( [
- NXOpen::CurveDumbRule *curveDumbRule1;) u7 e3 W0 z2 [8 f; y4 T+ F6 P
- 2 e! O' u5 _ a6 Q
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
- P4 V! H+ v6 ]/ m+ k! b
1 N% D! [7 N' B( L5 j& x+ D- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
+ N; ?' \5 x" o
1 F& n8 l I, i. C2 z* w- std::vector<SelectionIntentRule *> rules1(1);) c: z4 a* J5 T: E& e- E# _5 i
- rules1[0] = curveDumbRule1;
5 G+ t8 u# I) N- f" E% a) a - NXObject *nullNXObject(NULL);
9 U1 J! s- U; l9 R6 \ - Point3d helpPoint1(0, 0, 0);
& P9 ^8 e4 }- G1 v& t/ y - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);, ~; `3 y; k" {
" W: ? m* ~6 I" I$ R: H- plane1->Evaluate();
' h. l; p4 @! p8 N9 P - 7 {4 T! S+ s: \8 w
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);3 y, i5 k4 t6 _8 W6 f* z
- * w! j0 e* `2 x: V
- projectCurveBuilder1->SetGapOption(true);; f& |1 p! F" D
- ) @3 K7 q1 _9 M7 r7 o. _! _* P( T
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
$ ]: P* z8 P3 B5 b/ X# o { - - S7 c6 M9 r7 h7 H- l" t" h
- NXObject *nXObject1;
" ^; f b8 N) }& _9 g6 @6 ^) @ - nXObject1 = projectCurveBuilder1->Commit();
# F% B* ]$ ^- M4 v) _ - * _0 F! W# T: o: L% A+ ]3 F: ^
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
" Y! {5 S/ I: b- d - 5 F& O9 g6 J4 O. ?/ J) Z
- projectCurveBuilder1->Destroy();# w X; |" V# {# p6 i C6 V; q- |9 n
- % d5 `8 U4 Q! D8 [1 l: y
- }' I- ~' F8 T1 O+ }5 {8 M
- catch(exception& ex)
5 w& R% w5 d8 C - {& @) U Y& `$ g" N3 U/ e# x
- //---- Enter your exception handling code here -----
$ _$ [" B# [5 b( m4 n - errorCode = 1;
3 w9 P, U) |. W2 t+ p. y* e; A - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());+ E* D+ o7 z! y4 I' r2 c8 M2 y
- }4 v6 o7 Z+ L. I" i" `) v8 C9 T
- * p' _1 ?0 O0 {* I0 O# b; f: o
- return errorCode;
8 M% C: k R( A& C% M - }
+ x/ |1 W) y: w8 b
复制代码 6 H/ `1 [9 T5 S$ v$ L# Q+ U% a
) ? Z/ _3 Z6 Z8 r* E o w/ {; }4 S" t1 ^& H' T) C7 H, O$ F
|
|