RegionProp

该代码段展示了如何在AutoCAD中使用API获取一个区域对象的面积属性,包括周长、面积、质心、惯性矩等信息。首先选择一个区域,然后打开并转换为AcDbRegion对象,调用getAreaProp方法计算相关属性。
摘要由CSDN通过智能技术生成
void getRegionAreaProp()
{
    ads_name eNam;
    ads_point pt;
    AcDbObjectId eId;
    if (acedEntSel(L"\nSelect an region: ", eNam, pt) != RTNORM)
    {
        acutPrintf(L"\nNothing selected.");
        return;
    }
    acdbGetObjectId(eId, eNam);
    AcDbEntity* pEnt = NULL;
    if(acdbOpenAcDbEntity(pEnt, eId, AcDb::kForRead) != Acad::eOk)
    {
        acutPrintf(L"\nError open entity.");
        return;
    }
    AcDbRegion* pReg = AcDbRegion::cast(pEnt);
    if(!pReg)
    {
        pEnt->close();
        return;
    }
    double perimeter, area, momInertia[2],
           prodInertia, prinMoments[2],
           radiiGyration[2];
    AcGePoint2d centroid, extentsLow, extentsHigh;
    AcGeVector2d prinAxes[2];
    AcGePoint3d origin;
    AcGeVector3d xAxis;
    AcGeVector3d yAxis;
    // initialize the three arguments
    AcGePlane plane;
    pReg->getPlane(plane);
    plane.getCoordSystem(origin, xAxis, yAxis);
    Acad::ErrorStatus es = pReg->getAreaProp(
        // these (3) are the input parameters
        origin, xAxis, yAxis,
        perimeter,
        area,
        centroid,
        momInertia,
        prodInertia,
        prinMoments,
        prinAxes,
        radiiGyration,
        extentsLow,
        extentsHigh);
    assert(es == Acad::eOk);
    // you can determine what to do exactly with the results
    // here I just print a message
    acutPrintf(L"\nSucceded in getting an region's area prop.");
    pReg->close();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值