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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
! M  A* n9 J0 ^1 \5 C2 y( B" G
# Y/ u9 f+ R+ c' g- p9 m

8 [% a4 D. }9 u, cUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves: a9 I& q1 i  k% M8 q5 G8 c& n

0 ^7 E4 j+ D: q; X1 j* u) B此处使用的是 通过面的法向创建投影曲线,可以参考下!
8 m8 W) q/ Q" @6 n- Z3 K% C. G4 }) g. I8 [

* d7 n1 t9 s9 R) K( `
1 ^% G: _2 P9 `# U  d4 {9 y: Q5 `" r4 _, y

, ^  ?3 w& s; L
6 C7 v/ r4 t0 H/ P. b. z# p2 q& A9 X( i& \( v+ M; t

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

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

0 r1 T# S" V2 V2 S, z" L
) e+ [! F' V/ s( n' z
5 f( s; G# b+ f$ O

  1. / x# ?- C) H1 d& m
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    : s9 u+ X9 v3 j/ X& v2 g
  3. {5 P: d. ^- O: Y& _
  4.         int errorCode = 0;
    9 p6 I9 O/ x) o$ J$ z: n% `* T
  5.         try
    8 F0 f6 b9 [8 [& F3 W9 o3 t
  6.         {
    & f& l: G0 f+ P
  7.                 // createProject curves
    + B# \: H! p8 Z

  8. " n1 b' ?, r' h$ S; K7 x+ n
  9.                 Features::Feature *nullFeatures_Feature(NULL);) L/ t$ A1 L- H9 Z7 n, n

  10. ( H2 c) p% U+ ]$ w& |% t' C
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    * O, z3 M- }8 }8 }' m& P% b

  12. ) w9 L9 R5 q0 }) L# |8 K
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);: |5 t. Y7 w% ^; N& Q7 E; o1 ]) g
  14. ; E: o( {7 r. S; Q
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);1 {5 K3 W  w, M( e/ y" W1 k
  16. ; z7 B7 b: E  y. E& V& G
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    % ^: ^4 ?% f1 X/ w+ M$ y4 Q
  18. % i( Y# b- d7 P, j( p
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);5 P/ E6 M$ x% ^7 a

  20. ' A) q) c9 c) q4 s' l+ j/ t
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);: Y1 Z, q5 P& [" i8 k7 G. A3 e
  22. ! P, w5 O1 o0 M% z& N5 z
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    : [! s' ?' C7 e' W; U$ V$ @, t8 F7 c8 F
  24. 0 A. o1 P, Y5 L8 ^
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    * H: B, J) r% `  G
  26. / G7 w% [/ h& K0 P
  27.                 int size = (int)inputObjects.size();2 R5 q) l6 O: m3 ^3 u
  28.                 std::vector<IBaseCurve *> curves1;( {& i" G0 r  v  H' Q3 e
  29.                 for (int ii = 0 ; ii < size; ++ii)
    $ H2 v- |% \$ `, z6 M. B
  30.                 {
    5 T) c# }( F- {/ v) D6 @' p) z
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));  X7 r/ B6 L% `' g8 l8 L% `" n/ c
  32.                 }
      g  W5 H& R# q5 z# Z8 r+ D

  33. ) i+ _/ u+ I, V- I* B( c  j) |, ?0 Z
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;- T1 n1 w0 n& M' @+ |5 _4 q

  35. ; x0 @2 `) u6 j* L
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    8 i. Q: O2 b  H/ Z
  37. * _! U8 k3 ?- p
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);" t7 q: f0 J4 e* t  @/ o0 Q
  39. 4 ]# k: M! x" P0 `8 C. f! v) b, Y
  40.                 std::vector<SelectionIntentRule *> rules1(1);- @, O% @+ V# I5 T. C% m
  41.                 rules1[0] = curveDumbRule1;" W" \% o9 o0 z& L* l* {) a1 i
  42.                 NXObject *nullNXObject(NULL);0 }! p8 h7 n, T
  43.                 Point3d helpPoint1(0, 0, 0);# ]" [: z. ~# N3 G* F& I& r& M4 P
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    $ W/ ~: V! z5 i4 p, \) ^; Z

  45. # ?- F) x2 ~1 h
  46.                 plane1->Evaluate();6 G- L6 m4 Z+ ?. H$ I1 j
  47. 7 p, g( ?% E: u1 a+ i: ]' s
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    & f+ V$ N9 D& y, k, B) b, ]# Z
  49.   K% a* ?- b4 |9 P0 S5 J
  50.                 projectCurveBuilder1->SetGapOption(true);, D) r4 m8 M$ B

  51. ) z: J/ b% M- s7 V, }
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);% E0 s$ N, k( ~* l0 `
  53. . Q$ z: T8 P4 k" v* B' d% p
  54.                 NXObject *nXObject1;. ?& {6 B7 a: K: W
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    - J) L7 S$ `$ J& H6 L
  56. % a8 X+ V4 f- t) O# P" P
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    + i3 j$ B, m: [4 U* {) G* [+ E
  58. % U3 k3 q* S, o4 ]
  59.                 projectCurveBuilder1->Destroy();
    + i* I2 Z7 h! Z5 a
  60. 0 k6 `' F2 N3 U# O  I) q; V
  61.         }- a2 I& j% K& ]! x. o& w
  62.         catch(exception& ex)
    . C  S$ x- ?. ~; k
  63.         {' h$ {! u& a: F: j" {! r6 u/ F
  64.                 //---- Enter your exception handling code here -----
    5 V: k  ^- ^" U" q- W
  65.                 errorCode = 1;
    9 F" U$ E4 L: H) e9 f2 X7 D
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    . I. `! K5 P2 F7 \; t% y3 P
  67.         }
    ; N7 i& h) }7 u! q3 d7 m0 G0 V: ~

  68.   J- ^- x. n5 ?* b( }- S6 H
  69.         return errorCode;
    4 s5 w' b% B- f3 |8 Y  D+ _- D
  70. }
    - R$ @3 |7 p6 Y" i+ Y/ ~
复制代码
$ `! ?& a  H/ _# K" a  f& x; U
  \5 H2 T* W) y
& q# j8 l* R$ c2 ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了