|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1 j9 K/ C( n" ] I8 z$ E# T, Q- J% H+ r6 U1 u2 t/ `) V
4 \4 }" r+ D6 S* W
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves- n7 a9 c b' V: a5 f2 _# \2 o
) t+ N/ s/ M) g
此处使用的是 通过面的法向创建投影曲线,可以参考下!
* g- x- _, @5 s* ^1 p# g9 K9 i: D' P, m0 u0 l+ G
% m" F8 u$ @: v8 o
{9 E; R5 B- R. W# z
4 C& c; Y% m% P1 G9 y$ W: f& D, G- a' m& o. u7 J
. E( Z9 T* W* L1 W) a' k; |5 L0 s x
NX Open C++ 创建投影曲线 project curves
4 i2 B, f: Y2 R2 r4 X) ~6 j! A
5 t3 ~3 ^; q# C& J0 C9 e" t: Y' m7 `. T0 u6 t) [: j
- . c; U1 ? I% ?# b
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)' n9 s x$ Y& @& j" B5 e
- {' ]* s _. q' e- z: `! E6 O
- int errorCode = 0;
' }& N) P+ }3 h8 b9 a - try, d9 |$ O/ ?2 a7 ^7 U
- {: `& C6 d5 H4 T2 e' D
- // createProject curves- P I8 x7 t. y6 e9 T8 n3 Z
- ' ] c( X1 d6 A3 w: [ Z
- Features::Feature *nullFeatures_Feature(NULL);- k# W5 ~' B. Q& C D: ^; S o3 P
4 W8 P# O7 G. f2 c. W8 b) W+ m7 @- Features::ProjecTCurveBuilder *projectCurveBuilder1;
) g; v# L, D0 l5 U3 H; ~) u - ! z1 r6 {4 [7 X5 r% I# x" e* N
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);+ c1 B# ^( F* f8 C
- ' V* D& s! }$ s+ x% O4 | ~* d* F
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
, v& y8 | o2 e8 {$ H. v t" |' V - 4 @: \1 N( m% O" p0 {' o$ }2 a
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
4 ?" S+ } n# n; z" I8 j - 7 m8 s$ V @4 X7 y& U8 o4 a
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);9 l; [: }- d& B+ j" N. u7 D
- % l, g: B: D1 y/ c9 A
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
E8 B. k1 Z5 W+ ~+ s - . e- J0 v9 I# s- ?1 \8 A" t
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
9 {& k/ d+ a G4 Z8 C - ; V( ~5 T1 a( Z( }
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);3 i# J& F2 C [6 z6 d/ A8 @8 ~, B
- $ `7 a3 y$ J% ]) y D+ M0 n& P1 r
- int size = (int)inputObjects.size();$ k$ w D3 S# X' t L
- std::vector<IBaseCurve *> curves1;% l9 G+ O' y- ]1 ]/ e6 q
- for (int ii = 0 ; ii < size; ++ii)4 B+ C0 F, u' S% R
- {
+ t+ w; t- p8 {+ q' ?3 T - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
7 p% M" S7 ^8 F/ [6 x2 ^$ O) s4 ? - }
5 l" b7 o) d: s - : g! D0 x y% _
- NXOpen::CurveDumbRule *curveDumbRule1;; g5 u4 k, |0 S/ e) z7 I
k1 C1 \$ g8 E0 I: [& F. |5 H- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);5 P' ] @+ i8 ? E: Z9 a+ s
- 8 {+ E% N0 f, X! S/ d
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
5 q) `) w! }7 G6 o# `. J
7 O& {( a/ d4 }- Z! p- std::vector<SelectionIntentRule *> rules1(1);$ N; y+ o! \/ X7 ^6 Z2 i9 C. M
- rules1[0] = curveDumbRule1;
" h# q+ [2 O; Q. ?5 y - NXObject *nullNXObject(NULL);/ g, a9 \+ `. I# J4 Z9 F5 N3 M
- Point3d helpPoint1(0, 0, 0);9 B( Z" D* _3 P' v" d& T c
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);6 O, ^5 X: C4 z" |* b d+ P5 A- v
- 7 x; S4 } l; b# l2 g) t
- plane1->Evaluate();. r6 b, o1 @+ o- r7 h
- * U8 o/ Y, k9 o9 T4 P$ R0 P8 X
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);' R, l5 l F" K# V! S+ p( u
- 4 z- O+ [2 Q' t- c' k
- projectCurveBuilder1->SetGapOption(true);
* s3 _# J1 E: n0 a, P- G
7 Y' K4 d7 V4 D0 [+ P. d- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);' T/ ]" j% w- q5 f0 q( c r
1 ~# D* s: m9 @& e: g2 a- NXObject *nXObject1;
# `1 G! e, H o# t) _ - nXObject1 = projectCurveBuilder1->Commit();
* }/ i0 A$ t4 G+ d3 N; k4 i& |) u% E - Y2 {6 u" Y+ _) N+ A4 {# T
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
7 c( g% Z" i. R( U( ] r - ; F# R+ w: R5 O' X& I9 E. z
- projectCurveBuilder1->Destroy();
" A$ F0 @: Q$ G/ S' w$ ?, f4 t& f
" A# e% _7 s9 ]4 j! O- }3 x! Y+ a' V" U; N' L
- catch(exception& ex) ]7 a- A; U9 b% t5 I! g ~
- {
: W6 |' W# K1 r - //---- Enter your exception handling code here -----1 ^& B/ f4 @: b- P F
- errorCode = 1;
3 K U! k( X& a" N; S& S6 M - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
1 ]# a* i& Q5 [' { - }
* }$ e3 i5 m: B s
8 B: N7 B" O1 _- return errorCode;
. h3 g6 ]7 `2 s& c - }3 G5 S3 r+ `0 ~+ j, G; q& o6 g
复制代码 . x: {& J Q8 x% \% \/ Q1 Q
{1 X5 @9 b7 G0 ~
! n5 G# o0 L6 a) N |
|