OpenCascade拓扑对象之:拓扑对象的层次结构
@font-face { font-family: "Times New Roman" }
@font-face { font-family: "宋体" }
@font-face { font-family: "Wingdings" }
@list l0:level1{
mso-level-number-format:alpha-upper;
mso-level-suffix:space;
mso-level-text:"%1)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:0.0000pt;
text-indent:0.0000pt;
font-family:'Times New Roman';}
p.MsoNormal { mso-style-name: 正文; mso-style-parent: ""; margin: 0 0 0.0001pt; mso-pagination: none; text-align: justify; text-justify: inter-ideograph; font-family: "Times New Roman"; mso-fareast-font-family: 宋体; color: rgba(0, 0, 0, 1); font-size: 10.5pt; mso-font-kerning: 1.0000pt }
 { font-family: "Times New Roman" }
span.msoIns { mso-style-type: export-only; mso-style-name: ""; text-decoration: underline; text-underline: single; color: rgba(0, 0, 255, 1) }
span.msoDel { mso-style-type: export-only; mso-style-name: ""; text-decoration: line-through; color: rgba(255, 0, 0, 1) }
table.MsoNormalTable { mso-style-name: 普通表格; mso-style-parent: ""; mso-style-noshow: yes; mso-tstyle-rowband-size: 0; mso-tstyle-colband-size: 0; mso-padding-alt: 0.0000pt 5.4000pt 0.0000pt 5.4000pt; mso-para-margin: 0pt; mso-para-margin-bottom: .0001pt; mso-pagination: widow-orphan; font-family: "Times New Roman"; font-size: 10pt; mso-ansi-language: #0400; mso-fareast-language: #0400; mso-bidi-language: #0400 }
@page { mso-page-border-surround-header: no mso-page-border-surround-footer: no }
@page Section0 { margin-top: 72pt margin-bottom: 72pt margin-left: 90pt margin-right: 90pt size: 595.3000pt 841.9000pt layout-grid: 15.6000pt }
div.Section0 { page: Section0 }
OCCT中,拓扑对象有两个基类,并派生出各自的子类。一个是TopoDS_Shape类,一个是TopoDS_TShape类。
类继承关系如下:


这里,TopoDS_Shape类中记录了一个TopoDS_TShape对象的智能指针,如下:
Handle(TopoDS_TShape) myTShape;
注意到,从TopoDS_Shape派生的类,基本上没有什么数据成员,这些类主要是作为一种拓扑类型存在,提供更加准确的拓扑对象类型。
另一方面,TopoDS_Shape方便共享对象的一些处理。特别是,反向对象的生成。例如,如下常见的处理代码:
TopoDS_Wire ShapeAnalysis::OuterWire(const TopoDS_Face& face)
{
        TopoDS_Face F = face;
        F.Orientation(TopAbs_FORWARD);
或者:
TopoDS_Edge NewEdge = Edge1;
NewEdge.EmptyCopy(); // Add the vertices
BRep_Builder aBuilder;
TopoDS_Shape anEdge = NewEdge.Oriented(TopAbs_FORWARD);
aBuilder.Add(anEdge,V1.Oriented(TopAbs_FORWARD));
aBuilder.Add(anEdge,V2.Oriented(TopAbs_REVERSED));
后者,拷贝了Edge的几何数据(曲线等),然后生成一个共享TEdge对象的正向的Edge对象,然后添加上Vertex,构造一个新的Edge对象。
这里,当F=face时,face的三个数据成员都拷贝给了F对象,其中:TShape对象是共享指针赋值,方向是值拷贝,位置是使用位置类的赋值运算符进行拷贝。
这个操作在OCCT的内部处理中很普遍。当需要从一个拓扑对象基于共享对象生成一个新的对象(主要是方向不同)时,这种处理经常会发生。
对TopoDS_TShape对象来说,记录了如下主要数据:
A) 子对象列表,该拓扑对象包含的子对象都在myShapes的列表中
B)几何数据,这个主要是对具有几何数据的对象:Vertex、Edge和Face而言的。也因此派生出了BRep_TVertex、BRep_TEdge和BRep_TFace三个类,记录对应的几何数据。
这个对象,通常都需要通过TopoDS_Shape来创建,不能直接创建TopoDS_TShape派生的对象。
OpenCascade拓扑对象之:拓扑对象的层次结构的更多相关文章
- Dom对象和JQuery对象的详细介绍及其区别
		
一直搞不清Dom对象和JQuery对象之间的区别,今天好好总结下 1.dom对象(摘抄自百度百科http://baike.baidu.com/link?url=4L8bZ7kW6kE-it4F-1LU ...
 - Envelope几何对象  Curve对象几何对象  Multipatch几何对象  Geometry集合接口   IGeometryCollection接口
		
Envelope是所有几何对象的外接矩形,用于表示几何对象的最小边框,所有的几何对象都有一个Envelope对象,IEnvelope是Envelope对象的主要接口,通过它可以获取几何对象的XMax, ...
 - JQuery对象和DOM对象的区别与转换
		
刚开始学习JQuery,经常分不清楚哪些是JQuery对象,哪些是DOM对象,了解它们之间的关系是很有必要的. 1.DOM对象和JQuery对象的区别 1) DOM对象 DOM是Document O ...
 - 判断一个对象是jQuery对象还是DOM对象
		
今天调试一段代码的时候,看到其中一个变量,想知道它到底是jquery对象还是dom对象. 虽然直接console出这个对象,看它的内部可以判断出来.但是我想有没有什么更方便的方法呢. 后来我想到了一个 ...
 - 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
		
本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...
 - jQuery对象和DOM对象的区别
		
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...
 - request 对象和 response 对象
		
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 HttpServletResponse HttpServletR ...
 - DOM对象与jQuery对象的相互转换
		
DOM 对象可以使用 js 中的方法, 不能使用jQuery中的方法:jQuery对象只能使用jQuery中的方法, 不能使用js中的方法:jQuery对象是通过jQuery包装DOM ...
 - js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象
		
/** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...
 - jQuery对象与dom对象相互转换
		
核心提示:jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,一般情况下,如S('#id' ...
 
随机推荐
- # 初体验之腾讯位置服务彩云天气开发者api
			
初体验 最近接触到了boxjs,看到了里面一个比较有意思的彩云天气的脚本,由于自己本身就是彩云天气pro的用户,日常使用过程中感觉到彩云的降雨提醒还是挺方便的,于是就准备开始使用这个天气的脚本. 脚本 ...
 - BeautifulSoup使用手册(查询篇)
			
目录 开始使用呢 解析器 四种对象 tag对象 标签名(name) 属性值(Attributes) 多值属性 内容 Comment对象 prettify()方法 find_all方法 contents ...
 - Layman 对PHP源码进行加密保护
			
加密软件(php_screw) >下载网站:http://sourceforge.net/projects/php-screw/ >描述:php文件通常以文本格式存贮在服务器端, 很容易被 ...
 - 轻松理解JVM的分代模型
			
前言 上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习. 本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解j ...
 - shell-脚本开发基本规范及习惯
			
1.shell-脚本开发基本规范及习惯 1.开头指定脚本解析器 #!/bin/sh 或#!/bin/bash 2.开头加版本版权等信息 #Date: 2018/3/26 #Author: zhangs ...
 - ansible-主机清单的配置
			
1. ansible主机清单的配置 以下是ansible安装完成后的源文件 1 [root@test-1 ~]# cat /etc/ansible/hosts 2 # This is the defa ...
 - k8s集群,使用pvc方式实现数据持久化存储
			
环境: 系统 华为openEulerOS(CentOS7) k8s版本 1.17.3 master 192.168.1.244 node1 192.168.1.245 介绍: 在Kubernetes中 ...
 - 租房数据分析,knn算法使用
			
import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('jiemo.x ...
 - LCA树上倍增求法
			
1.LCA LCA就是最近公共祖先(Least common ancestor),x,y的LCA记为z=LCA(x,y),满足z是x,y的公共祖先中深度最大的那一个(即离他们最近的那一个)qwq 2. ...
 - python中jsonpath模块运用
			
原文链接:https://www.cnblogs.com/denise1108/p/10265911.html 1. jsonpath介绍用来解析多层嵌套的json数据;JsonPath 是一种信息抽 ...