|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- Y+ }2 F" g; { A
, u5 m- c: ~* C! f6 E' E
2 t; Z' o L1 ?& RUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves( i' I; T' D( c# O7 `
1 a( V) B7 X0 q5 ?9 {+ S( k
此处使用的是 通过面的法向创建投影曲线,可以参考下!
- o! Y% |+ u: J4 }4 G
7 H. X1 _4 _ u1 Y( v+ m- F. R" A( v S5 Z3 D
/ a- r. M: g9 r& B# q( c) Z$ `3 V, W8 v G/ C
) |# F( \/ L3 d# Y) {# z7 w. \
, q6 x3 V# t, j0 X; x
7 q' N9 U) {7 D! }9 \1 W5 y
NX Open C++ 创建投影曲线 project curves
4 p& g7 n- q% ]3 Y E+ x
" l* b, u' a, m6 C5 \! Q& n% e; I2 t7 C
. J9 k* e1 j* m, i- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
0 E9 n/ y" s* r5 x1 ^% M - {
& f6 r. J9 M0 X% g, t6 ]9 l - int errorCode = 0;
4 u0 I. X; i, S9 m) k+ E0 q - try
+ u7 B: B! \4 P6 m4 f - {
/ z! h4 B1 N( b, D - // createProject curves* n; y, P4 u" s: w' X8 ?4 G& J: \
- 1 c( l& J$ I# u9 g4 @# F3 x
- Features::Feature *nullFeatures_Feature(NULL);
/ J$ g% l$ M4 w' ^& o+ X! j( w
. f3 B8 [7 f* t5 i" m- Features::ProjecTCurveBuilder *projectCurveBuilder1;. Y! ?; o+ D8 W3 ]4 X5 ^, o" W5 x
- ; k0 r, {7 i/ _5 x9 N
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);) v' ~1 `) ]3 Q2 N4 ~& `
X* {& P, u" y8 Q* q' b3 Z2 c- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
) S& [; f! x t" F& z' G; o7 e - 6 u8 f, `/ D* R4 h
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE); I, L3 o: [/ g$ |4 U
+ [' y" N" C; \1 Q" X, Y- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
) M& P, i0 S2 i, L+ K+ n - ; t$ b3 k2 X6 z
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
. h# g' s' Y# Z, V5 X3 A
: N% z' G" Y" y# H$ v- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
. ? Y; I' w$ W$ H1 v5 K
; \* z( \" [" ^: a: R- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
$ ?& _! T; ~9 ]( b, \. x% i - - i$ [( \8 D- g
- int size = (int)inputObjects.size();
5 F6 v* B8 }4 m6 V6 C- `1 D z - std::vector<IBaseCurve *> curves1;# |" N" D! `/ b5 _3 K* _
- for (int ii = 0 ; ii < size; ++ii)
- K4 Y5 z& k4 A8 t, U3 B; N - {7 G3 j" \, ]* U1 s
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
t+ \3 L. m) c# G. L% C - }% @3 D1 o2 r4 C2 [' V
9 ^+ G! y* c5 c: y- NXOpen::CurveDumbRule *curveDumbRule1;
9 `" m9 x% ]9 q9 a3 G M
# z3 z0 {; p( m+ ?6 T- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);3 h2 q3 M/ _4 z I' y A
- 2 ~7 O9 h* e" L4 Y4 A
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
3 K8 I" Q- n! ~* `% @ - * y* D' U6 \7 Z0 m. [
- std::vector<SelectionIntentRule *> rules1(1);) G2 X* `4 b: `; |
- rules1[0] = curveDumbRule1;, J8 P! n# c. K# o# P
- NXObject *nullNXObject(NULL);
* F/ S* C$ T- ^0 m - Point3d helpPoint1(0, 0, 0);
7 ?1 i ^; H3 A2 t' K) H2 n# U3 O4 i - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);" f! D4 a- X. f: X9 s5 `) ^% M5 L3 V
( W, C8 j% P# W! H8 v4 r- plane1->Evaluate();" n# W {. R1 a( b7 O
. i- {3 z. q" m; B, J- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
# l* U4 |* r, L, T: p3 w: p( A! ~ - 8 |! f2 ~9 J$ j
- projectCurveBuilder1->SetGapOption(true);
# U/ Z. c1 ~7 F0 N9 a; q7 y - 4 y4 l5 v l: q) m$ c6 @1 n, @
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);. T. G% ^$ W% v' s
. w" ~- b& u& D2 I) d# I- NXObject *nXObject1;9 o$ X7 m3 b, ^" L. n
- nXObject1 = projectCurveBuilder1->Commit();, W5 G1 W1 k& Z7 `8 T( x
8 ^/ E `+ f" C2 l- O! ^- projectCurveBuilder1->SectionToProject()->CleanMappingData();
0 ? T& {: E1 d+ o4 f' m( X1 R - , m( [4 |$ h# f1 I9 _+ E: T
- projectCurveBuilder1->Destroy();
# p8 X: t0 H' d c) n3 C: U - % G; E5 E. A e3 r
- }
$ ^+ V' L8 c9 E) r- [& Z - catch(exception& ex)4 O" s& l1 V. s, r0 u& {, O, i* T
- {
( E5 `, j! B! N! K" N* z2 } - //---- Enter your exception handling code here -----" j& }! j) A, g: u
- errorCode = 1;
. X. `) B) E6 o4 r$ p9 R - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
& e* u/ m: d# h7 o - }
% c5 H! ^" _0 i6 Y* a" L7 o6 C - 0 C; S) T) K6 W( a% @8 }& n
- return errorCode;8 b+ b- ?9 i2 l+ Z8 b4 a
- }
# p$ T+ l8 ^0 b( l
复制代码 ' u0 w4 ?% y# m% C; R0 N
4 A. d. _* y! ?/ i$ G& Y! G$ P. a+ ~! _, ~# l; D
|
|