PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[二次开发源码] NX二次开发源码:通过选择点创建样条曲线

[复制链接]

2013-12-11 11:14:40 3266 0

mildcat 发表于 2013-12-11 11:14:40 |阅读模式

mildcat 楼主

2013-12-11 11:14:40

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
, V0 q2 Z/ `' @6 c- S/ E
NX二次开发源码:通过选择点创建样条曲线
* r0 `1 A' E4 B  Z* p; n! f7 m; @6 |1 X0 a$ l) z& a- b' D  f' w
4 @( `' i/ g5 s  X% B1 B
  1. # [8 ]" s9 H0 _1 J
  2. #include <uf_defs.h>
    $ h7 A8 z; q5 b# d) b% \
  3. #include <uf.h>
    3 @$ d- b! ^: I2 g+ e6 f$ ?' g
  4. #include <uf_modl.h>
    , o+ l# v% G! }; \& ~, O$ \
  5. #include <uf_object_types.h>
    6 u1 c# E% T+ q( x% r5 P( B
  6. #include <uf_ui.h>2 Q, {/ I5 x; E/ `$ T
  7. #include <uf_modl.h>) Z: M8 J7 r+ d; ]. G; U& Q! Z( R) N& [
  8. #include <<em>NXOpen</em>/NXException.hxx>/ r3 X% I# t; w' @% p7 |# T- j
  9. #include <<em>NXOpen</em>/Session.hxx>
    ) G! G+ p- p  U! u7 m
  10. #include <<em>NXOpen</em>/Selection.hxx>3 E! R/ O0 l; K) y, b
  11. #include <<em>NXOpen</em>/Builder.hxx>0 c5 K. e, o2 N4 d$ R: u  \* S
  12. #include <<em>NXOpen</em>/Features_Feature.hxx>. S+ \! R. _1 f0 m( `9 l9 o/ l9 q
  13. #include <<em>NXOpen</em>/Features_FeatureBuilder.hxx>
    ; M7 }, @' |. T& Y
  14. #include <<em>NXOpen</em>/Features_FeatureCollection.hxx>
    - W9 C3 X* H7 }  E5 S0 ]' k
  15. #include <<em>NXOpen</em>/Features_GeometricConstraintData.hxx>( g: J) J8 D; }8 e& I# b: s/ b
  16. #include <<em>NXOpen</em>/Features_GeometricConstraintDataManager.hxx>
    , F- e. [& v/ ^9 I( i
  17. #include <<em>NXOpen</em>/Features_StudioSplineBuilder.hxx>
    , U! o- n% _* g# n# W) v
  18. #include <<em>NXOpen</em>/Part.hxx>" \- I$ l: u& U2 h
  19. #include <<em>NXOpen</em>/ParTCollection.hxx>1 c1 t) k) D' `7 a
  20. #include <<em>NXOpen</em>/Point.hxx>( [8 `4 R# a3 O; Z# H# u
  21. #include <<em>NXOpen</em>/PointCollection.hxx>, {  N8 w+ O4 L3 y
  22. #include <<em>NXOpen</em>/NXString.hxx>
    . c% w; ^) U) [- i
  23. #include <<em>NXOpen</em>/UI.hxx>
    ; G" ]9 w* J/ X) P+ [2 U2 ]5 A6 T
  24. #include <<em>NXOpen</em>/Spline.hxx>
    : }1 q& L& k. K9 R
  25. #include <<em>NXOpen</em>/NXObjectManager.hxx>
    : Y& M3 O8 `& }
  26. 7 d4 C0 Z8 O0 g9 b' ]
  27. using namespace <em>NXOpen</em>;( Q  Q1 ^- Y6 Y! Z9 T+ m
  28. using namespace std;  Z) S1 _0 l( a2 u: ?
  29. ) H# n. }$ [0 q  d
  30. extern "<em>C</em>" DllExport int ufusr_ask_unload()
    8 _( N: x1 R' F* I' n% j  @+ @' b. ^
  31. {0 d, H) X4 L8 P0 ~0 \; `' Z& T+ O
  32.     return (int)Session::LibraryUnloadOptionImmediately;; S  E' ~0 I! i# y. k8 c6 k
  33. }
    + A; K* A6 T' j: ]+ E$ f

  34. : P# S% n' D0 l2 e; i2 L- L; M6 O
  35. static vector<Point *> selectPoints(NXString prompt)3 x/ c; p/ r; r9 x% K& R8 v5 ~# M
  36. {
    . L8 `- W4 J( j# j% F2 S4 i
  37.     UI *ui = UI::GetUI();( u" w" p& t8 {% u9 n' H
  38.     Selection *sm = ui->SelectionManager();
    6 v  B) \/ ?: k/ F- v0 p
  39.     std::vector<Selection::MaskTriple> mask(1);/ `. A; {3 a7 s! C2 _
  40.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);6 H! q' p! k/ O  T- X
  41.     std::vector<NXObject *> objects;
    ) W5 E/ ?! S. x

  42. 7 |9 d/ s" O& l6 }! ]' y$ N* U
  43.     sm->SelectObjects("Select Points", prompt,
    4 i1 ]! A. v* Q% `, J. f' z
  44.         Selection::SelectionScopeAnyInAssembly," R; C( w) }# s2 \: H7 q
  45.         Selection::SelectionActionClearAndEnableSpecific,
    - g7 W- U3 ?- V- O' E+ N
  46.         false, false, mask, objects);
    2 g/ }5 U3 H. s9 M
  47. 8 y! T8 H& R' X! J, v& T
  48.     vector<Point *>selPoints(objects.size());
    ' y8 m5 S2 D- ~2 f$ a9 k
  49.     for (unsigned int ii = 0; ii < objects.size(); ii++). t/ T# s# ?1 f- J3 c- N5 s
  50.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);
    + C! N) K8 e  }

  51. ( N. h- ]2 i$ g' Y' |4 b
  52.     return selPoints;
    6 S2 ~, T1 H1 E) _* \
  53. }3 d( H7 e% S. c

  54. ; J/ o/ ~2 A( C: s& m, `
  55. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints)% a& Z8 U6 Z3 J' r. j, a1 v4 `
  56. {
    $ t; a1 d+ f1 x5 w
  57.     Session *theSession = Session::GetSession();
      J$ _2 [) B2 S8 W
  58.     Part *workPart(theSession->Parts()->Work());. b# {: X) d; }3 U5 |7 T  p  i
  59. 5 L! Q4 p1 Q6 r! w/ F
  60.     Session::UndoMarkId markId1;
    1 T% D5 t# w% @/ r7 A: q/ ?
  61.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible,
    : i6 j) Y, C* o) K4 m/ |" j6 T
  62.         "Studio Spline Thru Points");) y2 O' L5 g* ^. ?' W0 {
  63. $ L" C+ a+ b; a
  64.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);
    : L! I5 b$ j" e) a7 V8 |
  65. ' b- h) T, V. k8 k
  66.     Features::StudioSplineBuilder *studioSplineBuilder1;. t; p% c+ g9 [6 Y! _8 Z7 q
  67.     studioSplineBuilder1 = workPart->Features()->. V+ ?* Q2 v7 `* ~6 c6 d
  68.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);# `, K6 W2 T7 V  f. r0 E2 `! N2 O8 B
  69.     studioSplineBuilder1->SetAssociative(true);
    3 U8 A) p2 }) S1 e: ^! f2 t
  70.     studioSplineBuilder1->
    * W' M: d1 j0 P
  71.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);
    9 f0 r2 d+ A: ~+ B0 B
  72.     studioSplineBuilder1->- |) w) I- ]* X- `7 S& B" _8 F% c; J
  73.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);
    . ]0 M. C' R' H' ]* m7 @
  74.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);! K2 m/ l- i( S& `: Z
  75.     studioSplineBuilder1->SetPeriodic(false);8 x" c0 z1 t' U) K" Y
  76.     studioSplineBuilder1->% Z( r7 O2 K; w% T
  77.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);
      b3 p7 h8 o9 U. v. ]' ]$ Y0 T
  78.     std::vector<double> knots1(0);# L; @) P* P( @4 g$ n# U' t! Q
  79.     studioSplineBuilder1->SetKnots(knots1);
    4 @3 K6 Q6 F9 B3 C' I
  80.     std::vector<double> parameters1(0);9 L% j3 o3 ?1 L) q6 q
  81.     studioSplineBuilder1->SetParameters(parameters1);
    ! O; q5 g8 G" R  D
  82.     Direction *nullDirection(NULL);
    6 f- _: b  }( l
  83.     Scalar *nullScalar(NULL);
    3 I& L9 z: _3 V2 @9 _( S4 u
  84.     Offset *nullOffset(NULL);- }* d( K: }. _9 T, a/ M  h1 V

  85. ! B3 N) A7 Q: [$ _5 i' s7 d
  86.     std::vector<Features::GeometricConstraintData *>
      i* w5 f) P# l! \2 n
  87.         geometricConstraintData(thePoints.size());9 Z. P" T5 i3 I
  88. 2 w  e3 T$ a8 Q8 C
  89.     for (unsigned int ii = 0; ii < thePoints.size(); ii++)8 d4 U: a# M8 X
  90.     {) ]& C0 h! L& Y
  91.         geometricConstraintData[ii] = studioSplineBuilder1->
    0 \( w/ v4 Z. w& `# S! R
  92.             ConstraintManager()->CreateGeometricConstraintData();% v; I+ [5 }6 O6 E9 H, f8 _
  93.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);0 U" m) ?" A% w/ W) _
  94.         geometricConstraintData[ii]->SetAutomaticConstraintDirection(
    : b, F. C6 i9 [& s
  95.             Features::GeometricConstraintData::ParameterDirectionIso);- x, \+ q) g( I7 C! h; z
  96.         geometricConstraintData[ii]->SetAutomaticConstraintType(8 X* y9 G2 f# ^9 V/ W: Q$ U
  97.             Features::GeometricConstraintData::AutoConstraintTypeNone);
    " t1 m; l# `# C( x
  98.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);" ~. D$ M# d6 v7 V0 S! F, J! ^
  99.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);
    6 r4 U* ]1 y- A, E: Z5 X
  100.         geometricConstraintData[ii]->SetCurvature(nullOffset);% C0 u  j: Q* [: y( j( h4 t. D0 J
  101.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);2 f4 ^/ q- t, P) n6 W" A
  102.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);
    5 h% H0 E+ v1 l; P/ H) \% A
  103.     }9 s6 n! E0 Z" f! H
  104. . F% s/ T  F2 x3 G. @
  105.     studioSplineBuilder1->ConstraintManager()->SetContents(
    6 `# x2 R$ v& g6 }" d+ ~6 o6 H3 e
  106.         geometricConstraintData);
    + T$ \4 k) D" B
  107. " T3 r" j( {! a! E0 R
  108.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();
    ! ^$ Y4 J+ z* m& L" L6 @
  109.     Spline *theSpline = studioSplineBuilder1-><em>Curve</em>();
      L5 s+ F/ L+ G+ s& g
  110. : N, f! R; w; p1 d; Y( ]
  111.     studioSplineBuilder1->Destroy();
    3 O7 i/ @, @4 j( B: p
  112. $ \# ?6 F2 ~' v" a
  113.     return theSpline;
    . N0 l7 x8 N; ]1 j# }2 J- _
  114. }
    ) R6 Q2 X. {; w! s# l

  115. 6 Q4 i. G' N3 r3 `$ e
  116. extern "<em>C</em>" DllExport void ufusr(char *param, int *retcod, int param_len)
    ! j5 u0 J2 U1 r, F9 J$ R7 B
  117. {- \+ j6 r' k' \  H8 T0 U' R' O
  118.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");
    / y2 z& d% F: R6 c0 X! d% e7 p5 N
  119.     if (!thePoints.size()) return;) n, k. b- t0 u0 a( [- T2 f! @2 c3 Y
  120. & \+ z/ O, ?$ d6 G; |
  121.     Spline *theSpline = createStudioSplineThruPoints(thePoints);. w' {& l3 R$ @6 z$ i% N! y
  122. ) ~+ O2 c. {( M+ ?+ j) b
  123.     if (theSpline)$ O1 k. G7 L( @7 K6 e" _2 a
  124.     {
    , t$ T1 x$ V  ~' ]4 X3 J8 C
  125.         theSpline->Highlight();
    ' e% c6 E; V9 L
  126.         uc1601("Studio Spline Created Thru Points", TRUE);
    $ H. q6 v9 p2 u5 b& w
  127.         theSpline->Unhighlight();! z# u% @0 Q& u2 x& M8 @9 D
  128.     }& z1 ^: j* H4 }
  129. }% S" s3 k0 ~) R4 I- _/ W6 H
  130. <p> </p>
复制代码
: T- j6 e: ^2 @% Y$ o% h# i  @& H
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了