|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
4 a3 t; V# a2 s' {+ G1 @) R; e* C" f1 a
0 B0 p8 y1 A! H, r: ~( a
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves0 V( O# D+ h2 T: t( \% ^4 \1 S$ v
1 J- l& m& W+ \- h' ~3 [( E% W此处使用的是 通过面的法向创建投影曲线,可以参考下!# k& H. P* ^0 Z( |8 |
5 O" l# w) B, K
0 P/ f. ~2 o0 I* H! S( ?3 T; d8 ^6 \0 ]3 U
# j. k# L) h# J0 U0 ]1 y% h! P$ R+ B; D; e, p$ S' G9 J
: m% b2 u t, \/ U& x. [7 D' I
6 l- m/ M8 z: V% O
NX Open C++ 创建投影曲线 project curves
+ j% W7 N( q$ u7 O }" J! W' a6 f, ~4 r8 x7 o
9 e% [, p8 a( R3 _0 v$ q/ k* L
- c; e8 U @! A9 H: l0 f+ Q0 m1 G, x- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)3 P- \) M" [/ y+ D
- {5 W/ f! p) T; H* x5 [
- int errorCode = 0;( |) Y* P) k& U U( |6 n- {
- try
! b4 U o1 b5 V$ d( J' _0 Y' y - {
! W2 X# n X5 r - // createProject curves
. Q7 L. _7 a- w5 s t/ H
% L9 m( A; j4 j9 h/ K! ^5 U- Features::Feature *nullFeatures_Feature(NULL);
y" R+ X3 \: o0 Q! u7 j - * P5 ^; D# P! F
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
$ ]* h' ? W- B3 A, C8 p - 6 H @5 M( ?3 G7 K
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);+ W, }9 ?, p, v
- ! {. w0 z. A* o; U! |* M
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);2 u3 Q% o! L# ^+ D. R
- ^; e0 p+ |7 ~/ O3 u- c5 P
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);5 O0 p! @! G7 ?' X
6 m' x! U/ f! P6 G- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);* l# ~4 j; A& d; u
- + p7 q( P& M" Y& @- |& g
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);& w( E% G, T, J. c* t
- 4 q2 T& y% a; H) d/ o" b8 @/ p
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
' F6 s) w/ @: F" H
( E" U% }$ r( A# ?8 w, x! i+ A- m- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
6 [# g1 l ^$ ^* n- A' |" l/ x - 9 K& }( E5 n5 C, u; |
- int size = (int)inputObjects.size();
) s+ N* c" s6 }* Y1 ^ - std::vector<IBaseCurve *> curves1;
0 A, s1 L8 H8 m+ ]3 {9 _ - for (int ii = 0 ; ii < size; ++ii)( V4 B/ k6 g8 N! {
- {1 F0 a7 \6 d5 m& V8 U: t
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));& a6 f) o) U! z& A# ?8 ~9 z
- }" Z$ @4 E* y8 p2 T! F( S
) n* D" G- k8 h8 ?, u! {- NXOpen::CurveDumbRule *curveDumbRule1;6 P6 X# i$ N/ J7 d3 U, D5 X) s, B
! |# u1 k0 E c, L# E: b- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);- W% B8 i" ?$ ]! G) w
- , Q3 ]- `4 q: s
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);* |1 q& y# g, O# B- w; r" n
: e( k' g3 }, O) ^5 C" ^% {- std::vector<SelectionIntentRule *> rules1(1);' ?* c7 A+ ^4 ^& }& y
- rules1[0] = curveDumbRule1;% r& ?/ F7 Y5 q& h! Z( |/ H
- NXObject *nullNXObject(NULL);
3 ?* U9 j. |$ |, s2 {) K# s6 u - Point3d helpPoint1(0, 0, 0);
& j) ^* |6 v) [, a, t1 l9 r - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);$ ^* a3 O( b2 \; G8 _5 }4 y
- : [8 N7 Z+ j& r+ H2 a+ `1 r
- plane1->Evaluate();
5 Q+ p5 z) i7 K* h; C
" r& l5 \) a$ [/ U' M5 q- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
) p" S/ B8 I2 k7 d" ?. i/ W
" H& R8 w& N( l7 v. X- projectCurveBuilder1->SetGapOption(true);
h2 r5 w1 r* W$ x8 `4 T
7 d2 l1 r z9 m0 d* u, Y' t- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 l6 Q' P4 l. V! q5 m5 V
, U9 [: D' e! e2 J- NXObject *nXObject1;+ Q1 q4 N! x" J/ I2 H5 B1 V
- nXObject1 = projectCurveBuilder1->Commit();9 S5 f* u! \6 m: Y$ k1 @
4 V, S; L0 J: S4 s- projectCurveBuilder1->SectionToProject()->CleanMappingData();5 B, `: T& [1 U& N: X
- $ T' Y+ w! n" W# e" \" d
- projectCurveBuilder1->Destroy();
& [$ b, ?$ e- z2 I7 H' l - * A5 E+ ~: d( T0 M$ M6 q
- }
u7 J, `" B- U6 R ]& T/ i2 \# M0 f - catch(exception& ex)
* k. i9 v! C4 t2 G# @ ?# W* ~ - {' v7 y4 [2 N; q/ Q
- //---- Enter your exception handling code here -----+ U. ]6 e4 e1 z7 _. F3 C
- errorCode = 1;( I+ G% l9 w: F, B$ I: C
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! u9 T) G* u# ~% n* }7 X! |
- }
3 {. N5 U1 T: P* p- ~" q9 o - " }% L) ]8 I# Y+ q9 _+ J+ N$ b
- return errorCode;! X1 r( w9 ]! l. ]" `+ W
- }
; Y) c' v. c& K
复制代码
2 `5 k# j, M( z7 ]% X- G& f. Q: w5 ]
+ x3 v& k1 m" [' f
& ^: n P% d8 p2 E4 Q% y+ q |
|