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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

% t/ @6 h! x7 C- p& S) y" f
& S9 W  O& x" |" p4 B, `
7 M. @7 d4 k. Y0 c1 o7 Z0 Z( e0 {UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, i8 E) y0 i/ h6 g) {/ H, v7 a6 M6 J+ P" P- J/ e2 Z# w3 O. f" w
此处使用的是 通过面的法向创建投影曲线,可以参考下!" @# J/ {+ L7 a5 S: S

. B) Y, [( L0 ^1 e3 E( P" p) b4 n8 r' w2 L

2 _* ^4 d/ F7 |6 q, B7 Q2 P1 r
0 {1 P; B, W! S7 U# e7 p& R
/ W' m4 p' q7 v# \6 s
* }& L8 a5 Z; o/ [% h
$ W; p3 I; n2 h, P, R

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

 NX Open C++ 创建投影曲线 project curves
3 S4 g* z1 v2 q- y4 Z4 J# {# i
6 B. j; ?& c; b* _5 q1 T
8 ~9 u- C0 j4 a: f* T. A
  1. " M- Q: X1 ?. m2 e
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)4 m5 L6 _0 |+ H: l0 _1 X
  3. {1 k+ i5 D  A8 E" D5 \' Z# ]
  4.         int errorCode = 0;- Y& |5 G- W) a& }0 Z
  5.         try" ], E. \7 }9 u. {. W, G! }
  6.         {
    " y- ?( g4 n, j- t( w' q
  7.                 // createProject curves1 @" Q" b9 r) j! B" _

  8. & P' \. m9 M7 g: @. |9 F4 O1 x" ?
  9.                 Features::Feature *nullFeatures_Feature(NULL);8 r. Q$ x0 ^3 b) Y  I) ^( K% Q  x3 _

  10. 6 s* L9 ?' f; _; L# G
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    * ^) Y: w+ R% t: ?8 i$ A

  12. ( C) W& i4 [# k% Y
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    0 R( h! N/ k  ?. ?5 ?6 ~: L

  14. 3 h3 R1 \: {" y; S7 e4 B9 p' }
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    % o  b, c, C+ L" s

  16. ; D3 K" G  f8 j) c% K6 B/ ?$ e
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    ' c' U# n& j% i% p

  18. 1 @  l0 }- Y- v8 n
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    / V2 v  z$ P3 _( Y5 M  U8 S1 i% z

  20. * @! e( Z8 y2 U+ j4 ~8 {
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    6 n9 s  U( U- ?: Q: ^

  22. . `- w3 c9 b. ~: G
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);0 G' f" H; n+ ^
  24. 5 {, I- }+ X: P! Z
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    ) B5 T5 G5 U3 Q0 d. e
  26. 8 j( O/ ]6 W& ^
  27.                 int size = (int)inputObjects.size();* j, p- H5 B. X& y4 ]1 x$ h' }
  28.                 std::vector<IBaseCurve *> curves1;
      |: f: t; N  y6 R
  29.                 for (int ii = 0 ; ii < size; ++ii)* ^; y8 f1 j" j5 w2 I5 H
  30.                 {+ o9 B* \. |, E5 v: S/ @
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));' q- G) Q' ~, N
  32.                 }+ G% A6 a0 z. o$ m# w) H
  33. 5 P& ^- J8 X9 W
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;6 J7 t  [# G3 ?3 a' K8 O
  35. * x0 C9 a0 q! {1 L6 b
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);0 p# R- w# @, O! w5 h
  37. , H3 y: I5 E% L( N) d9 S+ w
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);7 O4 ?: O1 K6 N3 [' |

  39. - K3 A: a2 A6 G; b5 {
  40.                 std::vector<SelectionIntentRule *> rules1(1);) b$ ~$ P# \8 B2 ]$ K% m3 h
  41.                 rules1[0] = curveDumbRule1;
    8 }8 s6 F! P6 }% e- ~" }
  42.                 NXObject *nullNXObject(NULL);8 K) W, ?3 ?9 O# c" z- |
  43.                 Point3d helpPoint1(0, 0, 0);
    $ X8 r3 D& G: c9 O/ i3 _8 ?
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    & _- f) c( r4 N9 z- S  G: U; v
  45. 9 w; d& k" r; U0 f9 Q) R
  46.                 plane1->Evaluate();3 t% r7 k! i* U3 j! X

  47. 8 u4 _& O4 t! T$ S3 W6 S
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    5 M; a& j5 ^: L0 X; R

  49. 0 M/ W: I/ r0 X9 ]& g
  50.                 projectCurveBuilder1->SetGapOption(true);
    ' {& ]- a: a- N& d! b
  51. * m$ d) i5 \# C& N% K
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);+ \7 t2 h7 _# t. F+ [

  53. " X# I5 P8 G5 `4 V- l6 t2 e- ^  x" R
  54.                 NXObject *nXObject1;
    % \1 f: G( H0 e/ n$ i
  55.                 nXObject1 = projectCurveBuilder1->Commit();$ y' p, A& K! J& r

  56. ; x$ X2 L, F+ _, o
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();6 I, z' H  _. F3 P& m
  58. 0 U3 k2 B! Z) d+ Y! P; K
  59.                 projectCurveBuilder1->Destroy();7 r( T) `, s  F( J

  60. 9 [% o7 i+ T* A- |
  61.         }9 d7 ?0 }/ G6 f! l/ V; A& `) F
  62.         catch(exception& ex)# B2 H3 b0 X' f2 `; @' p
  63.         {
    ; f" l7 c3 Y" ?7 ^: V8 t, v( [" b9 L+ s
  64.                 //---- Enter your exception handling code here -----
    : F) z, c. ^0 K2 I& r! |/ g
  65.                 errorCode = 1;
    & b( z) G# Q+ F6 @8 ]! G" t
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    4 G, Q* j9 b. ~, i$ R$ K# {
  67.         }) B4 E! [; O( O( j4 G1 z

  68. & J- k% O; v" Q9 y
  69.         return errorCode;
    " x; S( N* A( C
  70. }: y% W( K" N2 B! t  C# ^
复制代码

# _1 @6 x% M# W* d$ `6 p2 A5 o$ V; @( C/ z! `/ H

; r  M& i  V7 L( v; h8 G3 V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了