|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
W9 C7 X+ I! P; Y: o) F; ]. a4 } i# z' J
& ~9 H" z( }* y: w: ?9 [
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves! L2 U" P4 E% O$ |1 b7 d1 J
; H0 h! ]9 a4 O$ H/ C
此处使用的是 通过面的法向创建投影曲线,可以参考下!
/ E. _1 s W; v) A- R, v
( v9 c5 H- ]" {0 G9 G
2 L: h4 Q) k6 u& \0 T# `
4 S+ R/ k3 K& S2 u" J2 w
: ?9 D! x6 o W( h; G
* N [; P. v* Z- D( n J' W) W# k5 g" B' U H# u8 V
5 J: w1 i7 g& ^1 R: X$ G$ T9 a
NX Open C++ 创建投影曲线 project curves
5 D5 J0 m" |7 y3 _( ^0 j' S/ P/ k M1 N/ {
6 q3 d" S* K9 L$ H3 G( a8 f* o% Z
{5 _- m* |% F' [5 ~' O- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
! N$ P* Q" ?# D8 |8 N - {
( H: N5 ]% t \9 l0 w! f+ l - int errorCode = 0;9 U1 u: `4 S+ R
- try
6 t, w8 E, o9 E" ~ - {
. }% f* [3 @' o, A' S# S - // createProject curves
$ c* d2 X0 y1 o) B2 L
5 D5 h% V+ M: p- Features::Feature *nullFeatures_Feature(NULL);. g0 V; a& `% T2 v% m% b# j% S: _/ q
% L9 d4 D% e; [ L6 _- Features::ProjecTCurveBuilder *projectCurveBuilder1;
3 ~4 q$ n. ~3 q+ ]$ u) Z - & p4 p7 `. p% {: l8 n5 t
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
( ^8 h- A }, E$ N" ]5 S! x, f
! \+ C2 j' V Z- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
. {7 B n7 [) a) c% ]/ y7 { - ; m& d. O" G1 l( ?, \) |5 H
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);+ ^6 }- S) r3 t: U- \8 |
- 3 R Z& i% k0 t' m2 Z
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
- _5 V! t7 ~$ A# ~- c
# p i& U: C S. X& R$ D5 R, Q9 E- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 H, J4 ]9 _# E8 j8 d2 {
x/ U9 `8 P$ S( A8 k/ |2 r- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);& Q9 X" |+ {0 n
/ J% I' x! N( M# o* x' x% a; H- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
5 b5 G; Y- Q' d2 l z1 @, f - $ E1 q( V$ ?( e2 i9 p% u
- int size = (int)inputObjects.size();; v" E6 r8 t0 G8 s
- std::vector<IBaseCurve *> curves1;' Q, {6 t8 c+ B% f) K
- for (int ii = 0 ; ii < size; ++ii)
. `9 e3 x6 d7 i/ q3 X - {
: B5 W! M. c7 [6 Y- N( ]% ` - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));7 C8 m, b) P5 Q( I( K
- }
1 K3 H" u) c( s) o - ! u8 |: ]3 x* J }* a- {
- NXOpen::CurveDumbRule *curveDumbRule1;7 u: a O1 }+ Q, d/ Q. a$ m; N
- $ n& q/ Z6 q# f! ^
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);9 K: d, t: m" ~0 s
- # r1 b+ ?# D; ~0 H& h% h. @
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
1 b3 N1 c3 U; p& F. \/ G* o4 Q0 r1 s - + A/ O, l9 f& u$ ~, C" T
- std::vector<SelectionIntentRule *> rules1(1);4 A( W. t1 V+ Z
- rules1[0] = curveDumbRule1;
0 h4 j8 G2 ~5 Z) @1 ?: B- |5 N - NXObject *nullNXObject(NULL);8 X0 C" [3 P, E3 ?
- Point3d helpPoint1(0, 0, 0);! V \( J7 v _& w
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
; K$ K' j" S0 k9 t - # B* n) ]% k' ?+ _
- plane1->Evaluate();
" H3 O, [0 k$ P - 9 U; P9 l4 G8 Y* `' B, D# {
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
8 s+ k' x$ h% @3 O( {0 J) {
2 b7 N3 }: t4 C9 C( F- projectCurveBuilder1->SetGapOption(true);
5 P/ m$ U+ g+ M8 ?8 j3 i+ A - 8 ]/ N3 n9 q% ~7 R. e/ ?$ W! f
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);, `- y* J1 A! x
. Z6 n( ^7 q4 k6 G+ z, k I. w- NXObject *nXObject1; J! R' `$ s% L6 H! q$ u: T
- nXObject1 = projectCurveBuilder1->Commit(); B+ h% L3 g4 X) r9 B" E7 I
- 7 J% o, |6 ] U: j6 F# c, X
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
( Y$ O( d! {3 n
$ m8 R7 ?( e- q0 s- projectCurveBuilder1->Destroy();
6 y5 D0 m% r# @, x
( U8 N0 c1 a0 g! X/ u, e o- }
* u3 ?# M, H( R4 W; S' t5 z) S - catch(exception& ex)
, V- F8 ]. _ t/ }3 s5 h - {
' ]+ @1 c: B3 f8 J" @& n# p - //---- Enter your exception handling code here -----
" z% H% O/ E1 H4 `2 a - errorCode = 1;. \/ `( M x8 d
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% [6 {% V0 w" U) G+ s
- }. I! }) w# X- f+ T" g
- * \; R% u* z* ?
- return errorCode;+ v6 ^8 e8 T4 A# I& W
- }
& k k; b, T$ P
复制代码
( b+ b" \! V$ h- K+ v
8 B3 y9 _9 i/ ~5 l2 h
& F6 G: U4 q4 @7 O- H/ T$ ~4 O |
|