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-10-30 14:28:35 3797 0

admin 发表于 2013-10-30 14:28:35 |阅读模式

admin 楼主

2013-10-30 14:28:35

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

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

x
NX二次开发源码: 通过点创建样条曲线- R# `4 P5 }; p$ Z: m2 y9 U# A
  1. #include <uf_defs.h>
    - D4 G( K2 }: Q/ d+ ]
  2. #include <uf.h>
    + a6 l  f& w; D# G) f4 i) M! r  Z) v2 a; \
  3. #include <uf_modl.h>" Z6 Y5 ]9 k2 |' I- Y& t9 ^  g
  4. #include <uf_object_types.h>! {8 g4 a4 |+ E. Y: L2 z" h
  5. #include <uf_ui.h>
    4 L2 G) B+ m% W- [' @3 y
  6. #include <uf_modl.h>3 f/ T9 v' n; b/ ]
  7. #include <NXOpen/NXException.hxx>1 M0 O# w- B! a) W. M2 q: v$ x
  8. #include <NXOpen/Session.hxx>
    / r6 c0 v. b1 s# r( D+ H
  9. #include <NXOpen/Selection.hxx>+ t0 Y9 ?! V8 t+ T* Y- T
  10. #include <NXOpen/Builder.hxx>0 f& V5 P6 V/ k: e1 h8 j, y8 u
  11. #include <NXOpen/Features_Feature.hxx>
    5 k$ j1 G" W; J: T9 ~! a% X
  12. #include <NXOpen/Features_FeatureBuilder.hxx>; L' B; K. |# K+ O2 i
  13. #include <NXOpen/Features_FeatureCollection.hxx>' a/ k/ w* u1 z1 M3 p0 \* V
  14. #include <NXOpen/Features_GeometricConstraintData.hxx>! z5 O7 c6 w3 \
  15. #include <NXOpen/Features_GeometricConstraintDataManager.hxx>1 |% q! w# Z. f# O4 r
  16. #include <NXOpen/Features_StudioSplineBuilder.hxx>; t. m% F! t/ c9 v! H7 `: X; }
  17. #include <NXOpen/Part.hxx>! p" n! v8 l. _. S# A) ]/ c3 [* A
  18. #include <NXOpen/ParTCollection.hxx>1 q  C6 }% p, A9 b
  19. #include <NXOpen/Point.hxx>
    + U. T( j* G: T
  20. #include <NXOpen/PointCollection.hxx>
    : d! |# n' a; B8 k/ X+ S+ C
  21. #include <NXOpen/NXString.hxx>- s1 f  S7 p1 g5 |# \( J' ~, e/ ?
  22. #include <NXOpen/UI.hxx>
    5 u0 z! O/ U1 k5 J# U2 r& x: Z
  23. #include <NXOpen/Spline.hxx>
      T0 ]6 S. d# {. Z
  24. #include <NXOpen/NXObjectManager.hxx>: E. W$ n; d! Y9 M4 y- H8 j

  25. ) H  N* O4 \  ?5 ~9 Q- c
  26. using namespace NXOpen;0 t; h- r  R4 u; @+ Y# u, P7 ^6 B1 R
  27. using namespace std;; |2 I& I$ h  }" G$ Q
  28. : q# ^1 |0 M. \+ \4 E- K
  29. extern "C" DllExport int ufusr_ask_unload()
    % p6 O2 Q1 f5 o+ T1 N# i0 c; ]
  30. {
    ( e/ E( Q( {. A4 L% W# u6 g
  31.     return (int)Session::LibraryUnloadOptionImmediately;
    + d% P8 ?( a: d4 y
  32. }" C3 O( X2 ~( s* }

  33. 6 M- B5 U) Z0 K. G
  34. static vector<Point *> selectPoints(NXString prompt)
    ; H- Z7 `  p* p5 W2 \; h
  35. {; u! ^8 U" k% x; z
  36.     UI *ui = UI::GetUI();
    5 R" F3 N0 r8 H
  37.     Selection *sm = ui->SelectionManager();
    * }: Q" d$ q) q
  38.     std::vector<Selection::MaskTriple> mask(1);0 v  S* T4 F' L. k& W4 U
  39.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);9 T# u9 j9 I* v5 ~
  40.     std::vector<NXObject *> objects;
    & G' H( m" ^" s: C' _3 n) g& j
  41. & x( h6 o+ N6 g0 J
  42.     sm->SelectObjects("Select Points", prompt,# K' K3 c7 [4 H
  43.         Selection::SelectionScopeAnyInAssembly,
    6 j& H3 ^9 G, R- r. M& Q& \
  44.         Selection::SelectionActionClearAndEnableSpecific,; m+ U8 z6 X/ c8 S: x: b
  45.         false, false, mask, objects);
    9 x( P+ T" }' P4 @6 m
  46. 4 y# b8 D" [! G, w. T
  47.     vector<Point *>selPoints(objects.size());
    9 O& }7 |. F2 t$ {# }" s* _4 a  l- a
  48.     for (unsigned int ii = 0; ii < objects.size(); ii++)1 _2 h* j$ x# l$ J0 N0 \% Q
  49.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);
    ' j8 m/ P. ]8 f/ ^! N" I0 B1 O
  50. ' r( e( Y0 m$ V
  51.     return selPoints;" i8 d1 q8 r" _% y4 z% K& |
  52. }: t/ u- W" ^8 K% ^9 o1 G
  53. ; _# ^6 ^& Y! T' K: s
  54. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints): p- k7 \! K7 I0 s0 n6 Y
  55. {# u7 @/ p( w6 F- W: k7 q
  56.     Session *theSession = Session::GetSession();
    / _5 Q' Y5 s/ {7 C6 M
  57.     Part *workPart(theSession->Parts()->Work());8 Z' C; V6 E# Z5 x8 B
  58. & u# F# k4 O* d1 u: X+ U
  59.     Session::UndoMarkId markId1;: Q2 A% k, N  G  {, C* `: a
  60.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible," l" z4 M' c. R9 ?8 |/ C' o
  61.         "Studio Spline Thru Points");3 ]1 Z2 H. c; ^& r$ W1 j3 ~( {' G7 i7 n; {
  62. ! F+ q$ i2 a: M' ?* Q5 d
  63.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);
    ) u' R9 ?+ |1 P, I2 |
  64. % ]9 @4 F5 R# ~
  65.     Features::StudioSplineBuilder *studioSplineBuilder1;
    . Q: I! ]  O: M4 D/ C
  66.     studioSplineBuilder1 = workPart->Features()->
    $ p* M/ b% t2 v. }7 x! _% a
  67.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);
    ( z2 U; g3 y8 V+ D% H$ ]: M
  68.     studioSplineBuilder1->SetAssociative(true);
    5 N! [7 J  W8 V0 L+ R5 [7 e3 P
  69.     studioSplineBuilder1->
    3 g6 Y" [+ J2 h2 y( l1 l
  70.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);
    , J8 e6 C7 G+ |8 \8 K/ C
  71.     studioSplineBuilder1->
    ! o( Q+ R2 S+ a% p6 }4 k
  72.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);
    " Q: o$ b1 p8 z6 z
  73.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);( p8 N1 K5 b7 i$ y; N  V
  74.     studioSplineBuilder1->SetPeriodic(false);
    2 D; u3 e! a- p
  75.     studioSplineBuilder1->
    % @" U* ~2 T1 }+ M8 q  `9 d. [5 l! C
  76.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);
    6 F7 \5 f+ E) g  r
  77.     std::vector<double> knots1(0);' `3 J& O' {0 K7 C
  78.     studioSplineBuilder1->SetKnots(knots1);
      d5 R. O6 u5 ^; ]$ A
  79.     std::vector<double> parameters1(0);
    2 U6 a) |5 P/ Y
  80.     studioSplineBuilder1->SetParameters(parameters1);
    ! ^% C  t  `7 H; Q2 L- w
  81.     Direction *nullDirection(NULL);  B6 E+ n/ A  q- N
  82.     Scalar *nullScalar(NULL);
    0 O/ ]$ `* _: S
  83.     Offset *nullOffset(NULL);
    ) }. t# B1 q) L
  84. $ k# `1 c' D' |. E6 x( L* I$ c$ t! O1 [
  85.     std::vector<Features::GeometricConstraintData *>
    2 S6 W: ]! [1 X
  86.         geometricConstraintData(thePoints.size());9 l5 _- ~/ }; O

  87. 0 }( F- J" }- W( C5 O, a
  88.     for (unsigned int ii = 0; ii < thePoints.size(); ii++), Z! u; A1 E  w/ Q
  89.     {, ~# w" a  U4 z  K( [8 H" v
  90.         geometricConstraintData[ii] = studioSplineBuilder1->% J. z; S' {6 g6 [5 j) G7 `  u
  91.             ConstraintManager()->CreateGeometricConstraintData();
    4 V: p0 m; H2 Q$ o3 H( I) R
  92.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);; U' B; v: _, R0 }: k3 V4 A" v/ J' D
  93.         geometricConstraintData[ii]->SetAutomaticConstraintDirection(
    / v3 F) U; _  `$ W  T& y+ v! e
  94.             Features::GeometricConstraintData::ParameterDirectionIso);* s6 H& Q7 K9 p$ b1 d$ s8 M3 J
  95.         geometricConstraintData[ii]->SetAutomaticConstraintType(, Z/ r% d( c$ w$ \
  96.             Features::GeometricConstraintData::AutoConstraintTypeNone);
    , m6 G; y/ S7 {8 ]: J
  97.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);
    - }' x/ j/ T1 N8 L3 j
  98.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);
    " |1 P0 y  p* R* W" h& s& V, I% z
  99.         geometricConstraintData[ii]->SetCurvature(nullOffset);
    4 u# V, Y1 ]6 n: F5 ?
  100.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);, J" ^! S, x% @
  101.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);+ H# S5 l6 U( a4 v
  102.     }
    5 ?$ ^! ]& ?7 {. j

  103. 1 N" i: b$ Y7 ~* P! U" R7 Y
  104.     studioSplineBuilder1->ConstraintManager()->SetContents(
    . I0 v) I+ ^! }; }( F  {& C% \
  105.         geometricConstraintData);
    ) [+ T! T+ o2 p3 c  D
  106. 4 s. [# ^- x  |- @. o
  107.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();
    $ {; c& r) w" F& L2 Z# y
  108.     Spline *theSpline = studioSplineBuilder1->Curve();( R, R/ t" A9 n# ]  i+ U

  109. 1 ~1 V" l: g0 i+ f
  110.     studioSplineBuilder1->Destroy();
    / H7 n" L1 x' H
  111. ; \" `: d) o3 c9 c/ A* p
  112.     return theSpline;
    / c- a- o( Y- f0 o, r! L
  113. }
    ( j" s  F- f% y
  114. 6 I8 y5 K: c/ X( S$ a3 B
  115. extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)
    , Q* D& c7 P9 O. Q
  116. {& n; R) ?8 `- z6 N. w
  117.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");
    ) w9 T# h0 r/ d4 a* [: n$ ~6 ~
  118.     if (!thePoints.size()) return;+ g  H2 i4 V, |& W2 o0 M1 W% M
  119.   ^) `3 g0 @0 v  Q
  120.     Spline *theSpline = createStudioSplineThruPoints(thePoints);
    # _4 D4 i0 f& F0 g- O6 ^5 L+ B8 v
  121.   X: i6 G) W4 S) x; Q  y1 l( P# n
  122.     if (theSpline)
    7 d$ ]8 F5 x4 X; S. X
  123.     {
    9 k8 O  f# ~) N; s5 ~9 R
  124.         theSpline->Highlight();
    9 B: Z- I& d  R) r/ r
  125.         uc1601("Studio Spline Created Thru Points", TRUE);$ c# Z! }7 R+ L& `6 {* O* j
  126.         theSpline->Unhighlight();
    3 i) ?" Y' W6 W/ B& P
  127.     }
    1 w; _" ]4 N, A$ x0 l
  128. }
    7 r7 G4 G7 d2 y& P
复制代码

4 o8 |2 K/ P0 |7 s% w' [) n" N
1 B' J9 X- I. @: _+ }6 b7 A2 p! L5 Z. r  G  F
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了