|
|
|
```C++
|
|
|
|
/**
|
|
|
|
* @brief 带洞截面沿路径拉伸
|
|
|
|
* @note :
|
|
|
|
* @param : 截面必须共面,数组首个元素必须为外包,其余元素为内部洞;拉伸路径可以闭合
|
|
|
|
* @return:
|
|
|
|
* @author: csl
|
|
|
|
* @date : [11/7/2022]
|
|
|
|
*/
|
|
|
|
virtual CPmSolid * extrudeAlongPath(const CArray<PmDbPolyline *> & polys,
|
|
|
|
PmDbPolyline * path) override;
|
|
|
|
```
|
|
|
|
```C++
|
|
|
|
/**
|
|
|
|
* @brief 带洞截面拉伸
|
|
|
|
* @note :
|
|
|
|
* @param : 数组首个元素必须为外包,其余元素为内部洞
|
|
|
|
* @return:
|
|
|
|
* @author: csl
|
|
|
|
* @date : [11/7/2022]
|
|
|
|
*/
|
|
|
|
virtual CPmSolid * extrude(const CArray<PmDbPolyline *> & polys,
|
|
|
|
const PMSoft::CPMGePoint3D &fixedPt, // ?
|
|
|
|
const PMSoft::CPMGeVector3D &plgNormal,
|
|
|
|
const PMSoft::CPMGeVector3D &extusionVector, // ? 没有路径吗
|
|
|
|
double scaleFactor = 1.0,
|
|
|
|
double twistAngle = 0.0) override;
|
|
|
|
```
|
|
|
|
|
|
|
|
```C++
|
|
|
|
/**
|
|
|
|
* @brief 多段拉伸生成完整体(适用构造柱马牙槎)
|
|
|
|
* @note : 只在自主布尔中实现,ACIS未实现
|
|
|
|
* @param : polys为各段拉伸的起始截面,vctsExtru为每段拉伸的拉伸向量
|
|
|
|
* 截面与向量的数量应该相同,且至少为2个
|
|
|
|
* @return:
|
|
|
|
* @author: csl
|
|
|
|
* @date : [9/25/2023]
|
|
|
|
*/
|
|
|
|
virtual CPmSolid * extrudeStepByStep(const CArray<PmDbPolyline *> & polys, const CArray<PMSoft::CPMGeVector3D> & vctsExtru) override;
|
|
|
|
```
|
|
|
|
|
|
|
|
```C++
|
|
|
|
/**
|
|
|
|
* @param axis_start axis start position.
|
|
|
|
* @param axis_end axis end position.
|
|
|
|
* @param start_dir vector from axis_start to helix star
|
|
|
|
* @param radius radius of helix.
|
|
|
|
* @param pith distance between threads along axis.
|
|
|
|
* @param handiness
|
|
|
|
*/
|
|
|
|
virtual CPmSolid * createHelix(const PMSoft::CPMGePoint3DArray &pt3d,
|
|
|
|
const PmGeDoubleArray bulges,
|
|
|
|
const PMSoft::CPMGePoint3D &axis_start,
|
|
|
|
const PMSoft::CPMGePoint3D &axis_end,
|
|
|
|
const PMSoft::CPMGeVector3D &start_dir,
|
|
|
|
BOOL handiness,
|
|
|
|
double radius,
|
|
|
|
double pitch);
|
|
|
|
|
|
|
|
virtual CPmSolid * createHelix(const PMSoft::CPMGePoint3DArray &pt3d,
|
|
|
|
const PmGeDoubleArray bulges,
|
|
|
|
const PMSoft::CPMGeVector3D &FaceNormal,
|
|
|
|
const PMSoft::CPMGePoint3D &axis_start,
|
|
|
|
const PMSoft::CPMGePoint3D &axis_end,
|
|
|
|
const PMSoft::CPMGeVector3D &start_dir,
|
|
|
|
BOOL handiness,
|
|
|
|
double radius,
|
|
|
|
double pitch,
|
|
|
|
BOOL bIsFace = FALSE);
|
|
|
|
|
|
|
|
virtual CPmSolid * create_face_helix(const PMSoft::CPMGePoint3DArray &pt3d,
|
|
|
|
const PmGeDoubleArray bulges,
|
|
|
|
const PMSoft::CPMGePoint3D &axis_start,
|
|
|
|
const PMSoft::CPMGePoint3D &axis_end,
|
|
|
|
const PMSoft::CPMGeVector3D &start_dir,
|
|
|
|
BOOL handiness,
|
|
|
|
double radius,
|
|
|
|
double pitch);
|
|
|
|
```
|