|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
: R% D1 _, z; J+ ^0 c8 B$ C! r+ m" h" w: m, `+ k, [
7 t p+ \3 a2 O+ t( _UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves* c8 h! Y7 ^. }/ ?% I2 c4 T" k) m
3 v& Y) C8 U5 k3 K$ s) C
此处使用的是 通过面的法向创建投影曲线,可以参考下!
7 Q9 S: T, [. Y$ h, H5 n; ~( |
; `1 {% _+ u2 T7 T9 B$ ]! A: I9 g# f+ I) Y6 A: ^
" u6 z) q# B B8 Y- w1 R7 x
. m) W4 d9 ?( G' s) x1 x7 [5 `( j8 {1 P" A: P: {
/ v1 y- ~( a7 z/ e* ^4 ?0 z# _# d9 D3 I& w$ |
NX Open C++ 创建投影曲线 project curves
5 v4 V1 _( l' d- Y$ q3 f
0 L) Q0 d- L0 K8 c& Q& m' Q1 }/ f& A# M
- ' y( G |4 T% e V9 y
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
' t @1 s4 v S/ R - {
8 E. M, {2 C) q; l - int errorCode = 0;! T9 Y7 Q: Y2 {3 m: a" ?
- try# O9 T; b4 k- X' L H
- {
. h& Z9 ]0 c" E* d) T - // createProject curves' {/ \8 O: ~( f5 U. r
- 6 k3 T: h. s/ X( k% }5 H l( ?3 ^
- Features::Feature *nullFeatures_Feature(NULL);3 j* W, j# i# y) P
' n* z. a* S4 e- Features::ProjecTCurveBuilder *projectCurveBuilder1;
5 P( i/ a7 j, F
8 l+ i6 j7 v& a( W$ y& \- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
6 ^0 C3 U- O6 y
8 f0 m) t) R5 {, ~; Q) J8 j6 |3 J- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);" |4 N# `/ Z% T: A
- ! H z* U) K4 y1 X' i" z
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
% S: e ?5 {+ O) Y9 u3 S; G5 T - n G' y: }, k6 j4 d! V7 M; s- a% Z
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
; ^5 K& O0 q, k5 i3 y! d - ) }% D8 ]( W5 P( b5 o: D! |% N+ m. @
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);# G4 U5 g- p$ [% g# x# ]- ?
( i1 K- R/ e0 `( @+ n- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
3 g5 z9 s. n4 R2 m P - ' K- B$ i2 }5 v' i5 D' x2 L: {
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);% u" q0 a) e/ W5 \/ q. |' U
- 3 c/ T' ^/ C1 U8 m: V+ c {
- int size = (int)inputObjects.size();/ f# u8 C, `8 `- @7 K
- std::vector<IBaseCurve *> curves1;
1 A9 | L8 u# h4 X' M - for (int ii = 0 ; ii < size; ++ii)
. k2 t. S- n) ~4 k; ]8 ` - {- C: k& M; y- {! _3 F
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii])); n# c6 s* N( x* Z. b, v
- }
! |" v2 f$ f' s5 j" T( I1 ~
% d% T- `* P& e5 A- NXOpen::CurveDumbRule *curveDumbRule1;; V. B4 d, D) B, D( H- a
- $ z" {+ N4 L' U5 ^5 |9 u7 w
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);* ~, k+ j4 ]+ G4 S: W( w5 N
- $ ~2 q6 y% d# c E
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);# y1 V& M3 Y' |7 {* m
1 M5 A& X4 L: F6 b- std::vector<SelectionIntentRule *> rules1(1);6 E1 g3 v8 _/ B; M: a1 g
- rules1[0] = curveDumbRule1;( P0 N1 H- D# V q" H8 ~
- NXObject *nullNXObject(NULL);3 w+ n+ u3 @ @1 j; n
- Point3d helpPoint1(0, 0, 0);; j* r9 ?, m% g% \+ j/ `5 \
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);. @9 u1 q+ m* S/ }* R
- : s2 d7 O1 ?! V3 U# s3 d6 M% y
- plane1->Evaluate();
( X- @0 y1 L5 \/ l7 {% S, M4 C; d- s- z+ m
9 b i+ O) I0 d" W3 j- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
% ?! {, h! I4 l! x - + I1 B X$ N* a9 N7 W
- projectCurveBuilder1->SetGapOption(true);/ q( c4 G5 b4 |1 `' y9 b1 I' Y4 u
5 D x: [& M+ } @ V- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);+ `9 J5 x! f8 |
0 \* X; t2 w) |8 p3 B- NXObject *nXObject1;
5 ]1 V* ~( d2 i7 K# Z - nXObject1 = projectCurveBuilder1->Commit();
. S5 ]- T- W: h# n: E" C$ u
$ E3 ?* Y: j7 @5 S0 D- projectCurveBuilder1->SectionToProject()->CleanMappingData();
$ y; J% d) e6 ]+ j- H - / k, j# i) p* w* b) S+ n$ d; J; Y
- projectCurveBuilder1->Destroy();2 e% @" P7 D8 P' ^- X( P) k
- + Z4 F& o2 l" w3 R' v! o. r8 u
- }
$ W, ?" S: {" Q; e; O, T9 r - catch(exception& ex)6 ]3 L9 U9 @: W, L
- {
& _7 m1 O# Q" J$ x, P& I - //---- Enter your exception handling code here -----
) ^+ ^5 H e/ g9 S! R - errorCode = 1;, B1 }# I" A# ^0 @; f* R' K& b
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
! ]# M2 c, d8 S2 d - }
t; M7 J& D, X, G$ Z9 m
$ M- Y: J' S# ?# r- return errorCode;/ Z( ?6 I% g! N$ m8 q' _2 Q
- }
- @' J: L' J1 }, t1 Q, }
复制代码 2 g! y, A W/ w9 Y2 s
s4 L. W+ u7 b* f( ^4 I) Z
0 t% D* y9 `% m4 J |
|