|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 _9 S3 q. c4 [1 G/ a
$ Q; p# D7 J; [, a& j
x( j6 x5 X m- F yUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves/ O4 {8 u# @6 W: |; }
/ a) y* i2 e1 U
此处使用的是 通过面的法向创建投影曲线,可以参考下!6 h/ G1 B! H0 Z7 o
$ \- [6 j4 l- r
& @' D4 _6 n( W- U0 ~! F F$ J/ Y% a9 D; {% M. v
8 u; ~& G; l( ~) _4 b
1 t8 c2 @2 W* p4 N# H
! ^, b+ P& n2 C/ P! k# F. \( Q; N
NX Open C++ 创建投影曲线 project curves
! _- m4 T% h: m1 ^
* _8 h! V9 L/ d9 R0 \0 R5 L% N' _, m1 D
0 {, n& G8 q r8 `- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
9 M2 F, F! B7 Y, e, i4 T2 i - {
& L4 s0 v: b9 f* o) ^% b! j - int errorCode = 0;1 R e- a/ F8 _9 C! N
- try
4 N. S; p# O* d5 M2 R- V - {( y0 x* V4 u9 s& n; Y7 a
- // createProject curves1 j8 s5 H5 N" _% F" p8 V" Y
+ Y" v- A& U/ ^! X- Features::Feature *nullFeatures_Feature(NULL);* B" J, n9 T* t/ N, L! q2 ?
4 d# Z9 L0 k4 g3 S( ?- Features::ProjecTCurveBuilder *projectCurveBuilder1;5 j6 Z* P0 j) i; R
8 A' o$ a& f1 s$ X- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);+ q" c$ F p8 E
; z- H, x* _5 O. w- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);6 }, T$ W7 U! g
: `- W0 q% x- y( z3 p+ ~# T: l/ i# i- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
% B7 }# u* H, k - ) S" _- s9 O5 H, T* Z
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);# F: w8 C7 V0 T1 J. `5 ^
- * q4 s( n' w1 v% X* z6 o
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);. V: T# h/ V* w- q5 ~
- [8 N5 X* @6 s! g
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
1 G8 t I& L0 v1 l0 T - $ M; | ^/ G$ X# C: T; J# u1 ~& ?
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
% {' J: r, o. @9 ~3 Z - * j* m! d* g. t
- int size = (int)inputObjects.size();5 [' l4 i" b4 s
- std::vector<IBaseCurve *> curves1;% c' e4 C5 r6 l/ b$ S
- for (int ii = 0 ; ii < size; ++ii)) _2 z8 c& _$ v s' X: P
- {* K; c# Y. o$ Z5 o: o
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));' s: G ?1 ] {" v" D; s- `7 V
- }
# B* A( z) b* m: T: I
# J7 V9 _/ j5 x7 q: P8 j% K" M- NXOpen::CurveDumbRule *curveDumbRule1;; r, Y. T; @# W1 z5 W7 }
- * _+ q' Q7 V, S$ n) e
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);0 L- y/ v) E$ b; i8 C3 e
7 J' D4 o& k( M6 D, a- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);3 N2 @+ h0 _, D9 h3 G; }) x
. \: W" A, w$ O/ s+ M- std::vector<SelectionIntentRule *> rules1(1);1 L, H( Q5 u% k
- rules1[0] = curveDumbRule1;: E& I; X) T& [" ~
- NXObject *nullNXObject(NULL);8 \6 m* d, G& ]; b% H! D0 M
- Point3d helpPoint1(0, 0, 0);
* N' N9 C' x' M/ O - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);& n2 p( H" v! M* x" j) L6 s
5 c3 ]) U2 |* e4 m- r. |# ^" u- plane1->Evaluate();) S$ W# O& n& E4 j9 S: o) ^; D
4 W0 x! @, I$ `/ X/ U) r, j- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
7 j2 u6 ?4 j' K4 E% d" }2 Y3 a
: V$ g, {4 V+ p" C( z- projectCurveBuilder1->SetGapOption(true);
; G9 m4 k2 X$ K' T: D& E - ( ]5 S& G0 x3 p2 L
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);5 g$ y+ [1 U- v9 `# g. K5 }) K
- 8 X5 S9 P1 S' k I, H
- NXObject *nXObject1;. c, K' R' V+ h6 S
- nXObject1 = projectCurveBuilder1->Commit();+ i! {+ i: l% g# w
- 2 h* W/ ]+ n: v7 t
- projectCurveBuilder1->SectionToProject()->CleanMappingData();! A$ n: b8 `0 F9 ^ J( \& V! a
* S& K7 _2 H: R3 {/ }" ]4 s- projectCurveBuilder1->Destroy();
$ x/ A4 t8 h. \" ]4 S" v
9 R' B! ]' s* u9 H8 }- }4 X, k% K% b# m+ Y; i8 @, Q9 t
- catch(exception& ex) h% V8 W. B2 P g
- {
, K9 j$ G* Y; r% Q7 O+ y - //---- Enter your exception handling code here -----/ R" i6 R! o- F6 n, o! ^
- errorCode = 1;3 @# l, c$ j8 i
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what()); g$ O# }+ x0 y
- }
2 [) @# Y) f4 B/ R2 X - - a' |/ [ _! h5 H5 w
- return errorCode;
( i& X" z& ^, G/ `- `! ` - }
) i. o( o; P2 R% o& b3 X" _% m
复制代码
" g8 |4 c; D7 r9 k; [; t- H& w* l9 w v3 C. n+ m) y0 I/ ~
0 L# i2 q1 D8 [5 l8 X0 W* n |
|