Open CASCADE学习|拉伸

目录

1、沿方向拉伸

2、沿路径拉伸

3、变形拉伸


1、沿方向拉伸

#include <Geom_CylindricalSurface.hxx>
#include <gp_Ax3.hxx>
#include <GeomAPI_Interpolate.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <GCE2d_MakeSegment.hxx>
​
#include <GeomAPI_PointsToBSpline.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <GC_MakeCircle.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
​
#include <TopExp_Explorer.hxx>
#include <BRepFeat_SplitShape.hxx>
​
#include"Viewer.h"
​
​
#include <BRepAlgoAPI_Section.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
​
​
int main(int argc, char* argv[])
{gp_Dir  Z(0.0, 0.0, 1.0);gp_Dir  ZX(1.0, 0.0, 1.0);gp_Pnt center(0, 0, 0.0);gp_Pnt xr(0.5, 0, 0.0);gp_Pnt yr(0.0, 1.0, 0.0);gp_Pnt zr(0.0, 0.0, 7.0);gp_Ax2  wb(center, Z);gp_Circ  wbcircle(wb, 0.125 / 2);TopoDS_Edge wbe = BRepBuilderAPI_MakeEdge(wbcircle);TopoDS_Edge xline = BRepBuilderAPI_MakeEdge(center, xr);TopoDS_Edge yline = BRepBuilderAPI_MakeEdge(center, yr);TopoDS_Edge zline = BRepBuilderAPI_MakeEdge(center, zr);BRepPrimAPI_MakeCylinder aCylinderMaker(10.0, 20.0);TopoDS_Shape aCylinder = aCylinderMaker.Shape();gp_Pln TPlane(center, ZX);TopoDS_Face tanF = BRepBuilderAPI_MakeFace(TPlane);TopoDS_Shape out = BRepPrimAPI_MakePrism(zline, 10*ZX);//TopoDS_Edge out = BRepBuilderAPI_MakeEdge(c1);Viewer vout(50, 50, 500, 500);vout << out;vout << xline;vout << yline;vout << zline;vout.StartMessageLoop();return 0;
}
​

2、沿路径拉伸

#include <Geom_CylindricalSurface.hxx>
#include <gp_Ax3.hxx>
#include <GeomAPI_Interpolate.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <GCE2d_MakeSegment.hxx>
​
#include <GeomAPI_PointsToBSpline.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <GC_MakeCircle.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
​
#include <BRepOffsetAPI_MakePipe.hxx>
#include <GC_MakeSegment.hxx>
​
#include"Viewer.h"
​
​
#include <GC_MakeArcOfCircle.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
​
​
int main(int argc, char* argv[])
{gp_Dir  Z(0.0, 0.0, 1.0);gp_Dir  ZX(1.0, 0.0, 1.0);gp_Pnt center(0, 0, 0.0);gp_Pnt xr(0.5, 0, 0.0);gp_Pnt yr(0.0, 1.0, 0.0);gp_Pnt zr(0.0, 0.0, 7.0);gp_Ax2  wb(center, Z);gp_Circ  wbcircle(wb, 0.125 / 2);TopoDS_Edge wbe = BRepBuilderAPI_MakeEdge(wbcircle);TopoDS_Edge xline = BRepBuilderAPI_MakeEdge(center, xr);TopoDS_Edge yline = BRepBuilderAPI_MakeEdge(center, yr);TopoDS_Edge zline = BRepBuilderAPI_MakeEdge(center, zr);BRepPrimAPI_MakeCylinder aCylinderMaker(10.0, 20.0);TopoDS_Shape aCylinder = aCylinderMaker.Shape();gp_Pln TPlane(center, ZX);TopoDS_Face tanF = BRepBuilderAPI_MakeFace(TPlane);Handle(Geom_TrimmedCurve) arc = GC_MakeArcOfCircle(gp_Pnt(0, 0, 0), gp_Pnt(10, 10, 0), gp_Pnt(0, 20, 0));Handle(Geom_TrimmedCurve) arc2 = GC_MakeArcOfCircle(gp_Pnt(0, 20, 0), gp_Pnt(-10, 30, 0), gp_Pnt(0, 40, 0));Handle(Geom_TrimmedCurve) seg = GC_MakeSegment(gp_Pnt(0, 40, 0), gp_Pnt(20, 40, 0));Handle(Geom_TrimmedCurve) seg1 = GC_MakeSegment(gp_Pnt(20, 40, 0), gp_Pnt(20, 60, 0));TopoDS_Edge arcEdge = BRepBuilderAPI_MakeEdge(arc);TopoDS_Edge arcEdge1 = BRepBuilderAPI_MakeEdge(arc2);TopoDS_Edge segEdge = BRepBuilderAPI_MakeEdge(seg);TopoDS_Edge segEdge1 = BRepBuilderAPI_MakeEdge(seg1);TopoDS_Wire arcWire = BRepBuilderAPI_MakeWire(arcEdge, arcEdge1, segEdge/*, segEdge1*/); //return arcWire;TopoDS_Shape out = BRepOffsetAPI_MakePipe(arcWire,zline);//TopoDS_Edge out = BRepBuilderAPI_MakeEdge(c1);Viewer vout(50, 50, 500, 500);vout << out;vout << xline;vout << yline;vout << zline;vout.StartMessageLoop();return 0;
}
​

3、变形拉伸

#include <Geom_CylindricalSurface.hxx>
#include <gp_Ax3.hxx>
#include <gp_Circ.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <Geom_Plane.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <GCE2d_MakeSegment.hxx>
​
#include <BRepOffsetAPI_DraftAngle.hxx>
#include <TopExp_Explorer.hxx>
#include <GC_MakeCircle.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS.hxx>
​
#include <gp_Pln.hxx>
#include <GC_MakeSegment.hxx>
​
#include"Viewer.h"
​
​
#include <GC_MakeArcOfCircle.hxx>
#include <BRepPrimAPI_MakePrism.hxx>
​
​
int main(int argc, char* argv[])
{gp_Dir  Z(0.0, 0.0, 1.0);gp_Dir  ZX(1.0, 0.0, 1.0);gp_Pnt center(0, 0, 0.0);gp_Pnt xr(0.5, 0, 0.0);gp_Pnt yr(0.0, 1.0, 0.0);gp_Pnt zr(0.0, 0.0, 7.0);gp_Ax2  wb(center, Z);gp_Circ  wbcircle(wb, 0.125 / 2);TopoDS_Edge wbe = BRepBuilderAPI_MakeEdge(wbcircle);TopoDS_Edge xline = BRepBuilderAPI_MakeEdge(center, xr);TopoDS_Edge yline = BRepBuilderAPI_MakeEdge(center, yr);TopoDS_Edge zline = BRepBuilderAPI_MakeEdge(center, zr);TopoDS_Shape S = BRepPrimAPI_MakeBox(200., 300., 150.);BRepOffsetAPI_DraftAngle adraft(S);TopExp_Explorer Ex;for (Ex.Init(S, TopAbs_FACE); Ex.More(); Ex.Next()) {TopoDS_Face F = TopoDS::Face(Ex.Current());Handle(Geom_Plane) surf = Handle(Geom_Plane)::DownCast(BRep_Tool::Surface(F));gp_Pln apln = surf->Pln();gp_Dir dirF = apln.Axis().Direction();if (dirF.IsNormal(gp_Dir(0., 0., 1.), Precision::Angular()))adraft.Add(F, gp_Dir(0., 0., 1.), 15. * M_PI / 180, gp_Pln(gp::XOY()));}TopoDS_Shape out = adraft.Shape();//TopoDS_Edge out = BRepBuilderAPI_MakeEdge(c1);Viewer vout(50, 50, 500, 500);vout << out;vout << xline;vout << yline;vout << zline;vout.StartMessageLoop();return 0;
}
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/453051.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

假期刷题打卡--Day23

1、MT1190分数乘法 输入5组分数&#xff0c;对他们进行乘法运算&#xff0c;输出结果。不考虑分母为0等特殊情况。 格式 输入格式&#xff1a; 输入整型&#xff0c;每组一行&#xff0c;如样例所示。 输出格式&#xff1a; 输出计算结果实型&#xff0c;如样例所示。 样…

【开源】JAVA+Vue+SpringBoot实现二手车交易系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块2.3 车辆预约管理模块2.4 车辆预定管理模块2.5 车辆留言板管理模块2.6 车辆资讯管理模块 三、系统设计3.1 E-R图设计3.2 可行性分析3.2.1 技术可行性分析3.2.2 操作可行性3.2.3 经济…

echarts使用之饼图(四)

1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" cont…

算法学习——华为机考题库9(HJ56 - HJ63)

算法学习——华为机考题库9&#xff08;HJ56 - HJ63&#xff09; HJ56 完全数计算 描述 完全数&#xff08;Perfect number&#xff09;&#xff0c;又称完美数或完备数&#xff0c;是一些特殊的自然数。 它所有的真因子&#xff08;即除了自身以外的约数&#xff09;的和&…

思科模拟器实验合集

目 录 实验一 常用网络命令的使用.................................... 1 实验二 双绞线制作.................................................. 12 实验三 网络模拟软件.............................................. 15 实验四 交换机基本配置..................…

Linux进程信号(2)--信号的保存

目录 1.阻塞信号 1.1 信号其他相关常见概念 1.实际执行信号的处理动作称为信号递达(Delivery&#xff09; 2.信号从产生到递达之间的状态,称为信号未决(Pending)。 3.进程可以选择阻塞 (Block )某个信号。 1.2信号在内核中的表示 sigset_t 信号集操作函数 使用sigprocm…

套路化编程 C# winform 自适应缩放布局

本例程实现基本的自适应缩放布局。 在本例程中你将会学习到如何通过鼠标改变界面比例&#xff08;SplitContainer&#xff09;、如何使用流布局&#xff08;FlowLayoutPanel&#xff09;排列控件&#xff0c;当然首先需要了解如何设置控件随窗口缩放。 目录 创建项目 ​编辑…

视频业务像素、带宽、存储空间计算

一、像素和分辨率 分辨率的单位通常是像素&#xff08;或点&#xff09;&#xff0c;用水平像素数乘以垂直像素数来表示。例如&#xff0c;一个分辨率为1920 x 1080的屏幕有1920个水平像素和1080个垂直像素。 总像素分辨率公式运算 例如 1920 x 10802073600总约200万 500W≈…

Elasticsearch:使用 Inference API 进行语义搜索

在我之前的文章 “Elastic Search 8.12&#xff1a;让 Lucene 更快&#xff0c;让开发人员更快”&#xff0c;我有提到 Inference API。这些功能的核心部分始终是灵活的第三方模型管理&#xff0c;使客户能够利用当今市场上下载最多的向量数据库及其选择的转换器模型。在今天的…

SQL注入其他方法

此次实验因为环境问题很多无法复现&#xff0c;在此只讨论过程和方法 一、SQL注入之outfile注入 mysql的outfile的作用是导出文件&#xff0c;使用此方法的必要条件&#xff1a;&#xff08;此方法成功率极低&#xff09; 1、知道目标网站的物理路径&#xff1b; 2、%secur…

protoc结合go完成protocol buffers协议的序列化与反序列化

下载protoc编译器 下载 https://github.com/protocolbuffers/protobuf/releases ps: 根据平台选择需要的编译器&#xff0c;这里选择windows 解压 加入环境变量 安装go专用protoc生成器 https://blog.csdn.net/qq_36940806/article/details/135017748?spm1001.2014.3001.…

目标检测及相关算法介绍

文章目录 目标检测介绍目标检测算法分类目标检测算法模型组成经典目标检测论文 目标检测介绍 目标检测是计算机视觉领域中的一项重要任务&#xff0c;旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同&#xff0c;目标检测不仅需要…