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

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

admin 楼主

2013-10-30 14:28:35

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

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

x
NX二次开发源码: 通过点创建样条曲线* ]2 h1 r1 @! c3 m, @& |/ Q1 m& ?- b
  1. #include <uf_defs.h>
    + u- t0 F. M9 l3 f
  2. #include <uf.h>
    - n3 u% m1 p: S) @) s& k
  3. #include <uf_modl.h>$ E5 {- X! P" R, K
  4. #include <uf_object_types.h>
    # Z* M, A! g2 G% b  g
  5. #include <uf_ui.h>
    7 r0 r( e5 u( X+ n. R
  6. #include <uf_modl.h>
    + x2 A5 \& U- G
  7. #include <NXOpen/NXException.hxx>- W& d: t- }1 f( X% L
  8. #include <NXOpen/Session.hxx>
    3 K3 R0 G; `6 C$ I: S
  9. #include <NXOpen/Selection.hxx>6 J7 v; v6 U) e! W- [$ W& V" d
  10. #include <NXOpen/Builder.hxx>) X& O# y6 f9 G$ F- D
  11. #include <NXOpen/Features_Feature.hxx>
      C. T6 \' ?& u( H. L
  12. #include <NXOpen/Features_FeatureBuilder.hxx>
    8 h3 [5 n+ B/ L9 Q* w
  13. #include <NXOpen/Features_FeatureCollection.hxx>! O1 R; I( K# Q
  14. #include <NXOpen/Features_GeometricConstraintData.hxx>/ K: z( o8 t( C- @
  15. #include <NXOpen/Features_GeometricConstraintDataManager.hxx>) n. D# N  W# Z, B3 Z
  16. #include <NXOpen/Features_StudioSplineBuilder.hxx>7 E" `  X5 P! x% n6 v! \7 e& B
  17. #include <NXOpen/Part.hxx>8 t2 X) z7 u% I+ Z- Y
  18. #include <NXOpen/ParTCollection.hxx>2 R3 i" C# g  h: }& f
  19. #include <NXOpen/Point.hxx>% R! ~8 p7 R% D# {. U. O
  20. #include <NXOpen/PointCollection.hxx>
    $ Z- C% k  F& ?2 Q; O- i: f+ G
  21. #include <NXOpen/NXString.hxx>* ?+ b0 I! ?: R6 }" @+ t& O
  22. #include <NXOpen/UI.hxx>
    ; `: i/ n6 p/ e; W" t- B  g, O1 O
  23. #include <NXOpen/Spline.hxx>
    0 t* C+ a& W6 n# T
  24. #include <NXOpen/NXObjectManager.hxx>; k7 O# x: R/ d
  25. 6 N4 }4 q% T4 {( h
  26. using namespace NXOpen;; y$ b. C+ q2 G" c/ v
  27. using namespace std;
    1 \6 ]4 q& `/ z- B  b! h3 R

  28. ! H9 b: a$ ~; _& i& j5 u
  29. extern "C" DllExport int ufusr_ask_unload()
    , I( _, V2 T7 ^$ g1 |( |4 r# J0 D- P
  30. {
    - ?$ z8 }' g) D; _
  31.     return (int)Session::LibraryUnloadOptionImmediately;
    . ^/ b( H2 U! J/ w9 t
  32. }# Q: y+ G1 S" V4 \# m

  33. & J! e, y9 T- u7 V" p
  34. static vector<Point *> selectPoints(NXString prompt)
    $ L  v1 t9 }4 @" @' |) F, f( o' i
  35. {* T5 E( F# ]" A( P' P
  36.     UI *ui = UI::GetUI();; q4 h6 Q7 S6 b5 Q& G$ H% @, T
  37.     Selection *sm = ui->SelectionManager();1 y' @3 \' `- T: t. w: F0 L( {
  38.     std::vector<Selection::MaskTriple> mask(1);
    . _( c( l* l; K! J0 M
  39.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);8 Y, f+ M9 K( C7 Z( |! l+ \
  40.     std::vector<NXObject *> objects;% D" Z7 m) j4 U5 a. D+ |1 p
  41. + Y4 Q9 E% r9 r9 ^: ]2 n& A
  42.     sm->SelectObjects("Select Points", prompt,
    , y+ n5 v' I: U1 \' Y
  43.         Selection::SelectionScopeAnyInAssembly,: x" I# Z: ]& E/ P" Q
  44.         Selection::SelectionActionClearAndEnableSpecific,
    5 d+ N* e/ q9 V
  45.         false, false, mask, objects);
    9 O( ~. ~3 g! Z4 s1 |$ N2 ]

  46. 4 [4 p; ?+ I$ f& k1 Z9 m
  47.     vector<Point *>selPoints(objects.size());
    9 z  j, j9 H( i  V9 k" q# Y
  48.     for (unsigned int ii = 0; ii < objects.size(); ii++)* m1 R8 U9 x9 ~- F; s( F6 r. \" w5 W
  49.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);2 y, m% o# c( f$ ~9 u* G$ z

  50. 7 K2 W6 S. l; e
  51.     return selPoints;+ {# a4 M6 P/ v/ f; C
  52. }9 Z8 y7 b9 ?( U* _' ?
  53. & ?% {8 V4 O; t' @* d. t; t% b
  54. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints)3 n8 S  d6 f6 N+ P
  55. {8 h; T+ S* \: z9 X- b
  56.     Session *theSession = Session::GetSession();
    ; H  t5 F; T! p1 r0 k; x* s
  57.     Part *workPart(theSession->Parts()->Work());" T2 Z& C- z4 C$ B; y
  58. / V2 x/ Q6 @+ E
  59.     Session::UndoMarkId markId1;: c; k( Z9 `7 P1 L
  60.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible,3 b: a1 i4 L% H. X
  61.         "Studio Spline Thru Points");
    * E, i9 Q3 `- j$ k, a% S
  62. 8 G: d% A# o3 I$ v
  63.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);5 `, c$ d8 d. ^2 i

  64. : ?0 M! j' ?. m
  65.     Features::StudioSplineBuilder *studioSplineBuilder1;
    * a5 D! a2 i9 t" i
  66.     studioSplineBuilder1 = workPart->Features()->
    ! f+ v$ d0 [" C$ M4 [$ H
  67.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);
    : W6 w% [$ f; N5 z8 e
  68.     studioSplineBuilder1->SetAssociative(true);
    7 t; A' O$ u) {$ y: ?* ?. r9 B
  69.     studioSplineBuilder1->
    . ~: K( \! s2 d8 @
  70.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);
    8 `7 Q- [3 U2 d9 N6 f5 w- ^* g' @) \
  71.     studioSplineBuilder1->* c3 L* ?# }1 w/ z
  72.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);
    8 z' M! W$ K2 j3 ]: M( d
  73.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);
    & t: [" }1 S4 B; W
  74.     studioSplineBuilder1->SetPeriodic(false);
    ! e1 ^7 A% u3 m! U
  75.     studioSplineBuilder1->+ C! M5 V8 i1 d) O% }" W
  76.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);
    $ y4 d! R. v; w" A0 j# n" p
  77.     std::vector<double> knots1(0);
    7 B  ?" X$ F1 F- B" [* a3 O
  78.     studioSplineBuilder1->SetKnots(knots1);
    8 q, \, P0 M  l; s4 H/ e6 c/ o
  79.     std::vector<double> parameters1(0);
    + t/ c; [1 U6 V7 ?" k" c
  80.     studioSplineBuilder1->SetParameters(parameters1);
    4 d. [% n! S2 G' \3 b  `
  81.     Direction *nullDirection(NULL);
    8 F& K, m; G- Z' p% Q) K
  82.     Scalar *nullScalar(NULL);- v. o. y. C' @  o! p9 B+ |
  83.     Offset *nullOffset(NULL);
    6 s  v7 m; f* P& j' v& ]( B- H
  84. - F- ~* ?0 T/ A
  85.     std::vector<Features::GeometricConstraintData *>
    & A9 W7 D* w# H( W# `2 d! a
  86.         geometricConstraintData(thePoints.size());  U2 ]5 s( @0 n4 I

  87. * r; P4 ^  A( M: Z9 Y# v0 ]0 y
  88.     for (unsigned int ii = 0; ii < thePoints.size(); ii++)+ l# f9 ^8 \8 h0 ]
  89.     {
    * B% J7 b# |' J5 `0 V  h1 C: A$ g
  90.         geometricConstraintData[ii] = studioSplineBuilder1->
    5 G5 ^9 _4 U1 ~8 X
  91.             ConstraintManager()->CreateGeometricConstraintData();
    ( x/ v3 g) n3 V( y/ a# n
  92.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);
    ; o3 u  ~7 s: ^; q; q  }
  93.         geometricConstraintData[ii]->SetAutomaticConstraintDirection(5 o/ V, O  R4 I* M. b0 }
  94.             Features::GeometricConstraintData::ParameterDirectionIso);
    * u) q) i4 M0 ]- a. ?4 R7 \; @
  95.         geometricConstraintData[ii]->SetAutomaticConstraintType(
    . Y" \) m' |8 R0 w3 `+ z
  96.             Features::GeometricConstraintData::AutoConstraintTypeNone);
    1 K) i& [* q7 T7 V0 Z/ I
  97.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);2 d$ \  ~2 b, Q+ g8 v1 q3 S
  98.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);
    $ T! g" H2 a2 e1 N7 @9 x
  99.         geometricConstraintData[ii]->SetCurvature(nullOffset);4 \( |! x  G! T+ g$ }  a) l' x# g
  100.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);
    3 Y( o6 \1 k. G8 O
  101.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);. w" I" E: }7 a4 p: }3 g
  102.     }
    . |& K6 Q' {0 @& K* Z& _' _% ?/ ^

  103. + w" D) ?. Y6 e# S
  104.     studioSplineBuilder1->ConstraintManager()->SetContents(/ v" i- i- |  Y) W! o5 Q
  105.         geometricConstraintData);: w8 q8 z2 i4 q$ z/ L' L

  106. 0 l2 D! @0 c/ F3 r9 {" \; @
  107.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();6 G4 C$ P+ [* z  K6 G, d3 ~
  108.     Spline *theSpline = studioSplineBuilder1->Curve();
    2 o; h1 a* Z8 C' H

  109. 7 ]9 X6 b' `" _; C) H. S# |6 p
  110.     studioSplineBuilder1->Destroy();
    ; Y) r2 r. X$ ]2 x# E

  111. " @: D' w8 m- l. b
  112.     return theSpline;
    5 n# l5 D" ?. t: }" ^0 l
  113. }
    ) [  ~& _6 J) r: V
  114. 7 ~% H8 N% D/ t. d7 P% W
  115. extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)
    1 U0 \6 l6 {7 o; h
  116. {' h; m9 T# @/ _# N0 @) A
  117.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");0 _+ \8 R4 W' D4 P# [/ a
  118.     if (!thePoints.size()) return;. x3 I7 G$ Z. g1 U; A

  119. 3 x& n5 p2 _" n+ G7 f" [
  120.     Spline *theSpline = createStudioSplineThruPoints(thePoints);; p5 r) P7 o- Y& u- ~
  121. 7 S# |( t/ Y7 @8 S: v$ E
  122.     if (theSpline)
    3 p/ z  {, m; f6 Z
  123.     {$ L! H7 {: I% z3 P! W) m
  124.         theSpline->Highlight();
    ' Q+ m; j( P$ V  U
  125.         uc1601("Studio Spline Created Thru Points", TRUE);
    * T6 t) t! E# Y5 b$ e
  126.         theSpline->Unhighlight();
    ) ~0 R& N  g1 `, n) w5 m0 O
  127.     }, u# \; k5 s2 o" s* T7 Z: T3 U* X
  128. }/ ^2 m- C# r# c9 C( t
复制代码
- L7 s( F3 ?  q) l

" k4 `0 Y3 \" G: U* i) E' M
, _* L2 K' _7 q! X1 l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了