www.mxdraw.com
内容索引主面
前一个向上下一个
McDbEntity::getOsnapPoints 方法

返回实体的捕捉点信息,自定义实体重载该函数,返回捕捉信息

C++
virtual Mcad::ErrorStatus getOsnapPoints(McDb::OsnapMode osnapMode, int gsSelectionMark, const McGePoint3d& pickPoint, const McGePoint3d& lastPoint, const McGeMatrix3d& viewXform, McGePoint3dArray& snapPoints, McDbIntArray& geomIds) const;
参数 
说明 
McDb::OsnapMode osnapMode 
捕捉类型 
int gsSelectionMark 
暂没有使用 
const McGePoint3d& pickPoint 
当前鼠标拾取点 
const McGePoint3d& lastPoint 
前一次的鼠标拾取点 
const McGeMatrix3d& viewXform 
暂没有使用 
McGePoint3dArray& snapPoints 
返回捕捉的点坐标数组 
McDbIntArray& geomIds 
暂没有使用 

如果成功返回Mcad::eOk

例如:参考samplesCustomEntityCustomEntity.sln例程

    Mcad::ErrorStatus   CLinkBlock::getOsnapPoints(
        McDb::OsnapMode     osnapMode,
        int                 gsSelectionMark,
        const McGePoint3d&  pickPoint,
        const McGePoint3d&  lastPoint,
        const McGeMatrix3d& viewXform,
        McGePoint3dArray&   snapPoints,
        McDbIntArray&       geomIds) const
    {
        assertReadEnabled();

        if(osnapMode == AcDb::kOsModeEnd )
        {
            McDbBlockReference tmpBlkRef;
            tmpBlkRef.setPosition(m_pos);
            tmpBlkRef.setScaleFactors(m_scale);
            tmpBlkRef.setRotation(m_dRotation);
            tmpBlkRef.setBlockTableRecord(m_idBlkRec);
            McGeMatrix3d mat = tmpBlkRef.blockTransform();

            for(int i =0; i < m_aryLinkPoint.length();i++)
            {
                AcGePoint3d tmp = m_aryLinkPoint[i];
                tmp.transformBy(mat);

                snapPoints.append(tmp);
            }
        }
        else if(osnapMode == AcDb::kOsModeIns)
        {
            snapPoints.append(m_pos);
        }
        return Acad::eOk;
    }
Copyright (c) 2010. All rights reserved.
你认为该帮助怎么样? 发送反馈信息!