|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 q6 L. I6 i. T- p( Y2 _4 B, q8 n3 A# q
! ?/ U( m% R8 `: Q9 y s. G8 G
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
6 T6 Y, x1 p1 K' r- L
2 s5 x8 [' N& B9 R此处使用的是 通过面的法向创建投影曲线,可以参考下!
' \& z7 X( k: L9 z v. V
3 c8 l! j1 `$ l4 V5 t
$ W3 ~! V+ t1 {" Q8 }! N7 O
& n; K) [* p% T: b, m6 ~
' R. j# j3 C! L6 A2 t* J
' a) {' q; P3 C0 e
, {# I' ] `. g. H, n- q/ A7 q5 U2 E2 u# E9 P
NX Open C++ 创建投影曲线 project curves
' b) w# g* y9 a0 Y d& \* P2 ?
2 N! u! n* r: O j% ~6 d
: n8 r2 O& v: a- 3 E4 v/ t( g" U5 \' {" {0 Z
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)3 W& f+ J' J( T5 H! r4 u
- {3 ?3 B2 I$ K/ y9 d# a, ~! O
- int errorCode = 0;) \$ h- T4 V: L+ W
- try
( Y1 h W! J7 R; H - {
0 F' F6 J4 [" t1 r9 B - // createProject curves
5 `$ s7 _ `+ r - * s9 o* ` K; T. h6 S Q
- Features::Feature *nullFeatures_Feature(NULL);
' |7 B) y, p" w$ `( l3 p5 z. s$ }) B - , C+ M5 z: q# C* t0 s' w
- Features::ProjecTCurveBuilder *projectCurveBuilder1;9 S( `/ y% {" ~
1 S/ l2 H1 n F) y3 U8 s- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
4 B3 f% b! [% X
& M; B; \* v# X. c4 m- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);! B* i. K9 O$ {1 b' s# c
0 O" J% X( M9 o/ L. n! n* y- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
: R, B6 l/ v# R4 N
6 i$ L/ J# @. `- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);& J/ O8 A r& X' ^: d8 b
" S) t" o; Y# u3 I3 o7 S- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);- \) `2 a9 r6 V5 \- M; E" o
- , Q0 e* D6 C1 h$ `5 A* i' b p6 b" _/ G
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);5 L- [5 O# t3 Y2 T* Z' _
- & V& s; H7 o* }6 d
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
% T# P+ U( M% l8 V5 I: O( @% A5 S
. X* d9 d9 m& s- int size = (int)inputObjects.size(); ^4 y& O: f2 @/ r
- std::vector<IBaseCurve *> curves1;
% @! v3 P. h1 w3 c - for (int ii = 0 ; ii < size; ++ii)
5 S6 U8 p% I/ T Z6 P - {
8 H, a7 L0 f$ `7 R* ]' P* [2 L2 u - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
; g v7 ^/ s% F - }5 N& w" `+ f* Y
6 c7 r$ f; Q0 d- NXOpen::CurveDumbRule *curveDumbRule1;
7 q6 C" y) ^6 l8 s! [' w
9 r) b: H; j) m# \- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);) q" o) N4 ^0 h% U0 J$ u
0 e8 O' C+ F* K+ w& a- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
' t1 [: H$ J. c- V- |& d
- |( }* R3 r Z9 m1 O9 p e+ z- std::vector<SelectionIntentRule *> rules1(1);
' C1 S/ R4 Y: ]5 ^# b$ f - rules1[0] = curveDumbRule1;
5 o9 t" k. |2 D; B6 @. _ - NXObject *nullNXObject(NULL);
/ D" p3 j( x! d( N% g - Point3d helpPoint1(0, 0, 0);
, L- J! L1 s* f9 _ - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
" ]( R# D5 z$ L3 b0 i6 y - I: W1 b+ s% e
- plane1->Evaluate();
" {' s3 P5 ~( R - & T0 x' L0 N/ i/ N( o/ \
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
$ Y7 \& `$ e' z - : d9 c- U- C5 L0 l
- projectCurveBuilder1->SetGapOption(true);' [, r+ Z4 T2 N- w2 X5 A
- 3 _9 k( y0 Q6 m7 s
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
3 v, a. R0 J' Y: P( `; I- r
$ a/ A3 i) ?6 r5 d3 L1 d1 [- NXObject *nXObject1;
! }" }/ Y# X- g* ], s/ y - nXObject1 = projectCurveBuilder1->Commit();
; y8 l( Y7 D1 X% F6 T$ [6 \5 x9 `
; O/ o. V$ F z- Q- K# N! z- projectCurveBuilder1->SectionToProject()->CleanMappingData();
6 P9 w9 \: T2 ?' R2 ^# W0 ^
4 f' {6 p! O- @# E G ]- projectCurveBuilder1->Destroy();
2 P, ?+ _2 T l' B( q - ! a6 R; F% p ]4 @" I: d, \' o6 B" L
- }5 L2 x4 j. x& I0 N0 E! ~
- catch(exception& ex)
6 l5 H6 z" ~4 A- ] - {
0 M4 ^% d( I. I% Q+ V - //---- Enter your exception handling code here -----# X4 j+ q- t- F. E: \
- errorCode = 1;/ X( ]0 ? ?( `- A5 O: r. ?
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());3 U+ ]6 D4 R2 @" u4 G, |
- } m; R( h r8 O) m, s4 }) E
7 V1 L. x3 b I/ p" g- return errorCode;2 ?( l( H" u8 V- Y. ]2 P
- }
% R- H, |) m. c
复制代码 ) \) v) {. X% d' v% R u
1 t, s$ g; k9 A# K
. q6 ?9 c* ?8 l |
|