|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
9 r; x8 y$ k2 @- d
% L& T6 E Z0 [" @" G
3 y4 R; s# n$ K( y+ V
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
" }% P1 v+ y0 Q3 R4 N9 W) \5 O. G' F: Q2 Q' s" D- H: `, ^, g! x
此处使用的是 通过面的法向创建投影曲线,可以参考下!* t6 f* p$ l* _5 ?: C
( j( ]: v% }: z4 ]/ L/ [0 _: [6 `, c3 V. x. r5 }& W1 ?# L+ q
3 G" |) [: b1 F. d
7 q/ f+ d" J4 f9 Z; c3 y
4 ~8 O+ w& i. s1 [# X8 W% R& C* P
4 ?3 [2 I6 u) g; ?! V
% J. S. s/ n& J
NX Open C++ 创建投影曲线 project curves
8 q1 L. h, R/ `
3 T3 F# N8 { x$ [7 Z) N/ {
# _ ?# Y: s# c$ u- U5 k- 8 `9 W; F/ \ V% r# b
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
& q- `" f: W, z1 H; M- p X - {
/ b9 V6 g1 K) S" \# p4 R - int errorCode = 0;/ C$ w& a8 I6 b' J9 R {
- try
+ b9 _ C# {9 |$ R - {+ g! x6 b6 N# W! v, [
- // createProject curves+ {/ X( C* g. h* j3 s
: Q2 u1 m' G4 Q' g: e( F* W& f- Features::Feature *nullFeatures_Feature(NULL);
* o2 P6 } _& N; z$ t5 N
9 N* X0 ?7 A, O9 t' y7 \3 j- Features::ProjecTCurveBuilder *projectCurveBuilder1;
1 g7 G2 X; ? v" E0 y$ n) M% M - - k4 _, V- ~+ p. w/ K
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
+ Y8 ?+ e' K) {8 D
4 e2 s8 j# [; R! J' x: E6 E) z- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
, l# I) V E( h. b' {3 h/ G9 H - 9 ^6 }/ v. a5 _8 F& x
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);8 u- D1 R% U+ U/ D) M2 ~/ b
- ) l# B0 }2 G4 s6 k H. p" }
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
R Q6 V1 ?3 M; s. _
O, [& S4 a: U4 J- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);6 r) s$ [7 v# e2 H$ w9 a* C# b# {
' v/ u& s5 P' d+ l" }- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
: l$ L0 V3 r- c$ e5 `( l - ' Y, T- l9 F* x" X
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);+ h+ |& P% {6 N% R
- : U: Z n$ M4 g
- int size = (int)inputObjects.size();+ _- l6 y" B5 c' d4 s
- std::vector<IBaseCurve *> curves1;
. G5 z3 H l" C4 C& E8 n* [ - for (int ii = 0 ; ii < size; ++ii)! M( v3 p/ I- x4 V. ]2 u+ i0 h
- {
' E1 S' X7 f& ]' R/ M0 t$ K - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
! @; i$ |% F4 A$ A5 O - }
1 }" d% H8 V s a9 v, d% B, b - " Y x' E0 e) z
- NXOpen::CurveDumbRule *curveDumbRule1;
0 [* U: F+ [8 y5 U( P
/ r& L3 Z( @3 E0 J- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);2 q2 a# j# m4 Q1 b& s2 `2 m9 ]
- 2 b5 i/ u* N8 m; ?$ ]7 x
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
' ?) l, Z& u x
$ k, r. d4 B3 M( c/ R7 y$ Z- std::vector<SelectionIntentRule *> rules1(1);; N4 T7 X; h* F3 T# }6 }
- rules1[0] = curveDumbRule1;
% d& j! u8 C/ A" ~) x+ S - NXObject *nullNXObject(NULL);9 z: i: K- Z; `& i; H
- Point3d helpPoint1(0, 0, 0);" f G$ ^0 I- M5 _( Y
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);9 S' R+ Q3 y5 j% i
" x/ V+ F) s- l0 T0 R4 j- plane1->Evaluate();; @5 p; u0 Y* P' |7 M- {7 L9 {6 V
& c1 @' p' R9 w9 X4 P P- projectCurveBuilder1->SetPlaneToProjectTo(plane1);1 X3 b& V* m! M1 R6 H
8 R/ s: W# F( y* j" R/ H- projectCurveBuilder1->SetGapOption(true);4 L0 }0 Y5 B5 a3 j( n$ j
- + h! n0 u# {1 j# n4 N" H. x
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
) E' j1 e9 ^; H: |1 _# W" A) S% {
( h4 n2 D1 K) j Q: ^- NXObject *nXObject1;
1 K/ {2 B6 K. }* y1 @6 i - nXObject1 = projectCurveBuilder1->Commit();
/ R: z7 V- l9 t0 @5 H
( ^/ x4 m% O* f% l+ W. i: |' K/ |- projectCurveBuilder1->SectionToProject()->CleanMappingData();$ _! I' r% ]9 F, L9 ^- s
6 }- F* P' A/ S& ^, f- projectCurveBuilder1->Destroy();! Z8 I. |9 V- c g% ]8 J$ ^8 ^
3 k# h1 i3 w+ M3 E7 X4 p- }
4 Y) \. b- X8 O0 X# q - catch(exception& ex)
8 R9 o5 b' \8 q) g4 @1 @5 n - {1 y2 T, g; c2 q- g' S
- //---- Enter your exception handling code here -----
6 p: d9 a: s6 \7 h$ Z - errorCode = 1;
6 e) E+ A. P% J - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
+ x6 {3 e' P6 B" k) ? - }2 m/ r! p" B* z! n/ R& k$ E' S
- : z" J. ]5 C: F6 e& B, c' w5 d
- return errorCode;* p$ n- ~1 k- O, C! V
- }9 N& I0 ?% |$ Q# C' e! o. p- R! `9 ]2 e# o
复制代码
2 Z7 V; X% m+ ] K# s2 a5 K, i& l g
9 e+ P1 ~0 \6 y7 _. Q; I- I/ i7 p% B
|
|