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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

0 c/ x& B/ {+ I, }% I9 c' f9 }9 `$ p7 J0 l2 m2 t
8 d! S: X! n% h* W# G% _. C
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
# A0 s4 c3 j7 a! F' C
* T  S7 Y0 b/ R& w' j. w+ p( d此处使用的是 通过面的法向创建投影曲线,可以参考下!
( `  u  n; X: F1 Q; g
( n2 S9 W6 C+ q) k! k
) W/ G0 @. I6 q2 Z) r- f9 P6 D5 s( R9 e+ j

7 q7 ^/ z0 Z) o# D2 V4 Q; ^- {
+ a' T0 v% b# @9 w8 f2 _% E1 X: @* H
. s1 ?9 e$ ?* B1 v% e

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

 NX Open C++ 创建投影曲线 project curves
( W( \0 T7 T- U2 `
4 A- ~0 S) V% w9 j. x
- f9 a. A4 O$ Z4 ]6 S

  1. ' p: y( B2 w0 w; l0 ]
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    5 a# I' e( }$ h$ q1 Z/ S, X% V9 c
  3. {
    . U; o, L' N& `- ]( }
  4.         int errorCode = 0;
    ( T3 {! d* z2 M  t+ X
  5.         try$ Z5 U$ D# N( k% W
  6.         {
    3 l! _! w  N9 o
  7.                 // createProject curves- o  u+ k/ @4 Y! X* {1 R
  8. ) A1 e2 A" \$ y* j, g/ v* L
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    . D0 Q& N# @, ?5 }+ ?# R

  10. " S0 |! _# E  G) b) j
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;$ @- x1 ^* l! p# ?% s& \. a2 s+ |
  12. 0 K$ J* B; h8 ^, R# q2 E5 i
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    . ?& O; \+ h& ?
  14. : s0 ~/ J4 T' W
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);+ M1 Q- f, B' Q( z' i1 L
  16. : h0 J  A" x. K6 Y9 N" w& k
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);0 m2 H- \) I3 A. e/ Z

  18. 8 @& J$ D! H+ n( m
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    ; E: W4 |: u8 l  b* p: @

  20. * V8 \5 w! D6 J9 H" ]  y' Z7 n
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 |4 s6 n+ ]5 t* g

  22.   N) j* f* ?0 K5 o5 |
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    6 `  ^5 Q4 k5 O3 a, ~% w- `
  24. 6 y' p2 p; l' w' ~# c2 o' ~
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);/ [9 Y' n6 y! I7 Q) N- O) q% ^& [. F

  26. * y! T7 [( C! G: y' I
  27.                 int size = (int)inputObjects.size();' w! n: W7 w0 m' z
  28.                 std::vector<IBaseCurve *> curves1;
    8 ^2 W7 v7 j( o: Y* c: G8 |
  29.                 for (int ii = 0 ; ii < size; ++ii)
    / Y: z% n  I* \5 N9 i
  30.                 {1 `. |/ \- C' p' B4 p  u: |2 b
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    ; o3 G6 S4 F. G( U) X
  32.                 }
    $ e6 j4 a9 z; ~; |4 G; ?4 j

  33. 8 ]- j2 j9 [# ~4 w/ U
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;4 Y, I  {3 @: f1 I  \8 }0 @+ s: [

  35. , X  {8 w* \" R. `7 ]0 m
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);! a* A+ i. h$ G8 M
  37. 7 n# K. ?* P; t
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);+ P8 o3 t/ h2 A) _: ?7 X

  39. - {% V  L0 _& `' e
  40.                 std::vector<SelectionIntentRule *> rules1(1);% F7 Y% \* h% L  t2 _4 {
  41.                 rules1[0] = curveDumbRule1;
    $ H( B& P3 [! R- s) A
  42.                 NXObject *nullNXObject(NULL);
    % d, \" ~7 P2 U
  43.                 Point3d helpPoint1(0, 0, 0);' C/ `" ~% F  M& q/ j& h7 q
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);5 M2 L/ h: ^5 y. a6 n
  45. % i1 h9 w/ L$ f' m# p: q' Y
  46.                 plane1->Evaluate();
    8 l$ u8 }7 e# z

  47. 0 J/ b0 O, s/ Q! K" X2 ?/ C
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);  N) d+ w4 }5 T+ s) I# Z$ }
  49. , g) }/ N6 |1 P# U& U+ R: h. n6 D
  50.                 projectCurveBuilder1->SetGapOption(true);6 ]( r' _( D) B2 G

  51. $ M8 F" ?8 f  e! \4 O( s
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    ' h5 k8 \! @' C8 g/ f3 t$ c; a
  53. & C# M2 g' g( D. _. X1 E1 k& u3 s" w0 _
  54.                 NXObject *nXObject1;
    ( ]4 M1 G( z1 s8 u
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    , }' t* z- n3 |

  56. * ]8 V6 w5 R# X' `  m; N
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    / M7 R# H" Q5 s5 u, @% [! D+ `

  58. 9 l$ y: s$ I  S: f$ Q0 u) r. @
  59.                 projectCurveBuilder1->Destroy();/ ?" w+ q# \/ I' _! o
  60. ! g! i" p# q2 Q& e" l7 A  k% a( \
  61.         }
    - Y( g; ~" \# @7 W% Q
  62.         catch(exception& ex)
    ! V( |. S2 p' ~: l( i6 a8 g
  63.         {
    1 x1 J& [" V% }
  64.                 //---- Enter your exception handling code here -----$ Q/ W# b# ~2 U* V. U5 x* r
  65.                 errorCode = 1;
    $ `4 f  |! _' m1 K4 e. W# f% I( }
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    ! H5 ]) u- D" o* L3 D# D7 m
  67.         }
    & X0 u! H1 X% y, n$ K1 k* Q. \' p9 C
  68. ; t! C9 I8 s0 e& Y' T
  69.         return errorCode;
    ' O$ S& V6 [% Z' c7 N7 n
  70. }
    6 T( N5 B7 @6 ~3 j! R9 ]7 T1 k
复制代码
! E1 v2 k: Y1 a2 T6 c$ Q+ _
' e1 N( s  U2 Y; C
) h4 @, q7 b+ E% y  n' B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了