PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
; v2 `3 W/ h3 @# V( k, u
$ o* k/ p% d: h' d2 `4 l# {# A
9 `2 h- Z5 [, f2 _8 o
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
+ \" F0 i, e2 K( G) A+ u7 _' U
9 u) C' }& F$ b* F0 O9 X" b此处使用的是 通过面的法向创建投影曲线,可以参考下!
6 b; ?2 ~, k) L3 m/ v" m5 L* @( i$ n* f- G# n, W

  R. @- ^/ m' E" T& ~% j- c
3 r2 D+ [% i9 B) W6 b3 Z: D; ~9 @2 u9 D
5 l5 }+ A2 Y) ~" t) s+ r* S, g
; x& E1 e3 y! q, ^" J' o- R
6 y. o6 d) p8 `

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

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

- d; y6 z- _* v* h. ~" q2 L  ]
- o2 Z0 k) J; I4 N& p$ y3 |; @
2 J0 Y8 \6 S6 v# ?$ m1 `
  1. , |! s! O) X/ Y( E6 V
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)1 i) ]4 Q6 i3 ~0 \4 {; j/ m
  3. {% D4 \* P! w4 r7 v  T
  4.         int errorCode = 0;
    / R2 ?, O, D8 {) k; s
  5.         try6 M! G$ C3 F& [# @, K0 l0 [* L. C% x/ P
  6.         {
    4 N! K: a  Q8 a' E  A% z( L
  7.                 // createProject curves
    4 o/ w3 g9 U7 A& E  U; i: |7 ~
  8. $ a8 h9 j& k, x
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    * \- U( K( r- ?, b2 X

  10. 3 r; I6 r" M  ?2 w# f' S
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    7 z: s) l3 E- s! P7 B+ R* n
  12. & n+ q& y/ s: T1 L% t
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    7 S" o/ i2 R% _2 w0 o7 g" d

  14. . w% R7 U2 D: d% t! b6 C. I
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    $ O$ ~" V) ?) S" L4 v

  16. ' V$ m' A. u- P
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    ' ?( O  V5 r! b* e/ M6 a4 T
  18. 6 S% `: k& ?' |; s9 v( R, w
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
      ]7 J9 l# }& n. \5 G* [

  20. 4 T9 u! g) b8 \5 ^0 b
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);$ q: F6 P" T: c
  22.   \- j! F# m' l" r9 N
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);* O6 s# A" V" _' w4 l7 I

  24. & B" M9 J/ ^: A
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    " s( Y, ]" @  M- y9 y$ o% z& u/ W) o
  26. 8 o# z/ m. K6 ~
  27.                 int size = (int)inputObjects.size();1 @- P3 e3 L' S; \  H0 d0 i/ q2 s' n
  28.                 std::vector<IBaseCurve *> curves1;9 y8 S$ R' C3 L) ?
  29.                 for (int ii = 0 ; ii < size; ++ii)! o" r0 z( d: d2 L/ k
  30.                 {
    / b7 \; g: m( k9 q8 u* X1 |, k
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    0 D# ~  \  V; z% E2 e
  32.                 }) x3 k' |1 n/ u% ^7 o

  33. 1 |8 v) T& I! H! ?6 [2 W& f$ O
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;& w: V! ~. ?( p" L

  35. ! y) v. ]; L+ ~8 }% V( G  V9 u
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    ( z0 D! I7 C: R/ N; Y

  37. ; h2 t% u. s* n3 h3 R
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    4 o' j( I% T& @2 q

  39. 2 v9 |9 y: B/ d* Z
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    " r" c* V1 ?, [6 h6 l7 D! s' A) X0 R5 e
  41.                 rules1[0] = curveDumbRule1;
    * k7 L( l% X1 a
  42.                 NXObject *nullNXObject(NULL);
    / a7 I; p4 P1 b1 o$ C2 _0 @
  43.                 Point3d helpPoint1(0, 0, 0);) x8 a+ L& \  Q, Q
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);4 c1 m5 r3 E6 F4 w* k3 ]0 `
  45. , p3 z$ k7 E( v! W: {, x
  46.                 plane1->Evaluate();4 _/ [/ u% t2 ^* X% H' v# I

  47. ( X6 b& i& a" v" Z8 u( _6 G
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    3 }7 L) m/ X# c: n) E' R

  49. / B. x' D1 d2 [1 l7 m* \, s) W3 k
  50.                 projectCurveBuilder1->SetGapOption(true);9 e1 |1 P) v- S6 y" Y, q6 W; u
  51.   d& ^4 R* X$ ?8 h/ V; B4 j
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    5 {1 a: y% q1 q7 O

  53. ! y! f( ?' g  i' G
  54.                 NXObject *nXObject1;
    " s, P4 ^/ Q' m4 X8 ^# C. {
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    8 [' P# j: B# ~: U$ X
  56. ) P0 }! m) `; @2 ~: s# n2 u
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();+ ~4 F: _5 v- [& o' J  l: `

  58. % e( f. N7 l$ d2 U! n# D! K
  59.                 projectCurveBuilder1->Destroy();) w2 U5 W5 P5 H4 i* E6 q  w
  60. # o8 [: `3 I! P2 h: w  R
  61.         }
    & T$ k# ?- h' ]6 E
  62.         catch(exception& ex)6 P5 g0 C: ?* w
  63.         {+ s4 I5 k; E5 ?+ G
  64.                 //---- Enter your exception handling code here -----4 c* H+ b" ~) C# I* [+ z# j5 k
  65.                 errorCode = 1;+ T6 z8 D. G7 O# t. d# V
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    & P' r2 N3 H$ E
  67.         }
    2 X; h# S& }( J, H" {1 a0 F' ^0 ?/ K* b
  68. ( |" R  }' H# d9 Z% K
  69.         return errorCode;
    6 w% \$ {; g( q
  70. }
    ; L, C+ @  X! P% @3 }
复制代码

% W$ q  i: w' X" Y3 {+ J
. C1 k& f8 |( {3 h. M
+ d/ F/ [! X' a# U: E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了