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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
: h" T( @' {2 ~: u1 Y

& x2 K% K; K: G- g! Q; K( F6 M% t/ m) g% e) g8 v* u0 S8 _
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
; B0 y& z- @& Z( d  E. k: K% a* g7 h# K' M/ X- G3 E
此处使用的是 通过面的法向创建投影曲线,可以参考下!$ u& |- H8 A% A! Z

4 A* Z# C( }+ C' M/ ]) x; S, e: X# W! J! w! a* V

' p# w: M1 `- c8 p5 P! f2 }& b2 T$ `7 ^3 v; _4 P
2 w. ?( J. R- r8 z' r4 C" h

& @+ @9 p6 Z# I2 k8 n' T" `0 C" P  Z# s! o7 R- n) n

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

 NX Open C++ 创建投影曲线 project curves
3 i$ Z. n" z# O3 p3 J" p

/ `" C5 ]! V/ r5 e9 J- W' l
1 O( C: |4 l' e" D3 f
  1. % S, Y( U( F- ^' ]  n+ U# A
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    " n0 e% S( Y' j/ I- p
  3. {9 Y' M5 b" l' ~1 `
  4.         int errorCode = 0;
    * [3 Q" |* P% T9 [6 s
  5.         try
    & s' v9 H9 e8 H, F7 O3 p# I' a
  6.         {( t2 k1 |, @- Z. f7 ?2 j$ C( d
  7.                 // createProject curves6 y6 g6 u) N. S0 `, G3 S
  8. * e# q% N; I5 f8 q7 H# l
  9.                 Features::Feature *nullFeatures_Feature(NULL);1 F1 G9 R& a5 V8 E; P1 O
  10. , M% ^) M* `8 M2 [" x. M3 [" R
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;7 C: O% S: G6 U; f( p; v) k

  12. . {( G! O% `! v7 b) n3 Q# [5 O
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    " c2 i6 L7 i) i8 b& R  U- j2 D

  14. 8 t4 d$ G: B4 Z2 n
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    ) J( a! Z5 c6 X! S+ C

  16.   _* T( r3 I8 c; V% b
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);5 ^/ ^1 i6 l1 ]1 Q

  18. 9 K  y6 ]/ B& x) s
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);9 `2 k" O  B8 x2 m* ]2 Q- K+ i
  20. 2 Q9 q* |- b2 b$ J( f, U
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);" M, }- P7 S8 d. z
  22. ) h9 ]2 E9 q' ^; P/ l( p/ ~
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    8 u( }1 X% Z* k$ @7 j) U' z8 v

  24. 0 {) s- ^4 T# N, r; B
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    # f: I0 x# R1 N; x9 L# K
  26. ! B  _. R3 t* i
  27.                 int size = (int)inputObjects.size();
    ) `& o6 f" x' e
  28.                 std::vector<IBaseCurve *> curves1;
    - J' O" r! m! l5 T, v5 L
  29.                 for (int ii = 0 ; ii < size; ++ii)- U+ L! W+ h: z3 M# \! P+ U; w
  30.                 {* d& T7 G) H& t/ f0 Z' O1 w% b3 m
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));5 m* K& l$ W* R* C+ y
  32.                 }
    0 R7 B; t' }0 F  P& X7 J' }
  33. , r1 i& A3 v) R
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    - w. h; t0 d3 v; y/ i: {

  35.   ]. p9 ]; _& j
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    ' b( t; L# A2 G4 J" J/ j
  37. . ?- v4 u/ T5 K7 U- f
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    , m# [, a4 `( n: G2 V" @

  39. " M  U3 j  B# b3 E0 Q! V9 j
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    ! w& `' u! K6 g1 m9 G. L; r
  41.                 rules1[0] = curveDumbRule1;
    $ o% S. d* [5 U' F- ]
  42.                 NXObject *nullNXObject(NULL);
    - _( _- r, d) h* ?
  43.                 Point3d helpPoint1(0, 0, 0);
    + f6 R7 U# ?% x  j+ p' y
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);: Z' n/ {' d2 J3 g9 V* e. X

  45.   f; V: [, C" S% h; n
  46.                 plane1->Evaluate();
      U4 X+ N. g+ z# m- ^
  47. & `9 _4 F* Y" ?' s3 H( L
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    ; f) {  {5 w4 [1 e8 I; l& S
  49. % s2 w0 J  f, V) v; ]) ?) G
  50.                 projectCurveBuilder1->SetGapOption(true);* H* J7 D9 S) H/ {- ?

  51.   ^# s. \, U1 Q
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    - y! b# L, t6 D+ C
  53. 6 Q7 M0 c; ~  y( o: Y' u7 E3 t
  54.                 NXObject *nXObject1;
    + s; m: n/ j# U8 f
  55.                 nXObject1 = projectCurveBuilder1->Commit();4 f5 U3 ?" ~5 Z$ Y7 c& d9 D

  56. ; K; A; o! O. T. L0 K
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();4 \/ J% I- H( u
  58. 8 b# |0 B% d) n. W8 A
  59.                 projectCurveBuilder1->Destroy();9 ?" v/ U" `% [* T  s1 K

  60. - |2 C4 W' k9 T) p% p: U! P
  61.         }
    7 s2 @8 \$ W$ _. p
  62.         catch(exception& ex)
    , f# ?+ r; `: `+ r
  63.         {
    5 `1 i9 `1 W- |2 g. C5 Y
  64.                 //---- Enter your exception handling code here -----
    9 o2 _" C* J4 L2 o
  65.                 errorCode = 1;+ N' J" I8 h& b6 \; N  Y4 k8 L
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    2 l! W- t) d( V* m. B3 q- w& [  C
  67.         }
    : @; D8 J8 s7 K! ]. G7 c/ ?, w
  68. 8 A- _  Z7 X) x9 v, }
  69.         return errorCode;
    ; {/ C9 ?0 U0 u2 z' v/ H
  70. }
    - ^& b6 v) N: O) X$ g5 g3 [
复制代码

$ c: |9 k9 Z3 x1 z/ ?! ]( A
9 [" X) F; p1 t7 Q* h5 }# V% [+ B5 t6 E+ \! V2 b; w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了