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

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

admin 楼主

2013-10-30 14:28:35

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

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

x
NX二次开发源码: 通过点创建样条曲线
; `( n4 O  F6 s3 j/ O
  1. #include <uf_defs.h>
    7 E% [+ e/ v, l! }6 P) f9 i
  2. #include <uf.h>
    ( @; F  @9 D$ G$ u
  3. #include <uf_modl.h>. U; Q+ Y! s5 U( E( x% m% b
  4. #include <uf_object_types.h>1 T6 ?, ?4 I: W* D5 K" M. J% y
  5. #include <uf_ui.h>
    " W9 v# L5 t2 L2 f* J: a
  6. #include <uf_modl.h>/ D, ]/ V, ~* ]$ H2 Y0 I# ^
  7. #include <NXOpen/NXException.hxx>5 I. e" K3 O( d4 y
  8. #include <NXOpen/Session.hxx>$ d) W/ Z8 t, S8 \9 t
  9. #include <NXOpen/Selection.hxx>0 F$ E2 Q/ ^9 m; e- |9 ^
  10. #include <NXOpen/Builder.hxx>* L, G5 T! s" T" W& L1 ^* V* |9 a2 S/ v5 i
  11. #include <NXOpen/Features_Feature.hxx>
    " S5 \* I6 X  ^9 O4 S
  12. #include <NXOpen/Features_FeatureBuilder.hxx>
    7 I6 I: B# {8 b7 Q& y5 u7 D! ?7 M
  13. #include <NXOpen/Features_FeatureCollection.hxx>2 e, E% i$ l! }
  14. #include <NXOpen/Features_GeometricConstraintData.hxx>8 b4 C" j  n5 a; K
  15. #include <NXOpen/Features_GeometricConstraintDataManager.hxx>
    4 Q8 L' j1 @$ d
  16. #include <NXOpen/Features_StudioSplineBuilder.hxx>
    5 S! Z- m; @% O% O. _; d7 y/ u
  17. #include <NXOpen/Part.hxx>
    $ t3 @5 i" V! q
  18. #include <NXOpen/ParTCollection.hxx>
    1 V9 X% T. x  h  [. c5 I$ d2 F
  19. #include <NXOpen/Point.hxx>$ O! i+ ?, X) R% h
  20. #include <NXOpen/PointCollection.hxx>
    9 a4 B" G5 G( v% e* X
  21. #include <NXOpen/NXString.hxx>( V3 p$ k' }1 {2 I
  22. #include <NXOpen/UI.hxx>: m: u- x) I) I! S. W
  23. #include <NXOpen/Spline.hxx>
    ' ~0 H# B9 r, h9 O$ Z5 q
  24. #include <NXOpen/NXObjectManager.hxx>2 A* o2 s3 v6 K  Z/ y% K

  25. : x. O, j+ m; X8 c/ }6 N
  26. using namespace NXOpen;5 E& O4 h+ Z2 V" z4 ]& a  V6 d
  27. using namespace std;2 x4 l+ m; t. d. A- ^( R5 d
  28. $ x5 {9 G7 W3 k/ H) F
  29. extern "C" DllExport int ufusr_ask_unload()
    - J/ g, Y. F* a" h; B* p
  30. {
    ; m2 r. c' O  E# x6 E+ V- D
  31.     return (int)Session::LibraryUnloadOptionImmediately;( Q% D) b: }2 B7 {
  32. }3 C( a& C6 t3 g& {1 D( W$ g* N/ H4 e

  33. 9 e! C+ t  a0 c8 i( v  t
  34. static vector<Point *> selectPoints(NXString prompt)
    : j' ?+ h3 A1 f" @" r/ o+ o( |! q
  35. {
    6 Z& d. L6 E7 ~9 a4 {' W
  36.     UI *ui = UI::GetUI();. m& L& J& U$ b' L$ r- r& _+ v
  37.     Selection *sm = ui->SelectionManager();
    2 S# M% d  b  X; H5 w; i3 O' Y
  38.     std::vector<Selection::MaskTriple> mask(1);
    / t7 M: [) @0 G
  39.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);& ~  i4 Q8 L, H. m7 j( U7 N# W; ]
  40.     std::vector<NXObject *> objects;
    - j0 j+ t9 X- g$ q/ f

  41. 7 T0 c% b" a- B3 ?# t" e7 h9 m+ h
  42.     sm->SelectObjects("Select Points", prompt,- |/ F- H+ [  {2 F
  43.         Selection::SelectionScopeAnyInAssembly,
    * O+ X7 K' o& o$ a- {
  44.         Selection::SelectionActionClearAndEnableSpecific,& ~. K+ t' F8 a) L8 H+ x: ]/ O
  45.         false, false, mask, objects);
    0 j$ }8 d; T8 S9 k5 {# M
  46. : j" {4 K- m* H; R; ?/ h
  47.     vector<Point *>selPoints(objects.size());
    ! c5 V/ U8 Z0 K, r
  48.     for (unsigned int ii = 0; ii < objects.size(); ii++)
    / t4 S6 m$ p4 _1 Q" L' e+ y6 {
  49.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);. U' F+ g6 z$ H( P# S; ]

  50. ' ^9 S# B$ V2 O3 ~6 d/ X7 I+ W
  51.     return selPoints;6 @/ V. a% c$ o6 W- u
  52. }
    * C2 T9 X" o, F& e1 c

  53. 5 c' Z* N2 j" v# z6 j, B0 |
  54. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints)
    / _9 e4 V7 c0 u! p
  55. {( k. M! V/ c$ O  X5 z8 _
  56.     Session *theSession = Session::GetSession();
    4 ?" v4 n# Z6 F) j
  57.     Part *workPart(theSession->Parts()->Work());: v) s! l% q- R# D- O. O
  58. 5 P6 w# P& K! _& j* b+ @
  59.     Session::UndoMarkId markId1;
    " C# D" E9 t6 M8 l
  60.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible,
    9 B/ a; y& _: q/ N1 ^% G# L
  61.         "Studio Spline Thru Points");* O+ p; f7 I7 s

  62. 4 ^# ]; e+ r' G2 @
  63.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);
    + \( |* c/ y; u; @# e: h+ j

  64. 4 C0 X; Z# N* S! t
  65.     Features::StudioSplineBuilder *studioSplineBuilder1;
      b. ^' _& k  r+ ^  L$ s8 i3 B
  66.     studioSplineBuilder1 = workPart->Features()->
    . C9 ^% l9 _  I/ R# y
  67.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);' G. ~9 P! S2 j6 ?/ Z5 h* u
  68.     studioSplineBuilder1->SetAssociative(true);! C' E/ X! K7 u
  69.     studioSplineBuilder1->5 ^$ B; E9 }! H: @7 `& h+ a7 i/ x* v
  70.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);: U% T- w* u% v' i8 T3 W
  71.     studioSplineBuilder1->! \4 _3 ?# q0 D
  72.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);* A: w" l4 ^5 q! x) h
  73.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);$ X, l9 _3 S8 q
  74.     studioSplineBuilder1->SetPeriodic(false);8 ~' d2 Y: @* M4 A4 ^3 J
  75.     studioSplineBuilder1->1 e* H7 i4 E# A& N* E8 `
  76.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);
    * D! S' u7 I2 S. n6 H
  77.     std::vector<double> knots1(0);
    4 a5 Z$ U- {2 S- U0 b; Q- t; P5 ^
  78.     studioSplineBuilder1->SetKnots(knots1);5 m- h( w& W! k% M* R( N+ }
  79.     std::vector<double> parameters1(0);1 m5 H$ k: v* \& l! \3 W+ k2 ]0 y
  80.     studioSplineBuilder1->SetParameters(parameters1);: y3 t  M- s) }; {6 M4 N& U
  81.     Direction *nullDirection(NULL);
    $ |6 S& d1 @  R* H% o7 n0 h# l
  82.     Scalar *nullScalar(NULL);$ u$ K! d8 \; d$ Z  g6 V, g! }% K
  83.     Offset *nullOffset(NULL);
    ' l! R2 W3 Z! y6 g- R/ F$ u( `

  84. 9 V9 d/ ~. @8 A  H  }7 {7 O9 {
  85.     std::vector<Features::GeometricConstraintData *>
    0 T9 @2 X+ y$ B# Q9 T: e
  86.         geometricConstraintData(thePoints.size());; H! Z4 {5 y0 h% R

  87.   p  S6 G- r! \" A, p6 J
  88.     for (unsigned int ii = 0; ii < thePoints.size(); ii++)
    $ K2 Y0 G; ^. F
  89.     {
    5 J' d7 ~0 \. ?0 M4 S( M
  90.         geometricConstraintData[ii] = studioSplineBuilder1->
    9 r/ f2 o& Q# l. o. e
  91.             ConstraintManager()->CreateGeometricConstraintData();
    4 f; {7 {! c+ x8 U) R# s
  92.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);6 {  X% m* ?8 D5 q( K9 x- a
  93.         geometricConstraintData[ii]->SetAutomaticConstraintDirection(: h) m& Q- ?) A, H
  94.             Features::GeometricConstraintData::ParameterDirectionIso);
    % M- ?9 {2 e% a& k8 f+ K$ I) c' |
  95.         geometricConstraintData[ii]->SetAutomaticConstraintType(. p# x1 s/ O( ]
  96.             Features::GeometricConstraintData::AutoConstraintTypeNone);5 D. Q% {" K1 x! ~6 [* i1 B
  97.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);
    ! @$ }" z' _- T( {
  98.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);
    ) e0 }7 i9 t0 T0 m0 r7 Z6 y
  99.         geometricConstraintData[ii]->SetCurvature(nullOffset);
    ( U$ [* t* q* c8 x3 S9 f3 G$ O# s- c* j
  100.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);
    7 S- u  X  ]$ p$ f4 _
  101.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);$ s* n: `$ Q2 c$ K8 i
  102.     }$ y- Y" |, a8 d4 Z8 _0 \
  103. ( p. L" B; q$ C6 u$ Y; D' w
  104.     studioSplineBuilder1->ConstraintManager()->SetContents(( `- j! ~) o7 A! l/ D7 ~- O& j
  105.         geometricConstraintData);) }& Z" U1 w& {- ~4 p1 n) v2 S+ A
  106. # b! [7 o) E3 Z) `8 E' O
  107.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();- o% K$ ^: K) R7 |& |. S
  108.     Spline *theSpline = studioSplineBuilder1->Curve();
    # v7 i0 T8 Q8 M9 @+ N" U
  109. : S0 _  z: i+ {6 e8 Z% p# y
  110.     studioSplineBuilder1->Destroy();1 M  P0 h  a3 L2 L6 Y( R8 i; [6 h! v
  111. 7 [- T( V- [2 i9 m0 N1 W
  112.     return theSpline;
    + R* G# K( N6 B( Q& l$ F8 C; ?
  113. }7 J, c; u' V/ u
  114. ! ]! \" ]1 e. U( n! d, a
  115. extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)
    6 \5 ?) u1 Y. R' H! i/ t3 r
  116. {
    5 u, h1 {% r6 T5 L: T
  117.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");
    6 q( |. z! j5 Q3 Q9 F, C
  118.     if (!thePoints.size()) return;$ D  e; x* N3 V" @6 F' e4 N7 V; s3 X

  119. 0 N& D& c, n+ y# m* O7 p
  120.     Spline *theSpline = createStudioSplineThruPoints(thePoints);
    , [1 k6 I1 V# w+ p6 k5 k. O- Z& I

  121. ' N. Q3 E7 @3 v2 o0 [  U
  122.     if (theSpline). w* e) f1 f' j+ C0 \
  123.     {
    * X. M$ K! G; ^. u0 P+ S
  124.         theSpline->Highlight();
      p  w" {+ G& j
  125.         uc1601("Studio Spline Created Thru Points", TRUE);
    ) J. R% U8 O7 R' o# r# g
  126.         theSpline->Unhighlight();
    2 Q) z5 _# f" J
  127.     }/ E, G* e2 _) G  N. a3 D
  128. }7 T1 K9 a" F! l! S+ l# B+ v
复制代码

6 n2 s! f2 y; e' i2 K! l
/ d1 `/ D7 z5 V4 o* n$ H# C" |7 J4 q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了