|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
% t/ @6 h! x7 C- p& S) y" f
& S9 W O& x" |" p4 B, `
7 M. @7 d4 k. Y0 c1 o7 Z0 Z( e0 {UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, i8 E) y0 i/ h6 g) {/ H, v7 a6 M6 J+ P" P- J/ e2 Z# w3 O. f" w
此处使用的是 通过面的法向创建投影曲线,可以参考下!" @# J/ {+ L7 a5 S: S
. B) Y, [( L0 ^1 e3 E( P" p) b4 n8 r' w2 L
2 _* ^4 d/ F7 |6 q, B7 Q2 P1 r
0 {1 P; B, W! S7 U# e7 p& R
/ W' m4 p' q7 v# \6 s
* }& L8 a5 Z; o/ [% h
$ W; p3 I; n2 h, P, R
NX Open C++ 创建投影曲线 project curves
3 S4 g* z1 v2 q- y4 Z4 J# {# i
6 B. j; ?& c; b* _5 q1 T
8 ~9 u- C0 j4 a: f* T. A
- " M- Q: X1 ?. m2 e
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)4 m5 L6 _0 |+ H: l0 _1 X
- {1 k+ i5 D A8 E" D5 \' Z# ]
- int errorCode = 0;- Y& |5 G- W) a& }0 Z
- try" ], E. \7 }9 u. {. W, G! }
- {
" y- ?( g4 n, j- t( w' q - // createProject curves1 @" Q" b9 r) j! B" _
& P' \. m9 M7 g: @. |9 F4 O1 x" ?- Features::Feature *nullFeatures_Feature(NULL);8 r. Q$ x0 ^3 b) Y I) ^( K% Q x3 _
6 s* L9 ?' f; _; L# G- Features::ProjecTCurveBuilder *projectCurveBuilder1;
* ^) Y: w+ R% t: ?8 i$ A
( C) W& i4 [# k% Y- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
0 R( h! N/ k ?. ?5 ?6 ~: L
3 h3 R1 \: {" y; S7 e4 B9 p' }- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
% o b, c, C+ L" s
; D3 K" G f8 j) c% K6 B/ ?$ e- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
' c' U# n& j% i% p
1 @ l0 }- Y- v8 n- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
/ V2 v z$ P3 _( Y5 M U8 S1 i% z
* @! e( Z8 y2 U+ j4 ~8 {- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
6 n9 s U( U- ?: Q: ^
. `- w3 c9 b. ~: G- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);0 G' f" H; n+ ^
- 5 {, I- }+ X: P! Z
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
) B5 T5 G5 U3 Q0 d. e - 8 j( O/ ]6 W& ^
- int size = (int)inputObjects.size();* j, p- H5 B. X& y4 ]1 x$ h' }
- std::vector<IBaseCurve *> curves1;
|: f: t; N y6 R - for (int ii = 0 ; ii < size; ++ii)* ^; y8 f1 j" j5 w2 I5 H
- {+ o9 B* \. |, E5 v: S/ @
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));' q- G) Q' ~, N
- }+ G% A6 a0 z. o$ m# w) H
- 5 P& ^- J8 X9 W
- NXOpen::CurveDumbRule *curveDumbRule1;6 J7 t [# G3 ?3 a' K8 O
- * x0 C9 a0 q! {1 L6 b
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);0 p# R- w# @, O! w5 h
- , H3 y: I5 E% L( N) d9 S+ w
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);7 O4 ?: O1 K6 N3 [' |
- K3 A: a2 A6 G; b5 {- std::vector<SelectionIntentRule *> rules1(1);) b$ ~$ P# \8 B2 ]$ K% m3 h
- rules1[0] = curveDumbRule1;
8 }8 s6 F! P6 }% e- ~" } - NXObject *nullNXObject(NULL);8 K) W, ?3 ?9 O# c" z- |
- Point3d helpPoint1(0, 0, 0);
$ X8 r3 D& G: c9 O/ i3 _8 ? - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
& _- f) c( r4 N9 z- S G: U; v - 9 w; d& k" r; U0 f9 Q) R
- plane1->Evaluate();3 t% r7 k! i* U3 j! X
8 u4 _& O4 t! T$ S3 W6 S- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
5 M; a& j5 ^: L0 X; R
0 M/ W: I/ r0 X9 ]& g- projectCurveBuilder1->SetGapOption(true);
' {& ]- a: a- N& d! b - * m$ d) i5 \# C& N% K
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);+ \7 t2 h7 _# t. F+ [
" X# I5 P8 G5 `4 V- l6 t2 e- ^ x" R- NXObject *nXObject1;
% \1 f: G( H0 e/ n$ i - nXObject1 = projectCurveBuilder1->Commit();$ y' p, A& K! J& r
; x$ X2 L, F+ _, o- projectCurveBuilder1->SectionToProject()->CleanMappingData();6 I, z' H _. F3 P& m
- 0 U3 k2 B! Z) d+ Y! P; K
- projectCurveBuilder1->Destroy();7 r( T) `, s F( J
9 [% o7 i+ T* A- |- }9 d7 ?0 }/ G6 f! l/ V; A& `) F
- catch(exception& ex)# B2 H3 b0 X' f2 `; @' p
- {
; f" l7 c3 Y" ?7 ^: V8 t, v( [" b9 L+ s - //---- Enter your exception handling code here -----
: F) z, c. ^0 K2 I& r! |/ g - errorCode = 1;
& b( z) G# Q+ F6 @8 ]! G" t - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
4 G, Q* j9 b. ~, i$ R$ K# { - }) B4 E! [; O( O( j4 G1 z
& J- k% O; v" Q9 y- return errorCode;
" x; S( N* A( C - }: y% W( K" N2 B! t C# ^
复制代码
# _1 @6 x% M# W* d$ `6 p2 A5 o$ V; @( C/ z! `/ H
; r M& i V7 L( v; h8 G3 V |
|