QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 5272|回复: 23
打印 上一主题 下一主题

[分享] 通过 Creo Parametric TOOLKIT 使用三个平面创建坐标系

[复制链接]

上等兵

Rank: 1

11

主题

48

帖子

59

积分
跳转到指定楼层
楼主
发表于 2017-5-27 10:49:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参考以下示例代码:


  1. ProElement csysFeatTree;
  2. proErr = ProElementAlloc(PRO_E_FEATURE_TREE, &csysFeatTree);

  3. //PRO_E_FEATURE_TYPE
  4. ProElement featureTypeElem;
  5. proErr = ProElementAlloc(PRO_E_FEATURE_TYPE, &featureTypeElem);
  6. proErr = ProElementIntegerSet(featureTypeElem, PRO_FEAT_CSYS);
  7. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, featureTypeElem);

  8. //PRO_E_STD_FEATURE_NAME
  9. ProElement featureNameElem;
  10. proErr = ProElementAlloc(PRO_E_STD_FEATURE_NAME, &featureNameElem);
  11. proErr = ProElementWstringSet(featureNameElem, L"TEST_CSYS");
  12. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, featureNameElem);

  13. //PRO_E_CSYS_ORIGIN_CONSTRS
  14. ProElement csysOriginConstrsElem;
  15. proErr = ProElementAlloc(PRO_E_CSYS_ORIGIN_CONSTRS, &csysOriginConstrsElem);
  16. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOriginConstrsElem);

  17. //PRO_E_CSYS_ORIGIN_CONSTRS
  18. //  |--PRO_E_CSYS_ORIGIN_CONSTR
  19. ProElement csysOriginConstrElem;
  20. proErr = ProElementAlloc(PRO_E_CSYS_ORIGIN_CONSTR, &csysOriginConstrElem);
  21. proErr = ProElemtreeElementAdd(csysOriginConstrsElem, NULL, csysOriginConstrElem);

  22. //PRO_E_CSYS_ORIGIN_CONSTRS
  23. //  |--PRO_E_CSYS_ORIGIN_CONSTR
  24. //    |--PRO_E_CSYS_ORIGIN_CONSTR_REF
  25. ProElement csysOriginConstrRefElem;
  26. proErr = ProElementAlloc(PRO_E_CSYS_ORIGIN_CONSTR_REF, &csysOriginConstrRefElem);

  27. ProSelection *sels = NULL;
  28. int nSels = 0;
  29. proErr = ProSelect(
  30.     "datum",
  31.     1,
  32.     NULL,
  33.     NULL,
  34.     NULL,
  35.     NULL,
  36.     &sels,
  37.     &nSels);
  38. if (nSels < 1)
  39. {
  40.     return proErr;
  41. }

  42. ProReference csysOriginConstrRef;
  43. proErr = ProSelectionToReference(sels[0], &csysOriginConstrRef);

  44. proErr = ProElementReferenceSet(csysOriginConstrRefElem, csysOriginConstrRef);
  45. proErr = ProElemtreeElementAdd(csysOriginConstrElem, NULL, csysOriginConstrRefElem);

  46. //PRO_E_CSYS_OFFSET_TYPE
  47. ProElement csysOffsetTypeElem;
  48. proErr = ProElementAlloc(PRO_E_CSYS_OFFSET_TYPE, &csysOffsetTypeElem);
  49. proErr = ProElementIntegerSet(csysOffsetTypeElem, PRO_CSYS_OFFSET_CARTESIAN);
  50. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOffsetTypeElem);
复制代码

  1. //PRO_E_CSYS_ONSURF_TYPE
  2. ProElement csysOnsurfTypeElem;
  3. proErr = ProElementAlloc(PRO_E_CSYS_ONSURF_TYPE, &csysOnsurfTypeElem);
  4. proErr = ProElementIntegerSet(csysOnsurfTypeElem, PRO_CSYS_ONSURF_LINEAR);
  5. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOnsurfTypeElem);

  6. //PRO_E_CSYS_DIM_CONSTRS
  7. ProElement csysDimConstrsElem;
  8. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTRS, &csysDimConstrsElem);
  9. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysDimConstrsElem);

  10. //PRO_E_CSYS_DIM_CONSTRS
  11. //  |--PRO_E_CSYS_DIM_CONSTR
  12. ProElement csysDimConstrElem1;
  13. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR, &csysDimConstrElem1);
  14. proErr = ProElemtreeElementAdd(csysDimConstrsElem, NULL, csysDimConstrElem1);

  15. //PRO_E_CSYS_DIM_CONSTRS
  16. //  |--PRO_E_CSYS_DIM_CONSTR
  17. //    |--PRO_E_CSYS_DIM_CONSTR_REF
  18. ProElement csysDimConstrRefElem1;
  19. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR_REF, &csysDimConstrRefElem1);

  20. proErr = ProSelect(
  21.     "datum",
  22.     1,
  23.     NULL,
  24.     NULL,
  25.     NULL,
  26.     NULL,
  27.     &sels,
  28.     &nSels);
  29. if (nSels < 1)
  30. {
  31.     return proErr;
  32. }

  33. ProReference csysDimConstrRef1;
  34. proErr = ProSelectionToReference(sels[0], &csysDimConstrRef1);

  35. proErr = ProElementReferenceSet(csysDimConstrRefElem1, csysDimConstrRef1);
  36. proErr = ProElemtreeElementAdd(csysDimConstrElem1, NULL, csysDimConstrRefElem1);
复制代码

  1. //PRO_E_CSYS_DIM_CONSTRS
  2. //  |--PRO_E_CSYS_DIM_CONSTR
  3. //    |--PRO_E_CSYS_DIM_CONSTR_TYPE
  4. ProElement csysDimConstrTypeElem1;
  5. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR_TYPE, &csysDimConstrTypeElem1);
  6. proErr = ProElementIntegerSet(csysDimConstrTypeElem1, PRO_CSYS_DIM_CONSTR_TYPE_OFFSET);
  7. proErr = ProElemtreeElementAdd(csysDimConstrElem1, NULL, csysDimConstrTypeElem1);

  8. //PRO_E_CSYS_DIM_CONSTRS
  9. //  |--PRO_E_CSYS_DIM_CONSTR
  10. //    |--PRO_E_CSYS_DIM_CONSTR_VAL
  11. ProElement csysDimConstrValElem1;
  12. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR_VAL, &csysDimConstrValElem1);
  13. proErr = ProElementDoubleSet(csysDimConstrValElem1, -100.0);
  14. proErr = ProElemtreeElementAdd(csysDimConstrElem1, NULL, csysDimConstrValElem1);

  15. //PRO_E_CSYS_DIM_CONSTRS
  16. //  |--PRO_E_CSYS_DIM_CONSTR
  17. ProElement csysDimConstrElem2;
  18. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR, &csysDimConstrElem2);
  19. proErr = ProElemtreeElementAdd(csysDimConstrsElem, NULL, csysDimConstrElem2);

  20. //PRO_E_CSYS_DIM_CONSTRS
  21. //  |--PRO_E_CSYS_DIM_CONSTR
  22. //    |--PRO_E_CSYS_DIM_CONSTR_REF
  23. ProElement csysDimConstrRefElem2;
  24. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR_REF, &csysDimConstrRefElem2);

  25. proErr = ProSelect(
  26.     "datum",
  27.     1,
  28.     NULL,
  29.     NULL,
  30.     NULL,
  31.     NULL,
  32.     &sels,
  33.     &nSels);
  34. if (nSels < 1)
  35. {
  36.     return proErr;
  37. }

  38. ProReference csysDimConstrRef2;
  39. proErr = ProSelectionToReference(sels[0], &csysDimConstrRef2);

  40. proErr = ProElementReferenceSet(csysDimConstrRefElem2, csysDimConstrRef2);
  41. proErr = ProElemtreeElementAdd(csysDimConstrElem2, NULL, csysDimConstrRefElem2);

  42. //PRO_E_CSYS_DIM_CONSTRS
  43. //  |--PRO_E_CSYS_DIM_CONSTR
  44. //    |--PRO_E_CSYS_DIM_CONSTR_TYPE
  45. ProElement csysDimConstrTypeElem2;
  46. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR_TYPE, &csysDimConstrTypeElem2);
  47. proErr = ProElementIntegerSet(csysDimConstrTypeElem2, PRO_CSYS_DIM_CONSTR_TYPE_OFFSET);
  48. proErr = ProElemtreeElementAdd(csysDimConstrElem2, NULL, csysDimConstrTypeElem2);

  49. //PRO_E_CSYS_DIM_CONSTRS
  50. //  |--PRO_E_CSYS_DIM_CONSTR
  51. //    |--PRO_E_CSYS_DIM_CONSTR_VAL
  52. ProElement csysDimConstrValElem2;
  53. proErr = ProElementAlloc(PRO_E_CSYS_DIM_CONSTR_VAL, &csysDimConstrValElem2);
  54. proErr = ProElementDoubleSet(csysDimConstrValElem2, 200.0);
  55. proErr = ProElemtreeElementAdd(csysDimConstrElem2, NULL, csysDimConstrValElem2);

  56. //PRO_E_CSYS_NORMAL_TO_SCREEN
  57. ProElement csysNormalToScreenElem;
  58. proErr = ProElementAlloc(PRO_E_CSYS_NORMAL_TO_SCREEN, &csysNormalToScreenElem);
  59. proErr = ProElementIntegerSet(csysNormalToScreenElem, PRO_CSYS_ORIENTMOVES_NRMSCRN_NO);
  60. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysNormalToScreenElem);

  61. //PRO_E_CSYS_ORIENT_BY_METHOD
  62. ProElement csysOrientByMethodElem;
  63. proErr = ProElementAlloc(PRO_E_CSYS_ORIENT_BY_METHOD, &csysOrientByMethodElem);
  64. proErr = ProElementIntegerSet(csysOrientByMethodElem, PRO_CSYS_ORIENT_BY_SEL_REFS);
  65. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientByMethodElem);

  66. //PRO_E_CSYS_ORIENTSELAXIS1_REF
  67. ProElement csysOrientSelAxis1RefElem;
  68. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS1_REF, &csysOrientSelAxis1RefElem);
  69. proErr = ProElementReferenceSet(csysOrientSelAxis1RefElem, csysOriginConstrRef);
  70. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis1RefElem);

  71. //PRO_E_CSYS_ORIENTSELAXIS1_REF_OPT
  72. ProElement csysOrientSelAxis1RefOptElem;
  73. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS1_REF_OPT, &csysOrientSelAxis1RefOptElem);
  74. proErr = ProElementIntegerSet(csysOrientSelAxis1RefOptElem, PRO_CSYS_DIRCSYSREF_OPT_ORIGIN);
  75. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis1RefOptElem);

  76. //PRO_E_CSYS_ORIENTSELAXIS1_OPT
  77. ProElement csysOrientSelAxis1OptElem;
  78. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS1_OPT, &csysOrientSelAxis1OptElem);
  79. proErr = ProElementIntegerSet(csysOrientSelAxis1OptElem, PRO_CSYS_ORIENTMOVE_AXIS_OPT_Z);
  80. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis1OptElem);

  81. //PRO_E_CSYS_ORIENTSELAXIS1_FLIP
  82. ProElement csysOrientSelAxis1FlipElem;
  83. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS1_FLIP, &csysOrientSelAxis1FlipElem);
  84. proErr = ProElementIntegerSet(csysOrientSelAxis1FlipElem, PRO_CSYS_ORIENTSELAXIS_FLIP_NO);
  85. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis1FlipElem);

  86. //PRO_E_CSYS_ORIENTSELAXIS2_REF
  87. ProElement csysOrientSelAxis2RefElem;
  88. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS2_REF, &csysOrientSelAxis2RefElem);
  89. proErr = ProElementReferenceSet(csysOrientSelAxis2RefElem, csysDimConstrRef1);
  90. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis2RefElem);

  91. //PRO_E_CSYS_ORIENTSELAXIS2_REF_OPT
  92. ProElement csysOrientSelAxis2RefOptElem;
  93. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS2_REF_OPT, &csysOrientSelAxis2RefOptElem);
  94. proErr = ProElementIntegerSet(csysOrientSelAxis2RefOptElem, PRO_CSYS_DIRCSYSREF_OPT_ORIGIN);
  95. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis2RefOptElem);

  96. //PRO_E_CSYS_ORIENTSELAXIS2_OPT
  97. ProElement csysOrientSelAxis2OptElem;
  98. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS2_OPT, &csysOrientSelAxis2OptElem);
  99. proErr = ProElementIntegerSet(csysOrientSelAxis2OptElem, PRO_CSYS_ORIENTMOVE_AXIS_OPT_X);
  100. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis2OptElem);

  101. //PRO_E_CSYS_ORIENTSELAXIS2_FLIP
  102. ProElement csysOrientSelAxis2FlipElem;
  103. proErr = ProElementAlloc(PRO_E_CSYS_ORIENTSELAXIS2_FLIP, &csysOrientSelAxis2FlipElem);
  104. proErr = ProElementIntegerSet(csysOrientSelAxis2FlipElem, PRO_CSYS_ORIENTSELAXIS_FLIP_NO);
  105. proErr = ProElemtreeElementAdd(csysFeatTree, NULL, csysOrientSelAxis2FlipElem);

  106. ProMdl curMdl;
  107. proErr = ProMdlCurrentGet(&curMdl);

  108. ProModelitem curMdlModelItem;
  109. proErr = ProMdlToModelitem(curMdl, &curMdlModelItem);

  110. ProSelection curMdlSel;
  111. proErr = ProSelectionAlloc(NULL, &curMdlModelItem, &curMdlSel);

  112. ProFeatureCreateOptions *featCreationOpts = NULL;
  113. proErr = ProArrayAlloc(1, sizeof(ProFeatureCreateOptions), 1, reinterpret_cast<ProArray *>(&featCreationOpts));
  114. featCreationOpts[0] = PRO_FEAT_CR_NO_OPTS;

  115. ProErrorlist errorList;
  116. ProFeature csysFeature;
  117. proErr = ProFeatureWithoptionsCreate(
  118.     curMdlSel,
  119.     csysFeatTree,
  120.     featCreationOpts,
  121.     PRO_REGEN_NO_FLAGS,
  122.     &csysFeature,
  123.     &errorList);
复制代码
部分代码回复可见
其实也没啥好隐藏的,上面就是全部:lol


有奖推广贴子: 

回复

使用道具 举报

上尉

Rank: 6Rank: 6

861

主题

1876

帖子

5423

积分
沙发
发表于 2017-5-27 12:39:53 | 只看该作者
6666666。这是C语言?
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

11

主题

48

帖子

59

积分
板凳
 楼主| 发表于 2017-5-27 13:52:04 | 只看该作者
大师兄 发表于 2017-5-27 12:39
6666666。这是C语言?

:lol
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

11

主题

48

帖子

59

积分
地板
 楼主| 发表于 2017-5-27 15:26:12 | 只看该作者
大师兄 发表于 2017-5-27 12:39
6666666。这是C语言?

大师兄一直都在研究二次开发?
回复 支持 反对

使用道具 举报

上尉

Rank: 6Rank: 6

861

主题

1876

帖子

5423

积分
5#
发表于 2017-5-27 17:01:17 | 只看该作者
Yangss 发表于 2017-5-27 15:26
大师兄一直都在研究二次开发?

没研究,编程略懂。
回复 支持 反对

使用道具 举报

中校

Rank: 7Rank: 7Rank: 7

1

主题

154

帖子

1万

积分
6#
发表于 2017-5-31 07:49:16 | 只看该作者
好东西,谢谢分享。
回复 支持 反对

使用道具 举报

等待验证会员

0

主题

216

帖子

270

积分
7#
发表于 2017-6-21 20:07:39 | 只看该作者
谢谢分享。
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

0

主题

19

帖子

177

积分
8#
发表于 2017-6-21 20:42:30 | 只看该作者
呵呵。看看。。。。。。
回复 支持 反对

使用道具 举报

等待验证会员

0

主题

36

帖子

6

积分
9#
发表于 2017-6-22 10:29:59 | 只看该作者

好东西,谢谢分享
回复 支持 反对

使用道具 举报

列兵

Rank: 1

0

主题

3

帖子

0

积分
10#
发表于 2017-7-6 09:40:04 | 只看该作者
谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-5-26 20:53

返回顶部