|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
5 U8 L* [0 F7 S
* c- _# z& ]* H2 G6 k0 p& z! F7 [$ Q6 ]
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
. R2 _, s0 }, E( w) m2 I
s) X! W( m# S0 s- g5 v; ?& U5 b此处使用的是 通过面的法向创建投影曲线,可以参考下!
- q/ ~. ?% @8 |- `+ B/ D: Z+ C
+ T2 q. h8 O1 m9 B5 b& u4 W
X r0 i+ a2 m2 f; h" N$ f
8 O" b6 G( I! E2 w$ L6 N8 c( U
+ X( g1 K; |. {' D- ]& w( b/ C% D8 _6 F$ ^
% b; W5 B% O* H
, s, D% c( m4 j' L0 {1 a4 ~
NX Open C++ 创建投影曲线 project curves
3 v& _0 l/ M, z+ c% U7 ]8 Q) o/ y$ R8 I
% T5 y$ ^. l- n2 c* j/ w0 U- 3 L! a- t/ N# X+ u: |
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
" X. M! F/ [: d4 f) D; k - {
/ H( l! `. p `/ M S& T5 L" F - int errorCode = 0;( |& k2 O) p# J* N+ b
- try, R% `5 F, n8 S* g! b0 s
- {8 e8 `4 h, `( `% Q$ `. u
- // createProject curves5 w9 E5 t9 b: r$ H! ?5 V/ L
( j" I: {+ ]4 S% ]. q- Features::Feature *nullFeatures_Feature(NULL);* l% A0 x" o$ s' \: @/ M% l
" _4 s+ p: j( Z! [& F6 C: {- Features::ProjecTCurveBuilder *projectCurveBuilder1;
4 K8 p' l0 T: d+ l
' q, `, g- [) V& v$ p. i- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);% n7 o1 P: `# |, ]& P+ q, a. ~
- ( K$ o2 O6 d- A( V
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);8 W8 D; v! l, o( G1 B
, j2 m/ @- f$ ]- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);8 V* ]/ N$ J/ s1 Z* o3 X
- * N- O/ J' [& m8 j
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);) z" N+ K" `. b9 o8 `$ i
/ f1 ~* P/ K* J& G, N) R- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);. Z5 A% Q/ s Z5 W; P/ m! A; h/ ?
- ) ]- q# \& Q! i2 ~* B
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);6 o" Z1 o ]3 y* R
- 7 ~2 Q- n; k+ N( V
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
9 T# v9 x- H9 t [# d4 T
2 F* [. A2 [% G4 a' o- u- int size = (int)inputObjects.size();
9 x! |( a$ i- M% p8 _ { - std::vector<IBaseCurve *> curves1;2 }, [, Y6 M3 u
- for (int ii = 0 ; ii < size; ++ii)" ~$ M6 e; m4 t8 h! M- i
- {
- D) ?" P$ W0 h9 y1 ]; E - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));' h# u3 [3 l: f
- }4 H' Z# V7 u4 |$ Q. X5 X" |5 E
- : p$ s- T# ~8 N% i" L
- NXOpen::CurveDumbRule *curveDumbRule1;
- I8 V+ s$ ^; P$ j/ R) S7 e% G
6 a, O x& u1 X+ L0 ~- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);, H" A) G. Y0 g; f' L
- 3 H. f; ]( C! f9 C
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
4 L+ k8 Y' l1 H) v9 E4 m% G - ) e8 J% a1 G2 I4 g- `
- std::vector<SelectionIntentRule *> rules1(1);
, [, p5 }/ e' o4 F* V/ E - rules1[0] = curveDumbRule1;; y( Y! f8 H$ i
- NXObject *nullNXObject(NULL);/ t% D3 ~) C( ~
- Point3d helpPoint1(0, 0, 0);
3 |8 \. j/ P- u" O7 I* z8 k" W - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
& v# Q0 e9 x: |6 |7 s! w- B - ) t, g, o e2 B% _0 y
- plane1->Evaluate();
: C' p$ [4 o" i# s - ; a$ D. m8 V( G) {' _- e: H
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
6 f6 F: [& |7 y
8 t3 l3 ]8 ]3 I. ~' q- projectCurveBuilder1->SetGapOption(true);
: O/ G3 s5 ?: p2 @- F - + D8 M5 N9 Q' m/ \ ?' y6 v
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
" n1 F% S3 u) }) S1 {: O
! Y* k' `. @4 Z# o& Y, y0 ?: ?% ^- NXObject *nXObject1;0 o5 v6 o# c, X
- nXObject1 = projectCurveBuilder1->Commit();
& C& K, q# x: T4 f3 F) s6 A
0 k8 R* O( w1 q- projectCurveBuilder1->SectionToProject()->CleanMappingData();
$ L3 c% C/ O0 }6 }, u, ?2 y s
: B+ S8 |4 D* S4 |" w- projectCurveBuilder1->Destroy();% R# t- m( E. W. f1 f: J
- - B0 M, C& x8 J! u! c
- }8 m4 p1 y- p( P4 h* u `. G1 J0 E
- catch(exception& ex)
3 @: T& f2 p4 y, m) f/ [6 [1 U - {3 e# L: s" f( ~; Q
- //---- Enter your exception handling code here -----
: }4 \ e5 C1 r' c+ M6 m6 z$ e1 ` - errorCode = 1; h# y. |0 |4 \, x& e9 c
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());( v8 h' E3 Q2 H* M) E7 k1 N" f
- }, O' J0 T/ ~- u$ J; I1 N
$ S4 h0 J3 H+ ^% A+ y' k- return errorCode;
2 p+ y' K. n/ e4 t) o - }
. k8 o0 ~7 E) |
复制代码 9 G' ?/ f' M+ {, W9 I* O7 T/ K' |5 V
1 ^5 Z) U Z5 @/ i: _: N% F7 s6 \0 l" K7 |- a1 O
|
|