天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 59|回复: 0

ObjectArx获取实体周长

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
以下方法只能用于继承于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;
[code]/*!
* @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;
}
[/code]

 

 

 

 

ObjectArx获取实体周长
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:26 , Processed in 0.123965 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表