|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
+ q' f5 v6 s: w; x
: P0 S9 F0 W3 X2 E, E" ?8 U8 ?6 V5 k, ?
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
" X$ H$ Z5 s; T1 |/ {8 V
6 P9 a$ q R d# G( x! c, a4 c此处使用的是 通过面的法向创建投影曲线,可以参考下!
/ w* d/ n, A; P. W
4 k# t& u. ^- _9 P$ O
6 C- o* O5 z% v' g
* O9 I. \2 o4 }; ]
$ n9 ]; d) z+ \% @ S8 k S3 U' [: P; ^
+ o+ A% M% u% m! n9 g7 R4 h" {& D
NX Open C++ 创建投影曲线 project curves
% b4 n- m5 u/ {9 l. F
s' f3 V' V) i# F, {2 J1 b5 v
Y1 b# A Z! \ i* a5 S2 j' I% U
- % M- b# d0 _9 M! l3 d q
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
* E5 G9 l1 W% { - {
* G: z0 S n: C: x - int errorCode = 0;
& _$ c- K3 e. f4 W0 C( D - try
7 U" |/ w% V" d6 G - {! n, [ w; ]+ c2 _0 R
- // createProject curves
* o1 o x( X" G - 6 | z$ X" Q: G \& d1 n0 q
- Features::Feature *nullFeatures_Feature(NULL);5 U: Q, f+ G m6 B+ }1 Q
- 3 Y! Y5 N" I5 `$ m8 [/ {
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
/ C0 u* P2 g4 ^" l# B/ [ - , g) [! k8 ? u5 K) J s0 J& x
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);5 a& K+ Y# \! R3 {
' G" E5 n5 a$ c. V5 X- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
# G( Y. g. i; T9 e. j1 b( X
2 ?/ l* y x3 _5 B @7 P1 f' f- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);- B2 L9 J% |% D) C' T
& p& M7 n% C3 w# d, u. S" l- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
% @7 O1 F1 G/ M( K, \+ j
" _% I8 ^7 I/ K( H4 N- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);- X5 w! i5 x4 b% S2 d
- 9 ]/ A1 M a! k& E8 _) K4 b, G$ m
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
8 t: R0 o# R' @ - ! R" i6 y; W2 j
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
! {9 p) p* F, y8 y9 _" A. G+ Y
2 ] k& Y+ h) s' K# u- int size = (int)inputObjects.size();
4 X6 C$ q- e: H- m' i/ d% V - std::vector<IBaseCurve *> curves1;
" i* `- h( y5 [' t- H7 Q, c - for (int ii = 0 ; ii < size; ++ii)6 [! F0 l3 L0 r, z7 a8 A
- {4 t" P" q' J& r' k
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
1 |, j; x: e3 M8 T6 [- x - }" c4 ?9 A% X% |+ ] _9 I3 Z# Z+ N; E
0 O% |5 N' u8 V x1 K- NXOpen::CurveDumbRule *curveDumbRule1;
2 z# l( A+ q. h - : Y: H. a5 v$ ^0 Q/ P) J2 C
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
0 i* T a5 l }) }
" O! \3 p( ]) Z3 k- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);9 l& \- I# S3 [7 n: y6 |8 I0 b
- J* R* N1 R$ O% T& u. }' `- std::vector<SelectionIntentRule *> rules1(1);
" R- V2 b; j1 @; n" e - rules1[0] = curveDumbRule1;
) N, J# c7 M3 d* h' N; P7 C - NXObject *nullNXObject(NULL);
& A/ k# S+ |, f6 a( }: m# ~; r - Point3d helpPoint1(0, 0, 0);. ?( h+ E1 u7 u/ J6 p% @! G4 ?
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);& l, R* x' \1 T& ~4 O! v0 {
7 s+ @3 X& o0 V) J* ^! H, h* C- plane1->Evaluate();
/ T& w0 T T% u2 W( D+ a+ @5 | - / R# u' R1 \5 Y; |" O) E
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);. C: K/ E. c2 X) |9 m9 U
- 3 Q8 r* U& F) m4 j
- projectCurveBuilder1->SetGapOption(true);
# y: n% T0 b1 {; R; P N: f3 ] a6 \ - 1 C6 s0 N+ D3 f8 Q9 n4 V+ V
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 c. A* ?$ k# ^3 B
5 `& d# k8 c. c2 f% y- NXObject *nXObject1;, D$ C, b! s1 s8 L
- nXObject1 = projectCurveBuilder1->Commit();
) V0 w" G( v8 u& E: |4 z4 s" ]
; h* z# [5 Y" p! o+ S4 E6 j/ ~2 D- projectCurveBuilder1->SectionToProject()->CleanMappingData();
3 j& y; V) C$ W+ d V8 d' H' e - & H7 c. v, F6 X( u: D' ~
- projectCurveBuilder1->Destroy();
p! A6 z" i2 t/ |; [, T/ r - % U" t9 o! a k
- }
, s; w2 P4 S. U* U - catch(exception& ex)
2 }9 k1 S! H5 \- t - {
9 H9 E6 w% c" ^3 _2 j - //---- Enter your exception handling code here -----
4 e# k% r6 S9 P+ q6 M% W; ^7 ? - errorCode = 1;
' E! | S6 b c- i) H - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());' k9 J$ K- l$ q O9 Y
- }
) `! v0 ~5 c. ]- \5 H2 |. p
p a" Q5 [; w S% S- return errorCode;
3 V% D/ u. p) s! H& L; Z" }: _ - }
2 O! A/ X7 c' I) e
复制代码 % G1 t6 v7 }4 `& _, i8 @1 u. p- a6 o
, S6 m( E' {3 D5 \3 t7 P/ Y) [6 g+ ^: n7 s% `3 M8 X3 g/ h, X7 q
|
|