属于FoundationClasses
模块下的TKMath
包,源码路径FoundationClasses/TKMath/gp
,包括30多个类
// 定义三维点
gp_Pnt aPnt1(2. , 0 , 0);
// 轴
gp_Pnt aOrigin(0 , 0 , 0); // 点
gp_Dir xDir(1 , 0 , 0); // 方向
gp_Ax1 xAxis(aOrigin , xDir); // 轴
属于FoundationClasses
模块下的TKernel
包,源码路径FoundationClasses/TKernel/Standard
,包括好几十个类
属于ModelingData
模块下的TKG3d
包,源码路径ModelingData/TKG3d/Geom
,包括40个类
属于ModelingData
模块下的TKGeomBase
包,源码路径ModelingData/TKGeomBase/GC
,包括近18个类
Handle(Geom_TrimmedCurve) aArcOfCircle = GC_MakeArcOfCircle(aPnt2,aPnt3 ,aPnt4);
Handle(Geom_TrimmedCurve) aSegment1 = GC_MakeSegment(aPnt1 , aPnt2);
属于ModelingData
模块下的TKBRep
包,源码路径ModelingData/TKBRep/TopoDS
,包括15个类
图形 | Open CASCADE Class | 描述 |
---|---|---|
Vertex(顶点) | TopoDS_Vertex | 表示几何体上的一个点 |
Edge (边) | TopoDS_Edge | 表示一个曲线和一个有边界的向量 |
Wire (网格) | TopoDS_Wire | 由顶点连起来的一系列边 |
Face (面) | TopoDS_Face | 由闭合的网格组成的边界平面 |
Shell (壳) | TopoDS_Shell | 通过边连接起起来一组面 |
Solid (体) | TopoDS_Solid | 由壳组成的有边界的三维空间 |
CompSolid (复合体) | TopoDS_CompSolid | 通过面连接的一组体 |
Compound (复合对象) | TopoDS_Compound | 由上面各种图形形成的一个集合 |
拓扑仅仅是数据结构,本身并不可做什么操作和运算,一般需要转成Geom_XX后,可以进行相关信息的提取及操作;如何转换呢,一般使用
BRep_Tool
(见12)
属于ModelingAlgorithms
模块下的TKTopAlgo
包,源码路径ModelingAlgorithms/TKTopAlgo/BrepBuilderAPI
,包括20个类
TopoDS_Edge aEdge1 = BRepBuilderAPI_MakeEdge(aSegment1); // aSegment1为Geom_TrimmedCurve类型
TopoDS_Edge aEdge2 = BRepBuilderAPI_MakeEdge(aArcOfCircle); // aArcOfCircle为Geom_TrimmedCurve
// 由多个边拓扑创建得到网格拓扑
TopoDS_Wire aWire = BRepBuilderAPI_MakeWire(aEdge1 , aEdge2 , aEdge3);
属于ModelingAlgorithms
模块下的TKPrim
包,源码路径ModelingAlgorithms/TKPrim/BRepPrimAPI
,包括11个类
顶点/gp_Pnt
->线段/GC_MakeSegment
->边/BRepBuilderAPI_MakeEdge
->线框/BrepBuilderAPI_MakeWire
->面/BRepBuilderAPI_MakeFace
->体/BRepPrimAPI_MakePrism
gp_Vec aPrismVec(0 , 0 , myHeight); // 向量
TopoDS_Shape myBody = BRepPrimAPI_MakePrism(myFaceProfile , aPrismVec);
// 注意myFaceProfile 为一个封闭的网格
属于ModelingAlgorithms
模块下的TKFillet
包,源码路径ModelingAlgorithms/TKFillet/BRepFilletAPI
,包括3个类
BRepFilletAPI_MakeFillet mkFillet(myBody); // myBody为Solid实体,一个TopoDS_Shape类型
mkFillet.Add(myThickness / 12. , aEdge); // 添加需要倒角的边,aEdge为TopoDS_Edge 类型
myBody = mkFillet.Shape(); // 获取新的TopoDS_Shape类型
属于ModelingData
模块下的TKBRep
包,源码路径ModelingData/TKBRep/TopExp
,2个类
TopExp_Explorer aEdgeExplorer(myBody , TopAbs_EDGE);
while(aEdgeExplorer.More())
{
TopoDS_Edge aEdge = TopoDS::Edge(aEdgeExplorer.Current()); //Add edge to fillet algorithm
mkFillet.Add(myThickness / 12. , aEdge);
...
aEdgeExplorer.Next();
}
属于ModelingAlgorithms
模块下的TKBO
包,源码路径ModelingAlgorithms/TKBO/BRepAlgoAPI
,包括10个类
TopoDS_Shape myNeck = BRepPrimAPI_MakeCylinder(neckAx2 , myNeckRadius , myNeckHeight); // neckAx2为gp_Ax2类型
myBody = BRepAlgoAPI_Fuse(myBody , myNeck); // myBody 为 TopoDS_Shape 类型
属于ModelingData
模块下的TKBRep
包,源码路径ModelingData/TKBRep/BRepTools
,14个类
TopoDS_Face
-> Geom_Surface
TopoDS_Edge
->Geom_Curve
TopoDS_Vertex
->Geom_Point
Handle(Geom_Surface) aSurface = BRep_Tool::Surface(aFace); // aFace 为TopoDS_Face类型,但是并不知道是平面还是圆柱侧面
// 一般这里还需要做一次类型检测,使用Standard_Transient(见13点)
Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast(aSurface);
为什么需要转换多次,从TopoDS_Face->Geom_Surface->Geom_Plane? Geom_Surface本身不带信息的,都是引用具体的Geom_Plane或Geom_CylindricalSurface;这里可以通过Geom_Plane::Location获取相关信息
if(aSurface->DynamicType() == STANDARD_TYPE(Geom_Plane))
{
// 这里可以执行一些检测成功后的内容,比如做类型转换
Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast(aSurface);
}
TopTools_ListOfShape facesToRemove; // 一个可以存放Shape集合的对象
facesToRemove.Append(face); // 添加一个一个面face为TopoDS_Face 类型
MyBody = BRepOffsetAPI_MakeThickSolid(myBody , facesToRemove , -myThickness / 50 , 1.e-3);
文章浏览阅读1.7k次。上面说到过文件上传的过程,现在详细说一下文件的下载过程,在下载过程中,曾遇到过下载的文件与原上传文件,大小不一,乱码的情况,现在将详细叙述问题解决的全过程。先简单说下编码格式,header("Content-type: text/html; charset=utf-8");header("Content-type: text/html; charset=gb2312"); ?>_php下载文件返回这种二进制流乱码无法直接下载是什么原因呢
文章浏览阅读7.4k次,点赞15次,收藏72次。目录文章目录目录 前言 参考文献 通信网络 核心网演进之路 早古时期 2G 网络架构 3G 网络架构 4G 网络架构 5G 5G 网络的需求 5G 网络架构的设计原则 5G 网络的逻辑架构 5G 核心网络的关键技术 SBA 基于服务的架构 微服务化 基于服务的接口 CUPS 控制与用户面分离 网络切片 ..._5g mepm
文章浏览阅读2.3k次。1、创建Shp文件IFeature_arcgis engine 创建shp
文章浏览阅读3.5k次,点赞4次,收藏37次。论文年份:TPAMI 2021,论文被引:448(2022/05/17)_遮挡行人再识别综述
文章浏览阅读2.1k次。Vue Cron生成器 (vue-cron-generator)a project using vue,element-ui to generate cron expression. 使用vue,element-ui生成cron表达式的项目。 View Demo查看演示 View Github 查看Github 用途(示例) (Use(Example))Install depend..._vue-cron-generator
文章浏览阅读7.4k次,点赞14次,收藏52次。效果:默认状态下,两灯熄灭。 温度升高到一定值,红色LED亮,绿色LED不亮,表示温度过高。 温度降低到一定值,绿色LED亮,红色LED不亮,表示温度过低。 原理:首先该电路图关键在于PTC(正温度系数电阻)会随着温度的升高而阻值增大。而高温报警(上面)的反相输入端电压大小固定;而低温报警器(下面)的同向输入端电压大小固定。输出受PTC电阻的..._温度上下限报警电路
文章浏览阅读755次。知识图谱TensorFlow运行机制TensorFlow是基于计算图的深度学习编程模型Tensor表示张量,其实质上是某种类型的多维数组 Flow表示基于数据流图的计算,实质上是张量在不同节点间的转化过程。在TensorFlow中,计算图中的节点称为OP(即operation的缩写),节点之间的边描述了计算之间的依赖关系。在计算过程中,一个节点可获得0或多个张量,产生0或多个张量。TensorFlow程序通常被组织成图的构建阶段和执行阶段在构建阶段,节点的执行步骤被描述._计算图实际上描述的是需要依次完成的计算单元以及这些计算单元之间的相互依赖关系
文章浏览阅读215次。keepalived可以将多个无状态的单点通过虚拟IP(以下称为VIP)漂移的方式搭建成一个高可用服务,常用组合比如 keepalived+nginx,lvs,haproxy和memcached等。它的实现基础是VRRP协议,包括核心的MASTER竞选机制都是在VRRP协议所约定的。一、配置说明:keepalived的配置位于/etc/keepalived/keepalived.conf,配置..._vip漂移原理
文章浏览阅读333次。JAVA 正则表达式 (超详细,转)在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限_java match getbeginning
文章浏览阅读184次。什么是类型转换?Spring MVC 中在控制器方法中 把 请求 中的 参数 映射为 指定类型,指定类型 可以是自己定义的类型,这就是Spring的类型转换。类型转换的框架原理 术语定义:a. ServletRequest : 请求b. DataBuilder : 类似于DispatcherServlet 在整个框架原理中起调度作用,他是数据绑定的核心组件。c. Co..._springmvc中负责类型转换的组件
文章浏览阅读193次。我们需要汇总数据而不用把他们实际检索出来,他们主要用来进行分析和报表数据的生成。1、AVG:通过对表中行数计数并计算特定列值之和,求得该列的平均值。可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。如下:select avg(prod_price) as avg_price from products;以上语句的含义是,它包含products表中所有产品的平均价格。avg()函数忽略列值..._mysql 集合函数比较
文章浏览阅读2k次。使用 TensorFlow, 你必须明白 TensorFlow:使用图 (graph) 来表示计算任务.在被称之为 会话 (Session) 的上下文 (context) 中执行图.使用 tensor 表示数据.通过 变量 (Variable) 维护状态.使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据...._tensorflow用法