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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
" Z) m+ R% W% {& O

  x6 ?/ ^0 u% e  X+ P3 ^) w- E- l4 q2 W: z3 h: T
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves  @8 D- b, z9 w: z; p$ o
6 Q9 f: W4 T+ F9 E* c
此处使用的是 通过面的法向创建投影曲线,可以参考下!+ O) J" i# O/ ?& ?7 Y" @9 N5 n

; v( v7 S& S0 V1 N8 G$ f" v
  X1 w! M* c3 K/ j+ c2 J8 D# N, s8 j
1 ?/ W/ [1 B) A4 N) f

# b) _3 Y+ s5 X% D- S, x: Z  I4 b; t$ X. U; X" l0 @

: t- X; f, y# R1 O( g8 y7 D

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

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

4 m* r- m0 y0 a! y* E* T* \0 x; @3 s! X1 C! A0 @- s) V

( ^2 d5 D( v. H3 W1 a
  1. ! @: Y+ h5 ~; X& y, {+ {, V
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)2 M6 j/ b8 D9 l& Z3 t1 G2 [; C
  3. {" t" d0 E- ~: }6 w/ A
  4.         int errorCode = 0;
    ' }) z- p' ^0 O
  5.         try/ s- @0 b$ X2 R, A( P
  6.         {$ s  F5 q+ T+ c- U$ [  s2 I. Y2 Q
  7.                 // createProject curves
    , ~, ]& _* t+ y- m8 A: X5 i2 ^
  8. / `  z8 x% o6 E# O3 [/ C9 e
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    . U/ }4 y$ p7 K& F. B+ S
  10. * c" x" B- B8 C
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    / N: |( z( A2 {; s
  12. * F0 K8 L' W  k" [( U9 Y2 [
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);6 [7 O! e) v8 L2 I* N: c
  14.   u& m# F4 U# b" {9 \. D6 i8 W  A
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);3 P# Y9 J" @8 s1 f0 y# z
  16. 0 A1 ?1 N5 V; W7 Z7 e2 H- d
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    1 S3 B3 a5 |: R2 N, x  u

  18. 4 r5 k$ `: v; v4 l
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    ! y, W6 g" j6 z/ f
  20. 4 f1 q; M. T3 E; q$ \
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);& t0 Q1 x1 s2 I( V2 `7 C3 ?8 _
  22. " H2 h. {) v; }2 o7 I+ G$ e
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);8 Q/ s2 b3 U9 U, y5 V; h: ^
  24. ! G4 {% w, `- O9 q( g
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    ! j8 z7 u5 G; p( n( B- w) H

  26. 8 T5 Y2 [7 N1 \3 A9 k/ L- g
  27.                 int size = (int)inputObjects.size();
    $ I- ?0 a1 W9 j4 O% E6 U& G
  28.                 std::vector<IBaseCurve *> curves1;
      W* a0 i1 h4 X' c- l& D
  29.                 for (int ii = 0 ; ii < size; ++ii)7 g% n+ D1 d+ T8 Q: ?4 I4 _1 I, B
  30.                 {7 ]/ Z1 a) e1 f% E; h
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));7 {# u" [& T) Y; m4 K- m
  32.                 }, `" t: k/ Y! n. ?" ]

  33. 6 D# k* j/ W" w
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;3 Y. B# |/ B  E2 ~
  35. 3 p6 v7 T% k$ N2 g
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    ! K) C) q+ p; G8 H. V8 ?
  37. ( n; C# t. d' r$ Q3 E: Q
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);7 D% V+ ?8 J' l: \' s
  39. & z0 @3 }; N3 p9 Q! x+ }% J, @
  40.                 std::vector<SelectionIntentRule *> rules1(1);# Y3 v- D' g/ t- k
  41.                 rules1[0] = curveDumbRule1;7 P3 X% |- ~3 a' P9 R# ~9 m% j
  42.                 NXObject *nullNXObject(NULL);  \' X1 S! f" @# v/ ~: Z
  43.                 Point3d helpPoint1(0, 0, 0);" m, {3 j% X% J, `. a6 ~9 m, e
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);6 [+ C. J% o* p  e
  45. ' m4 F5 R! |' z) o
  46.                 plane1->Evaluate();
    4 b$ C% l; m: Q" _
  47. 7 r. T! G0 H  u4 T( K" S; v
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    ! x( |: R( Q: g/ X3 o* \
  49. & p8 g; t3 R" X. t% J
  50.                 projectCurveBuilder1->SetGapOption(true);
    9 G* U/ x$ c  W% n7 m& t( t9 w
  51.   P2 _& _- j$ t% k' u3 D' r# ~
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 s2 n+ D, {2 m7 t$ E; ^4 ?
  53. + P6 x9 g, j! a  L
  54.                 NXObject *nXObject1;5 d9 W' g" p. b; k" }7 P5 {
  55.                 nXObject1 = projectCurveBuilder1->Commit();/ E) [/ f, x# F' ~/ B2 ~- ^

  56. / m- h- l2 ]; H- w; _/ }6 A
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();; P0 ~! C( `2 _: @' P

  58. 9 w( U/ X# e8 m9 d0 p9 B  _, \: m
  59.                 projectCurveBuilder1->Destroy();" l7 l# O1 ~' r& E" t
  60. $ W  o  r5 m; a3 p$ L! a
  61.         }2 e0 n4 C7 ^" `' c; U
  62.         catch(exception& ex)
    6 ?" `( }1 [* o/ M: L
  63.         {
    0 w  x* l* w" M/ ]: A
  64.                 //---- Enter your exception handling code here -----/ ?$ f5 _  V1 w  i( Q
  65.                 errorCode = 1;
    " @( u1 ?& f: e2 K! |$ R
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    * v) e6 o; T* r3 Z$ Y0 {1 J3 A3 A
  67.         }5 u6 }4 z$ ]( A$ x" f

  68. . _! H# H. A; R& O3 ^/ j" A
  69.         return errorCode;
    7 g5 A5 B  E$ S9 ~6 ~
  70. }( F; ?- t3 f0 l
复制代码
# ~7 {9 U  C  _

# w4 E2 J$ y, M* c9 E3 M3 k( j! T; m! x7 X; b' p0 R) ?4 w( T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了