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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

& r7 E; F- s% K5 u
# \6 X6 {9 c, o& _
3 ?- @& X7 t5 F) p& G+ ]7 O# XUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves' I, Y6 N0 x% o  n8 ?

5 n( }: F6 r% M! i9 |9 c5 G此处使用的是 通过面的法向创建投影曲线,可以参考下!+ {" o' v# s6 b+ Q5 F9 b
% L$ @9 ^& r: e% D+ Y- J7 S2 M1 m
+ t4 x$ O2 X) U  e
8 b. T* L9 [( J5 A' k0 R/ r

; L+ n! Q5 n# j1 s% k4 F3 f% E2 u6 u

+ \3 C1 l7 [% w( Y( x
5 j/ }. x4 \& P* N# a' e! F' o" X

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

 NX Open C++ 创建投影曲线 project curves
$ S7 s, P6 \, m6 Y- \7 V
1 b+ {# G# j* P# ?, V9 o

# C" k! a& W% a9 ?) `- W
  1. 3 Z- q( W7 |& {# ?* w; c  m- v9 s
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    . v/ G8 h% M- @) w
  3. {% z  ]) c# W2 r4 I' U
  4.         int errorCode = 0;' N* z7 d4 a  n1 {9 E$ z6 \5 T8 D
  5.         try0 f$ f3 e' j; K: J4 b) {* d
  6.         {/ u) K' j& K) @1 b2 {
  7.                 // createProject curves2 F, k+ f+ ^2 J( _8 R

  8. 7 Y$ s2 i: J3 h1 T" y! J( l
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    9 l& n. ~' s3 `
  10. 6 Q* E' W5 O# z
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;: H" E; v9 T* S* k3 ]- Z2 V- ?
  12. # t7 \; P( [3 Z8 X, A1 F. [$ t
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    ( G2 {' S/ N, X: [9 X1 h" V
  14. & s4 |. S& V7 k
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    ' W# c5 N8 v6 g
  16. : n3 e% T3 o" a" W' k, f
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    * x0 w- O- K6 A( h5 e

  18. - }' E) b8 c% A) J0 v$ L$ w
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);& k6 @3 y/ c  R9 G9 D+ ^

  20. # `2 d- R3 T! S5 J$ r5 W
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    ; ^! `6 H  Z1 |  A7 x3 Z) M
  22. 2 b) U2 ^" k6 I) |2 `
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    6 V2 W/ q7 z7 H' {. S& [; w

  24. ' W4 |9 {; J4 o1 _( r( E* x
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);! B$ G8 h  L7 E1 V+ [, }6 f

  26.   \5 T  v% p, u0 Y. [  u) i+ j
  27.                 int size = (int)inputObjects.size();$ u$ b. ]; l; b
  28.                 std::vector<IBaseCurve *> curves1;& B0 h: h  ]. _9 a) k' Q
  29.                 for (int ii = 0 ; ii < size; ++ii)
    5 i; o3 B3 q8 F' N) c3 ^; X
  30.                 {
    * t! H2 A, R9 u: [: Y% H# d
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    ( e) C& C, f6 N; e
  32.                 }$ ^1 e6 Y' t1 Z3 s

  33. 7 y5 b, m# z  @/ F
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    3 |9 ~* v( k: |
  35. 2 i# K7 q/ w7 ?
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    / H/ l6 T. U' x8 c3 x) b
  37. " E, g# T3 f) ]+ E
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);. y% G4 o* i* p( n
  39. ) j- b1 c5 N  P7 u& ?3 E
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    * Q% f3 P$ {2 H) k, q7 t9 x6 l; a
  41.                 rules1[0] = curveDumbRule1;0 |# P, l- R6 J. u9 D8 B$ [
  42.                 NXObject *nullNXObject(NULL);+ d- P! o3 M" ?8 {& w
  43.                 Point3d helpPoint1(0, 0, 0);/ |8 a) R( D' W. Y( L9 r
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    8 e- o5 A2 |0 L. A1 i9 r& M
  45. % D, c5 a4 \& k7 s& N: b& v  ^
  46.                 plane1->Evaluate();
    . S/ L! _" Y7 t1 w- P  v
  47. " {* V, P8 I- _
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    5 g: E7 T- y5 ]# Q+ |
  49. 4 L# _4 O6 F& ?) N
  50.                 projectCurveBuilder1->SetGapOption(true);
    + i$ z2 G$ R' `* _

  51. . y) x/ {; }/ S& k5 Q/ S% n1 G% E5 b
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    8 Y; S- Q* u2 ~, g; o6 W
  53. $ k5 U6 \& q; n1 e5 f
  54.                 NXObject *nXObject1;
    ; f5 s/ O* h& n+ ^$ J% x6 S
  55.                 nXObject1 = projectCurveBuilder1->Commit();# N1 N% `2 ]* }3 }9 u: J! K& O* g

  56. & p- C  R: Q2 k0 g
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    # z1 i/ s6 c3 v6 i
  58. ' r: X5 E! A: ~8 j
  59.                 projectCurveBuilder1->Destroy();- K" l3 s$ }8 M5 n, V
  60. 4 K6 K3 S) l, U3 Q
  61.         }4 t4 ^! k" E: ~: r) w+ t
  62.         catch(exception& ex)
    6 _9 \0 J$ h! k! |+ m9 |$ i
  63.         {
    % d8 x2 Z" Q! I* x9 V
  64.                 //---- Enter your exception handling code here -----# N( t2 b+ S+ Q2 h' ?
  65.                 errorCode = 1;3 _: Z8 g9 s$ [
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());* ^' `# B# A6 v, X6 S. a4 V7 e
  67.         }
    5 N* H( L9 K$ r9 i
  68. : e$ J; u/ B) ^
  69.         return errorCode;
    / @7 u$ w" W1 R# S1 @4 ?1 L; t; s
  70. }
    5 R3 D" z# Y8 G
复制代码

% y( d; r% ^% j& I+ q' W* w! F7 P; J% k

& ]$ B( l1 Z) _
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了