// 根据零件上截面构成的点,在工程图中画线,对比

.h文件

 std::vector<ProCsys> csyslist;struct Note note[50];ProGeomitem pntscon;Pro3dPnt pntoriginal;Pro3dPnt pntstart;Pro3dPnt pntend;

.cpp文件

//动作函数
ProError ProFeatureVisitAction_f1(ProFeature* p_feature, ProError status, ProAppData app_data)
{std::vector<ProFeature>* pls = (std::vector<ProFeature>*)app_data;ProError err;//ProMdlType p_type;//err = ProMdlTypeGet((ProMdl)p_feature, &p_type);ProFeattype p_type;err = ProFeatureTypeGet(p_feature, &p_type);if (p_type == PRO_FEAT_ZONE){pls->push_back(*p_feature);       }return PRO_TK_NO_ERROR;
}
//过滤函数
ProError ProFeatureFilterAction_f1(ProFeature* p_parameter, ProAppData app_data)
{
<span style="white-space:pre"> </span>return PRO_TK_NO_ERROR;
}
 points.clear();ProError err;ProSolid solid = NULL;ProDrawing drawing;int window_id;err = ProWindowCurrentGet(&window_id);if (err != PRO_TK_NO_ERROR)return;err = ProMdlCurrentGet((ProMdl*)&drawing);err = ProDrawingCurrentsolidGet(drawing,&solid);int sheet1, n_sel;ProName sheet_size;ProView view;ProMatrix matrix, tran;ProVector out_line_start, out_line_end;ProVector out_start, out_end;ProSelection* view_sel;err = ProSelect("dwg_view", 1, NULL, NULL, NULL, NULL, &view_sel,&n_sel);if (err != PRO_TK_NO_ERROR)return;err = ProSelectionViewGet(view_sel[0], &view);if (err != PRO_TK_NO_ERROR)return;ProMdl p_handle;ProName r_mdl_name;int p_window_id;err = ProMdlNameGet((ProMdl)solid, r_mdl_name);err = ProObjectwindowCreate(r_mdl_name, PRO_PART, &p_window_id); // 新开一个窗口,用来显示内存中的零件,返回当前窗口的IDerr = ProWindowActivate(p_window_id); // 激活指定窗口err = ProWindowCurrentSet(p_window_id);err = ProMdlLoad(r_mdl_name, PRO_MDL_PART, PRO_B_FALSE, &p_handle);err = ProMdlDisplay(p_handle);  // 显示内存中的零件std::vector<ProFeature> featls;err = ProSolidFeatVisit((ProSolid)p_handle, ProFeatureVisitAction_f1, ProFeatureFilterAction_f1, &featls);if (err != PRO_TK_NO_ERROR)return;for (int i = 0; i < (int)featls.size(); i ++){int p_n_sections, n_ids;ProSection p_section;ProIntlist ent_ids;Pro2dEntdef *p_ent;Pro2dLinedef *p_line;ProBoolean is_projection;err = ProFeatureNumSectionsGet(&(ProFeature)featls[i], &p_n_sections); /*!< 获得特征截面数 */if (err != PRO_TK_NO_ERROR)return;err = ProFeatureSectionCopy(&(ProFeature)featls[i], /*p_n_sections - 1*/ 0, &p_section);if (err != PRO_TK_NO_ERROR)return;err = ProSectionEntityIdsGet(p_section, &ent_ids, &n_ids); /*!< 截面上实体数 */if (err != PRO_TK_NO_ERROR)return;for (int j = 0; j < n_ids; j ++){err = ProSectionEntityGet(p_section, ent_ids[j], &p_ent);if (err != PRO_TK_NO_ERROR)continue;err = ProSectionEntityIsProjection(p_section, ent_ids[j], &is_projection); /*!< 检查是否是参照,或者投影 */if (err != PRO_TK_NO_ERROR)continue;if (is_projection == PRO_B_TRUE) /*!< 是参照或投影 */{//printf("\tEntity Is Projection\n");continue;}switch (p_ent->type){case PRO_2D_LINE:p_line = (Pro2dLinedef *)p_ent;points.push_back(*p_line);printf("\tEnd1: [ %4.2lf, %4.2lf ]\n", p_line->end1[0], p_line->end1[1]);printf("\tEnd2: [ %4.2lf, %4.2lf ]\n", p_line->end2[0], p_line->end2[1]);break;default:break;}}}err = ProWindowCurrentSet(window_id);if (err != PRO_TK_NO_ERROR)return;err = ProWindowActivate(window_id);if (err != PRO_TK_NO_ERROR)return;err = ProWindowClear(p_window_id);if (err != PRO_TK_NO_ERROR)return;err = ProWindowDelete(p_window_id);if (err != PRO_TK_NO_ERROR)return;err = ProDrawingCurrentSheetGet(drawing, &sheet1);if (err != PRO_TK_NO_ERROR)return;err = ProDrawingSheetTrfGet(drawing, sheet1, sheet_size, tran);if (err != PRO_TK_NO_ERROR)return;/*!< p_handle是零件的句柄 */err = ProViewMatrixGet(p_handle, view, matrix); /*!< 直接使用视图上的转换矩阵 */if (err != PRO_TK_NO_ERROR)return;for (int i = 0; i < points.size(); i ++){pntstart[0] = points[i].end1[0];pntstart[1] = points[i].end1[1];pntstart[2] = 0;pntend[0] = points[i].end2[0];pntend[1] = points[i].end2[1];pntend[2] = 0;//err = ProPntTrfEval(pntstart, tran, out_line_start);//if (err != PRO_TK_NO_ERROR)//    return;//err = ProPntTrfEval(pntend, tran, out_line_end);//if (err != PRO_TK_NO_ERROR)//  return;err = ProPntTrfEval(pntstart, matrix, out_start);if (err != PRO_TK_NO_ERROR)return;err = ProPntTrfEval(pntend, matrix, out_end);if (err != PRO_TK_NO_ERROR)return;ProVector begin_1, end_1;begin_1[0] = out_start[0];begin_1[1] = out_start[1];begin_1[2] = 0;end_1[0] = out_end[0];end_1[1] = out_end[1];end_1[2] = 0;UsrLineentityCreate(drawing, begin_1, end_1, PRO_COLOR_LETTER);}err = ProWindowRefresh(window_id);if (err != PRO_TK_NO_ERROR)return;

检查drawing中草绘线,是否与零件中截面上的线一致相关推荐

  1. 检查cad检查线压盖lisp_在CAD中对多段线进行拓扑检查

    4.在弹出的提示框中,点击  确定: 检查完成后,系统会弹出错误汇总提示框,便于您统计错误数量: 注意:鼠标右键单击项目可自动定位到项目. 下面,我为大家介绍每个检查项的错误原因及修改方法: 1.不是 ...

  2. 【五线谱】五线谱的线与间 ( 五线谱中的 第N线与第N间 | 五线谱上的 上加N线与上加N间 | 五线谱下的 下加N线与下加N间 | 高音谱号下加一线 等同于 低音谱号上加一线 )

    文章目录 一.五线谱中的 线 ( 第 N 线 ) 与 间 ( 第 N 间 ) 二.五线谱上的 线 ( 上加 N 线 ) 与 间 ( 上加 N 间 ) 三.五线谱下的 线 ( 下加 N 线 ) 与 间 ...

  3. wps如何设置试卷密封线_在WPS中怎么制作出密封线?在WPS中制作出密封线的方法...

    WPS是我们日常使用的办公软件之一,有些小伙伴很不了解其中是怎么制作密封线的?接下来我们一起往下看看在WPS中制作出密封线的方法吧. 方法步骤 1.密封线是先打上"密封线"三个字, ...

  4. 机房布线,上走线、下走线,那个好?

    在数据中心布线系统走线方式时,很多朋友比较关心的是上走线好,还是下走线好?这个问题一直都有讨论,尤其是刚从事机房施工的朋友,都有此一问. 本期我们来总结下. 为什么要讨论这个问题呢?因为对于布线系统如 ...

  5. 【学习OpenGL】(三)——3D空间中的点与线

    一.3D空间中的点 #include <gl/glut.h> #include <math.h>#define GL_PI 3.1415fstatic GLfloat xRot ...

  6. 去除VScode中的蓝色波浪线

    去除VScode中的蓝色波浪线(可能是语法检查的) 在VScode编写python代码时 在VScode编写python代码时 不知用了啥插件,结果出现了好多检查拼写的蓝色波浪线,如下面这样: 网上查 ...

  7. 怎么在漫画中去表现速度线?

    在照片中表现速度线的时候多数都是采用运动模糊,但是在黑白漫画等线条艺术中,模糊效果也可以通过线条来实现,这就是所有速度线的来源. 这种线条位于事物的表面,是一种不明确的形状.运动越慢,速度线越短,运动 ...

  8. Unity在Canvas上画线(Draw Line)实现

    # 前言 目前Unity官方提供的UI扩展包中包含了UILineRenderer组件,本篇实现与UILineRenderer实现一致,主要讲解其基本使用与实现过程.不想看的同学可以直接下载官方扩展包. ...

  9. python k线图_如何用python画K线图(成交量+MACD+KDJ)

    最近一直在研究股票的形态,一些量化的东西,虽然量化听起来很高大上,通寻找到一个策略,通过程序的手段去找到这样一批股票,避免了人为的因素在其中.这样有个问题就是,程序选出来的股票太机械了,某个参数或条件 ...

最新文章

  1. python 笔记:函数
  2. PaddlePaddle, TensorFlow, MXNet, Caffe2 , PyTorch五大深度学习框架2017-10最新评测
  3. np.random.randint产生一个范围内的数据
  4. 菜鸟学ASP.NET MVC4入门笔记
  5. log4j自定义配置文件(SpringMVC项目)
  6. pythonstdin_如何在Python中执行将数据写入stdin的进程?
  7. C# mvc4.0 MD5测试
  8. 《算法图解》之狄克斯特拉算法
  9. 基于Bootstrap的后台通用模板
  10. 联通BSS-ESS-CBSS系统安装相关
  11. 排球分组循环交叉编排_同学!中国海洋大学第一届排球联赛等你来战!
  12. mybatis-plus过滤不查询某一字段
  13. 浅谈领域驱动设计(DDD:Domain-Driven Design)
  14. 怎样在Mac上查找WiFi密码并在iPhone上共享它?
  15. java模拟京东登陆_模拟登陆京东并访问我的订单
  16. goahead用jst进行简单互动
  17. Python turtle圣诞树
  18. 【IP代理】吐槽某大爷IP
  19. CTF-60 writeup
  20. git工具上传仓库代码步骤

热门文章

  1. 损失上千万,赚了一个亿,解密拼多多事件背后隐藏的阴谋!
  2. MATLAB逗号用法专题
  3. 任天堂红白机- 好的设计的典型
  4. WDL - 验证语法
  5. 企业如何运用社会化媒体进行营销?
  6. 【工具】这21个自动化部署
  7. css实现两个div之间的竖杠
  8. C#依赖注入常用的几种方式
  9. 临沂国际商品交易中心老师带单正规吗?
  10. python按经纬度在地图上标识_Python 给定的经纬度标注在地图上的实现方法