PLM之家PLMHome-国产软件践行者

[二次开发源码] UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves

  [复制链接]

2019-4-25 18:47:55 9105 3

PLM之家NX 发表于 2014-5-5 22:45:05 |阅读模式

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

1 j9 K/ C( n" ]  I8 z$ E# T, Q- J% H+ r6 U1 u2 t/ `) V
4 \4 }" r+ D6 S* W
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves- n7 a9 c  b' V: a5 f2 _# \2 o
) t+ N/ s/ M) g
此处使用的是 通过面的法向创建投影曲线,可以参考下!
* g- x- _, @5 s* ^1 p# g9 K9 i: D' P, m0 u0 l+ G
% m" F8 u$ @: v8 o

  {9 E; R5 B- R. W# z
4 C& c; Y% m% P1 G9 y$ W: f& D, G- a' m& o. u7 J

. E( Z9 T* W* L1 W) a' k; |5 L0 s  x

NX Open C++ 创建投影曲线 project curves

 NX Open C++ 创建投影曲线 project curves

4 i2 B, f: Y2 R2 r4 X) ~6 j! A
5 t3 ~3 ^; q# C& J0 C9 e" t: Y' m7 `. T0 u6 t) [: j
  1. . c; U1 ?  I% ?# b
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)' n9 s  x$ Y& @& j" B5 e
  3. {' ]* s  _. q' e- z: `! E6 O
  4.         int errorCode = 0;
    ' }& N) P+ }3 h8 b9 a
  5.         try, d9 |$ O/ ?2 a7 ^7 U
  6.         {: `& C6 d5 H4 T2 e' D
  7.                 // createProject curves- P  I8 x7 t. y6 e9 T8 n3 Z
  8. ' ]  c( X1 d6 A3 w: [  Z
  9.                 Features::Feature *nullFeatures_Feature(NULL);- k# W5 ~' B. Q& C  D: ^; S  o3 P

  10. 4 W8 P# O7 G. f2 c. W8 b) W+ m7 @
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    ) g; v# L, D0 l5 U3 H; ~) u
  12. ! z1 r6 {4 [7 X5 r% I# x" e* N
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);+ c1 B# ^( F* f8 C
  14. ' V* D& s! }$ s+ x% O4 |  ~* d* F
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    , v& y8 |  o2 e8 {$ H. v  t" |' V
  16. 4 @: \1 N( m% O" p0 {' o$ }2 a
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    4 ?" S+ }  n# n; z" I8 j
  18. 7 m8 s$ V  @4 X7 y& U8 o4 a
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);9 l; [: }- d& B+ j" N. u7 D
  20. % l, g: B: D1 y/ c9 A
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
      E8 B. k1 Z5 W+ ~+ s
  22. . e- J0 v9 I# s- ?1 \8 A" t
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    9 {& k/ d+ a  G4 Z8 C
  24. ; V( ~5 T1 a( Z( }
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);3 i# J& F2 C  [6 z6 d/ A8 @8 ~, B
  26. $ `7 a3 y$ J% ]) y  D+ M0 n& P1 r
  27.                 int size = (int)inputObjects.size();$ k$ w  D3 S# X' t  L
  28.                 std::vector<IBaseCurve *> curves1;% l9 G+ O' y- ]1 ]/ e6 q
  29.                 for (int ii = 0 ; ii < size; ++ii)4 B+ C0 F, u' S% R
  30.                 {
    + t+ w; t- p8 {+ q' ?3 T
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    7 p% M" S7 ^8 F/ [6 x2 ^$ O) s4 ?
  32.                 }
    5 l" b7 o) d: s
  33. : g! D0 x  y% _
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;; g5 u4 k, |0 S/ e) z7 I

  35.   k1 C1 \$ g8 E0 I: [& F. |5 H
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);5 P' ]  @+ i8 ?  E: Z9 a+ s
  37. 8 {+ E% N0 f, X! S/ d
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    5 q) `) w! }7 G6 o# `. J

  39. 7 O& {( a/ d4 }- Z! p
  40.                 std::vector<SelectionIntentRule *> rules1(1);$ N; y+ o! \/ X7 ^6 Z2 i9 C. M
  41.                 rules1[0] = curveDumbRule1;
    " h# q+ [2 O; Q. ?5 y
  42.                 NXObject *nullNXObject(NULL);/ g, a9 \+ `. I# J4 Z9 F5 N3 M
  43.                 Point3d helpPoint1(0, 0, 0);9 B( Z" D* _3 P' v" d& T  c
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);6 O, ^5 X: C4 z" |* b  d+ P5 A- v
  45. 7 x; S4 }  l; b# l2 g) t
  46.                 plane1->Evaluate();. r6 b, o1 @+ o- r7 h
  47. * U8 o/ Y, k9 o9 T4 P$ R0 P8 X
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);' R, l5 l  F" K# V! S+ p( u
  49. 4 z- O+ [2 Q' t- c' k
  50.                 projectCurveBuilder1->SetGapOption(true);
    * s3 _# J1 E: n0 a, P- G

  51. 7 Y' K4 d7 V4 D0 [+ P. d
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);' T/ ]" j% w- q5 f0 q( c  r

  53. 1 ~# D* s: m9 @& e: g2 a
  54.                 NXObject *nXObject1;
    # `1 G! e, H  o# t) _
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    * }/ i0 A$ t4 G+ d3 N; k4 i& |) u% E
  56.   Y2 {6 u" Y+ _) N+ A4 {# T
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    7 c( g% Z" i. R( U( ]  r
  58. ; F# R+ w: R5 O' X& I9 E. z
  59.                 projectCurveBuilder1->Destroy();
    " A$ F0 @: Q$ G/ S' w$ ?, f4 t& f

  60. " A# e% _7 s9 ]4 j! O
  61.         }3 x! Y+ a' V" U; N' L
  62.         catch(exception& ex)  ]7 a- A; U9 b% t5 I! g  ~
  63.         {
    : W6 |' W# K1 r
  64.                 //---- Enter your exception handling code here -----1 ^& B/ f4 @: b- P  F
  65.                 errorCode = 1;
    3 K  U! k( X& a" N; S& S6 M
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    1 ]# a* i& Q5 [' {
  67.         }
    * }$ e3 i5 m: B  s

  68. 8 B: N7 B" O1 _
  69.         return errorCode;
    . h3 g6 ]7 `2 s& c
  70. }3 G5 S3 r+ `0 ~+ j, G; q& o6 g
复制代码
. x: {& J  Q8 x% \% \/ Q1 Q

  {1 X5 @9 b7 G0 ~
! n5 G# o0 L6 a) N
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复3

希水长流 发表于 2014-5-15 17:18:05

希水长流 沙发

2014-5-15 17:18:05

创建完投影之后 如何能够获取投影曲线的指针呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

希水长流 发表于 2014-5-15 17:54:14

希水长流 板凳

2014-5-15 17:54:14

版主 我找到接口了
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

593232280 发表于 2019-4-25 18:47:55

593232280 地板

2019-4-25 18:47:55

学习了,高手
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了