|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
, J ~3 m# w! d3 f* i6 f! b9 ` s
$ [8 Z* v2 I' J* [ g
* S5 ]8 \2 y' G* n' k3 D) x6 f3 _UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
$ {" t: I9 i1 f1 J0 M, d
' A, V: M+ @/ o+ B此处使用的是 通过面的法向创建投影曲线,可以参考下!
/ P9 A" K9 V( u+ ?: N1 S- ~ c0 W! a2 w: G3 l( l4 f$ V" y
. P6 M$ [" e' h$ z
: g$ A! ]9 C) p1 p8 J% b4 M2 r
. g3 o: v4 e4 |4 e
8 s7 s8 N6 y, J8 L- D
1 F) h: o% f4 o+ T4 ~! k& C7 w4 m6 Z9 W b
NX Open C++ 创建投影曲线 project curves
# m5 g- i% Y. K8 v1 G
+ r: ~$ @1 V; [7 v3 C/ H1 G5 N2 n+ `! B ?5 d' n. t* G1 i A
- ; |+ X3 i# U( Y0 V9 Q7 c, G3 m
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
; T- ]; W6 U$ |9 k( p. e - {
, x" R" r6 a" l' H( w/ s - int errorCode = 0;
/ m# e6 M* C/ o* B* s9 s* y, B; D! B - try+ j* S! W) F3 N- p8 }5 _; ?
- {
4 F H0 {1 L# y. _ - // createProject curves
) W! @# @. q% r' a* f
: E% A; D' M ^- Features::Feature *nullFeatures_Feature(NULL);0 `8 _2 ]7 K# [
- 3 V$ X! M' W6 t! r
- Features::ProjecTCurveBuilder *projectCurveBuilder1;+ ^0 J/ t0 r0 T) B
- 5 U5 ^" L2 L% C4 x
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
x+ k( K0 I" W* r9 _. J
* @# b. C" a8 O+ S, X5 O8 c% o( p+ m' y- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);6 ~, Z. d) J; G, i5 e& ^: l3 Y
' T; a+ x& u' K8 h4 j* o8 U" B- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
6 a- _8 i0 P, O, e$ J6 ` - $ \- a) }; W2 s3 h# S- O
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
$ p$ p6 R. f! I- [6 D7 ? [$ R - , g' ^: H: D( A0 Q8 j1 M4 }
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
( e# g5 o. x1 r' ^' m: t0 A8 j' w
; P; d$ H7 F: n2 v- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
& U6 i1 X* k5 u9 X
l5 e: Q# b3 {; H4 A, K' N4 V/ A V- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);9 ^6 F2 x$ \+ S
- , q( z3 P/ M1 s& r4 p0 I
- int size = (int)inputObjects.size();4 f8 u/ f* ?: V6 e, L( j5 k6 c
- std::vector<IBaseCurve *> curves1;
4 u! q4 s5 R( e. y' } - for (int ii = 0 ; ii < size; ++ii)0 V* g2 C D' a. ~ B' t. u
- {9 p6 y. `& O+ M, G" V
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
- y1 t9 H" w; i$ M7 z) M/ p - }$ P2 y. q, x) R+ @7 s
: E8 w9 V; \0 n- NXOpen::CurveDumbRule *curveDumbRule1;
4 R( s2 f# b: B6 A' w. |* J
, L* R/ u' K+ t4 {+ v8 s# y: B- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);1 q, g: K- E+ {" K4 w
- / u1 {. d. Y z! f5 T8 b
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);) X( O) @7 F8 \' o8 c E' d4 Z
- 3 Z8 Z1 H6 G& ~( y
- std::vector<SelectionIntentRule *> rules1(1);$ y1 }$ d7 B5 K1 C, {, e: a. Z
- rules1[0] = curveDumbRule1;9 `, u4 w% u5 K# N
- NXObject *nullNXObject(NULL);
, [$ ^3 _: t h2 ?) R0 n - Point3d helpPoint1(0, 0, 0);& [4 f+ n$ h7 i
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);. i' C3 H: A* o$ ]$ p h; L& M
- 7 P# {+ H6 x0 x1 ]- _
- plane1->Evaluate();3 _: Z9 Q. c9 F) Q
- & v. ^; L6 \* V- N6 G% x; H
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);1 F6 c# L) p: I5 q0 C& O
/ f6 V& g+ q. B- projectCurveBuilder1->SetGapOption(true);8 O8 m( g" m A4 ], _
0 Z f% s& j0 ]7 d1 g2 m5 Z! }- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 P" y* g O/ Y4 h& e( M* `
- * ]. [# R. u0 K
- NXObject *nXObject1;! V/ S) m! w+ P1 V" U( l
- nXObject1 = projectCurveBuilder1->Commit();* x) x( e1 q" O; X6 b5 Z2 T
* B* f) L3 R) Q! c- projectCurveBuilder1->SectionToProject()->CleanMappingData();- R" X8 v+ N2 A$ p6 B8 y" ~$ i/ ?7 `
- , X6 ^. c% p3 {0 V# U1 z$ w
- projectCurveBuilder1->Destroy();7 ^3 Q$ ^: K- J8 W2 X
- 8 W5 S1 u% `4 q2 O* f" t+ o, y
- }7 }3 }/ w2 J' E/ R
- catch(exception& ex)
4 J, S4 ^) r) ^- j2 r8 D4 R* i - {
" g4 s d' `- F# h( u, @2 L M - //---- Enter your exception handling code here -----
/ o9 U6 o8 g) [' \# g3 Y - errorCode = 1;' f2 Y8 u4 x. d E0 d
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
% M6 }! s* b: q3 J8 I% g1 |$ t' o# k - }* R! }: Q) }, T' ~* u, g+ p# A: M* `
) g& c$ O0 ^* B V$ u& u% _! ^ P) s- return errorCode;
' `+ t- k9 b" J5 L! `' \ - }, S9 |0 u$ D9 \) P+ N
复制代码
" `4 j0 M: `! z' t/ p0 _6 C1 R1 q' C% Y3 C9 d3 ]) a
5 z o+ l& a" c) Y. i t
|
|