|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- J" A L$ e! V% G5 l; ?
. L% S; h! {' b: G* x+ F; D( e' K$ U \9 i q3 i
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves4 c4 ^4 ?, Y) [$ y4 ]# k
) u- P; F) y1 X! s9 p; x此处使用的是 通过面的法向创建投影曲线,可以参考下!
. ?5 U/ p$ @. O4 S; s9 w8 o& w, j& v7 \: z
' Z' p% T: k4 w! X9 H9 C
& e& @, y8 M) E( e
& t/ c7 w/ T8 t$ P
' b6 u2 H3 T5 A) V; @) ^5 E& a/ Z+ w" n/ A" D
9 n2 [( D5 n5 r, D6 c/ }8 r. ~
NX Open C++ 创建投影曲线 project curves
3 N g# O4 q- p5 a+ L0 l: ]! q, V- T+ G1 d9 o- k: _
/ X* _; c O! [! h# D& n
$ N7 ?7 t) f$ q9 |7 v1 ~0 W$ y- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)/ t, p" x h$ G* ?: ?2 J
- {
5 R I3 E Q( ~ - int errorCode = 0;6 Q4 k) I1 \: X; y$ k
- try9 O0 t9 c/ T( v$ u( q9 F
- {
7 j3 u2 i& j0 ^# y - // createProject curves
; V* u* {, w. s" n: o
8 R* g6 C* V2 Q( B' [- Features::Feature *nullFeatures_Feature(NULL);& q: ?% f' P( W
- . z3 _- w1 u; i2 ^1 q% k5 I/ X
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
* S( e# |) \- E) J - 5 I3 A0 b2 e; {! i9 \
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);" \# h) u* s2 k7 ]: n5 w; F6 ?. S& L" N
: c+ ^* N4 n( n$ [( \: x, F: W- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
/ M1 ]' T3 y5 B- a3 ` - 4 R5 X; R3 _ A( M! y
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
6 Y0 N5 d7 R% z) x
6 t% D, i" q+ C1 N l" w- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
3 c% i# Y. j5 d5 {$ K3 l+ _ - 3 |' l4 T/ f/ r+ h$ `1 n5 y
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
4 }- V, a# Y: w+ o/ p5 ^ - 5 n. g/ ?3 m' N1 V: A
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
8 m# C% w: S. b# J) G4 D$ I' m
+ Q; m; d9 G, I( G4 t5 X- R0 ]! l- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);7 `% s) g) k$ q/ {& H
- : R1 Z4 @- G) }
- int size = (int)inputObjects.size();: {: l* P A& m+ N* L, W5 ~
- std::vector<IBaseCurve *> curves1;
" A s _' J, h6 J - for (int ii = 0 ; ii < size; ++ii)
- R3 E* ]1 ]" |+ C; p' | - {
& }: S3 E- `. `3 F8 C. H - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
7 B; f* W" U( W; }9 w5 l; V - }
$ B- I3 C- Y+ i% h/ `
5 e: n) p4 P( ]6 x- NXOpen::CurveDumbRule *curveDumbRule1;
# g% w2 {# v& U( h2 n6 F: V - " k- J- l& ?. h0 m( Q. Q* z
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);7 I. @3 ?# L0 L+ K
- 0 O7 f, ^! j/ P @8 h/ u$ N# F" M
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
" @. i# Q3 g# a; S: p: a - 2 e y, Z+ J5 p) ]0 `
- std::vector<SelectionIntentRule *> rules1(1);
/ B7 g5 b/ {7 n7 F" n - rules1[0] = curveDumbRule1;; D* O- V# w0 n8 ~) C' f2 s
- NXObject *nullNXObject(NULL);( _3 x s+ |7 t: d( i
- Point3d helpPoint1(0, 0, 0);
' S1 u; @1 Z& S; O, k - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
0 M7 |* v7 ~* X" @1 b5 f( x3 n - c6 J) c# r' \4 z. r$ U$ Z" I7 A
- plane1->Evaluate();& `0 z: l5 X) O9 B$ q8 B, c9 R
- ; B4 {6 o# h- j/ ]5 R0 y0 u3 F4 z3 L
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);0 c3 A9 V3 n" T0 r- R, t* N2 e
9 i$ t G( o( U) u/ n5 s- projectCurveBuilder1->SetGapOption(true);
) t J% _0 d( Z9 @
! T" \4 c+ {4 m; E& [0 l. A! K. u8 B% d- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);4 y) i6 a3 F) e: [
3 h4 S" ~; O) v( Z6 v- NXObject *nXObject1;
4 ]1 E* N$ [" S; [ - nXObject1 = projectCurveBuilder1->Commit();; Y$ w. V+ \5 y& f, }
- / t& D) w2 c4 l
- projectCurveBuilder1->SectionToProject()->CleanMappingData();2 Z# K$ F0 g: b& i' }! `. X3 \
8 F c. x$ D5 w3 `& O- projectCurveBuilder1->Destroy();6 n: {& z* |! X3 W- Y1 M
- 7 @! o' H* C$ _9 m8 o4 i
- }6 |- H6 ^6 ~3 ]. P/ d
- catch(exception& ex)) H. j- R" \! H: d1 p: r
- {* x0 P6 q( R$ `
- //---- Enter your exception handling code here -----& [8 V E/ t9 M% u( k+ t0 a
- errorCode = 1;
9 {5 y2 V5 F; ]% S! w - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());5 U/ u& r& C! R9 c# {5 g
- }7 z" b. |. c7 f* R& N) b
" Y/ J. a* i1 A, z+ w- return errorCode; Q- ~. n; q* Y P( i# o; u) U
- }! O( d7 y* I' A* ], u
复制代码
5 l0 ^& h9 A$ p( y# q4 [2 r
! N0 A9 Q4 n7 s! n. z
6 F8 k! E! C/ Q' h- ^) H, v |
|