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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

3 q6 L. I6 i. T- p( Y2 _4 B, q8 n3 A# q
! ?/ U( m% R8 `: Q9 y  s. G8 G
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
6 T6 Y, x1 p1 K' r- L
2 s5 x8 [' N& B9 R此处使用的是 通过面的法向创建投影曲线,可以参考下!
' \& z7 X( k: L9 z  v. V
3 c8 l! j1 `$ l4 V5 t
$ W3 ~! V+ t1 {" Q8 }! N7 O
& n; K) [* p% T: b, m6 ~
' R. j# j3 C! L6 A2 t* J
' a) {' q; P3 C0 e
, {# I' ]  `. g. H, n- q/ A7 q5 U2 E2 u# E9 P

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

 NX Open C++ 创建投影曲线 project curves
' b) w# g* y9 a0 Y  d& \* P2 ?

2 N! u! n* r: O  j% ~6 d
: n8 r2 O& v: a
  1. 3 E4 v/ t( g" U5 \' {" {0 Z
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)3 W& f+ J' J( T5 H! r4 u
  3. {3 ?3 B2 I$ K/ y9 d# a, ~! O
  4.         int errorCode = 0;) \$ h- T4 V: L+ W
  5.         try
    ( Y1 h  W! J7 R; H
  6.         {
    0 F' F6 J4 [" t1 r9 B
  7.                 // createProject curves
    5 `$ s7 _  `+ r
  8. * s9 o* `  K; T. h6 S  Q
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    ' |7 B) y, p" w$ `( l3 p5 z. s$ }) B
  10. , C+ M5 z: q# C* t0 s' w
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;9 S( `/ y% {" ~

  12. 1 S/ l2 H1 n  F) y3 U8 s
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    4 B3 f% b! [% X

  14. & M; B; \* v# X. c4 m
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);! B* i. K9 O$ {1 b' s# c

  16. 0 O" J% X( M9 o/ L. n! n* y
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    : R, B6 l/ v# R4 N

  18. 6 i$ L/ J# @. `
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);& J/ O8 A  r& X' ^: d8 b

  20. " S) t" o; Y# u3 I3 o7 S
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);- \) `2 a9 r6 V5 \- M; E" o
  22. , Q0 e* D6 C1 h$ `5 A* i' b  p6 b" _/ G
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);5 L- [5 O# t3 Y2 T* Z' _
  24. & V& s; H7 o* }6 d
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    % T# P+ U( M% l8 V5 I: O( @% A5 S

  26. . X* d9 d9 m& s
  27.                 int size = (int)inputObjects.size();  ^4 y& O: f2 @/ r
  28.                 std::vector<IBaseCurve *> curves1;
    % @! v3 P. h1 w3 c
  29.                 for (int ii = 0 ; ii < size; ++ii)
    5 S6 U8 p% I/ T  Z6 P
  30.                 {
    8 H, a7 L0 f$ `7 R* ]' P* [2 L2 u
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    ; g  v7 ^/ s% F
  32.                 }5 N& w" `+ f* Y

  33. 6 c7 r$ f; Q0 d
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    7 q6 C" y) ^6 l8 s! [' w

  35. 9 r) b: H; j) m# \
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);) q" o) N4 ^0 h% U0 J$ u

  37. 0 e8 O' C+ F* K+ w& a
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    ' t1 [: H$ J. c- V- |& d

  39. - |( }* R3 r  Z9 m1 O9 p  e+ z
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    ' C1 S/ R4 Y: ]5 ^# b$ f
  41.                 rules1[0] = curveDumbRule1;
    5 o9 t" k. |2 D; B6 @. _
  42.                 NXObject *nullNXObject(NULL);
    / D" p3 j( x! d( N% g
  43.                 Point3d helpPoint1(0, 0, 0);
    , L- J! L1 s* f9 _
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    " ]( R# D5 z$ L3 b0 i6 y
  45.   I: W1 b+ s% e
  46.                 plane1->Evaluate();
    " {' s3 P5 ~( R
  47. & T0 x' L0 N/ i/ N( o/ \
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    $ Y7 \& `$ e' z
  49. : d9 c- U- C5 L0 l
  50.                 projectCurveBuilder1->SetGapOption(true);' [, r+ Z4 T2 N- w2 X5 A
  51. 3 _9 k( y0 Q6 m7 s
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    3 v, a. R0 J' Y: P( `; I- r

  53. $ a/ A3 i) ?6 r5 d3 L1 d1 [
  54.                 NXObject *nXObject1;
    ! }" }/ Y# X- g* ], s/ y
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ; y8 l( Y7 D1 X% F6 T$ [6 \5 x9 `

  56. ; O/ o. V$ F  z- Q- K# N! z
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    6 P9 w9 \: T2 ?' R2 ^# W0 ^

  58. 4 f' {6 p! O- @# E  G  ]
  59.                 projectCurveBuilder1->Destroy();
    2 P, ?+ _2 T  l' B( q
  60. ! a6 R; F% p  ]4 @" I: d, \' o6 B" L
  61.         }5 L2 x4 j. x& I0 N0 E! ~
  62.         catch(exception& ex)
    6 l5 H6 z" ~4 A- ]
  63.         {
    0 M4 ^% d( I. I% Q+ V
  64.                 //---- Enter your exception handling code here -----# X4 j+ q- t- F. E: \
  65.                 errorCode = 1;/ X( ]0 ?  ?( `- A5 O: r. ?
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());3 U+ ]6 D4 R2 @" u4 G, |
  67.         }  m; R( h  r8 O) m, s4 }) E

  68. 7 V1 L. x3 b  I/ p" g
  69.         return errorCode;2 ?( l( H" u8 V- Y. ]2 P
  70. }
    % R- H, |) m. c
复制代码
) \) v) {. X% d' v% R  u

1 t, s$ g; k9 A# K
. q6 ?9 c* ?8 l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了