创建基本形状
基本形状包括方盒,圆柱,圆锥/圆台,球,圆环。
方盒
AMCAX::MakeBox 类提供创建方盒的功能。
Class of making a box
定义 MakeBox.hpp:18
Base class of shape, containing an underlying shape with a location and an orientation
定义 TopoShape.hpp:15
PointT< double, 3 > Point3
三维点
定义 PointT.hpp:459
圆柱
AMCAX::MakeCylinder 类提供创建圆柱的功能。
Class of making a cylinder
定义 MakeCylinder.hpp:16
DirectionT< double, 3 > Direction3
三维方向
定义 DirectionT.hpp:587
FrameT< double, 3 > Frame3
三维标架
定义 FrameT.hpp:885
圆锥/圆台
AMCAX::MakeCone 类提供创建圆锥/圆台的功能。
Class of making a cone
定义 MakeCone.hpp:16
球
AMCAX::MakeSphere 类提供创建球的功能。
Class of making a sphere
定义 MakeSphere.hpp:16
圆环
AMCAX::MakeTorus 类提供创建圆环的功能。
Class of making a torus
定义 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()
Get the resulting shape
计算截面线
AMCAX::BoolBRepSection 类提供计算截面线功能。
计算形状间交线运算的类
定义 BoolBRepSection.hpp:17
拉伸(扫掠)创建功能
AMCAX::MakePrism 类提供拉伸(扫掠)功能。
std::shared_ptr<AMCAX::Geom3Curve> curve = makeEllipse.Value();
Class of making an edge
定义 MakeEdge.hpp:24
Class of making a face
定义 MakeFace.hpp:22
构造三维几何椭圆的类
定义 MakeGeom3Ellipse.hpp:13
Class of making a prism or an extrusion shape
定义 MakePrism.hpp:16
Class of making a wire
定义 MakeWire.hpp:17
Class of edge
定义 TopoEdge.hpp:12
Class of face
定义 TopoFace.hpp:12
Class of wire
定义 TopoWire.hpp:12
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 轴方向
Class of making a revolved shape
定义 MakeRevol.hpp:18
pipe管道功能
通过指定脊线(线框-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();
Class of make pipe algorithm
定义 MakePipe.hpp:20
Class of making pipe shell algorithm
定义 MakePipeShell.hpp:35
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();
Class of making a lofting shape
定义 MakeLoft.hpp:30
Class of making a polygon
定义 MakePolygon.hpp:18
static AMCAX_API const TopoWire & Wire(const TopoShape &s)
Cast shape to wire
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)
Cast shape to edge
MakeFillet2d(平面圆角)
mf2d.Build();
在平面顶点上构造圆角和倒角的类
定义 MakeFillet2d.hpp:20
static AMCAX_API const TopoVertex & Vertex(const TopoShape &s)
Cast shape to vertex
static AMCAX_API const TopoFace & Face(const TopoShape &s)
Cast shape to face
倒角
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);
Class of making offset wires
定义 MakeOffset.hpp:19
JoinType
连接类型
定义 GeometryMacros.hpp:74
@ Arc
构建圆弧过渡
定义 GeometryMacros.hpp:76
MakeOffsetShape(3D形状的偏移)
输入face进行offset,输入shell则对其整个solid进行offset,最后返回offset后的face或solid。
double offsetvalue = 1.2;
MakeOffsetShape2.
Build();
Class of build a shell out of a shape algorithm
定义 MakeOffsetShape.hpp:18
AMCAX_API void PerformBySimple(const TopoShape &s, double offsetValue)
Construct an offset shape using the simple algorithm without intersections computation
AMCAX_API void Build() override
Perform the algorithm
形状加厚
AMCAX::MakeThickSolid 类提供形状加厚的功能。
double offsetvalue=1.5;
Class of making a thick solid shape
定义 MakeThickSolid.hpp:12
AMCAX_API void Build() override
Perform the algorithm
AMCAX_API void MakeThickBySimple(const TopoShape &s, double offsetValue)
Make a thick solid using simple algorithm, only for a non-closed single face or shell which contain t...
替换面
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
Is the construction algorithm done
薄板样条曲线插值
在插值时,不难发现通过这些点的曲线并不唯一。
通常来说,蓝色的曲线比绿色的曲线更符合CAD的设计意图。我们将曲线的长度不要太长、弯曲程度不要变化太过剧烈作为目标,可以构建薄板能量用来度量曲线的合格程度:
E1用来控制曲线的长度,E2用来控制曲线的变化速度。alpha越大,曲线的长度越短。beta越大,曲线的形状变化越平滑。AMCAX::NURBSAPIInterpolate 类提供薄板样条曲线插值的功能。具体如下:
AMCAX::NURBSAPIInterpolate::InterpolatePointsThinPlate:输入数据点的坐标和对应曲线的参数(可选)以及插值曲线的一些信息(周期性,薄板能量权重),构造通过每一个数据点,并尽可能满足薄板能量的 NURBS 曲线。
AMCAX::NURBSAPIInterpolate::InterpolateNodesThinPlate:输入数据点的坐标和各阶梯度(可选)和对应曲线的参数(可选)以及插值曲线的一些信息(周期性,薄板能量权重),构造通过每一个数据点,并尽可能满足薄板能量的 NURBS 曲线。
std::vector<AMCAX::Point3> points;
bool isClosed = false;
double alpha = 1e-2;
double beta = 1e-2;
std::vector< double > parameterization = { 0.0,0.1,0.2,0.3,0.4,0.5 };
std::vector<AMCAX::InterpolationNode> nodes;
nodes.push_back({ p1,true,v1,false,v2 });
nodes.push_back({ p2,true,v1,false,v2 });
std::vector<double> parameterization1{ 0.0,0.5 };
常值法则函数的类
定义 LawConstant.hpp:12
static AMCAX_API std::shared_ptr< Geom3BSplineCurve > InterpolateNodesThinPlate(const std::vector< InterpolationNode > &nodes, bool isClosed=false, ApproxParameterizationType ptype=ApproxParameterizationType::ChordLength, double alpha=1e-3, double beta=1e-3)
构造符合薄板能量且顺序通过数据点的插值曲线
static AMCAX_API std::shared_ptr< Geom3BSplineCurve > InterpolatePointsThinPlate(const std::vector< Point3 > &points, bool isClosed, ApproxParameterizationType ptype, double alpha, double beta)
构造符合薄板能量且顺序通过数据点的 B 样条曲线
ApproxParameterizationType
曲线拟合中参数化类型的枚举类
定义 ApproxParameterizationType.hpp:12
@ ChordLength
弦长参数化:数据点的参数与它们之间的距离成正比
定义 ApproxParameterizationType.hpp:14
将法则曲线转成三维几何曲线
使用 AMCAX::LawFunction::ToCurve()可将法则曲线转成三维几何曲线。
以常值函数为例,r 对应是 y 的值,pf 和 pl 是 x 的起始参数和终止参数。
double r = 5.0;
double pr = 1.0;
double pl = 10.0;
AMCAX_API void Set(double r, double pf, double pl)
设置参数
AMCAX_API std::shared_ptr< Geom3Curve > ToCurve() const override
将法则函数转换为曲线
部分图片来源: https://dev.opencascade.org/doc/overview/html/index.html ,版权归其所有。