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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
; h! f! B" _: B/ {
" j2 z% k, z' S
5 H1 o8 H2 S* y( u+ V# [
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
4 i. A& v( D5 [
- l" C" z# P3 }1 W5 \! q. H此处使用的是 通过面的法向创建投影曲线,可以参考下!
! X/ I' x0 m- R
# R/ C" _2 @( V- ~' k+ l# g
. T6 z2 C0 D2 }" ~
( x/ K9 M4 @# Z& g7 |$ ]2 l2 {6 r" N
/ Z/ \# u' h( d+ M/ p$ u. D
: Y0 |* x1 u, v
' M: D+ n1 H6 s0 d' Q3 T5 H4 T) {# e, k4 H# {) s8 i! x. h% T

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

 NX Open C++ 创建投影曲线 project curves
# @( e; g) Y, ]7 H# A% {/ }
8 p* `. L- m7 D

! h: K$ j& c8 |' P# Z% a1 a9 k- E
  1. 4 R! @7 T* h8 E; X0 w7 \
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1). ^, ?" R$ C. e! _4 S" F6 R
  3. {
    , R6 q9 j5 I  W- r* ^% H4 ~+ B1 p
  4.         int errorCode = 0;
    # K9 \  w6 v3 D. k' Q8 v* O, n
  5.         try/ w* M/ C) S1 M) V7 s
  6.         {
    9 q8 w) }: n7 e3 G: I" L8 @9 {' y
  7.                 // createProject curves) V7 N. m; u5 e
  8. 2 D( @* Y- L3 E# H: i( h
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    * c& x/ _& I& Q' t4 E& O

  10. 1 w9 z  O! e; U; E
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    1 w2 i4 p' _0 V4 z: n. ?1 ^

  12. 5 u3 `7 M% q& e" _6 h7 X6 q
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);% q! h; s# f; C; Q
  14. 7 y1 J' \, Y4 q4 A% I/ Q9 U/ J
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    ) P5 }9 [! ]1 Y% `

  16. 2 L, M5 k9 m, c; _: G& q
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);$ ~. Z: ?* |# T' u; i, ?% ^7 h5 w
  18. & y# U, F+ K+ ?; u( S- Y
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);+ w  b5 y  _; h/ {: S

  20. 4 o: l. G$ k1 @, n$ d: b
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);. ]# f) c6 D+ r8 z! {, C0 y8 T

  22. . z4 V# I0 j/ K) p: F, q
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    & [+ Q7 ~% A4 p

  24. / o+ t1 R: u4 D" A% \' B
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);' L, c( p/ ~9 \( o+ _- F! y7 K8 c* ^
  26. 4 l- L$ S, ]- k; M
  27.                 int size = (int)inputObjects.size();
    3 R) R. y( \% Y: F4 _
  28.                 std::vector<IBaseCurve *> curves1;
    : G, g7 C- E% \" D3 \% u
  29.                 for (int ii = 0 ; ii < size; ++ii)
    9 ?+ E2 J! W2 p' `1 e8 g" S
  30.                 {: w2 s8 r6 f& y- Y- r# a
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));2 m4 q4 Z& R( t/ s) ^
  32.                 }
    ! H" L6 R6 J  r% `: J; G

  33. : d6 s' V" W' h) S9 u- t
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    0 U+ o  R3 W# S$ }
  35. . o( I# r; K- k, ]2 s6 T
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    9 R) y$ {6 s3 L, v3 _( C

  37. + u: O% |4 @# l  q5 T9 F  v
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);: O! I/ w7 L, U/ q; r

  39. 5 {7 b" ]6 n' w6 H, @
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    - `/ P. Z1 b" Y- g& z. {: S
  41.                 rules1[0] = curveDumbRule1;
    $ Q1 c2 c0 ~6 D  A) Z/ t
  42.                 NXObject *nullNXObject(NULL);
    6 G* H: p% l$ \  M8 ]9 a9 I4 g& G
  43.                 Point3d helpPoint1(0, 0, 0);
    ! I! `; T: E. G. s; g5 ]5 h
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);' Q) W% c4 r) D! S

  45. 6 d, \% ^7 L6 j
  46.                 plane1->Evaluate();+ f6 K- n( Q; b9 N
  47. ; b5 ?8 F2 c1 S8 {3 f0 D+ t
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);! H+ ]# m3 s! o6 \/ Z, P

  49. 9 c7 q; S! h5 T% U" w
  50.                 projectCurveBuilder1->SetGapOption(true);
    : q1 V; p6 P$ m
  51. 8 O* V, m, s9 J6 ~% P  @: u- x/ V, U
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);5 X1 r  s% Q2 H& C5 p$ s
  53. + O% t; D2 A) M/ v7 K/ L! O
  54.                 NXObject *nXObject1;
    + l3 T& s- N2 y9 q; f# _  k
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    . R* F: H5 H: V) Z$ Y) x

  56. 4 M, F# a+ U7 q) E7 F4 c. ^  s7 E0 f
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    3 X( J1 @' U! Q8 p8 x+ p# O, s

  58. , i- s, S5 U1 }" x7 \  C0 D
  59.                 projectCurveBuilder1->Destroy();- J% [" r- B  r9 d, V0 P7 h0 b

  60. 0 y9 V5 s- j; Z1 d6 W$ G
  61.         }4 ~, ~* N: O# _: w) b- i' N
  62.         catch(exception& ex)
    2 `3 w+ M! m$ ]
  63.         {  L7 c9 R$ t/ S7 O# a  I
  64.                 //---- Enter your exception handling code here -----, C: n3 C6 `, v: }% e0 i
  65.                 errorCode = 1;" z$ {; G, T/ P+ e8 |/ |
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    / Q' |3 L7 c( E/ P
  67.         }
    ; e" z- b* K! y
  68. + F7 T8 Q$ K& o& E
  69.         return errorCode;
    0 e0 I" r" Y3 k
  70. }# m  x' x- w2 j) ~" C* Q  P
复制代码
! M) G5 n' C2 `1 \
' {/ D" ?8 ~" ~

6 _+ _% F" h6 I! E; y: G6 l& s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了