|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
[0 b! k7 d3 u- U1 A) @9 g- k$ |, b% c) \2 K
+ G% x/ ~) p% o! o8 U$ B7 BUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, m6 I6 a' H0 e( E( L7 L0 g; c- u3 D- G+ u9 u" Z
此处使用的是 通过面的法向创建投影曲线,可以参考下!
1 {! P, O# T, W$ V6 |! N! l( t0 o3 U3 Y3 Q2 r
( M" \$ R# X" k" e
3 G2 P. O3 Z4 P
2 o( g6 C P" x7 D8 ^$ I
& Q( E- M4 R/ `! ?( \
3 {. p C ?$ H& R% ~9 n- d- x1 {. x, }9 C( }% `: v8 t2 ?
NX Open C++ 创建投影曲线 project curves
' U2 K/ n# m; j
! |# L) n/ @6 F3 T7 q$ a( [, L: f2 B6 O0 y* @4 D
2 K, U, n" K; |9 H* j$ O0 p) L- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)$ @% j6 l2 w& u# H0 U* s
- {
8 N. S1 u5 y6 j k- D - int errorCode = 0;
! d; }4 z7 k7 p. P4 R - try
/ s( M8 d3 T- ^1 `6 U7 U. `) I# ` k7 M& f6 ~ - {; F9 {7 K/ f7 k& m3 a- V
- // createProject curves9 X% p: m' |+ z3 p. X' x
4 A' r5 w# y% x: x* u& K- Features::Feature *nullFeatures_Feature(NULL);: d% F3 i' z0 f: U; g/ {- O
- & m7 I* u: u4 Z, E2 Q/ f1 z1 `
- Features::ProjecTCurveBuilder *projectCurveBuilder1;) [% ~: |2 F) O2 Q
- & c- }1 I6 @% i
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);! K9 U5 o& K' P# z# H0 Q
7 C6 j5 s" r- B- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);; `' [4 D* \$ K
- x4 k' C3 }2 t6 r' [1 m% F
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);2 t9 J x1 X2 P" Z+ A( S$ U+ M
- " }1 E( p( _. m1 c# i7 {0 S
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);. W+ z& _* q t7 t4 {
- * X5 A; p* G3 p! G7 X/ O: t
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
* \* ?0 W) f& l' T# u; m - 4 Y! f% H) h7 T* x) [% l
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);' E% t# c, @, C5 ^
3 I$ ?' k- l- p% Y+ ]" x/ W- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);; X) o5 f/ M0 c4 s
' n3 j/ S! Z0 y& H+ O; J- int size = (int)inputObjects.size();
! V9 H% t# d3 G+ O3 k! m5 v) C% r - std::vector<IBaseCurve *> curves1;4 X, q$ W8 I- X
- for (int ii = 0 ; ii < size; ++ii)5 Y2 m( Y _ Y, [+ f
- {4 {6 y' P6 k! H( h, x
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
) Z: T8 V7 l5 Y( h( ?) R - }( N# C, L' }' |/ |
- - J4 T4 }. o. L/ t
- NXOpen::CurveDumbRule *curveDumbRule1;
, k* H. p6 w9 U$ P6 o: ~1 F
; x# v+ L+ v7 v+ P9 O- v" J: m- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
* I3 g. M$ }: E" ?
8 `" [8 H: m/ e; S- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
6 [; N7 r+ Q% ? - # h; |# Z) j1 A1 R6 V9 O/ j* R, u
- std::vector<SelectionIntentRule *> rules1(1);
- w: Z; ]9 Q- v6 K2 W - rules1[0] = curveDumbRule1;0 J: V& b& b! q
- NXObject *nullNXObject(NULL);% s) g( `% q$ G: v
- Point3d helpPoint1(0, 0, 0);
' C: i$ d G1 i: f. F. { - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
# Z& \' e2 g! O1 a) ?1 K
0 x+ W! [2 q" U4 p. C- plane1->Evaluate();7 O/ z2 g. M( H4 c8 j( @7 J* S
- 0 C+ ?7 {2 m, s- e1 H4 ]
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);9 n4 U, U! y7 t) X
- % ^. Y% T' B" e9 I6 S
- projectCurveBuilder1->SetGapOption(true);* F. s O: a6 b) a7 O R' v
- & b" A6 i Q9 q' I: v
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
6 g$ P% c7 } @/ Q$ O' z - 1 w% k: Q- \: P x0 `3 h$ T
- NXObject *nXObject1;2 _/ A, p$ O: v$ F6 o" ~" j/ ?. j
- nXObject1 = projectCurveBuilder1->Commit();1 L$ w4 w' c5 z: Y' z' ^9 Q
- ) r3 M8 m* l* h. R- D
- projectCurveBuilder1->SectionToProject()->CleanMappingData();& n- E' P7 V7 v5 ?( A3 a6 c' s
- % G; v' z% F( J; G2 B
- projectCurveBuilder1->Destroy();
8 q! D$ W; w( Y - " e" y$ N& u3 E6 }- F$ X
- }
6 n- g/ H5 v& u - catch(exception& ex)! q, g3 `& T' T; I% [2 E
- {
5 W3 B6 q# l; Q: D- R& P - //---- Enter your exception handling code here -----* d% g9 r- K9 t
- errorCode = 1;9 O: k4 d5 k: K! ?5 `' u! \
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());6 h v2 j. U& s% r7 x3 m( I
- }
. m3 X! T8 S/ z( p4 V* _1 M - ! U, ^& q$ y2 L: s0 Y" q
- return errorCode;. _6 A( J3 v2 n3 w
- }% G( [, ^5 s8 u* ?
复制代码 ( ]+ e" A1 S- _1 u
+ G% `6 E4 O3 Q3 P. D9 p3 K" Q- H; C" g" O* j$ W& N" `1 A
|
|