|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
& {1 `* K' ~4 V& T, d
( n) X0 m0 B* S9 b& v4 H; y4 _' x% i; |% [7 e
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves2 ^6 f$ C% ~% x3 J' N, b# f6 D
5 ?, Y$ u5 j0 n( y) e
此处使用的是 通过面的法向创建投影曲线,可以参考下!/ p B4 n# }" _# }( B3 k
( D( ~8 z8 X# O9 | M2 A
1 ^$ X. u( u- c/ Z3 b
) {- ^4 N% q v! E
* U7 s* ?. B. r
6 g' G& I( ^4 Q3 v; I; m, |9 X& x; a; f8 E; o r3 H7 J! h
, [3 z6 n: B# `4 C; Y* v3 l
NX Open C++ 创建投影曲线 project curves
4 k1 u5 m( s0 k1 x( J# g
3 H2 X, S5 q$ q$ F! s7 _9 S6 |2 z/ ^ v$ d1 o: {2 j
$ s8 W3 ]# n% g3 |- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)* ?8 s$ {/ H% X% W
- {% w5 r+ Y4 r3 [ b9 z% q0 F
- int errorCode = 0;, j+ v& r/ _+ p6 C" |0 C. m# O" _
- try! v- f' Q6 y1 J( h* N
- {& B w! c' |+ P$ T a
- // createProject curves& ^& l( n) r" T
- - R# ]1 i# Q# F% U8 e
- Features::Feature *nullFeatures_Feature(NULL);! h+ s d# Y i$ ~( v
- , T p& t0 m2 p9 A
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
! P5 v* G/ @2 D, U
7 _9 q1 R: X4 O# H+ ?4 i- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);7 D) g2 \, \# |: t0 X2 w
( x: [/ h( n8 M( b1 l f+ b- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);% D: f( R5 `0 U6 p2 m ^
) B9 w# b( a3 E6 K- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
' C/ l. H0 m$ E% H7 o/ S
. L) y o9 O# H) a5 z5 y- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
5 {5 V% D& K0 y' u, Q7 _- ? - ! q* c5 k2 C8 _" s4 v. N
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);, x+ f# a4 L9 d7 O, A) k
- * R% A3 o( U& ^' P, V4 P$ z' n
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);$ \8 E- x9 i- w e/ j3 U, Y
- ; E) ^+ n8 j* M8 U* _( O/ x5 J
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);9 R" x$ c! f, A' q1 u2 x, `$ t; [
F8 h# a% ]; i: X- int size = (int)inputObjects.size();
3 H6 d' o) v6 o - std::vector<IBaseCurve *> curves1;3 ~9 H6 {! a O1 u* ~( g/ K
- for (int ii = 0 ; ii < size; ++ii)
; D$ W3 d0 e/ d - {
; w3 j* w1 B* A7 S" p9 j2 [, k1 c - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
6 E. x$ F" O; L5 U4 z - }$ @; @0 }2 y; g' K6 T( ?
- * g# Q2 g% v6 C. m# r( L! T
- NXOpen::CurveDumbRule *curveDumbRule1;
5 ~% h! P) J. V V" F% J
' M. I+ l) p w3 K# O; B- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
9 [* l& w% m$ x, k g9 S9 a8 z+ A - . P& N3 ^2 _4 a5 ]* B8 a; I
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
: f% p* g* E1 g4 F' { X( {; n - 2 Q5 h* q% u. v% B
- std::vector<SelectionIntentRule *> rules1(1);
" o O- J6 @' X* o1 f6 e4 l - rules1[0] = curveDumbRule1;
6 u- r8 V' p9 \. K% i% n9 ]# u - NXObject *nullNXObject(NULL);
2 E' D" j+ y5 x0 ] - Point3d helpPoint1(0, 0, 0);5 ?- {" P6 S0 c; v7 } P" I
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
" m7 F* R b" G$ _. q- |' l
: q9 Q( Q1 {' u: `1 B8 X4 g- plane1->Evaluate();& n' ~! J+ G4 Y$ D: Q+ t& A- f
7 T0 i0 Q G" u! G; t6 u1 N; V: A- projectCurveBuilder1->SetPlaneToProjectTo(plane1);/ n& H& P% N$ D# F
- 7 u1 I3 s+ V8 f: a9 ], @
- projectCurveBuilder1->SetGapOption(true);+ C! Q C! P; g) W0 Z
- 9 {2 [- W, s& g7 J& {
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
/ ^8 L0 N* M' M8 G; y* d1 t4 Q: ?
1 j: s" Y0 V5 c% o$ ^- NXObject *nXObject1;
9 O G4 B5 u$ W& z3 ~ x4 L6 z! v - nXObject1 = projectCurveBuilder1->Commit();( |3 M6 `( l% m e+ l
+ Y, k: Y) Q& e- l# |; C* F* G5 }3 w- projectCurveBuilder1->SectionToProject()->CleanMappingData();* z3 B; z7 s8 `" Y
- ) Q9 y0 [' S7 V% g0 J
- projectCurveBuilder1->Destroy();6 f7 k+ U, B8 y5 z
- : J$ l& f2 |& [! k
- }6 K) S( y8 }( z. G. u7 r. n! B
- catch(exception& ex)
* Y! j+ ?( v+ o4 [: e - {7 u# E5 r; M/ o) V5 q/ V$ j; W4 }5 }
- //---- Enter your exception handling code here -----
! d+ q; P/ l" O3 V; Q - errorCode = 1;
$ R6 j& P1 g1 a3 R - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
9 L/ n4 x1 ^1 I5 \5 X - }* D; x( f& M( s2 Z! O" C3 _7 Y
- 6 b; M% p! w/ n2 a2 y6 r4 V
- return errorCode;
- j: Y2 _% I) [! x8 F - }. A% f. Z* Y% E' c- N+ w6 p: }
复制代码 / ?( H, ?! @9 s; N* x2 q
- i. S% d7 H8 n( @) }3 t- B
* E' [0 Z+ f4 b+ K |
|