PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

16

主题

5

回帖

188

积分

注册会员

积分
188
发表于 2014-5-5 22:45:05 | 显示全部楼层 |阅读模式

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

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

x
& y# p0 w$ m+ o& x. ?
3 W8 m1 }5 a; t, v% T( o

4 s. n! m3 L* P1 x" Q) d* RUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves* D- z/ V2 R3 b/ k1 H# R
% p) y5 r" M7 l& ?! ^" [( |- l6 a5 q
此处使用的是 通过面的法向创建投影曲线,可以参考下!
; x$ d! c* O3 @% s7 y: Q: r, R0 h- i7 i6 E5 E
" ?! H& [, O9 F9 N6 Y; p2 {
9 b5 ^; e: K  ?
9 a1 `. v/ M( y4 t
9 k( v! c  @  _4 M% g& t2 n, _

6 v/ s, c! ?# _; a+ ?& g6 K' e' t8 A0 @$ U( ~1 U

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

 NX Open C++ 创建投影曲线 project curves
# q# i( h0 m; C
+ X! d" |" w6 T9 z4 i

, p& n2 ~4 Q- g' w8 @

  1. ( k: Y: f& t9 w2 c. D) o& c
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    . j: G: b  {2 e$ z- ^1 d) v
  3. {2 s9 y% d% F7 Y' L' ]! V
  4.         int errorCode = 0;
    ; s6 h) {- p. B8 E! J
  5.         try
    - c8 {) I( B! `0 `& @, U# i+ y8 I
  6.         {
    2 D  H7 H1 {6 _; S  U, z+ u  \# s
  7.                 // createProject curves
    " v  s4 R' q. w% q1 K% y
  8. " H& w% G* F1 j
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    ! G; |5 m- c. g2 P7 A
  10. . w2 W- L2 W+ n7 G9 w( M
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;. P! c3 r+ M7 _1 J! f, w- P

  12. - ]& ]$ P  L! O9 e- |* |
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    $ @8 R; f0 g# G7 b! g

  14. 1 `0 u/ T6 c( g' L  J* w0 `
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    ' z. o) ~) g1 G# N) B0 A+ E3 r
  16. ! [$ W9 g9 X6 A$ P
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    & N3 p, d: V) T, R1 v+ G

  18. % c5 P& }) e9 c+ S4 M
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    $ n9 a4 @9 d; v  d- i8 F" T

  20. , p4 m5 d; @( k. b
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);2 h, L; g0 F: \9 C& E( C0 O
  22. 3 {* m2 _' M5 c  X* d
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);7 G1 p, j5 u5 Q: ]1 e

  24. ; @1 w( J& s/ q+ b/ I% [+ Q
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    # L3 W; o5 e) ], j! w- X
  26. 4 |8 b3 }8 q: l4 u* O5 d6 P/ s' D
  27.                 int size = (int)inputObjects.size();! u0 C4 a) @3 M' P9 Q
  28.                 std::vector<IBaseCurve *> curves1;1 c/ C$ j! I1 z" o) x
  29.                 for (int ii = 0 ; ii < size; ++ii)+ h# @8 b7 i1 \% c
  30.                 {' Y% L, A. ?4 r# o
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));$ _" v$ H. ]3 C2 H4 u7 {# m
  32.                 }
    9 t; G' C/ p9 w7 e

  33. . s1 d  @. ]1 e9 F! p% ]7 M& C
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
      S# e2 y1 F3 b+ Z" h
  35. ) L3 |! w) ?: G0 x& X1 |" A
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    9 q" L4 T& C, W. L5 ^1 s
  37. / ^5 M/ i, U# D6 }; `1 f
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    , f2 D  G4 l& Z0 Y6 @, M) d
  39. % N' C1 g' F& b! p+ Y1 V; k7 `
  40.                 std::vector<SelectionIntentRule *> rules1(1);# L! g  U$ z, W% N! T
  41.                 rules1[0] = curveDumbRule1;/ s5 ?3 C6 {( S3 U
  42.                 NXObject *nullNXObject(NULL);' o; W: W0 F8 {9 p
  43.                 Point3d helpPoint1(0, 0, 0);
    # Q0 V1 ]/ ~: j' {
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    ' _  }1 |# Z3 @$ x, X
  45. * t. o+ }, \5 D6 Y1 [
  46.                 plane1->Evaluate();
    1 H- @9 I2 N; T  `
  47. , f" L& {* D) _# O, ?
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);/ H5 g" i  m, E, E# v* j$ @8 i
  49. 3 e! x( T- U; G0 m3 }) n
  50.                 projectCurveBuilder1->SetGapOption(true);) ^$ t6 d0 V4 N8 m3 p2 F
  51. , [8 q+ ]  p  J: K* F4 u  r' G
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);; R  U) G  L1 {6 c9 k

  53. + y5 |6 [3 U7 f; ?, W
  54.                 NXObject *nXObject1;
    ' i4 T% n2 t$ s3 {: y: q/ k
  55.                 nXObject1 = projectCurveBuilder1->Commit();
      p, A$ _, Y' b5 e$ O0 @
  56. 8 ]# r/ \* |6 W* @5 w3 _. |) G
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    9 x8 G$ F( F0 o9 [4 W' ^  O1 W

  58. $ Y5 a" B4 K% r. d5 p/ E
  59.                 projectCurveBuilder1->Destroy();
    $ G; |6 I7 X( b0 z/ i$ m$ m
  60. - G0 H( w0 N' Y/ h0 M
  61.         }, Q# t/ R! t% M8 w9 d2 i
  62.         catch(exception& ex)* |% Y  f( @- h
  63.         {
    9 y: p! I! d# I' Z' P
  64.                 //---- Enter your exception handling code here -----& f% S- z' k9 {% X* D
  65.                 errorCode = 1;
    ' u- ^, I; V. M. O
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    % i1 u6 l$ A1 X* G8 @6 m; J
  67.         }
    $ q& ^8 s7 X# s$ M* Y  r3 ^8 Y

  68. $ R/ h, B# B" N4 d) ~" j. d1 C
  69.         return errorCode;
    * a% w1 X& m. F" B" ^  w2 \5 c
  70. }. [' c3 D. v2 W5 d8 w
复制代码

" Y6 _; p! @8 W) n8 G# k& R+ C2 g
5 G* T1 m' {) Q' m% v" g! P( E1 q  k3 l$ z4 B! y2 V3 d
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复3

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2014-5-15 17:18:05 | 显示全部楼层
创建完投影之后 如何能够获取投影曲线的指针呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2014-5-15 17:54:14 | 显示全部楼层
版主 我找到接口了
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

13

回帖

56

积分

注册会员

积分
56
发表于 2019-4-25 18:47:55 | 显示全部楼层
学习了,高手
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了