|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
* q9 q& b+ o$ U/ u3 z: t/ f
# G6 [! K( K; g4 h* ]- }! \& j& w3 |& c& E* p
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves; f8 b" y; g/ I5 L4 ~
( ~+ Q3 l) {4 l6 o7 u此处使用的是 通过面的法向创建投影曲线,可以参考下!
8 U. k9 B) i4 z% E4 S) Y, K& g. n
, w" l+ K% _* V% T
/ G/ i* _; C9 g4 t, Q/ t, s7 `/ N- U. ^
' y2 l. a |. X8 C% R
6 g6 E" R# n% q+ w# w: S4 e' ^5 H$ x; J5 d. z; r# @( g
NX Open C++ 创建投影曲线 project curves
6 G: a* t& B7 w
4 |/ o! D0 U5 e0 p. E8 I- W' n
3 p% k: O, B8 x( G1 S" u7 f9 \+ {) {- ' z. V' O7 H" r/ Y% ]
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
3 d3 M3 o) e4 U* w4 V( A - {8 w! K9 f# \9 y8 X4 n" N" P
- int errorCode = 0;
! d4 c+ _% @0 `$ F6 _7 z( X - try
* O8 P5 B5 ?3 u0 k - {& x7 J2 h1 F1 ?( D+ |7 W& T
- // createProject curves+ ^0 T# s. i+ B) X, {
4 h9 N# j' F3 W0 `" g9 O( c% ]- Features::Feature *nullFeatures_Feature(NULL);
. P" f7 h& V3 @* O - ( o( P' `2 ]& {& v
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
8 R! l, T! c/ ~1 V( T - ' E( f- y, T Z: ^9 ]
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
) [% c1 C5 [- t' c) j" v - L8 l1 ?- {9 k ]# H
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
3 f- U' m+ i# ^1 n$ B5 a - 6 g% T0 j; p/ s9 D1 {. b* w
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE); A: B& ~5 w' Y
- " k7 @' M0 u# L) b
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
. B4 G! n1 O3 h8 @! A0 `. O9 I1 q% m - ; p# o- ^* O* Q1 c
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);% n: Z& E; b. P% D( S, A
- ; ^; o% n! i0 [, \4 O. Y# y3 q
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);) U- e* ]% v" c0 D4 u* |; m
: [7 W2 `3 X, G N) V- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
x. T3 Z9 O1 ^- b - $ n% c ^2 c. b) o; `
- int size = (int)inputObjects.size();
H1 A5 k+ l4 s! ~+ e - std::vector<IBaseCurve *> curves1;
r: F) m8 M. b- e4 ~ - for (int ii = 0 ; ii < size; ++ii)- @* {9 H) g, A% u5 K$ Q
- {
% i' j8 s! j& d$ \: g& U: L! O9 Q - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));5 z6 x5 ~- N' J" T g2 W# B$ u
- }' R- S- B" B9 T, g# {
9 d$ C; P& y4 s- NXOpen::CurveDumbRule *curveDumbRule1;
+ b2 G) ]. K$ }
& v8 S# h h, h: a- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
' @% L* E1 O( Y# x - - q/ }8 b" d) ?
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
3 a9 w" H7 F# D/ g - $ Q4 c2 b2 J" b8 f- O. l5 `
- std::vector<SelectionIntentRule *> rules1(1);
+ b Z2 h0 U" I7 x4 i2 z$ H9 U1 g - rules1[0] = curveDumbRule1;2 }! s ?) W" e; m! ^
- NXObject *nullNXObject(NULL);* O9 ]* {; g6 D/ g- Y5 w$ |
- Point3d helpPoint1(0, 0, 0);
+ C7 J1 ~( h7 O: N, [2 a9 l, { - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);7 P) k, V5 _! h5 R1 J; U
& W* p8 |: `) ?6 P: ]: h- plane1->Evaluate();( F Q d: y, Q$ z- g: k6 }2 }
+ d$ a& V0 d9 ~- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
: J# m$ s$ ~. f
" N8 W+ ] {1 P7 ] C0 z0 }- projectCurveBuilder1->SetGapOption(true);
( V: u- C |, g+ S& V% O. m. W - * r3 I. A1 g% Y) Y" N+ o t
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);4 g. w' I3 e/ Q+ G
- 2 O3 }& {; }6 a' f8 p
- NXObject *nXObject1;
, L- u5 y* e4 k. c: g - nXObject1 = projectCurveBuilder1->Commit();5 F3 Q5 }& c7 t. K* l8 g, k
0 m! N5 O* W4 _7 G# b- projectCurveBuilder1->SectionToProject()->CleanMappingData();
; U/ z, t9 i3 E0 O3 @* [ m8 ` - 0 t: Z% {! J6 @4 e+ i
- projectCurveBuilder1->Destroy();7 B" ]% i4 A( c6 Y
- 1 O( a% e- G( U
- }
6 a+ k' J1 f% Y. V @8 s - catch(exception& ex)
# N6 X1 A/ X. Z& Q1 h2 S- y! V! X - {) U# Z/ Q& Z. o! N0 J# z
- //---- Enter your exception handling code here -----% ?7 v+ ]% z" z" |
- errorCode = 1;- u! H& n3 b1 H: p% M: k
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
) }$ k- V1 H8 o, o- [. s - }
/ I+ r1 P$ w# F8 ^
1 l0 U- h9 ^) P g7 G: r- return errorCode;4 F2 S! N1 h! _8 l- k
- }
5 x) J, ?7 u& S" v; W
复制代码
& v" D/ N5 x7 [' L: I v5 B) X' j; I: Z# }
B0 ]- P/ I+ `) d& k
|
|