|
以下方法只能用于继承于AcDbCurve的类型
主要使用两个接口
派生类中此函数的实现应返回, 并将endParam设置为曲线端点的参数。
如果成功则返回Acad::eOk。
默认情况下, 该函数返回Acad::eNotImplemented。 virtual Acad::ErrorStatus getEndParam(double&endParam) const;
计算从曲线的起点到param指定的点的曲线段的长度。
如果成功则返回Acad::eOk, 如果param超出范围则返回Acad::eInvalidInput。对于其他错误, 实现者必须决定使用什么返回值。有关可能的ErrorStatus值, 请参阅acdb.h头文件。
在默认实现中, 该函数返回Acad::eNotImplemented。
virtual Acad::ErrorStatus getDistAtParam(double param, double& dist) const;
- /*!
- * @brief 获取实体周长
- * @param const AcDbObjectId& id 实体id(必须是继承于AcDbCurve的实体)
- * @param [out] double &perimeter 输出周长
- *
- * @date 2021年11月24日
- */
- bool getPerimeter(const AcDbObjectId& id, double &perimeter)
- {
- bool ret = false;
- AcDbEntity *pEnt = NULL;
- Acad::ErrorStatus es = acdbOpenObject(pEnt, id, AcDb::kForRead);
- if (es != Acad::eOk)
- return ret;
- if (pEnt->isKindOf(AcDbCurve::desc()))
- {
- double endParam;
- AcDbCurve *pCurve = AcDbCurve::cast(pEnt);
- pCurve->getEndParam(endParam);
- pCurve->getDistAtParam(endParam, perimeter);
- ret = true;
- }
- pEnt->close();
- return ret;
- }
复制代码 |
|