|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1 g- V7 S7 f. l* E8 o) p/ e! [
% J: R1 R/ P( m# O+ t: c4 g8 ?
6 D# B* q; G( ~UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves6 k) _! H1 ^7 a
( o; z- K; Z$ w: \4 Z& ^此处使用的是 通过面的法向创建投影曲线,可以参考下!
# m' h3 x; X' ?: ?2 r2 C$ Q. d# K% F. d$ J! n/ [% I+ z% f; x/ J
6 r1 [- K; m/ f& E
9 ] r. ~7 J; F# I
! G8 o4 g3 P# @) o2 l& b
# ?$ x2 X1 w4 t
# |8 @4 X4 R5 x2 B; P. h1 J( w9 F0 f2 E; b' p
NX Open C++ 创建投影曲线 project curves
9 z& P! ^" K, H: u3 f
8 X& `3 J& ?. k1 l& h4 u
& g- m6 G I* V. l; C0 Y- ) ]0 z T1 B0 N! p6 `5 U4 }
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
* s' e* |5 i* C; s/ F, z - {/ U" {) A- D2 ^' J& ?
- int errorCode = 0;# P' l+ ]* v; E* g8 }! \8 G
- try
/ E h$ T- q3 x Z; A( r - { W6 R; X* u7 e7 D& i& f
- // createProject curves2 s$ @4 d: w" U
- " a5 S1 ?7 V; q6 l
- Features::Feature *nullFeatures_Feature(NULL);3 ^$ J; M" N4 v# O* j/ ]
6 M& r6 k, [( @. E0 W- Features::ProjecTCurveBuilder *projectCurveBuilder1;
# J+ v" b! ?; I3 o
* A+ k5 L( C/ h' O# z- ^- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);1 m) e' ^) i0 ~ O7 l( L' S0 x
- 9 N B' f5 F$ g5 |. _0 _) ?
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
- B5 h3 y% ~( v
# [" T9 |" I; ~! y' V4 z- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
) H+ ]. l' ^: C* H9 a1 J
; \ h1 ?, X" U- ]( w: h- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);3 \, K# N* _1 r/ _9 l+ m6 d& v( s
- / ^) a* K: v/ m3 M" C( u
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
; T. K5 U) |8 I0 A* W6 E* c - ) F/ @2 k/ `! E2 `0 r, B: s7 g
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);: s+ B5 J- n1 B
' X6 _" |$ W! Y3 N5 s5 Z' |- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
- i, o7 n7 W1 v( ~9 @
# a8 n# e2 ^5 u: @4 ~- int size = (int)inputObjects.size();
0 H; `+ S" X, v* f) U, _6 {6 y0 N - std::vector<IBaseCurve *> curves1;9 L: a8 m$ _( G7 r" Y( y
- for (int ii = 0 ; ii < size; ++ii)
# F6 K( p \! q - {
7 a2 I& m2 B# s; r+ C9 {; W - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
4 U) ?5 ~$ q2 m. y K - }2 D4 `: o* S+ i; M( r
2 c q" K( B/ J- NXOpen::CurveDumbRule *curveDumbRule1;
/ W; g U4 D* b3 P6 N9 p - ; x f- Z. I* H% i
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
* q" J2 s1 b# n
# o' I9 U' r: x$ W5 \' w2 D- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
2 P' W* [$ w; h: m w
+ G" L5 k. Z) F' m& X8 q- std::vector<SelectionIntentRule *> rules1(1);1 x# [8 i7 o8 m+ U# B
- rules1[0] = curveDumbRule1;
# [/ L% Q9 b& n - NXObject *nullNXObject(NULL);
5 c* L2 W+ h+ Y# ] v - Point3d helpPoint1(0, 0, 0);
) U) K! S9 ~9 K) U8 n1 A - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);% }& }; |6 w- S, e$ o
: P' v% D4 c' ?% P3 W- plane1->Evaluate(); O3 G, w# o+ F6 u
" b9 c$ p! Q1 @- x4 `- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
6 \5 E; Z, j/ ^% j. M! [. j - 8 S7 O0 Z, j8 t0 X. R) N; B, D5 A
- projectCurveBuilder1->SetGapOption(true);* V% ^. H+ h$ W, O( |
4 G; K/ P9 ~. ~, r- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
" W- B, ?6 Y& e - & b Z3 ?- N1 _
- NXObject *nXObject1;* {9 [' `+ n- \" r( y
- nXObject1 = projectCurveBuilder1->Commit();
' J; _% ~0 u6 j- P
4 n1 w) t$ K' a" Q- projectCurveBuilder1->SectionToProject()->CleanMappingData();. B5 e' L* O5 q; W- o. ]
0 _; s1 _) ]0 F' W- projectCurveBuilder1->Destroy();* Y: s4 R& Z/ q7 }# [3 G
+ a4 E+ J6 e% n8 m- }( r* Q9 o( T1 D( b4 S' i
- catch(exception& ex)* {- R; ~- o: I: q
- {1 r( f( R% U$ j; o! ]- \9 l
- //---- Enter your exception handling code here -----
! Q- y# `5 W1 Q. ^# L" f - errorCode = 1;
, j+ A' ]4 U0 o* B5 I6 u' d - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());7 b, {7 X" p0 g- q% g+ K' J0 V
- }
0 j: y4 D; I9 q- T9 W9 u - m+ R+ b2 \, E- n/ e
- return errorCode;
; S1 O9 w+ Y E7 H7 G6 h - }
: i" t/ K% s- H8 h
复制代码 8 U, o. H& W0 w% w) ?/ o% j6 C
) w! k+ t: S3 N- B' A$ C
_% e9 t" I% C% C |
|