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

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

admin 楼主

2013-10-30 14:28:35

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

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

x
NX二次开发源码: 通过点创建样条曲线
' ~2 A8 N# x; _3 z- \4 @' o
  1. #include <uf_defs.h>
    * M2 {* _: L( U5 n2 u; B
  2. #include <uf.h>3 d9 t. t5 g  v6 N& T6 a  g; i
  3. #include <uf_modl.h># A) k( O" p+ Y8 K( m: \
  4. #include <uf_object_types.h>
    - U- O1 {) h& ~( n: Z
  5. #include <uf_ui.h>
    8 i7 ]# O; m0 G) W0 X* q
  6. #include <uf_modl.h>
    7 B: W9 R$ I: o7 Q" p
  7. #include <NXOpen/NXException.hxx>
    * M8 |4 w: H2 R1 B6 U
  8. #include <NXOpen/Session.hxx>
    8 F+ u9 j  v) n/ y3 p
  9. #include <NXOpen/Selection.hxx>4 P" m" ~1 k& S$ E* @7 u
  10. #include <NXOpen/Builder.hxx>
    * ~/ L6 ^. C0 I: m3 E
  11. #include <NXOpen/Features_Feature.hxx>* O0 d6 d$ S- z; h) I
  12. #include <NXOpen/Features_FeatureBuilder.hxx>% h. m% F/ s% v5 L/ ]
  13. #include <NXOpen/Features_FeatureCollection.hxx>& A5 K. L) H! A& r& c3 t7 M$ I
  14. #include <NXOpen/Features_GeometricConstraintData.hxx>
    1 X5 C1 R" a' \( c( \
  15. #include <NXOpen/Features_GeometricConstraintDataManager.hxx>
    ! t( Z8 E9 k1 u1 ?. z- h! ^
  16. #include <NXOpen/Features_StudioSplineBuilder.hxx>5 @, v- d/ I' D" [4 C
  17. #include <NXOpen/Part.hxx>7 |- C. C0 R- s
  18. #include <NXOpen/ParTCollection.hxx>
    ) L, ?$ J+ S: H6 _. G0 Q5 [* B+ |. `
  19. #include <NXOpen/Point.hxx>
    ; T  B# D1 `7 y& ~% I3 F9 T8 d/ r9 m
  20. #include <NXOpen/PointCollection.hxx>
      ]; V8 M1 U' T( O6 J9 f. G6 Y1 B
  21. #include <NXOpen/NXString.hxx>
    3 V$ [, a5 }" J" [6 t2 b* N
  22. #include <NXOpen/UI.hxx>! ?5 r* y+ x# J7 k: g7 [5 r
  23. #include <NXOpen/Spline.hxx>+ H9 q- x4 ^8 {8 g# u; `
  24. #include <NXOpen/NXObjectManager.hxx>+ ?" t& Y. Y3 w* N3 t

  25. ( Z7 k3 f" I4 m% _
  26. using namespace NXOpen;
    : S; }2 n9 ]* j* T+ P  y! g
  27. using namespace std;/ Q  r9 U  C* c- \1 L

  28. * q. o1 P; h$ O3 ?2 ?
  29. extern "C" DllExport int ufusr_ask_unload()
    0 b' b9 _+ K0 g) |) s. O
  30. {
    5 d1 D" n" l* t* n! X* }6 M' p
  31.     return (int)Session::LibraryUnloadOptionImmediately;
    : F/ J% _8 ]1 M% X; Y1 x1 `' f
  32. }
    0 X+ m4 e" _) n: }8 ]. J' O
  33. - }2 p2 y! D4 C4 P0 P$ }, b
  34. static vector<Point *> selectPoints(NXString prompt)$ h" I, _4 }  `- \2 n/ T
  35. {' u* |7 ~0 O6 e$ M! q
  36.     UI *ui = UI::GetUI();
    - p2 c% i- X( b: u
  37.     Selection *sm = ui->SelectionManager();
    0 c) t% u# \9 t6 Q6 G0 a- K) W0 A& J5 g
  38.     std::vector<Selection::MaskTriple> mask(1);/ @4 f2 t# T. I0 ~
  39.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);
    4 n( u$ A, T8 x4 D) ~
  40.     std::vector<NXObject *> objects;0 |1 r* q& s* ~

  41. 7 j9 q5 ^5 o- B
  42.     sm->SelectObjects("Select Points", prompt,4 L4 H) q; w* ?# y  t, O0 d
  43.         Selection::SelectionScopeAnyInAssembly,
    ' h3 C7 m& c  i; H, G
  44.         Selection::SelectionActionClearAndEnableSpecific,- B9 G0 i- M1 E, R7 Z
  45.         false, false, mask, objects);7 G' S1 `* Z5 Z* G+ ]* @% S" |

  46. $ Z4 a6 {2 ^9 i& R* o+ Z/ S2 ^
  47.     vector<Point *>selPoints(objects.size());
    8 `7 E9 F% o0 \
  48.     for (unsigned int ii = 0; ii < objects.size(); ii++)
    # S; f2 r: T3 p. a5 N& l% {
  49.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);+ S3 r) g) b; C& G0 r0 b

  50. / j) n: J$ V# G5 x
  51.     return selPoints;
    . Q9 O- D! f% g* b' E9 C
  52. }& _' [) }$ K) F& O7 B

  53. ; I/ d% o: c4 W# R9 d
  54. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints)
    7 n& _( a5 h, F0 d1 J9 \; `3 U
  55. {* k3 ?- w" d0 L, |
  56.     Session *theSession = Session::GetSession();
    1 ~; g; w; n* h- ~# y6 p7 ?
  57.     Part *workPart(theSession->Parts()->Work());4 k* a3 {4 {8 a2 v) x

  58. # I/ B( H" Q* L! Q% A
  59.     Session::UndoMarkId markId1;6 W7 G- K- I" r; |  l5 o, b
  60.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible,2 a) X$ S' G- b* |6 \1 o3 s
  61.         "Studio Spline Thru Points");
    ' h* R. [  w5 ]( n- f4 x

  62. 5 ?5 Y4 c4 e* f% n
  63.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);: Z3 a3 k" @1 J3 P2 p% P: `
  64. 6 H# l# a+ ^3 R) H. F# U
  65.     Features::StudioSplineBuilder *studioSplineBuilder1;
    7 M* w) V6 C9 U+ e, b
  66.     studioSplineBuilder1 = workPart->Features()->) i4 u8 \5 ~( j/ l0 J
  67.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);
    % u# x9 I+ U; v: y
  68.     studioSplineBuilder1->SetAssociative(true);1 {3 e0 }  |3 D0 q' J
  69.     studioSplineBuilder1->
    * q, H! B6 ^3 m0 q. c
  70.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);
    9 O8 g1 r: ^8 c& X( P6 H
  71.     studioSplineBuilder1->
    ' z$ {+ @9 n6 [8 ?% w
  72.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);
    , N! K+ f$ _  D1 N  V& @
  73.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);
    " L/ j. @; T: }4 Y, G. D4 v
  74.     studioSplineBuilder1->SetPeriodic(false);/ M$ f, L  H6 ]3 Q  l
  75.     studioSplineBuilder1->
    . b2 a! o/ Q+ n$ K) J+ j6 o# s
  76.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);2 q: Y# E5 z: `' j4 q
  77.     std::vector<double> knots1(0);
    ! W1 {! b! y4 h  `! v7 ~, C7 J
  78.     studioSplineBuilder1->SetKnots(knots1);
    ; a  ^+ F3 {9 @: {; l3 M" T, T
  79.     std::vector<double> parameters1(0);
    . C: v' M/ O" K# u- B
  80.     studioSplineBuilder1->SetParameters(parameters1);
    ( K* {% N2 U0 h  w) Z, _& ]5 z
  81.     Direction *nullDirection(NULL);
      U- U  z7 {0 u8 Q: M& J: s/ {, ]) t
  82.     Scalar *nullScalar(NULL);
    . {, \  U% D0 W9 t$ N
  83.     Offset *nullOffset(NULL);
    ' \% j. l# p2 S. K
  84. 1 B" P7 B8 D2 L) H* g5 H! H
  85.     std::vector<Features::GeometricConstraintData *>0 q& k" R# Q- N% T2 e# t/ z/ b
  86.         geometricConstraintData(thePoints.size());/ I9 `& j6 s  t1 ]$ q9 k
  87. * L' ^3 Y; v: {1 e. }
  88.     for (unsigned int ii = 0; ii < thePoints.size(); ii++), h# i' M9 P- n: X. Q$ j% Z# G
  89.     {' N6 L! s+ m; U. r/ v
  90.         geometricConstraintData[ii] = studioSplineBuilder1->; E+ B9 h! F/ d6 b* u
  91.             ConstraintManager()->CreateGeometricConstraintData();- _4 o8 H. \( c; r$ R& |/ e
  92.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);% I0 j: F8 `: G+ t3 s
  93.         geometricConstraintData[ii]->SetAutomaticConstraintDirection(! S; ~! I7 ]. O8 B) G$ u1 W
  94.             Features::GeometricConstraintData::ParameterDirectionIso);5 Y1 M  Q8 m" s+ A/ |
  95.         geometricConstraintData[ii]->SetAutomaticConstraintType(
    : S! w! U) G6 o" c. V* O
  96.             Features::GeometricConstraintData::AutoConstraintTypeNone);+ t. R; V" X$ n- `  l8 o
  97.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);
    + S4 C( B, M; l
  98.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);2 A% G: m8 `# b) P, c" _# t
  99.         geometricConstraintData[ii]->SetCurvature(nullOffset);7 a7 u$ K# ?) C8 A* X4 }) J  l
  100.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);
    ( a! R5 x7 e  _4 W
  101.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);
    1 z, e* S* C6 Y. U' ?
  102.     }
    ) J; [: p, q" ?$ ~- A

  103. 4 I9 ~& V: r9 M9 b9 W
  104.     studioSplineBuilder1->ConstraintManager()->SetContents(
    . r) O. e6 B6 i8 g$ U6 f8 y0 R; j+ n
  105.         geometricConstraintData);/ @5 H: e( T( q" c1 a  X; Q- E0 n

  106. / V, T3 p8 m# B  X* V; ^5 W
  107.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();# l# u! @& l! \- G& x, {1 ~* m
  108.     Spline *theSpline = studioSplineBuilder1->Curve();
    8 i0 F5 W1 e$ W. k: q5 [

  109. / M7 P$ p* c/ a1 ?$ N: e
  110.     studioSplineBuilder1->Destroy();$ A% W4 {- N5 d' V

  111. : b& ?, o6 A* F7 d% k* g
  112.     return theSpline;! }2 L9 D) w+ p* W/ P
  113. }, x7 Y) W2 W. l1 c; D$ t' H( `0 l$ c" Q
  114. 8 w. H3 n8 ]/ i) L
  115. extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)  p& `/ r6 i  c0 z$ S1 I
  116. {
    0 s& Q- G) C, T; i; ]: R; ^
  117.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");1 h3 \+ K: w- q$ V% \1 j
  118.     if (!thePoints.size()) return;
    . M% w& O( z* `  e( ^

  119. - I, F9 ~8 [3 T* B
  120.     Spline *theSpline = createStudioSplineThruPoints(thePoints);# l9 g9 u; z$ _4 ^7 l
  121. 9 U/ e0 d: p3 M. L5 k/ ?+ w
  122.     if (theSpline)+ C9 p/ z; k' ^$ K" |8 C
  123.     {
    0 G0 G# r3 a7 m% c
  124.         theSpline->Highlight();  a; P$ y; z+ Z5 `7 ]; o$ [3 b
  125.         uc1601("Studio Spline Created Thru Points", TRUE);
    ' l+ o6 k' P+ g
  126.         theSpline->Unhighlight();$ [1 h. j$ y/ _8 ]2 b
  127.     }
    9 W8 y; r8 v9 J& \3 f; `$ d
  128. }5 h8 l' X6 V) r: [
复制代码

4 p8 Q. h- v# e+ f: P' F; M/ K9 W- i2 W" {$ P! t( U

/ \* }0 q: ?' `5 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二次开发专题模块培训报名开始啦

    我知道了