|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
! K! q7 z- F2 D2 e. O. w# y
3 s; Y; p1 F, \5 P! ]; o
, v3 E: Y0 k; H) |UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves, V" Z3 W. ` h3 a: B5 b" a
2 N1 Y4 W6 c6 d$ ]+ g1 a1 w0 [
此处使用的是 通过面的法向创建投影曲线,可以参考下!) i4 {7 g+ m/ P& F
$ e/ N9 ~0 u" x/ Z( E# H+ i4 o( E+ w: R# S* ?7 f @
% P( ~0 ~" P4 R
6 y, U' J) F: v& r" b
+ R ?/ I4 T! D! |# E$ [. u
8 D! `' b5 N, A
; t0 M* P$ f0 b Z
NX Open C++ 创建投影曲线 project curves
1 o8 `$ P! U/ W" e
% b' A6 a& f# ]0 M
! }7 ~% j* @) |
- 9 j6 I' J1 g( o, Q
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
* Q/ }+ i- |. }- u- B& K9 J$ | - {
$ P! ^6 p+ u% e2 X' C! q - int errorCode = 0;# ?" G, r1 c* [1 x2 v0 C- c! W% a
- try& c" |, I7 l6 L2 w
- {
8 `' s2 {9 B0 _5 t( U& \& N - // createProject curves
: s) y7 a/ l& `1 I8 u$ E7 u - ' C4 k& Y7 q' q0 p
- Features::Feature *nullFeatures_Feature(NULL);4 }6 u/ A# }7 H, R8 |( E& T. j
! U0 [0 n u1 O& N' [- Features::ProjecTCurveBuilder *projectCurveBuilder1;
0 \2 L0 s5 V5 `) m( |( R# t; v - + N' K$ j) Q4 D6 f
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);' w) s/ c% p0 p$ u, T
" q* c" q2 R7 [ e" b- j& ?- E$ u- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);. O2 G1 F) D2 i7 {
- ^8 p8 E+ \% S- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);* k4 v; s. W, T$ D I1 R
& v- d) d: Y( w* N* G- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);" S3 }. @+ s1 C" v( p8 F' ^4 s
- O Q0 F; a# }/ Z- W7 V
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves); M2 f1 b3 e/ @0 C3 L8 V0 D: {: g- x
) N+ {; Z) k8 @: P2 |- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);" Z: r& o! i/ x" D
- 5 _$ |2 X1 R7 M O9 ?: q
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
+ q1 T9 K: R- o3 Z) r: @ - ( Z* [- `, a4 o- k `! F% d! G
- int size = (int)inputObjects.size();
4 d7 f1 o' m6 j, {5 x$ ~ - std::vector<IBaseCurve *> curves1;
+ t W# [( U* e - for (int ii = 0 ; ii < size; ++ii). M! c$ X* x' D4 V9 L* A
- {6 I; }2 i1 I! W. J: V) y
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
, I# q3 l H% d$ J; b - }; f; v" B9 j2 t! V( H( K+ [
- 8 D7 F6 @+ v' J$ G( s& H
- NXOpen::CurveDumbRule *curveDumbRule1;
: z" A# P4 [& S7 O9 k, U - 9 s$ p2 A& B- G8 }7 }6 q9 s5 c
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);# l7 D% n# t) w9 p
- 3 M$ k- H. b h. Y* x* i/ k, Y# D0 M
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
0 p! C9 S. l/ z7 c9 N: z% N8 @' N
+ O# D; }& H7 G/ X0 d T3 G: v- std::vector<SelectionIntentRule *> rules1(1);( l8 W% w$ [/ J
- rules1[0] = curveDumbRule1;
! W( D2 d0 _/ B - NXObject *nullNXObject(NULL);
3 U; ^, K0 X/ d$ Q5 | - Point3d helpPoint1(0, 0, 0);7 M. u- E& u. y) A' u
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);6 e) Y. w- K k4 L% p1 E5 C
- 7 }9 {; G9 s+ z3 w4 Z. B* {( Z
- plane1->Evaluate();# T& A2 T0 Q$ c
/ D T2 [- z6 b* ~4 p8 q4 M- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
( {/ ]2 t5 ^0 a, J! Z - r/ @& `" E0 M( G/ h v% m! M
- projectCurveBuilder1->SetGapOption(true);
8 W9 J' J% v: k# O. h
$ a7 r; C1 l0 @! Q5 f- w# ?+ V0 ^- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
: O; ?9 u- v2 w! W' |: g
0 @( G+ t& n/ h* k3 ?8 v; q- NXObject *nXObject1;' c6 C# x+ ]6 r' v' {9 ?& \# e
- nXObject1 = projectCurveBuilder1->Commit();
, B& [9 q, }% Q& e0 N) y4 {4 e/ J
X; m( h% I0 M1 G! Q& K6 e; [1 k1 {- projectCurveBuilder1->SectionToProject()->CleanMappingData();
- `3 P# _' h, d+ F8 \6 q8 K+ V
# @) H* T0 @3 F! t- projectCurveBuilder1->Destroy();
% s; ]9 q2 X+ l
! ^! E v4 d* G# q3 e; q- }
2 p9 e$ S! s: d/ \2 V D) y - catch(exception& ex)
/ Y. ^$ Q* f R6 Q$ c, | - {& y* ^: k# j: v0 X) O2 ]7 [
- //---- Enter your exception handling code here -----9 {6 _* Y5 y, N2 J
- errorCode = 1;
: v3 U- g1 o0 O4 } - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 i: @ n& n; [+ t& v; \
- }" T% D* w/ f9 j X! S. I1 I4 @
- ' H# Z5 t( w3 y% k; X7 t, W
- return errorCode;- l& i" U, ]* J8 }% n R( n: @/ D) \
- }/ \( M! I& D4 `( Q& |) i/ [7 T
复制代码
9 i9 {7 X7 W X8 q* S
7 `' }* B% v0 p: o, _
( u- {- A+ |! B% ~) e |
|