|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 R; f' U G$ s' a2 q' q
9 g5 V; E: ]2 _+ V6 [2 k% m+ [3 y
8 u! u( D9 W. F/ c0 C' v" \ \UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
) G# [$ D$ r. T" f- ]4 ~
8 {& x. B0 Y9 I |8 Q2 C; J此处使用的是 通过面的法向创建投影曲线,可以参考下!! N# M8 D) f, h9 j0 s) ^, e+ ^
# w- e* a0 }: b e& N
, w$ y. K1 B, N: m4 |, g/ K
5 C: ^7 k; k4 G( O4 c" q+ S
/ G4 s: f7 W) x( R$ R: S
, Y* N5 V% ]; t5 w2 p$ R# T& Y
( L3 e! D5 j8 D7 ?3 h2 G" D
/ w$ x) ]3 I$ O+ v Z
NX Open C++ 创建投影曲线 project curves
; d4 W5 B5 h9 `4 L/ k( D
. w: K7 M, S) J# {, s
5 c3 D" C& Y- E) Y* y
- 5 Q3 i& L: w: s5 y7 N+ d
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
4 R7 c H8 D4 D2 b# w - {5 _2 q4 [1 y' ~5 _& B, y" N% t
- int errorCode = 0;- \+ T" f3 t! [6 y: G* Z) x
- try9 ?) \+ ~; p' }: B* ?
- {$ ^. n% S) K. v- Q9 T- Q/ v4 l; E
- // createProject curves2 S+ A- P T7 k# K5 q
- + ]1 `, @& [6 Q- J k
- Features::Feature *nullFeatures_Feature(NULL);
6 x% @9 K2 W9 K- @- X% V. x - ' T" `' U' L2 N5 Q$ l
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
' I) H- U) e- U: ] - 9 {+ L; h- a4 j: D: I0 [1 w
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
9 m: r7 x; Z; D. d: c9 F
5 A, J) O! D0 q! m9 H( [3 _- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
8 Q7 D$ c& k4 ^+ F; r+ O; c - 3 ~- Z" Q8 u, q& ]
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
( w- A0 T8 @7 e7 z: C1 J
8 D& u1 T& x+ _# ]5 P! [/ v; f4 S- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);( x' Q2 C* E( T6 ~$ _. E0 k: B @
: b: u3 |) t: R, d' f4 J3 J# Z1 v- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
( l5 z8 S5 u4 i' ?: T - s! S3 n' a7 \' N
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);) y) r; @' |; p2 I9 h
0 i1 n2 d c% |2 r5 z! b- h- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
Z y7 U2 x$ h9 l5 l# ~
- A" \7 L: w, C- int size = (int)inputObjects.size();% I8 f( l" S" j; T" ~6 m0 S
- std::vector<IBaseCurve *> curves1;5 ^5 r7 N+ K: l' n( q( `! g7 L
- for (int ii = 0 ; ii < size; ++ii)5 J3 g; E5 j8 @3 M3 C0 B
- {% d, x' L' e0 s
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));% }* }6 _4 L$ z) B
- }) E7 X0 U: S6 e. g5 M) B
- * f% d$ K$ T- V
- NXOpen::CurveDumbRule *curveDumbRule1;4 y6 h, `1 U+ \, g+ M/ }
- 3 p+ f t, |$ q" m5 d
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
! ]% C* {' i9 e0 y6 ]9 F; N - - \; B9 n- A! b: M- J
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
y$ U( [- u+ ]) R- ?
$ f- [$ d$ K: ^- std::vector<SelectionIntentRule *> rules1(1);! b: |( H* G7 d9 U) m( `
- rules1[0] = curveDumbRule1;4 v, _* \' v* J
- NXObject *nullNXObject(NULL);
* z) P8 P3 H& K3 K - Point3d helpPoint1(0, 0, 0);
. J& b ?+ E; f6 X* V. A" f - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);8 H, h" q4 n& D' z
# R3 n S ~2 _! ^7 L. g% B- plane1->Evaluate();' r) R: o3 U, n" C* ?. F: p% K* ?
. K- F& v( a6 ?. S0 s- projectCurveBuilder1->SetPlaneToProjectTo(plane1);! d; O1 `& Y' E5 B& D- s' X T) ~
% x2 t- j8 s0 E- projectCurveBuilder1->SetGapOption(true);
6 e- V3 g# P/ N2 m! o
* |$ P/ H; T$ X( W0 Y5 h2 i* t4 R5 P- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
. B3 J) T1 l G1 |. q6 R# i1 k6 V - & c9 e5 \7 a6 `2 X
- NXObject *nXObject1;8 A1 B8 j' a) X) u" i! ~/ A$ u$ j& r
- nXObject1 = projectCurveBuilder1->Commit();
. T# q9 ^ ^4 I: n' T
" i4 h, E3 S" ]- projectCurveBuilder1->SectionToProject()->CleanMappingData();
3 W% e9 T ^0 `6 L/ V - ' N% Q& ]1 j, s. P. O! W
- projectCurveBuilder1->Destroy();
- x1 U- q& H/ x$ { - 4 a( o$ |' _! d' L
- }+ r" p0 j+ H% `$ S Z% Y
- catch(exception& ex)8 T3 M% Q0 Y- T9 G0 m0 z& {/ j
- {9 T1 p. j5 b/ ~/ F
- //---- Enter your exception handling code here -----
0 C9 o: x4 x4 `* ?$ s6 U( \' q - errorCode = 1;
7 }9 J( o7 ~) C4 g - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
3 a% _$ w6 j6 K - }# ^" O% a( ^9 Q$ g8 ?3 m" O
- & e* e0 d3 D, {4 F2 A# L
- return errorCode; L$ [( k1 g: ~2 F- @/ s
- }
: \9 u; L; c5 J% Q0 o3 L
复制代码
3 C8 D- a: D1 j; k4 {, o4 g
0 z4 K3 `, D4 H& G
7 O/ ]/ w; s O8 P |
|