我们现在来实现这样一种功能:点击视图中的实体对象,右边属性窗口显示相应的属性。

问题的关键 是如何获取我所选中的实体对象,下面是关键代码(放在响应鼠标点击的消息响应的函数中):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//获取所选择的实体对象

TopoDS_Shape selectedShape;

Handle_AIS_InteractiveContext myContext = GetDocument()->GetAISContext();

myContext->Select();

myContext->InitSelected();

if (myContext->MoreSelected())

{

selectedShape = myContext->SelectedShape();

}

//在组件集合中找到含有与当前选择的实体对象相同的实体对象成员的组件,然后用这个组件的参数初始化列表框

for (std::vector<BasicComponent*>::iterator itr = pDoc->m_allComponentVec.begin();itr != pDoc->m_allComponentVec.end(); itr++)

{

if (selectedShape.IsEqual((*itr)->m_myViewShape))

{

/*AfxMessageBox("i found it!");*/

pPro->InitPlinthDepCubePropList((*itr)->m_pParamsGather);

return;

}

}

核心思路就是在我的 Component类型 中添加TopoDS_Shape类型的成员变量,再用Component 对象的数据进行绘制时,把绘制的对象保存到TopoDS_Shape

Note:这里不能用 TopoDS_Shape 类型的指针来保存,因为这样在后期再次使用时(也即判断选择的实体模型与现有的所有模型中的某一个Equal时),会发现找不到,你可以在相关代码处查看值,发现用指针指向的位置中的LocationOrientations全和你最初保存时的数据不一样了。具体原因我也不是很清楚,应该是OCC内部进行了某些操作。

最主要的核心代码就是这些,其他需要根据自己的数据结构来调整。

感谢原作者的知识分享.

本文转载自:http://www.zyh1690.org/mfc-opencascade-the-view-to-realize-the-entity-object-associated-with-the-right-of-the-properties-window/

MFC OpenCasCade – 实现View中的实体对象与右边属性窗口的关联相关推荐

  1. 实体对象集合中根据实体对象的某一属性进行大小排序

    背景 代码实现 思路简述 效果图示 背景 今天我的领导跟我提了一个小小的建议,我觉得很不错.我有这么一个界面,显示的是小车的电量信息,界面很简单,简单的由listView控件展示数据.界面的小车电量信 ...

  2. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...

  3. 【android-tips】如何在view中取得activity对象

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 今天想实现在view中返回上一个activity的功能,想了半天.因为在虽然view是包含于一个activity ...

  4. 彻底理解js中的原型对象和prototype属性

    prototype(函数的原型属性) prototype 是一个指向该实例所使用的原型对象的[指针] prototype 是几乎所有的函数(除了某些内建函数)的属性 prototype 不是一个实例的 ...

  5. java 动态给属性赋值_java中为实体对象的动态属性赋值

    慕勒3428872 下面是User类:import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;publ ...

  6. 对象集合中如何用对象的某个属性给对象排序?

    这是在工作中遇到的一个问题.用到的持久层技术是mybatis-plus,它里面自带的条件对象wrapper,我们可以通过wrapper.orderByDesc()或者wrapper.orderByAs ...

  7. js中常用的对象—String的属性和方法

    今天说一下,js中常用的内置对象--String对象 它有以下几个常用的属性: length prototype 有以下几个常用的方法: parseInt()转换为数字 parseFloat()转换为 ...

  8. python中info的功能_在python中,模块对象的info属性包含什么?

    我正在研究为一个程序创建一个插件结构,并使它甚至核心库都被视为插件.在我的研究中,我遇到了动态导入模块的代码.在def __initialize_def(self, module): "&q ...

  9. vue中给window对象上添加属性的方法

    web页面通讯方法.window.open打开新页面,父子页面通讯的方法最直接的就是获取对方的window对象进行调用父子各自得属性及方法. 下面是整理的几种通讯得方法仅供参考 第一种 // 第一种方 ...

  10. 【一个实体对象不能由多个 IEntityChangeTracker 实例引用】原因及解决方法

    转自firechun 使用ADO实体框架(EF)对建立了关系的表新增记录时出现"一个实体对象不能由多个 IEntityChangeTracker 实例引用"错误,网上反复搜索后,没 ...

最新文章

  1. thymeleaf引用图片_SpringBoot访问静态资源(图片、html)以及整合thymeleaf 注意点
  2. FPGA/CPLD按键硬件延时消除抖动的思路
  3. python一些常用方法_python常用的一些技巧
  4. 13-3 14 NFS
  5. for循环 php 增加数组维数_PHP数组在循环中创建多维数组
  6. 单片机位寻址举例_单片机学习:51单片机寻址方式详解
  7. 开源软件free download manager在windows defender中报毒
  8. Algs4-1.3.45栈的可生成性
  9. php调用好单库api视频教程,[8.1]-PhalApi视频教程 | PhalApi(π框架) - PHP轻量级开源接口框架 - 接口,从简单开始!...
  10. leetcode python3 简单题136. Single Number
  11. 在propreties文件中引用另一个properties文件中的内容
  12. 初学WCF,一个简单的示例(增删改查,实体类)
  13. 数据库发展竟然和阿波罗登月有关?还有什么是我们不知道的?
  14. Kubeadm搭建高可用K8S(四)Dashboard安装配置
  15. kmeans聚类图像的像素并可视化
  16. 这些用 Python 写的牛逼程序/脚本,你玩过吗?
  17. java 创建一个抽象类_Java-抽象类
  18. python皮森发音_python 怎么读
  19. zpl java_JAVA调用DLL的两种方法-ZPL中文打印(作者不详,如有冒犯,请联系我)...
  20. 脉冲当量与电子齿轮比疑惑

热门文章

  1. anaconda双版本python_Anaconda中安装多版本Python及切换
  2. jbutton如何实现点击_点击量突破22.1亿人次!这场云上祈福拜祖是如何实现的
  3. python抓取天气预报_抓取天气预报的代码(Python)
  4. android optionmenu 动态显示,android – 如何在onCreateOptionsMenu中动态更改菜单
  5. grib1文件解析 python_python安装读取grib库总结(推荐)
  6. 学一门计算机语言大体的过程,学习一门新编程语言的6个步骤
  7. 辽宁专科php教材用什么,辽宁新高考改革方案的具体内容是什么?
  8. kafka与mysql持久化_漫游Kafka设计篇之数据持久化
  9. 移动端web轮播图插件swiper,功能很强大
  10. iOS 报错 : dyld: Library not loaded: @rpath/