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 3267 0

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

mildcat 楼主

2013-12-11 11:14:40

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

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

x
* s1 q  F* y$ M3 m& j: {
NX二次开发源码:通过选择点创建样条曲线
3 h+ I. l# I, d2 r, }: d2 s7 ]0 ?# L8 X9 W
" |4 I% g  v4 g8 ~$ T
  1. ) `8 {- I2 t  E2 D5 k
  2. #include <uf_defs.h>% l! |. W; r* c! t" Q+ n- P2 c
  3. #include <uf.h>
    ) ^7 f' j. @. F4 [
  4. #include <uf_modl.h>
    * ^% u% g) C$ P, `% {8 ^, j, n
  5. #include <uf_object_types.h>
    1 q* x) w: z5 z- ~
  6. #include <uf_ui.h>
    ; {  ?" }4 v# ]# ?! Z0 g& y: l
  7. #include <uf_modl.h>; J, J6 e' D( [  ~! ^% h, Y6 _
  8. #include <<em>NXOpen</em>/NXException.hxx>3 S  D9 k: @, V" M, [- |0 [( H
  9. #include <<em>NXOpen</em>/Session.hxx>
    1 Q5 h+ z8 [- x1 N  ?
  10. #include <<em>NXOpen</em>/Selection.hxx>
    * w! Z/ g) ?& L1 `, g5 I3 N7 a
  11. #include <<em>NXOpen</em>/Builder.hxx>
    0 Q! C' S8 G5 D! M" x, A1 q
  12. #include <<em>NXOpen</em>/Features_Feature.hxx>+ A& {! r" r; L9 y0 K( Y. i: s0 ?
  13. #include <<em>NXOpen</em>/Features_FeatureBuilder.hxx>0 ]+ N8 ]9 E/ b: A
  14. #include <<em>NXOpen</em>/Features_FeatureCollection.hxx>
    * `  k- Q0 R: Z% y6 G8 ^
  15. #include <<em>NXOpen</em>/Features_GeometricConstraintData.hxx>
      d, R6 w8 u) ]) v' Y* x. \5 t/ o
  16. #include <<em>NXOpen</em>/Features_GeometricConstraintDataManager.hxx>
    2 @% Q/ s2 ]( R$ x8 B: }
  17. #include <<em>NXOpen</em>/Features_StudioSplineBuilder.hxx># @$ Z! V7 K& M8 u6 |
  18. #include <<em>NXOpen</em>/Part.hxx>
    . D! L( Z+ t& h- B2 B
  19. #include <<em>NXOpen</em>/ParTCollection.hxx>- [0 l. X& H8 j3 H7 I( C
  20. #include <<em>NXOpen</em>/Point.hxx>
    0 A8 n2 d5 [# T0 q. g% H6 f' E
  21. #include <<em>NXOpen</em>/PointCollection.hxx>
    0 O5 s' ?! Y/ p4 f, b/ b* v! }
  22. #include <<em>NXOpen</em>/NXString.hxx>
    5 G5 w9 L6 v2 U
  23. #include <<em>NXOpen</em>/UI.hxx>
    ) {: q  N4 r3 w
  24. #include <<em>NXOpen</em>/Spline.hxx>* L0 q' E% t  e6 o( Z: ?/ O* h
  25. #include <<em>NXOpen</em>/NXObjectManager.hxx>5 @( @( \5 D0 I' N; ?# g8 j5 W

  26. : S# J+ l) p+ s, ]. U# n5 d6 s4 `, S3 t
  27. using namespace <em>NXOpen</em>;
    1 ?/ f/ H" F; i  Z* ]) V
  28. using namespace std;
    ) M, \- C; C' ?8 `3 }" v9 y
  29. $ k6 u& }* S+ T
  30. extern "<em>C</em>" DllExport int ufusr_ask_unload()
    ; I3 Z6 z7 a7 I" z
  31. {+ O/ I: x5 P- x* Q1 _, e
  32.     return (int)Session::LibraryUnloadOptionImmediately;
    ! [0 ?: z' H3 s7 ?* D, h! Y  E
  33. }
    1 r0 J2 f9 y8 U& F" v; B7 y

  34. - J: H- ]& j( m
  35. static vector<Point *> selectPoints(NXString prompt)
    ! y; z  n, e. b5 g! _/ |) V
  36. {- c; F$ v) n$ v  [8 T' b( [; _* J
  37.     UI *ui = UI::GetUI();
    $ J2 V8 {1 V: q- n3 g1 R
  38.     Selection *sm = ui->SelectionManager();; ?" J- }( {9 f$ e: i9 ]
  39.     std::vector<Selection::MaskTriple> mask(1);8 H, f% B. R( G" X1 b  K! U: C
  40.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);
    2 K, t0 X9 X8 W+ X
  41.     std::vector<NXObject *> objects;
    ! h) v" [7 s2 R
  42. - }! v+ o/ d: ~
  43.     sm->SelectObjects("Select Points", prompt,
    ( B) L" ]" o- b( T( j
  44.         Selection::SelectionScopeAnyInAssembly,
    8 m  |& a* K7 M- _5 C+ q
  45.         Selection::SelectionActionClearAndEnableSpecific,
    9 d$ q; Q) T' g; F6 v
  46.         false, false, mask, objects);
    6 ^% I7 F5 {2 Y

  47. & o4 M7 }  T4 g" H( _. t
  48.     vector<Point *>selPoints(objects.size());
    ! S) k+ j* b5 Y; I+ n  e- y
  49.     for (unsigned int ii = 0; ii < objects.size(); ii++)' c; I" z. S( E
  50.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);
    . d- N9 H( h# e( ]
  51. # a4 L$ o9 }+ F% X& N$ z# U
  52.     return selPoints;
    3 n/ g! N& N' n5 y, e
  53. }
    6 {2 r) z& P8 X; K  T! L4 O, m3 z
  54. & I" p/ U: r% i1 U" k
  55. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints)' ]/ Y0 L( ]: S# U. B2 G
  56. {
    ) `' p3 Q* S7 u1 `8 X- ?
  57.     Session *theSession = Session::GetSession();" w  C/ Y& m8 X9 p7 S# ~
  58.     Part *workPart(theSession->Parts()->Work());
    - r2 _9 A3 L( o8 x

  59. / p7 \) j$ f1 @8 B+ z+ p$ @0 h+ b
  60.     Session::UndoMarkId markId1;! R- W6 B8 n" s3 ?
  61.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible,
    0 ~7 a5 A6 k. e$ a0 S& l' x, R5 c
  62.         "Studio Spline Thru Points");
    - Q! w( J. k/ p
  63. & t: C+ v0 u/ d& z
  64.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);
    1 ~7 B! q9 ~( O2 |/ [! G6 ^
  65. 5 Z$ `4 F9 f  W
  66.     Features::StudioSplineBuilder *studioSplineBuilder1;3 x1 W, W/ x' T/ f: h1 |
  67.     studioSplineBuilder1 = workPart->Features()->1 |' u3 d) I1 Z8 A: H( _: z7 F
  68.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);
    3 ^" o9 s5 D* Q0 e: E8 b
  69.     studioSplineBuilder1->SetAssociative(true);
    & M& k! h% u0 F% `. w- t  ?- F
  70.     studioSplineBuilder1->
    0 d9 \/ Y4 f2 c7 b) D/ t
  71.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);
    . Y  C8 Y5 U  _
  72.     studioSplineBuilder1->" T" V% P7 z9 {
  73.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);
    % O6 H: X8 D( k) Z
  74.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);. X2 U2 o- |0 L/ S+ Y
  75.     studioSplineBuilder1->SetPeriodic(false);5 E' m8 _9 R% f3 {/ t% K) D6 Z/ i
  76.     studioSplineBuilder1->
    5 Y" l* T, m$ F& z  h
  77.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);
    + V7 f" n" J& {; [3 ?4 j
  78.     std::vector<double> knots1(0);6 m3 I8 `1 s8 D( d
  79.     studioSplineBuilder1->SetKnots(knots1);
    & O! `& S- h9 w% m, i9 A
  80.     std::vector<double> parameters1(0);
    0 Q( K, U% h6 Z( n$ M
  81.     studioSplineBuilder1->SetParameters(parameters1);
    ' E& f! F$ ~5 f% \  {& l
  82.     Direction *nullDirection(NULL);
    ; E7 w7 \9 v+ Q, X5 w; A5 w+ s# h
  83.     Scalar *nullScalar(NULL);) ]; F0 k7 ?5 r* L
  84.     Offset *nullOffset(NULL);  s; Z: o. A  V0 ~

  85. 4 _( H& q* a; i2 s. R
  86.     std::vector<Features::GeometricConstraintData *>
    . k6 C0 K- o4 I5 q
  87.         geometricConstraintData(thePoints.size());
    3 F! `. ^: n* l$ y4 {
  88.   P. o; l6 F2 c$ w- Y
  89.     for (unsigned int ii = 0; ii < thePoints.size(); ii++)
    4 ?# I! k( L9 P- h
  90.     {* u, W; N( r0 r+ @, t
  91.         geometricConstraintData[ii] = studioSplineBuilder1->
    5 p) k/ y  M! j
  92.             ConstraintManager()->CreateGeometricConstraintData();' v1 R+ D, P) R! X
  93.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);
    # W& _) X5 i. ^) N- G
  94.         geometricConstraintData[ii]->SetAutomaticConstraintDirection() O9 _2 K  R  x$ k
  95.             Features::GeometricConstraintData::ParameterDirectionIso);
    6 c5 N$ b! K) I/ t1 O! ?
  96.         geometricConstraintData[ii]->SetAutomaticConstraintType(0 p( \. I% Y. t- j* |
  97.             Features::GeometricConstraintData::AutoConstraintTypeNone);
    & S/ B2 H2 `, g' s0 T* J
  98.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);
    2 B! G' H* I0 V0 Q  {% @% ~
  99.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);
    ' T* D! H3 g6 }. ]( r
  100.         geometricConstraintData[ii]->SetCurvature(nullOffset);. g6 u. _% v9 A2 Z
  101.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);" z$ f& I: T5 n: p
  102.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);1 V% R6 K/ r, T0 l& B3 Y  z
  103.     }2 J) U- C; X( B4 _! f
  104. + G$ B: K( i0 f2 a/ d. v8 I7 f
  105.     studioSplineBuilder1->ConstraintManager()->SetContents(7 C" y+ G3 b5 a
  106.         geometricConstraintData);' o$ f9 k' K4 `0 t7 J! _9 ?
  107. . M- T" ?, Z) Z7 P% D* h1 w3 I' @
  108.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();! P, \1 I( ]. A0 _. T- j
  109.     Spline *theSpline = studioSplineBuilder1-><em>Curve</em>();8 u: J  Q$ s5 }% ?8 ~  u3 ~* P
  110. 2 I' M- G5 }/ h$ n6 t4 n4 [
  111.     studioSplineBuilder1->Destroy();- i! K, K) W9 E& B% n7 e

  112. 7 v5 t* y0 z" W% N& G) h4 z7 D
  113.     return theSpline;
    " v8 q/ _" P$ a* _
  114. }
    ; E' ]! s7 g- ^: i: q/ U# w

  115. . G  s) _" |/ i2 z& Z4 k; [( B( o7 ^( l
  116. extern "<em>C</em>" DllExport void ufusr(char *param, int *retcod, int param_len)
      i6 L# H, O6 H9 p  A* m
  117. {
    : ~' p; d$ o; n
  118.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");
    ; a0 X2 {. G% y8 z+ k
  119.     if (!thePoints.size()) return;$ A( U% }3 e7 c( q2 N* t

  120. ( R$ B0 Y0 k4 a6 P* I* _
  121.     Spline *theSpline = createStudioSplineThruPoints(thePoints);4 T1 P% F. n: y- B, q

  122. 3 K& ]' N, ^" l% X0 o% c3 i5 @& _
  123.     if (theSpline)
    * F& ]& F9 z5 G5 Y
  124.     {1 i4 r/ }7 d' i9 U
  125.         theSpline->Highlight();
    9 j+ W3 j1 p- X
  126.         uc1601("Studio Spline Created Thru Points", TRUE);& t1 Z& k3 E, L1 F/ b7 N
  127.         theSpline->Unhighlight();! P; @* w4 d# n: o8 }2 b5 I5 Z. A
  128.     }
    3 F0 j' r4 T1 d  Q0 @  T  q
  129. }
    . I3 ?- d# o9 B8 `0 o
  130. <p> </p>
复制代码
% n- {% A( ]! k! u% W% ]
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了