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

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

admin 楼主

2013-10-30 14:28:35

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

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

x
NX二次开发源码: 通过点创建样条曲线! c: w( V# E8 P2 ^
  1. #include <uf_defs.h>+ V7 @; ]9 ^4 ~
  2. #include <uf.h>' }% s/ H4 t; S! P3 i
  3. #include <uf_modl.h>
    & B* b/ \# ~6 _' H5 ]
  4. #include <uf_object_types.h>
    1 o- x4 L9 P  p  Y: z. A
  5. #include <uf_ui.h>+ z9 @" w7 l4 q; B7 c0 d
  6. #include <uf_modl.h>2 d* h5 V. Z; U# [
  7. #include <NXOpen/NXException.hxx>! s1 H, m# q/ l* O  A; ]8 Q
  8. #include <NXOpen/Session.hxx>
    ' l& J, d+ q' P/ F1 K& t$ ?) L7 T$ N6 l
  9. #include <NXOpen/Selection.hxx>3 O$ m: I* S2 F2 A' I
  10. #include <NXOpen/Builder.hxx>
    5 V7 N3 e( T9 r' D' @
  11. #include <NXOpen/Features_Feature.hxx>  Z( Q) s9 z4 ^' |
  12. #include <NXOpen/Features_FeatureBuilder.hxx>
    / i0 T1 }1 C0 o
  13. #include <NXOpen/Features_FeatureCollection.hxx>4 E* v+ z8 `  C& M
  14. #include <NXOpen/Features_GeometricConstraintData.hxx>0 W, o; u% a3 M. x$ m
  15. #include <NXOpen/Features_GeometricConstraintDataManager.hxx>2 o; B( c5 |4 z- j# y8 ~1 K; B
  16. #include <NXOpen/Features_StudioSplineBuilder.hxx>/ U) |5 q1 R2 H' I5 P3 Z* i% t  b6 u
  17. #include <NXOpen/Part.hxx>5 k" }6 C  q$ V, ^% z- e+ S
  18. #include <NXOpen/ParTCollection.hxx>( ^5 J8 ^1 P: |: \
  19. #include <NXOpen/Point.hxx>
    5 W+ O( i. q7 ~0 {/ r' }6 Z
  20. #include <NXOpen/PointCollection.hxx>
    . y% J/ O5 J3 `# P% l5 M
  21. #include <NXOpen/NXString.hxx>2 t$ Q9 `: d  j; u. y0 V  e
  22. #include <NXOpen/UI.hxx>, ^  U8 p' o+ L0 _& Q% V) j: x
  23. #include <NXOpen/Spline.hxx>3 W$ o1 Y! [# _& ~+ J1 j! u
  24. #include <NXOpen/NXObjectManager.hxx>
    3 v/ N# d$ Y9 e: ^
  25. 1 @6 ?) U6 n7 v6 {8 [
  26. using namespace NXOpen;
    ; ~% X0 \+ {8 _6 e3 n$ k
  27. using namespace std;( v! W4 x( g- h
  28. - p7 m5 ?5 N1 V4 R9 \6 t
  29. extern "C" DllExport int ufusr_ask_unload()' ~9 X# y9 M+ O
  30. {: E* l# l  X+ N* g
  31.     return (int)Session::LibraryUnloadOptionImmediately;0 Y3 [9 {" }# [. z
  32. }( S. G5 O- d3 P. Y
  33. / Q6 i: j% @" n$ y% {
  34. static vector<Point *> selectPoints(NXString prompt)5 i: r/ @$ u/ b0 _" l- I( g9 m" Y
  35. {$ V% G3 n3 w* j( T, Y$ L
  36.     UI *ui = UI::GetUI();
    0 Y9 B7 d5 N1 n- U/ N0 u6 T
  37.     Selection *sm = ui->SelectionManager();! y  l+ e4 ]6 N" F  A  M8 L( ?
  38.     std::vector<Selection::MaskTriple> mask(1);- m) `. B1 ^4 e; a) c
  39.     mask[0] = Selection::MaskTriple(UF_point_type, 0, 0);' Z0 O7 v. n' }  _& p7 [# N
  40.     std::vector<NXObject *> objects;
    $ z) T+ g& T  C, b: b
  41. 3 i) k+ h( B8 t0 Y' J' y2 K
  42.     sm->SelectObjects("Select Points", prompt,
    4 s- a; n( i' c* l2 p( O" O- g0 b3 Y
  43.         Selection::SelectionScopeAnyInAssembly,
    6 @: M$ H' w& X1 l
  44.         Selection::SelectionActionClearAndEnableSpecific,; L3 T( A1 ]. H- ]# b6 [
  45.         false, false, mask, objects);
    0 `' ]5 o# N3 K9 M- V' [( K

  46. 9 C# W) |8 \* G4 D1 D4 ]
  47.     vector<Point *>selPoints(objects.size());, H& o/ {% K2 t/ |
  48.     for (unsigned int ii = 0; ii < objects.size(); ii++)
    / ^# F' Y7 E& Z% E# [; X
  49.         selPoints[ii] = dynamic_cast<Point *>(objects[ii]);
    ) R" C4 c+ l( S& `

  50. 0 X6 d7 x/ s9 \
  51.     return selPoints;  ~: V' \( [. o3 W1 l* D
  52. }
    0 o, w: Y7 E+ _. C- W3 M# G

  53. + W' A4 K2 O* _2 k' _: m: G
  54. static Spline *createStudioSplineThruPoints(vector<Point *> thePoints)) }  y! g3 m% u$ O. [
  55. {; v6 U6 C: E: p4 w% X
  56.     Session *theSession = Session::GetSession();
    2 Y" _  d, w2 j7 h. l; q6 r
  57.     Part *workPart(theSession->Parts()->Work());
    ; s9 C- A' ^+ L- _/ ^9 ^1 r

  58. ' t* B" F' s: c: {9 k
  59.     Session::UndoMarkId markId1;. {5 ?3 D$ w+ g- a, A
  60.     markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible,& x0 c) T& o4 O9 `
  61.         "Studio Spline Thru Points");4 o. I5 ^/ p* Q$ K2 X2 a
  62. # U1 [1 ]( J" {0 u& I
  63.     Features::StudioSpline *nullFeatures_StudioSpline(NULL);& w3 j$ D8 w" Y) ^

  64. ) ^" z, R& r$ a. y$ p
  65.     Features::StudioSplineBuilder *studioSplineBuilder1;
    / `# G6 Q( v) v% y, P9 \2 p
  66.     studioSplineBuilder1 = workPart->Features()->' B' N4 {7 E2 T3 u( q
  67.         CreateStudioSplineBuilder(nullFeatures_StudioSpline);$ [. @& A) _7 ?2 z+ [
  68.     studioSplineBuilder1->SetAssociative(true);
    $ H1 ]: W/ x6 p+ L4 g# A$ Z: _
  69.     studioSplineBuilder1->( B+ T1 L5 t. x2 b+ N% l
  70.         SetInputCurveOption(Features::StudioSplineBuilder::CurveOptionRetain);/ y, D5 l1 s/ s, R; z2 D
  71.     studioSplineBuilder1->9 l2 N7 |' Z- ~! ?# |; d4 z
  72.         SetSplineMethod(Features::StudioSplineBuilder::MethodThroUGhPoints);8 B' b7 r# O/ w- W  q
  73.     studioSplineBuilder1->SetDegree((int)thePoints.size() - 1);( v! T# r) B% Z# `8 V- {
  74.     studioSplineBuilder1->SetPeriodic(false);
    ) I( F% n) P# B2 X, D; w- U- w0 J
  75.     studioSplineBuilder1->8 m5 v3 w% S  o% {( q0 M8 ?# ^
  76.         SetMatchKnots(Features::StudioSplineBuilder::MatchKnotsTypeNone);6 Y- @6 o) o$ o, K* v
  77.     std::vector<double> knots1(0);
    8 E' q5 I/ i- v8 C# R
  78.     studioSplineBuilder1->SetKnots(knots1);0 W+ z( i$ ~% i7 d$ L' t4 o
  79.     std::vector<double> parameters1(0);0 l: ]/ v% R1 I) q% \
  80.     studioSplineBuilder1->SetParameters(parameters1);
    " g% B5 W0 g2 P$ u
  81.     Direction *nullDirection(NULL);
    + n0 H+ n  D1 L3 b8 D8 B, m
  82.     Scalar *nullScalar(NULL);
    " v- f2 Q  {6 R$ e& H3 {2 U( j& `
  83.     Offset *nullOffset(NULL);
    2 @3 n  U- [1 Q' `
  84. ( k/ J+ P5 a$ g  S
  85.     std::vector<Features::GeometricConstraintData *>
    1 @4 w/ L% i4 w/ D9 x/ c
  86.         geometricConstraintData(thePoints.size());  k) Z( S6 K3 P5 B! S) r5 `
  87. 6 T3 _  N, z6 p( ~( F1 K& c0 ?. R
  88.     for (unsigned int ii = 0; ii < thePoints.size(); ii++)
    $ [/ T, Z* t; }) R
  89.     {
    7 N+ y; H  M* _- `
  90.         geometricConstraintData[ii] = studioSplineBuilder1->: B% \8 N9 c7 Q$ H3 G
  91.             ConstraintManager()->CreateGeometricConstraintData();/ U. z0 v- ^- W/ T. Y
  92.         geometricConstraintData[ii]->SetPoint(thePoints[ii]);
    * C( K- y# t3 M7 @% ^
  93.         geometricConstraintData[ii]->SetAutomaticConstraintDirection(
    2 M1 O7 O+ J3 m4 P
  94.             Features::GeometricConstraintData::ParameterDirectionIso);& g5 ^1 }" Q; |. x& W
  95.         geometricConstraintData[ii]->SetAutomaticConstraintType(* B; H" Q$ R0 q2 P$ _
  96.             Features::GeometricConstraintData::AutoConstraintTypeNone);
    / V+ S2 B' e4 W5 d6 R; ~; y7 x
  97.         geometricConstraintData[ii]->SetTangentDirection(nullDirection);
    " F( U2 [' S9 F) a% q
  98.         geometricConstraintData[ii]->SetTangentMagnitude(nullScalar);% Z$ n% ~6 W1 \
  99.         geometricConstraintData[ii]->SetCurvature(nullOffset);# q, @$ h: c, q& M( Q
  100.         geometricConstraintData[ii]->SetCurvatureDerivative(nullOffset);! K1 n! i5 i& @8 V8 ?: R( q, w! U
  101.         geometricConstraintData[ii]->SetHasSymmetricModelingConstraint(false);
    + s* a! g! q  ~, j# q
  102.     }
    ( p5 W/ }2 K- e& r/ l6 k/ D' l$ k
  103. 6 y+ x/ a  Z2 H4 b
  104.     studioSplineBuilder1->ConstraintManager()->SetContents() u( X4 g9 M1 Q# T
  105.         geometricConstraintData);
    ; W! k1 Z' ], z

  106. 0 R# x. F  Z) D) Q7 D
  107.     Features::Feature *feature1 = studioSplineBuilder1->CommitFeature();
    $ i! j/ H! d, f3 O
  108.     Spline *theSpline = studioSplineBuilder1->Curve();
    . }" [  U: {6 \

  109. - ~$ I4 k% \' e
  110.     studioSplineBuilder1->Destroy();
    - }6 {+ d% S, P/ n
  111. " e: j7 }  K. z# s1 P: T
  112.     return theSpline;
    7 e6 p/ d6 r# w
  113. }
    ; j  v# I  l) z

  114. 5 o7 v  I0 u! Y& L6 u
  115. extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)- [" O: K$ R1 D; v& X; v& B
  116. {& R) |  `" _7 u& V1 W
  117.     std::vector<Point *>thePoints = selectPoints("Studio Spline Thru Points");, A) [2 O7 a! c. E: D
  118.     if (!thePoints.size()) return;
    5 l8 d  x( ^! [
  119. 1 c+ ~% C/ w& A, }( W
  120.     Spline *theSpline = createStudioSplineThruPoints(thePoints);
    ! W& B( g$ F7 A4 }4 f$ a
  121. & r) }- @& W* M* F& M* ~/ O
  122.     if (theSpline)# C& G' C& Z2 c. _9 ?# G  n
  123.     {
    , W9 {# @& @% {5 M
  124.         theSpline->Highlight();
    % Y- g3 Z; Q8 `4 ?# g
  125.         uc1601("Studio Spline Created Thru Points", TRUE);
    1 ]8 g' y9 f- ^- W  l% J% A
  126.         theSpline->Unhighlight();: ~+ ~7 [# Q: Z# v! b  Q
  127.     }
    1 U  K- j5 C! D% @/ E
  128. }
    ' q3 |/ V3 }3 S) s4 L
复制代码
1 @! @4 _/ R' K
' G1 [' v2 ?& e  \5 s
2 m; _: t$ q5 S3 e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了