|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
: p# ?/ u' \8 s3 S0 y' k' ~! B
0 q4 P o5 a( W* v& _! A
( P7 E7 }% a" U9 y, ~9 oUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves8 r+ v$ G4 v$ W% X0 l) ^
2 x# {' B+ `( |
此处使用的是 通过面的法向创建投影曲线,可以参考下!; v, n( a* t2 k/ c# ^# {
8 w$ `' f3 @# p* L
7 L+ C( S- t$ k" r0 Y! q; F6 ^& p7 `: P' X9 ]! t4 P
: V# O) V5 @! y1 G
3 N) ?& L* a6 Z8 K( q1 ]( a1 b
b8 T5 `$ n" }9 o8 {/ L% _' Y/ F$ e: X, ]; p) D& A' f6 L. @
NX Open C++ 创建投影曲线 project curves
- t: t! ~% |5 @7 M0 `; `
8 M, w7 r! { @6 R( v8 O) I
# r, R# l* a6 G& A1 T- 0 b( C# Y' q$ Q2 A7 T$ v
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)6 J# ]/ D# W8 \& ]8 ^
- {
7 a; M0 x- G4 y# q4 A - int errorCode = 0;& b9 R5 U: |# E$ d
- try
t, ?* k. T5 E+ ]1 w6 H' m - {
# r4 P, Z# \8 W$ R' t - // createProject curves; P& \' G3 X. q! X1 W+ y& \0 K. d
: h" p7 c9 y+ c4 f4 v- Features::Feature *nullFeatures_Feature(NULL);
0 t# W' A5 W# b - " f1 q, P. k- Q5 E# I) ?* x
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
2 a9 A% t" x% t, I( y% z - ; O2 @9 S, S7 s) v
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);- `! A& W1 C" g4 X
# F7 y* I* D. a6 z# t* C3 x; z- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
+ ]+ E8 J/ }6 @. K
: r( ]% ] J) G4 f$ b/ v- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
1 R+ Y h/ F% v( N6 G4 F5 |7 c) s
- U' f9 l* o* s( @9 `- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
, A& Q5 N; ^. L1 m) t - 5 W" J }+ ~0 r) X- F7 \) W1 O* }; e
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
2 m6 W& Y8 x3 P! ]( K - ! l0 _% c/ c7 @5 b' [
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
* A9 z4 d! e' Y4 N6 M7 | - . l0 q) R/ X' [/ i# W
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
/ c; Q$ M2 f& C - * Z5 O( K. ^* f; ]/ [" R
- int size = (int)inputObjects.size();
+ B" `0 {- M# ? G9 W! ^6 V - std::vector<IBaseCurve *> curves1;
, {/ y. M* N5 w - for (int ii = 0 ; ii < size; ++ii)
5 k6 I1 {. ~6 g' s1 E& `2 d - {/ y. n% s# p) S# C5 K
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));" O. H6 ~& |0 ^( h" K8 w$ H( B5 y
- }, d4 i& H p1 a; W6 P+ h& }
- ) ?7 w- O+ g7 C3 D
- NXOpen::CurveDumbRule *curveDumbRule1;3 A, g0 m [" I1 j* k. i4 c
- ! d( S; m: @+ F9 O$ ]5 x3 V
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);" `6 o+ X( X# w% Z% S$ [
[5 r# P9 _$ F4 m& Y4 m" z- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);8 X! i5 k8 j) V. V
- / x- T& N# @; L" V" J
- std::vector<SelectionIntentRule *> rules1(1);& B( _: m3 M6 c- @
- rules1[0] = curveDumbRule1;
9 b4 e' S5 T- N% V8 j" m7 l& W* ?3 q - NXObject *nullNXObject(NULL);
7 Z7 K7 U7 ~ p - Point3d helpPoint1(0, 0, 0);2 q" [4 z9 D. n E# y4 ]0 R
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
. Y8 D) |% d% d7 C0 D9 Z7 d
8 }7 ^9 L7 `# z8 e! i8 ]- plane1->Evaluate();& n6 }7 }# t- L0 \, A% w. J
- 4 d3 L N* B! T
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);2 w! ]9 p( D$ b3 j9 |8 P
. L- z; q0 Z1 V! V- projectCurveBuilder1->SetGapOption(true);$ o+ d- p- h( @7 ]1 r+ N
- & f8 K" \0 w2 c+ z$ ^3 c+ F3 K
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
: m# \7 c! x- `) f0 F M9 |* M+ i
7 l, f2 |5 W p/ J+ m( T# |9 C- NXObject *nXObject1;
- R( ~9 Q, S U - nXObject1 = projectCurveBuilder1->Commit();
& ~9 ` ^4 A5 v" M# `, M - , J! s4 I" D$ T
- projectCurveBuilder1->SectionToProject()->CleanMappingData();$ l! H4 m/ d& S, e2 X
% L) S' l9 G/ [" o) _- E. P- projectCurveBuilder1->Destroy();
8 Z& p: i8 _6 D% R1 A% O
% X/ [0 F! G" P. H- J7 m" h+ q- }% N* y" l: h9 g, ~- T
- catch(exception& ex)
8 `; J3 ~& Z/ R - {
) q5 a+ j' W3 P: S6 c7 n6 W - //---- Enter your exception handling code here -----
( K" o# f" @" J) C% D8 B4 B' F+ s - errorCode = 1;$ M* S9 c4 \: F- R& Q
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
7 k' l* s+ x6 t- i# T$ M1 x: I# ~ - }$ s$ j, _$ v9 r3 g4 T
/ A6 m- L% Q' r4 l( D' d: }- return errorCode;
+ c* j1 M% C0 M! S5 g - }/ z' n+ R- N* W! `+ Z& Y0 g
复制代码 I, p# ?6 y- K! V# k+ G
! g: G+ y; l, ?1 B. ^# n: Z( _( X+ W" \- P O, G/ n8 E
|
|