OpenCasCade拓扑几何(拉伸,扫略,旋转)
OCC提供几种图形的构建是由基本图形的旋转,拉伸等方式形成的,源码例子有相关的介绍。
下面介绍的一些实例提供思路与核心实现代码,显示与属性需要自己添加。
关于OCC集合拓扑结构如下:
现在经常接触的就是BRepPrimAPI_MakeSweep ,使用到的就是其三个派生类
BRepPrimAPI_MakePrim
(1) 功能说明:swept(拉伸)
(2) 构造函数
BRepPrimAPI_MakePrism(TopoDS_Shape S, gp_Vec V, bool Copy, bool Canonize);BRepPrimAPI_MakePrism(TopoDS_Shape S, gp_Dir D, bool Inf, bool Copy, bool Canonize);
(3) 参数说明
TopoDS_Shape:扫掠拓扑对象
gp_Vec:扫掠的方向及大小(向量)
gp_Dir:扫掠的方向及大小(单位向量)
Copy:默认值为FALSE; 若为TRUE,则得用扫掠对象副本进行扫掠
Canonize:默认值为TRUE;
Inf:默认值为TRUE; if Inf is false the prism is semi-infinite (in the direction D).
(4) 实例
例1:拓扑点扫掠成边
TopoDS_Vertex V1 =new BRepBuilderAPI_MakeVertex(new gp_Pnt(-200, -200, 0)).Vertex();TopoDS_Shape S1 =new BRepPrimAPI_MakePrism(V1, new gp_Vec(0, 0, 100), false, false).Shape();
例2:拓扑边扫掠成面
TopoDS_Edge E =new BRepBuilderAPI_MakeEdge(new gp_Pnt(-150, -150, 0),new gp_Pnt(-50, -50, 0)).Edge();TopoDS_Shape S2 =new BRepPrimAPI_MakePrism(E, new gp_Vec(0, 0, 100), false, false).Shape();
例3:拓扑边框扫掠成体
TopoDS_Edge E1,E2,E3;TopoDS_Wire W = new BRepBuilderAPI_MakeWire(E1, E2, E3).Wire();TopoDS_Shape S3 =new BRepPrimAPI_MakePrism(W, new gp_Vec(0, 0, 100), false, false).Shape();
BRepPrimAPI_MakeRevol
(1) 功能说明:旋转面
(2) 构造函数
public BRepPrimAPI_MakeRevol(TopoDS_Shape S, gp_Ax1 A, bool Copy);public BRepPrimAPI_MakeRevol(TopoDS_Shape S, gp_Ax1 A, double D, bool Copy);
(3) 参数说明
TopoDS_Shape:要进行旋转的拓扑对象
gp_Ax1:用某一坐标方向的直线作为旋转轴
Copy:是否用要旋转对象的副本来进行操作,默认值为FALSE;
D:旋转的角度;
(4) 实例
例1:拓扑点形成圆弧
TopoDS_Vertex V1;gp_Ax1 axe = new gp_Ax1(new gp_Pnt(-170, -170, 0), new gp_Dir(0, 0, 1));Geom_Axis1Placement Gax1 = new Geom_Axis1Placement(axe);AIS_Axis ax1 = new AIS_Axis(Gax1);TopoDS_Shape S1 = new BRepPrimAPI_MakeRevol(V1, axe, false).Shape();
例2:拓扑边形成柱面
TopoDS_Edge E;AIS_Shape ais3 = new AIS_Shape(E);gp_Ax1 axe = new gp_Ax1(new gp_Pnt(-100, -100, 0), new gp_Dir(0, 0, 1));Geom_Axis1Placement Gax2 = new Geom_Axis1Placement(axe);AIS_Axis ax2 = new AIS_Axis(Gax2);TopoDS_Shape S2 = new BRepPrimAPI_MakeRevol(E, axe, false).Shape();
例3:拓扑线框形成环体
TopoDS_Edge E1, E2, E3;TopoDS_Wire W = new BRepBuilderAPI_MakeWire(E1, E2, E3).Wire();gp_Ax1 axe = new gp_Ax1(new gp_Pnt(0, 0, 30), new gp_Dir(0, 1, 0));Geom_Axis1Placement Gax3 = new Geom_Axis1Placement(axe);AIS_Axis ax3 = new AIS_Axis(Gax3);TopoDS_Shape S3 =new BRepPrimAPI_MakeRevol(W, axe, 210 * PI / 180, false).Shape();
BRepOffsetAPI_MakePipe
(1) 功能说明:pipe管道
该类建立一个基础Shape(call profile)沿一个线框(call spine--脊骨)扫掠。
Profile不能包含solids;
该类提供如下功能处理:
定义管道的构造,实现构造算法且可查看结果。
注意:该类实现管道的构造仅针对G1连续的spine。
如果是线框应用管道后,变成曲面;如果是面应用管道后,变成体;
(2) 构造函数
public BRepOffsetAPI_MakePipe(TopoDS_Wire Spine, TopoDS_Shape Profile);
(3) 参数说明
Spine:管道的轨迹线;
Profile:沿轨迹线进行扫掠的拓扑SHAPE;
(4) 实例
例1:一个圆面,沿一个曲线(线框)进行扫掠,形成一个SOLID
TopoDS_Wire W ; gp_Circ c =new gp_Circ(new gp_Ax2(new gp_Pnt(0, 0, 0), new gp_Dir(0, 1, 0)), 10);TopoDS_Edge Ec = new BRepBuilderAPI_MakeEdge(c).Edge();TopoDS_Wire Wc = new BRepBuilderAPI_MakeWire(Ec).Wire(); TopoDS_Face F = new BRepBuilderAPI_MakeFace(Wc, true).Face();TopoDS_Shape S = new BRepOffsetAPI_MakePipe(W, F).Shape();
BRepOffsetAPI_ThruSections
(1) 功能说明:
Initializes an algorithm for building a shell or a solid passing through a set of sections;
(2) 构造函数
public BRepOffsetAPI_ThruSections(bool isSolid, bool ruled, double pres3d)
(3) 参数说明
isSolid:默认值为FALSE;若为真,则表示算法需要建立一个SOLID,否则,表示,需要建立一个SHELL;
ruled:默认值为FALSE; 是否规则
ruled=true: if the faces generated betweenthe edges of two consecutive wires are ruled surfaces;
ruled=false: if they are smoothed out by approximation
pres3d:defines the precision criterion used by the approximation algorithm。默认值为:1.0e-6
(4) 实例
例1:通过四个SECTION形成一个SOLID;
gp_Circ c1b =new gp_Circ(new gp_Ax2(new gp_Pnt(100, 0, -100), new gp_Dir(0, 0, 1)), 40);TopoDS_Edge E1b = new BRepBuilderAPI_MakeEdge(c1b).Edge();TopoDS_Wire W1b = new BRepBuilderAPI_MakeWire(E1b).Wire();gp_Circ c2b =new gp_Circ(new gp_Ax2(new gp_Pnt(210, 0, -0), new gp_Dir(0, 0, 1)), 40);TopoDS_Edge E2b = new BRepBuilderAPI_MakeEdge(c2b).Edge();TopoDS_Wire W2b = new BRepBuilderAPI_MakeWire(E2b).Wire();gp_Circ c3b =new gp_Circ(new gp_Ax2(new gp_Pnt(275, 0, 100), new gp_Dir(0, 0, 1)), 40);TopoDS_Edge E3b = new BRepBuilderAPI_MakeEdge(c3b).Edge();TopoDS_Wire W3b = new BRepBuilderAPI_MakeWire(E3b).Wire();gp_Circ c4b =new gp_Circ(new gp_Ax2(new gp_Pnt(200, 0, 200), new gp_Dir(0, 0, 1)), 40);TopoDS_Edge E4b = new BRepBuilderAPI_MakeEdge(c4b).Edge();TopoDS_Wire W4b = new BRepBuilderAPI_MakeWire(E4b).Wire();BRepOffsetAPI_ThruSections generatorb =new BRepOffsetAPI_ThruSections(true, false, 1.0e-06);generatorb.AddWire(W1b);generatorb.AddWire(W2b);generatorb.AddWire(W3b);generatorb.AddWire(W4b);generatorb.Build();TopoDS_Shape S2 = generatorb.Shape();
BRepOffsetAPI_MakePipeShell
说明:
该类提供了一个框架,沿着脊柱的导线构建一个shell或者solid。
构造solid,初始线框必须闭合的。
主要通过两种方法进行定义:
一、截面
二、定义扫掠方式
备注:本文参考自一个OCC文档原作者不详。
OpenCasCade拓扑几何(拉伸,扫略,旋转)相关推荐
- OpenCasCade拓扑几何的布尔运算
一.首先简单介绍一下布尔运算: 布尔运算是数字符号化的逻辑推演法,包括联合.相交.相减.在图形处理操作中引用了这种逻辑运算方法以使简单的基本图形组合产生新的形体,并由二维布尔运算发展到三维图形的布尔运 ...
- OpenCASCADE绘制测试线束:拓扑命令之扫掠Sweeping
OpenCASCADE绘制测试线束:拓扑命令之扫掠Sweeping 扫掠Sweeping prism revol pipe mksweep.addsweep.setsweep.deletesweep. ...
- catia曲面扫掠命令详解_4.3.3.15-扫掠曲面之二次曲线_两条引导线扫略
本节内容主要介绍了扫掠曲面之二次曲线_两条引导线扫略,视频时长11分37秒.从本节开始介绍了扫掠曲面中的二次曲线扫掠,创建扫掠曲面时要注意其两引导曲线的选择不是任意选择的引导线都能够创建出扫掠曲面.学 ...
- [C++] OpenCasCade空间几何库的模型展现
OpenCasCade是什么 Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一 ...
- IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
1.创建并实现手势的基本步骤 点击手势 #import "ViewController.h"@interface ViewController () @property (weak ...
- 【从零开始】PythonOCC
目录 1. 三维展示 2. 基本的几何操作 2.1 建立坐标轴 2.2 获取三维物体的包围盒 3. 拓扑操作 3.1 拓扑形状之间的布尔操作 3.2 拓扑形状的数据获取 4. 经典案例--画瓶子 参考 ...
- android+壁纸拉伸,Launcher3自定义壁纸旋转后拉伸无法恢复
MTK8382/8121平台. 描述:将自定义图片设置成壁纸后,横屏显示时,旋转为竖屏,图片由于分辨率过小,会拉伸:再旋转为横屏,拉伸不恢复. 这两天正在解这个问题,研究了很久,走了不少弯路,最后发现 ...
- Launcher3自定义壁纸旋转后拉伸无法恢复
MTK8382/8121平台. 描述:将自定义图片设置成壁纸后,横屏显示时,旋转为竖屏,图片由于分辨率过小,会拉伸:再旋转为横屏,拉伸不恢复. 这两天正在解这个问题,研究了很久,走了不少弯路,最后发现 ...
- html做旋转的五角星,如何用几何画板制作旋转的五角星
五角星是一个精美的图案,代表了天上的星星,就连我们国家的国旗,上面也是镶嵌的五角星.几何画板作为一款专业的绘图工具,不仅仅可以绘制一些简单的图形,也可以构造精美的图案.在前面的教程中我们学习了利用几何 ...
- 怎么用几何画板制作图形平移和旋转
在数学教学中,老师们在黑板上作图,都是不能够动的.这样往往不利于老师把自己的课程讲清楚明白.如果图形能够随着课程的进度进行的移动和旋转,这样不仅能够让课程变得生动有趣,还能够帮助学生理解记忆知识点.随 ...
最新文章
- 一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s
- C语言中冒泡排序及优化
- Github 又不能访问了!!!
- C++职工信息管理系统
- java轩辕剑天之痕游戏攻略_轩辕剑之天之痕游戏攻略大全
- 牛客 - 斐波那契和(杜教BM)
- SAP UI5 Component-preload.js
- HTML+CSS+JS实现 ❤️美女拼图游戏❤️
- undolog 是binlog_mysql日志redo log、undo log、binlog以及作用看这篇就可以啦
- 代理模式 委派模式 策略模式_设计模式 - 委派模式
- Xbox One:未来的客厅主角
- 工地小哥逆袭转行程序员的真实故事
- 记录一次Jdk1.8中stream流的问题排查
- SqlMap常用命令
- 计算机主机hdmi接口是什么意思,笔记本电脑HDMI接口是干什么的
- MySQL更新数据语句
- 信了你的邪之杭电1005
- Python复制单个文件为多个脚本
- 带头结点单链表的基本使用
- 访问控制模型总结(DAC MAC RBAC ABAC)
热门文章
- python接口测试jason_Python接口测试框架实例
- 柱底反力求和lisp软件_基于AutoLisp语言的RC异形柱下独立基础验算方法与流程
- word打开文档很久很慢_word打开慢,教您怎么解决word打开慢
- Oracle正确迁移数据文件,Oracle数据文件迁移知多少?
- 导航栏html_html操作和思考(二):统一导航栏文字高度的方法
- android go官方下载,dji go 4 app官网下载-DJI GO 4 安卓版v4.3.40-pc6智能硬件网
- oracle设置memory_target,oracle初始化参数之memory_target
- Introduction to Computer Networking学习笔记(十八):Switching 交换工作实现
- 十、垃圾回收策略概览
- 计算机用户系统软件,计算机软件系统