|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 X5 ~: N+ Z& C5 G2 ]( C
8 B1 b) d0 n) N3 e: r9 N! C" O; Y
3 b% Q% q7 L( C' {UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves1 Y9 y) e1 j1 v t! }, C
9 O' d6 ]% T4 l: J
此处使用的是 通过面的法向创建投影曲线,可以参考下!
" t1 A, }/ g( ?* i% v, o1 A8 ~% I0 N j' u2 l, o
, Q' n4 M: i7 [) x6 t/ Z v- ~6 f" N- \; r: [
' T% @! v) H2 }* X& c5 \
6 k9 [) S! x5 s. c2 J( T, Q
& u7 x5 @; T. ]5 k& w
) Z2 A1 a6 x( [4 r" N5 j
NX Open C++ 创建投影曲线 project curves
7 I: ]: D( {/ @8 K5 t5 r
, m' ~9 K2 p6 }! n
: Z% f: C% }, a8 J$ d* Z# U9 \- ; N" U1 _5 n) M; i7 X
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)/ {( S. ^5 h' a$ N
- {
3 p7 v) ~' X# A& n, T3 i - int errorCode = 0;
2 S- o4 Y$ j" \ v- p2 Z - try- l; j5 R- \2 O2 e0 U
- {2 {/ Y. P& Q- M/ r
- // createProject curves
2 r E% L2 E& d" H1 }+ S1 ?
: m/ j; q. X8 `- Features::Feature *nullFeatures_Feature(NULL);
+ |+ @+ o, h& w: e6 [: }
. _) o4 O7 o/ I! A/ ?' V/ X- Features::ProjecTCurveBuilder *projectCurveBuilder1;: G% w/ \, w" h: B9 @) _5 r4 W! E
- M' f5 [& z8 X- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
4 e9 j4 X/ H" {+ Z0 q9 b2 E6 M+ n [ - " z9 j) ~' e% ?1 R8 Y
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);4 F4 E* \6 I& c6 W& ?
( }0 `! j; x1 e+ f8 ?$ F9 @- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);: L' q! |9 V5 w
6 Q0 A& l9 L+ R9 I0 Y2 j9 N- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE); d1 k- R1 i+ k8 l @) i& X+ E
- \9 I8 ~; |3 H/ R. F( P
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);9 b+ A: h! w4 X1 w
- , s" D o6 m" q7 D8 h2 a9 L
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
" l D) j" C' t: r6 U9 O - 0 z2 l S. I l& I; o# p; Q
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);3 Q; F* d% \2 S. J( w$ ?
- 2 P2 X- E3 c; ^3 ^$ L
- int size = (int)inputObjects.size();! O8 S5 O+ M: n4 ^) X
- std::vector<IBaseCurve *> curves1;
6 ]% F6 I8 }0 R: y1 G* J/ l }" ` - for (int ii = 0 ; ii < size; ++ii)
* w6 e8 l, d+ c, L1 ^ - {
0 @- I7 p: ^2 v4 U( d2 k- J; k - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));, M$ `7 K! `& q
- }3 G {' l3 j3 l% ^1 X
% M1 W* e4 k" d8 b$ U( n- NXOpen::CurveDumbRule *curveDumbRule1;8 D% [2 s3 i$ H$ s
; I6 q6 E, ^+ V7 R- I$ O- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
$ f8 c# U( S7 d/ j8 ~1 N
7 c- l% }) s0 F- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
+ L' C& D8 e/ h* U* E - ) @9 e- ]# ?, `9 U0 E
- std::vector<SelectionIntentRule *> rules1(1); ]) ]8 m* v! U" R( |
- rules1[0] = curveDumbRule1;2 D8 ?6 `, l# M: h; v& v, F% x
- NXObject *nullNXObject(NULL);) X1 G$ f3 r Q- R' n* K/ b
- Point3d helpPoint1(0, 0, 0);
& g! b0 M. c8 U/ ^$ r, p - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);: ]5 W( p3 L( F+ B1 a: G
0 n3 v$ D3 K7 j5 f6 |. ?9 L6 f- plane1->Evaluate();
3 J" w2 [4 L1 `/ Q* H q: W
* r/ h- z3 Y0 K: Z$ {& k- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
' a% I5 B0 S' [/ t) u( G" i
; j8 Q% S) A6 m! L1 R5 N/ o' H4 Z- projectCurveBuilder1->SetGapOption(true);5 C7 t' L/ \3 U* [: y3 l8 V% s
- ( d n$ s+ S0 y' L
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);$ V; v% C Q) r' R
- 2 L' v* @# E0 R. n* L' v
- NXObject *nXObject1;! _5 p. {3 e% ]7 R$ ]. r) d( S* }
- nXObject1 = projectCurveBuilder1->Commit();6 T }9 A# H/ y, p5 ]( a
- ( m. E3 K1 M& x* L: d& O
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
4 K$ \, j# G6 C' K8 T
# o$ B0 w* Z3 p- projectCurveBuilder1->Destroy();4 Z& q- Z$ l0 E
' g- u: s; L' G" L) _# X- }
8 A6 F5 l' |2 z! L; i. E+ q' t - catch(exception& ex)! V* v1 t2 \- \/ V0 q
- {
, B5 N% e0 X, E. B - //---- Enter your exception handling code here -----
: M- j g* U e/ W( x _ - errorCode = 1;
: R( u4 p/ F; T$ L" j, ]" ~ - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 l) u* ?8 u6 U, W- f
- }1 b! {: p8 \1 t6 ^2 _, C
' ]9 y: U; R' Y# \- return errorCode;
$ l$ O8 a/ g6 w" | - }
) J. ~1 l1 B- B# K
复制代码
$ }. c3 y+ e% K0 i# b: _+ q8 |
" b3 I+ ?! v6 I: ]* l
+ w3 L. z* y5 h7 ?- r& j6 u( T |
|