首页 > Web开发 > 详细

CAD修复块中心点(网页版)

时间:2019-07-09 16:24:29      阅读:97      评论:0      收藏:0      [点我收藏+]

主要用到函数说明:

IMxDrawEntity::GetBoundingBox

返回实体的最小矩形框外包。详细说明如下:

参数说明

[out] IMxDrawPoint** minPoint

外包框的左下角点

[out] IMxDrawPoint** maxPoint

外包框的右上角点

js中实现代码说明:

     //返回控件的数据库对象
    var databae = mxOcx.GetDatabase();
    //返回数据库中的块表对象
    var blkTab = databae.GetBlockTable();
    //创建一个遍历块表中所有记录的遍历器
    var mBlockTableiter = blkTab.NewIterator();
    //移动当前遍历器位置
    for (; !mBlockTableiter.Done(); mBlockTableiter.Step())
 
    {
        //返回遍历器当前位置的记录
        var blkRec = mBlockTableiter.GetRecord();
        //创建一个遍历块表中所有记录的遍历器
        var mBlockTableReciter = blkRec.NewIterator();
 
        var mMaxPt = mxOcx.NewPoint();
        var mMinPt = mxOcx.NewPoint();
 
        var mMaxPtTemp = mxOcx.NewPoint();
        var mMinPtTemp =mxOcx.NewPoint();
        //移动当前遍历器位置
        for (; !mBlockTableReciter.Done(); mBlockTableReciter.Step(truefalse))
        {
            //与用户交互在图面上选择一个实体
            var ent = mBlockTableReciter.GetEntity();
            //返回实体的最小矩形框外包
            ent.GetBoundingBox(mMinPtTemp, mMaxPtTemp);
 
            if ((mMinPtTemp == null) || (mMaxPtTemp == null))
                break;
 
            mMaxPt.x = Math.max(mMaxPt.x, mMaxPtTemp.x);
            mMaxPt.y = Math.max(mMaxPt.y, mMaxPtTemp.y);
 
            mMinPt.x = Math.min(mMinPt.x, mMinPtTemp.x);
            mMinPt.y = Math.min(mMinPt.y, mMinPtTemp.y);
 
        }
 
        if ((mMinPtTemp == null) || (mMaxPtTemp == null))
            continue;
 
        var mNewBasePt = mxOcx.NewPoint();
 
        mNewBasePt.x = mMinPt.x + (mMaxPt.x - mMinPt.x) / 2;
        mNewBasePt.y = mMinPt.y + (mMaxPt.y - mMinPt.y) / 2;
        //块表记录的插入原点属性
        blkRec.Origin = mNewBasePt;
        //重新生成图,重新生成所有显示数据
        mxOcx.Regen();
    }
 
}

CAD修复块中心点(网页版)

原文:https://www.cnblogs.com/yzy0224/p/11157922.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!