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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

! K! q7 z- F2 D2 e. O. w# y
3 s; Y; p1 F, \5 P! ]; o
, v3 E: Y0 k; H) |UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves, V" Z3 W. `  h3 a: B5 b" a
2 N1 Y4 W6 c6 d$ ]+ g1 a1 w0 [
此处使用的是 通过面的法向创建投影曲线,可以参考下!) i4 {7 g+ m/ P& F

$ e/ N9 ~0 u" x/ Z( E# H+ i4 o( E+ w: R# S* ?7 f  @
% P( ~0 ~" P4 R
6 y, U' J) F: v& r" b
+ R  ?/ I4 T! D! |# E$ [. u
8 D! `' b5 N, A

; t0 M* P$ f0 b  Z

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

 NX Open C++ 创建投影曲线 project curves
1 o8 `$ P! U/ W" e
% b' A6 a& f# ]0 M
! }7 ~% j* @) |
  1. 9 j6 I' J1 g( o, Q
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    * Q/ }+ i- |. }- u- B& K9 J$ |
  3. {
    $ P! ^6 p+ u% e2 X' C! q
  4.         int errorCode = 0;# ?" G, r1 c* [1 x2 v0 C- c! W% a
  5.         try& c" |, I7 l6 L2 w
  6.         {
    8 `' s2 {9 B0 _5 t( U& \& N
  7.                 // createProject curves
    : s) y7 a/ l& `1 I8 u$ E7 u
  8. ' C4 k& Y7 q' q0 p
  9.                 Features::Feature *nullFeatures_Feature(NULL);4 }6 u/ A# }7 H, R8 |( E& T. j

  10. ! U0 [0 n  u1 O& N' [
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    0 \2 L0 s5 V5 `) m( |( R# t; v
  12. + N' K$ j) Q4 D6 f
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);' w) s/ c% p0 p$ u, T

  14. " q* c" q2 R7 [  e" b- j& ?- E$ u
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);. O2 G1 F) D2 i7 {

  16. - ^8 p8 E+ \% S
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);* k4 v; s. W, T$ D  I1 R

  18. & v- d) d: Y( w* N* G
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);" S3 }. @+ s1 C" v( p8 F' ^4 s
  20.   O  Q0 F; a# }/ Z- W7 V
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);  M2 f1 b3 e/ @0 C3 L8 V0 D: {: g- x

  22. ) N+ {; Z) k8 @: P2 |
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);" Z: r& o! i/ x" D
  24. 5 _$ |2 X1 R7 M  O9 ?: q
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    + q1 T9 K: R- o3 Z) r: @
  26. ( Z* [- `, a4 o- k  `! F% d! G
  27.                 int size = (int)inputObjects.size();
    4 d7 f1 o' m6 j, {5 x$ ~
  28.                 std::vector<IBaseCurve *> curves1;
    + t  W# [( U* e
  29.                 for (int ii = 0 ; ii < size; ++ii). M! c$ X* x' D4 V9 L* A
  30.                 {6 I; }2 i1 I! W. J: V) y
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    , I# q3 l  H% d$ J; b
  32.                 }; f; v" B9 j2 t! V( H( K+ [
  33. 8 D7 F6 @+ v' J$ G( s& H
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    : z" A# P4 [& S7 O9 k, U
  35. 9 s$ p2 A& B- G8 }7 }6 q9 s5 c
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);# l7 D% n# t) w9 p
  37. 3 M$ k- H. b  h. Y* x* i/ k, Y# D0 M
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    0 p! C9 S. l/ z7 c9 N: z% N8 @' N

  39. + O# D; }& H7 G/ X0 d  T3 G: v
  40.                 std::vector<SelectionIntentRule *> rules1(1);( l8 W% w$ [/ J
  41.                 rules1[0] = curveDumbRule1;
    ! W( D2 d0 _/ B
  42.                 NXObject *nullNXObject(NULL);
    3 U; ^, K0 X/ d$ Q5 |
  43.                 Point3d helpPoint1(0, 0, 0);7 M. u- E& u. y) A' u
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);6 e) Y. w- K  k4 L% p1 E5 C
  45. 7 }9 {; G9 s+ z3 w4 Z. B* {( Z
  46.                 plane1->Evaluate();# T& A2 T0 Q$ c

  47. / D  T2 [- z6 b* ~4 p8 q4 M
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    ( {/ ]2 t5 ^0 a, J! Z
  49.   r/ @& `" E0 M( G/ h  v% m! M
  50.                 projectCurveBuilder1->SetGapOption(true);
    8 W9 J' J% v: k# O. h

  51. $ a7 r; C1 l0 @! Q5 f- w# ?+ V0 ^
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    : O; ?9 u- v2 w! W' |: g

  53. 0 @( G+ t& n/ h* k3 ?8 v; q
  54.                 NXObject *nXObject1;' c6 C# x+ ]6 r' v' {9 ?& \# e
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    , B& [9 q, }% Q& e0 N) y4 {4 e/ J

  56.   X; m( h% I0 M1 G! Q& K6 e; [1 k1 {
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    - `3 P# _' h, d+ F8 \6 q8 K+ V

  58. # @) H* T0 @3 F! t
  59.                 projectCurveBuilder1->Destroy();
    % s; ]9 q2 X+ l

  60. ! ^! E  v4 d* G# q3 e; q
  61.         }
    2 p9 e$ S! s: d/ \2 V  D) y
  62.         catch(exception& ex)
    / Y. ^$ Q* f  R6 Q$ c, |
  63.         {& y* ^: k# j: v0 X) O2 ]7 [
  64.                 //---- Enter your exception handling code here -----9 {6 _* Y5 y, N2 J
  65.                 errorCode = 1;
    : v3 U- g1 o0 O4 }
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 i: @  n& n; [+ t& v; \
  67.         }" T% D* w/ f9 j  X! S. I1 I4 @
  68. ' H# Z5 t( w3 y% k; X7 t, W
  69.         return errorCode;- l& i" U, ]* J8 }% n  R( n: @/ D) \
  70. }/ \( M! I& D4 `( Q& |) i/ [7 T
复制代码

9 i9 {7 X7 W  X8 q* S
7 `' }* B% v0 p: o, _
( u- {- A+ |! B% ~) e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了