|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
" Y- y2 \' ?& S3 |" C
1 E/ \) N& |! P2 K. [
. _" K+ r2 M' h; F0 lUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves4 k9 e6 u4 [6 [# w& N* ^3 m5 V3 m
) x9 h' z- H" ~, D& Z此处使用的是 通过面的法向创建投影曲线,可以参考下!0 _! c8 C5 O/ J$ S4 {' o: z; ?
0 c5 s: Y: f6 L/ ~. R; P/ `
" P, L R- [& p3 S& C
/ n7 ~/ X, Z$ j z
6 t4 I! U4 k) Y; c+ G& w8 u- J6 ^/ a; u1 ?- i2 a. ` u1 Z- F
5 P7 u+ X1 I3 x' d
9 T3 \( k; S! E8 O h- z% @
NX Open C++ 创建投影曲线 project curves
: G! Q* b& o, Z# ?+ s1 ^+ B4 R
& ]. N T; W, s: _
: ~$ C) @# d* v H% v- / R8 c! r/ _' [4 {" Q
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
' Q+ P" K# m; [ - {
7 ^& U- s. N' t - int errorCode = 0;
2 C9 ^( n) {9 G0 v2 @9 Z) h - try9 O* z8 B0 l l
- {
7 w* C+ n" K9 t( { - // createProject curves
. \8 P+ }, ?5 N2 S2 h! U. j - : H* e: _ M# i' r8 `7 I& W" u% O
- Features::Feature *nullFeatures_Feature(NULL);' p7 ^9 J% ?7 A: H
4 F3 I$ z0 b8 m0 W" G% i- Features::ProjecTCurveBuilder *projectCurveBuilder1;( d9 t2 P* e1 S5 V H5 C$ u' w6 f
- ! H! s4 F9 D+ }" W# A2 I! E
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);9 A8 F6 g& c+ t# E4 q
x$ K# [" S9 r. |$ W/ k- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);, B* R/ z! p3 T+ i& R
- : V U7 z6 r# a( n. C4 o/ M [ `
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
* z3 L C$ B& D# G, F) e% V2 C9 }
4 c0 b8 |$ ^4 G0 K; q9 t8 G- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
# d+ I2 x1 t% Z4 W3 D2 u, V* d
K: x# p! R9 p+ w. }( ?+ k& A, Y- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
2 y- J8 n: `# \- O8 _2 o3 B
* x3 t5 W, F# u6 ]! s9 O- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);1 m- f& c- l( b8 Y, O1 H
- / ~% P6 T8 m* I
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
2 M/ s% ^* G" R/ `0 o
$ S4 o$ k! P; p/ h# @- int size = (int)inputObjects.size();! G/ W) c9 Z) n7 D( t G
- std::vector<IBaseCurve *> curves1;
3 a; e; [+ w ^5 X6 x0 O4 u - for (int ii = 0 ; ii < size; ++ii)
) q5 ~, ]- n' ] C( L) H4 y4 Q6 |' ~+ M - {
3 q( V9 k+ V5 ~2 _- x- J- f# r! v - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
; R' o. F1 I6 O$ h% } - }
x* V# ]; f5 o8 S/ ?6 X1 n - % V0 `& V& @6 F' g* M
- NXOpen::CurveDumbRule *curveDumbRule1;4 h* D J1 _; o# i: f/ H. V& q/ n
- * M/ I$ H; t9 {9 _0 n: R' h$ W
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);9 W2 X" N+ N. \1 H# C9 O: n
- ' ]! M7 Y6 G; T! v- z. A
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);4 ^& I$ U' B( u( @3 ]: I! C
5 v J& E. q! K# n+ X* S/ Q- std::vector<SelectionIntentRule *> rules1(1);
r% R" \" a3 r - rules1[0] = curveDumbRule1;
$ Z# @/ \% v" w j - NXObject *nullNXObject(NULL);5 K7 A+ g: `9 l8 I
- Point3d helpPoint1(0, 0, 0);, F& L c; F' W4 C
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
$ Z/ f' t2 X0 z' Y2 ~( K
4 {, }& T2 A1 r' l5 j- plane1->Evaluate();- p! U( z% G7 J ?7 @5 U$ j5 S9 W
3 Q* H0 _0 t r! q; z- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
5 C4 R7 ]7 r5 V; A- N
; m% z+ [& {& O9 ]& A* [ X- projectCurveBuilder1->SetGapOption(true);
* T& V: Q0 |5 D7 ~9 E
- I' w& b' i3 [! j: [1 c- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);. v3 Z0 d4 c. j4 A. `! f& F
- ; r$ i# G& c; C' ^4 D
- NXObject *nXObject1;
: }& ^' B0 b+ X- v - nXObject1 = projectCurveBuilder1->Commit();
! J6 {% s( g3 z; n- Q4 l1 j
0 l) D4 f: L* `, A" N9 U) X9 j- projectCurveBuilder1->SectionToProject()->CleanMappingData();
+ }! c( J* _! z' ]1 n
( u4 W8 H, B) N: Y- projectCurveBuilder1->Destroy();
; h$ r$ r! b Y0 I8 s
, X! Q3 r& m; O) ]- }
1 B4 p3 [+ j3 T, [( b) v - catch(exception& ex)
: Q4 l x* x `" B - {
6 Y8 r2 Y4 a S! o) z3 _ - //---- Enter your exception handling code here -----
U2 b( S# Q- ~# ~6 f - errorCode = 1;3 o9 t# q6 |; \8 n. q c
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
8 R8 b P& p- M9 f0 {( r - }8 Z2 R8 Z# z' n" r) c
9 a. }; D# a+ n* i! Y1 V- return errorCode;* Z4 H. S6 r U' y8 s" L% `" `
- }
+ Z# o0 J$ S' H; ]$ H: x2 h- x
复制代码
$ y# z/ a: @5 }+ {5 y
6 y8 ~2 Q1 O# [5 s4 \0 A6 A6 v6 _" @& b# s! s. |: D7 |# l
|
|