|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
, w a1 z$ n" N( \. ~2 a0 ?# J6 ^- l3 m2 F' @, ~7 M$ Y
, p! P9 \7 P% z$ X) }* m
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
$ ?' ^/ Q) ^' W( y5 G, A
x% c* N. o; Q此处使用的是 通过面的法向创建投影曲线,可以参考下!
+ k8 G+ F; m) H2 p) d+ Q1 |* K
6 ^! C9 e+ Z2 n i
; M9 ~7 m6 B) ^! J# s* D/ O% Y, p- A
1 } z: x4 [& a2 C' w8 I! h) T, f3 E/ n7 T% K
9 n! X0 O" J9 a# L+ i/ i+ k. R( a i/ v+ q# U" t& w, j
NX Open C++ 创建投影曲线 project curves
0 Y6 C* A: x. Q7 i2 p# o
* D1 b5 n5 K0 a* v4 S% f
, u, q/ Z! |* u: C
% T! j* {5 ]7 O6 S7 a: `$ q- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1) u3 k; Q* o9 R2 j
- {
& U& I. @: F8 u1 f! S0 x - int errorCode = 0;: f a/ x6 h" p, N6 H/ ?) |
- try: {4 c$ m$ s. Z) _9 c
- { N$ a' A# e" L$ Q- W
- // createProject curves: f( u, i3 ?- \( ^' O
- ' S0 H9 K/ ?5 U
- Features::Feature *nullFeatures_Feature(NULL);7 ~ M: S' P2 N1 G1 u
- ; U: c K- W( X
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
$ f* R; E& J0 r, v0 G* F" T" j& D
. b5 Q' t. X7 v0 S! |- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
& _! u2 Z' A( Y/ u+ e - 3 P6 N7 t7 W: ~7 p! _; j
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE); E7 T1 F6 B4 V
- - f8 Y6 @) h2 w5 ^! x, \' D0 B
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
+ I5 Y% l# s7 o# t7 T) C, b4 E
2 i; f" l: }* e8 e# ~- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);* ?9 a8 Z6 `6 q6 v9 k; M( J x8 r
0 V: }+ x c& l; \0 y) j4 G' j- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);) k3 P0 G: V6 V* a; s) ?# J
; p! f T; l+ K% k/ M1 B- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
3 N: e' |, W( B - " s6 y8 y1 P3 `% F O' C
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
5 `) l# \: S; r/ \
/ u, j6 {6 j3 |4 c; s- int size = (int)inputObjects.size();
, ?- a# ~9 F; j5 B5 I - std::vector<IBaseCurve *> curves1;
9 v# o3 E6 H9 L- N" t( C - for (int ii = 0 ; ii < size; ++ii). ]/ H" J2 ~& n _* C" f. n; Y- c
- {$ n2 n8 j& ]: r) }' V, N0 C, V! e
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));" @& u1 U* w; j$ E# C) J- c
- }- V& E1 O. E W: \2 t8 b
* J/ C E. U! V, J* y- NXOpen::CurveDumbRule *curveDumbRule1;) }; I% N3 l' s# |$ d: l6 x
, X Z- `3 M v r9 N0 C- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
. F5 X4 K/ b3 |& t% Q - 8 Z$ ^' P K# I T9 v
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
$ l0 f) B! g# q2 W7 m9 n - 3 C7 x, m+ Y1 W! R5 l$ L$ ^
- std::vector<SelectionIntentRule *> rules1(1);
) g: `2 L+ w! |! X - rules1[0] = curveDumbRule1;
% u& P4 J& K# K - NXObject *nullNXObject(NULL);
! a: I- m+ ~# T2 _+ h* P" v5 ` - Point3d helpPoint1(0, 0, 0);
4 @9 C k: f& f# W" H - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
' |2 @: ]& d9 I! W/ C" m2 v - 6 }0 @8 ?4 F; y: G$ j0 C( K
- plane1->Evaluate();
) U) o% |. a7 a# c8 _
3 c4 [, s: M# w- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
3 R: @% X7 g0 o - 6 n' K4 Q% w: X$ x y# s
- projectCurveBuilder1->SetGapOption(true);
5 p, N2 o4 R2 R |9 a6 _ - 1 M _$ u1 j9 _1 o- T4 ^
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
& e5 ?6 D6 ^/ O4 @- V" H2 T - ; C: L; t: W6 Q/ P# Z. U7 n2 |
- NXObject *nXObject1;
! A% x: W6 ]- U" {6 @4 P p - nXObject1 = projectCurveBuilder1->Commit();
: B1 R! t7 l8 ?8 e! o2 I# @. P
- _" k# e: J) W; O0 d- projectCurveBuilder1->SectionToProject()->CleanMappingData();
' R5 d3 z3 j# f# F6 p- J7 k
" [5 K; c: ?4 R5 Z% N3 B- g- projectCurveBuilder1->Destroy();
4 v- L5 i, B0 ^& q `, ?
3 ?# Z1 C& x1 D E0 z( C- }0 H* J6 h" ^- a& q* e+ B9 J0 w
- catch(exception& ex)
; H2 }5 o3 q5 Y9 q- Z - {
2 J" v6 q9 F5 Q" `4 d1 o/ P3 c - //---- Enter your exception handling code here ------ D; p- b' @, G A
- errorCode = 1; y) }- D9 E; k" Z: [
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
! u3 p- K0 H, u- g) D! H! h - }
1 ~4 {+ n6 {8 r& ?& e0 g) C - 3 M8 W, l8 R- k2 P) q( A3 p
- return errorCode;; `- F: I/ ~* v4 L
- }
5 T+ `0 n0 Q0 @* k9 `$ E7 }2 |
复制代码 4 g( Z; g3 E9 Y# _. o/ m
6 q8 y9 g( D. P1 F3 T
% {2 z6 P1 s6 x4 b |
|