|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
; v2 `3 W/ h3 @# V( k, u
$ o* k/ p% d: h' d2 `4 l# {# A
9 `2 h- Z5 [, f2 _8 o
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
+ \" F0 i, e2 K( G) A+ u7 _' U
9 u) C' }& F$ b* F0 O9 X" b此处使用的是 通过面的法向创建投影曲线,可以参考下!
6 b; ?2 ~, k) L3 m/ v" m5 L* @( i$ n* f- G# n, W
R. @- ^/ m' E" T& ~% j- c
3 r2 D+ [% i9 B) W6 b3 Z: D; ~9 @2 u9 D
5 l5 }+ A2 Y) ~" t) s+ r* S, g
; x& E1 e3 y! q, ^" J' o- R
6 y. o6 d) p8 `
NX Open C++ 创建投影曲线 project curves
- d; y6 z- _* v* h. ~" q2 L ]
- o2 Z0 k) J; I4 N& p$ y3 |; @
2 J0 Y8 \6 S6 v# ?$ m1 `- , |! s! O) X/ Y( E6 V
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)1 i) ]4 Q6 i3 ~0 \4 {; j/ m
- {% D4 \* P! w4 r7 v T
- int errorCode = 0;
/ R2 ?, O, D8 {) k; s - try6 M! G$ C3 F& [# @, K0 l0 [* L. C% x/ P
- {
4 N! K: a Q8 a' E A% z( L - // createProject curves
4 o/ w3 g9 U7 A& E U; i: |7 ~ - $ a8 h9 j& k, x
- Features::Feature *nullFeatures_Feature(NULL);
* \- U( K( r- ?, b2 X
3 r; I6 r" M ?2 w# f' S- Features::ProjecTCurveBuilder *projectCurveBuilder1;
7 z: s) l3 E- s! P7 B+ R* n - & n+ q& y/ s: T1 L% t
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
7 S" o/ i2 R% _2 w0 o7 g" d
. w% R7 U2 D: d% t! b6 C. I- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
$ O$ ~" V) ?) S" L4 v
' V$ m' A. u- P- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
' ?( O V5 r! b* e/ M6 a4 T - 6 S% `: k& ?' |; s9 v( R, w
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
]7 J9 l# }& n. \5 G* [
4 T9 u! g) b8 \5 ^0 b- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);$ q: F6 P" T: c
- \- j! F# m' l" r9 N
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);* O6 s# A" V" _' w4 l7 I
& B" M9 J/ ^: A- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
" s( Y, ]" @ M- y9 y$ o% z& u/ W) o - 8 o# z/ m. K6 ~
- int size = (int)inputObjects.size();1 @- P3 e3 L' S; \ H0 d0 i/ q2 s' n
- std::vector<IBaseCurve *> curves1;9 y8 S$ R' C3 L) ?
- for (int ii = 0 ; ii < size; ++ii)! o" r0 z( d: d2 L/ k
- {
/ b7 \; g: m( k9 q8 u* X1 |, k - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
0 D# ~ \ V; z% E2 e - }) x3 k' |1 n/ u% ^7 o
1 |8 v) T& I! H! ?6 [2 W& f$ O- NXOpen::CurveDumbRule *curveDumbRule1;& w: V! ~. ?( p" L
! y) v. ]; L+ ~8 }% V( G V9 u- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
( z0 D! I7 C: R/ N; Y
; h2 t% u. s* n3 h3 R- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
4 o' j( I% T& @2 q
2 v9 |9 y: B/ d* Z- std::vector<SelectionIntentRule *> rules1(1);
" r" c* V1 ?, [6 h6 l7 D! s' A) X0 R5 e - rules1[0] = curveDumbRule1;
* k7 L( l% X1 a - NXObject *nullNXObject(NULL);
/ a7 I; p4 P1 b1 o$ C2 _0 @ - Point3d helpPoint1(0, 0, 0);) x8 a+ L& \ Q, Q
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);4 c1 m5 r3 E6 F4 w* k3 ]0 `
- , p3 z$ k7 E( v! W: {, x
- plane1->Evaluate();4 _/ [/ u% t2 ^* X% H' v# I
( X6 b& i& a" v" Z8 u( _6 G- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
3 }7 L) m/ X# c: n) E' R
/ B. x' D1 d2 [1 l7 m* \, s) W3 k- projectCurveBuilder1->SetGapOption(true);9 e1 |1 P) v- S6 y" Y, q6 W; u
- d& ^4 R* X$ ?8 h/ V; B4 j
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
5 {1 a: y% q1 q7 O
! y! f( ?' g i' G- NXObject *nXObject1;
" s, P4 ^/ Q' m4 X8 ^# C. { - nXObject1 = projectCurveBuilder1->Commit();
8 [' P# j: B# ~: U$ X - ) P0 }! m) `; @2 ~: s# n2 u
- projectCurveBuilder1->SectionToProject()->CleanMappingData();+ ~4 F: _5 v- [& o' J l: `
% e( f. N7 l$ d2 U! n# D! K- projectCurveBuilder1->Destroy();) w2 U5 W5 P5 H4 i* E6 q w
- # o8 [: `3 I! P2 h: w R
- }
& T$ k# ?- h' ]6 E - catch(exception& ex)6 P5 g0 C: ?* w
- {+ s4 I5 k; E5 ?+ G
- //---- Enter your exception handling code here -----4 c* H+ b" ~) C# I* [+ z# j5 k
- errorCode = 1;+ T6 z8 D. G7 O# t. d# V
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
& P' r2 N3 H$ E - }
2 X; h# S& }( J, H" {1 a0 F' ^0 ?/ K* b - ( |" R }' H# d9 Z% K
- return errorCode;
6 w% \$ {; g( q - }
; L, C+ @ X! P% @3 }
复制代码
% W$ q i: w' X" Y3 {+ J
. C1 k& f8 |( {3 h. M
+ d/ F/ [! X' a# U: E |
|