|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 Z/ e8 u) p' ^9 B
6 R/ l* d" X+ `- O5 ^- y6 H! }$ }! s4 L q
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
: H% E- Q9 H: B6 Q6 W! G
% c$ c5 z! U/ A( j此处使用的是 通过面的法向创建投影曲线,可以参考下!; M8 ^1 C) d/ c: L
- G: z) X5 D, U5 [( }9 k
. ~& F u& x0 F s
m+ h3 M, M$ f4 z6 d/ G8 w- X9 T/ m3 Z5 q9 ?6 }/ K! m1 s4 ~
! ^$ c6 y& v3 N
; [% y: S) V6 d9 Y$ f% B* S. w4 z. [: E
- V/ y8 i3 `- Y1 |( U& T# m
NX Open C++ 创建投影曲线 project curves
; `( ~3 G6 B. ~7 E
. Y6 n0 g( A0 d% c
5 A. p- H1 m, z
/ N @+ z- h0 u5 ^- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)& Z- ~( O, w1 j5 ~! g8 c
- {
0 G$ \* g$ B! [) Z7 y - int errorCode = 0; C1 R3 k9 S B$ `
- try* Y, J* e% h8 L1 q; k
- {$ V- p% Q( g. O3 I2 r7 q
- // createProject curves5 _- K( A- m# i* G
- # n* o# |1 q4 Y5 q' r
- Features::Feature *nullFeatures_Feature(NULL);2 K; ~, R9 u1 T! b4 Z/ ^6 k
- ( Q6 e) x. P* `0 b
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
3 F# v! F- r! w+ I+ P G& N2 J
/ J1 h e1 a4 @& D- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);. F; d5 D, U" s0 k. z+ }
- 1 m* ~1 y0 {' B S+ S2 }7 V
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE); ?' q2 x' g& r! f+ \ Z
- ; _, _$ a/ ^; Z% t q
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
2 H- D3 I: H1 b m. I) _$ R - & Z$ M' {0 D+ z% Y' ?& e
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);* c5 {# P# V4 R- N, t- f
- * |$ G9 D7 S9 ^6 _4 `2 F8 F
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);& _+ y/ Q4 c3 C( g6 M7 a
- : M) {! l, [/ J. }
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);- V! t! Z& ^% @1 `4 m
- ) Z) S# C9 B: f, P( v
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);3 F; z4 [* ] c3 P4 h; i/ E0 b
- ' X5 |2 w: @0 g% \2 k( O3 c# l: W( _
- int size = (int)inputObjects.size();
7 Y( q/ M$ e: ^/ H$ H, t7 C - std::vector<IBaseCurve *> curves1;
1 }$ ~# b1 e- \7 S - for (int ii = 0 ; ii < size; ++ii)
- f% L/ L, k y. i7 a - {
! ^2 O9 d( z4 {5 g, K - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));; i0 {* c* z1 y; R8 _0 P" Z+ R
- }$ C" I; R) v& r; \: u7 r
- ' Q4 P- I. A# o. G* P# }* l3 \& v0 N
- NXOpen::CurveDumbRule *curveDumbRule1;4 J& y5 @% ], s& w
- ) G% E% G8 y0 X* i j$ O
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
1 f7 x8 K& l" L8 i1 n* D7 h - % @0 _; s$ t+ Z
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);! z' x0 C& |. k4 k
7 c2 B/ l0 q# C$ J Z& e% |- M& `! `2 m- std::vector<SelectionIntentRule *> rules1(1);
/ j# |7 F# r5 }, q" d - rules1[0] = curveDumbRule1;/ c4 ]6 `& [& ?
- NXObject *nullNXObject(NULL);
. v5 a9 e+ d3 Z1 v' E - Point3d helpPoint1(0, 0, 0);
; Z3 L6 n7 j& ]! J - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);( R7 i8 x0 h9 f- m- b% E1 _
- $ o) d M- | }, w/ M- m2 u$ C
- plane1->Evaluate();7 i# I3 i) F4 n
- * c6 V$ I) D4 U" D
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);) Q& d9 Y- k4 R# a2 ^
9 n( S9 ^4 ?8 J- projectCurveBuilder1->SetGapOption(true);
- F2 Y$ R$ L; @. K5 y2 m
' x* e& ~( |1 g, c- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);( |; D& O/ `- ^2 i9 ]7 c o
- " `9 ~( Y% W+ W
- NXObject *nXObject1;* \2 b2 V+ f# h; g8 p. ~( N
- nXObject1 = projectCurveBuilder1->Commit();
; x0 K1 E9 l" p# l$ K# _3 ?; n3 k, M
, L k1 I; N3 O0 U M- projectCurveBuilder1->SectionToProject()->CleanMappingData();+ J# H# ]: Q- H& Y& ^# b& C
$ R, g4 R! K7 H' ?( S- projectCurveBuilder1->Destroy();
7 c9 \, ^/ @- f9 C
& H9 d/ F- _: f( s" ~- }; F# }* }) ]- ]' `2 I' Y: n: n# Q
- catch(exception& ex)" [1 ?( c' Y+ w5 D0 P3 W
- {2 ]; V" Z( @8 C6 [, |/ d/ G5 ]7 q
- //---- Enter your exception handling code here -----, W3 m4 ~7 ?# `) l% ~8 b6 p5 V
- errorCode = 1;
1 U5 O* g1 ^# T5 ]5 N$ O& ` - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
; l4 b; m; @, t) E. o - }
5 X. i/ {( D. r# K: r. N1 G
$ l; u V* p7 k- T- return errorCode;
; N, p2 c9 c) M; T5 p; Z/ R - }# c1 [3 Q0 {6 S" H7 |: L3 e! ]! w
复制代码
- f# a% S& `$ s6 }$ U% j. y; }. ~( _9 i/ e/ `1 R4 Q
5 v2 L' a0 Q0 S. V6 o* U+ i1 [ |
|