创建基本形状
基本形状包括方盒,圆柱,圆锥/圆台,球,圆环。
方盒
AMCAX::MakeBox 类提供创建方盒的功能。
形状的基类,包含具有位置和方向信息的基础形状
定义 TopoShape.hpp:15
PointT< double, 3 > Point3
三维点
定义 PointT.hpp:459
圆柱
AMCAX::MakeCylinder 类提供创建圆柱的功能。
创建圆柱体的类
定义 MakeCylinder.hpp:16
DirectionT< double, 3 > Direction3
三维方向
定义 DirectionT.hpp:587
FrameT< double, 3 > Frame3
三维标架
定义 FrameT.hpp:885
圆锥/圆台
AMCAX::MakeCone 类提供创建圆锥/圆台的功能。
创建圆锥体的类
定义 MakeCone.hpp:16
球
AMCAX::MakeSphere 类提供创建球的功能。
创建球体的类
定义 MakeSphere.hpp:16
圆环
AMCAX::MakeTorus 类提供创建圆环的功能。
创建圆环的类
定义 MakeTorus.hpp:19
布尔运算
布尔运算功能包括融合,求交,剪切,分割,计算截面线。
融合
AMCAX::BoolBRepFuse 类提供融合功能。
并集运算的类
定义 BoolBRepFuse.hpp:15
求交
AMCAX::BoolBRepCommon 类提供求交功能。
交集运算的类
定义 BoolBRepCommon.hpp:14
剪切
AMCAX::BoolBRepCut 类提供剪切功能。
切割运算的类
定义 BoolBRepCut.hpp:16
分割
AMCAX::BoolBRepSplitter 类提供分割功能。
auto tool_shape = std::list{ shape1 };
auto tool_argument = std::list{ shape2 };
分割操作的类
定义 BoolBRepSplitter.hpp:16
AMCAX_API void SetTools(const std::list< TopoShape > &ls)
设置工具形状
AMCAX_API void SetArguments(const std::list< TopoShape > &listargs)
设置要处理的形状
virtual AMCAX_API const TopoShape & Shape()
获取结果形状
计算交线
AMCAX::BoolBRepSection 类提供计算交线功能,结果会保存为 TopoCompound。
计算形状间交线运算的类
定义 BoolBRepSection.hpp:17
像上述这样直接调用接口得到的结果,不会计算在形状中的参数曲线。若想计算参数曲线,需要先初始化,然后再计算交线。
section.Init1(cone);
section.ComputePCurveOn1(true);
section.Init2(sphere);
section.ComputePCurveOn2(true);
section.Build();
扫掠操作
拉伸
AMCAX::MakePrism 类提供拉伸(扫掠)功能。
std::shared_ptr<AMCAX::Geom3Curve> curve = makeEllipse.Value();
构造三维几何椭圆的类
定义 MakeGeom3Ellipse.hpp:13
创建棱柱或拉伸形状的类
定义 MakePrism.hpp:16
VectorT< double, 3 > Vector3
三维向量
定义 VectorT.hpp:707
旋转
AMCAX::MakeRevol 类提供旋转(扫掠)功能。
auto bz = std::make_shared<AMCAX::Geom3BezierCurve>(poles);
static AMCAX_API const Axis3 & OZ() noexcept
获取三维中的 z 轴,包括原点和 z 轴方向
创建旋转体的类
定义 MakeRevol.hpp:18
管道
通过指定脊线(线框-Wire)和轮廓(形状-Shape)来创建管道。可通过 AMCAX::MakePipe 或 AMCAX::MakePipeShell 实现。MakePipe 为简单的管道算法,仅适用单个截面(平面形状)和光滑轨道。MakePipeShell 为更完备的管道算法,支持多个截面(平面形状),支持轨道不光滑。但路径(不应当有自相交)必须和截面平面相交。需要注意的是:Add 只能是 TopoWire 或 TopoVertex。
double radius = 0.1;
std::vector<AMCAX::Point3> pointSet;
ps.Add(aWire, false, false);
ps.Build();
构造管道的算法类
定义 MakePipe.hpp:20
构造管道壳体的算法类
定义 MakePipeShell.hpp:31
static AMCAX_API std::shared_ptr< Geom3BSplineCurve > InterpolatePoints(const std::vector< Point3 > &points, int degree=3, bool isClosed=false, ApproxParameterizationType ptype=ApproxParameterizationType::ChordLength)
构造顺序通过数据点的插值曲线
CircleS< 3 > Circle3
三维圆
定义 CircleT.hpp:178
@ Centripetal
向心参数化:数据点的参数与它们之间距离的平方根成正比
定义 ApproxParameterizationType.hpp:17
放样操作
AMCAX::MakeLoft 类提供放样功能。添加若干 Wire,可以放样出 Shell 或 Solid。
aMakeLoft.AddWire(bottomWire);
aMakeLoft.AddWire(topWire);
aMakeLoft.Build();
构造放样形状的类
定义 MakeLoft.hpp:29
创建多边形的类
定义 MakePolygon.hpp:18
static AMCAX_API const TopoWire & Wire(const TopoShape &s)
将形状转换为环
constexpr double pi
数学常数 Pi,圆的周长与直径之比
定义 Constants.hpp:42
TransformationT< double, 3 > Transformation3
三维变换
定义 TransformationT.hpp:1102
边缘处理
圆角
圆角是取代锋利边缘的光滑面。 AMCAX::MakeFillet 类和 AMCAX::MakeFillet2d 类提供圆角的功能。
MakeFillet(圆角)
mf.Build();
索引集的模板类
定义 IndexSet.hpp:20
static AMCAX_API const TopoEdge & Edge(const TopoShape &s)
将形状转换为边
MakeFillet2d(平面圆角)
mf2d.Build();
在平面顶点上构造圆角和倒角的类
定义 MakeFillet2d.hpp:20
static AMCAX_API const TopoVertex & Vertex(const TopoShape &s)
将形状转换为顶点
static AMCAX_API const TopoFace & Face(const TopoShape &s)
将形状转换为面
倒角
AMCAX::MakeChamfer 类提供倒角功能。
形状变形
形状偏移
AMCAX::MakeOffset 类和 AMCAX::MakeOffsetShape 类提供对形状偏移的功能。
MakeOffset(2D形状的偏移)
输入wire进行offset,输入Face则对其边界进行offset,最后返回offset后的wire。
double offset = 1.5;
bool isOpenResult = false;
MakeOffset.Perform(offset);
MakeOffset2.Perform(offset);
偏移环的类
定义 MakeOffset.hpp:19
JoinType
连接类型
定义 GeometryMacros.hpp:74
MakeOffsetShape(3D形状的偏移)
对输入的 face 进行 offset,如果输入是 shell,则对其整个 solid 进行 offset,最后返回 offset 后的 face 或 solid。偏移带来的缝隙可以选择使用延伸求交或圆角进行连接,而偏移带来的自交部分会被删除,另外还可通过 Modified 和 Generated 进行建模追踪。
double offsetvalue = 1.2;
MakeOffsetShape2.
Build();
构造偏移形状的算法类(用于构造壳体)
定义 MakeOffsetShape.hpp:18
AMCAX_API void PerformBySimple(const TopoShape &s, double offsetValue)
使用不进行相交计算的简单算法构造偏移形状
AMCAX_API void Build() override
执行算法
MakeOffsetWire
功能同样为偏移平面上的 wire,但支持拓扑结构的改变;支持在不连接的地方进行延伸求交过渡或构建圆弧过渡;支持通过 Generated 函数进行追踪。
std::vector<AMCAX::Point3> points1;
for (const auto& p : points1)
{
}
const auto& outerWire = mp1.
Wire();
std::vector<AMCAX::Point3> points2;
for (const auto& p : points2)
{
}
const auto& innerWire = mp2.
Wire();
auto surf = std::make_shared<AMCAX::Geom3Plane>();
double offset = 0.1;
{
const auto& result = mow.Shape();
}
{
const auto& result = mow.Shape();
}
{
const auto& result = mow.Shape();
}
{
const auto& result = mow.Shape();
}
构造偏移环的类,支持在平面或参数域上对环进行偏移
定义 MakeOffsetWire.hpp:19
AMCAX_API void Close()
封闭多边形
AMCAX_API void Add(const Point3 &p)
向多边形中添加一个新点
AMCAX_API const TopoWire & Wire()
获取多边形结果
static constexpr double Confusion() noexcept
获取混淆容差
定义 Precision.hpp:122
构造 B-Rep 结构的工具类
定义 TopoBuilder.hpp:37
AMCAX_API void MakeFace(TopoFace &f) const
构造一个空面
AMCAX_API void Add(TopoShape &s, const TopoShape &c) const
向形状中添加子形状
拓扑结构改变举例:(蓝黑色为输入,蓝色为期待的结果, 红色内部构建过程中产生出来的需要删除的部分)
形状加厚
AMCAX::MakeThickSolid 类提供形状加厚的功能。
double offsetvalue = 1.5;
创建加厚实体形状的类
定义 MakeThickSolid.hpp:12
AMCAX_API void Build() override
执行算法
AMCAX_API void MakeThickBySimple(const TopoShape &s, double offsetValue)
通过简单算法构造加厚实体,仅适用于非封闭的单个面或包含相切面的壳体
替换面
AMCAX::BoolBRepReplaceFace 类提供替换面的功能。即选择实体中的一个面,将其替换成另一个曲面。基本逻辑是将被替换的面周围的面进行延伸,与新的曲面进行相交并重构拓扑。但如果曲面不能覆盖被替换的面,替换会失败。
std::shared_ptr<AMCAX::Geom3Plane> surf = std::make_shared<AMCAX::Geom3Plane>(plane);
{
}
使用一个曲面替换实体中特征面的的类(如果曲面不能覆盖被替换的面,替换会失败)
定义 BoolBRepReplaceFace.hpp:17
AMCAX_API void SetReplaceSurface(const std::shared_ptr< Geom3Surface > &surface)
设置用于替换特征面的曲面
AMCAX_API void AddFaceToReplace(const TopoShape &face)
添加一个输入形状中要被替换的面
AMCAX_API void SetShape(const TopoShape &shape)
设置需要执行替换特征面的实体形状
AMCAX_API void Build() override
执行算法
virtual AMCAX_API bool IsDone() const
判断构造算法是否完成
部分图片来源: https://dev.opencascade.org/doc/overview/html/index.html ,版权归其所有。