CAD修改图块插入点到中心点(com接口)

主要用到函数说明:

IMxDrawEntity::GetBoundingBox

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

参数说明

[out] IMxDrawPoint** minPoint

外包框的左下角点

[out] IMxDrawPoint** maxPoint

外包框的右上角

c#中实现代码说明:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

//返回控件的数据库对象

MxDrawDatabase databae = (MxDrawDatabase)axMxDrawX1.GetDatabase();

//返回数据库中的块表对象

MxDrawBlockTable blkTab = databae.GetBlockTable();

//创建一个遍历块表中所有记录的遍历器

MxDrawBlockTableIterator mBlockTableiter = blkTab.NewIterator();

//移动当前遍历器位置

for (; !mBlockTableiter.Done(); mBlockTableiter.Step())

 

{

    //返回遍历器当前位置的记录

    MxDrawBlockTableRecord blkRec = mBlockTableiter.GetRecord();

    //创建一个遍历块表中所有记录的遍历器

    MxDrawBlockTableRecordIterator mBlockTableReciter = blkRec.NewIterator();

 

    MxDrawPoint mMaxPt = new MxDrawPoint();

    MxDrawPoint mMinPt = new MxDrawPoint();

 

    MxDrawPoint mMaxPtTemp = new MxDrawPoint();

    MxDrawPoint mMinPtTemp = new MxDrawPoint();

    //移动当前遍历器位置

    for (; !mBlockTableReciter.Done(); mBlockTableReciter.Step(truefalse))

    {

        //与用户交互在图面上选择一个实体

        MxDrawEntity ent = mBlockTableReciter.GetEntity();

        //返回实体的最小矩形框外包

        ent.GetBoundingBox(out mMinPtTemp, out 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;

 

    MxDrawPoint mNewBasePt = new MxDrawPoint();

 

    mNewBasePt.x = mMinPt.x + (mMaxPt.x - mMinPt.x) / 2;

    mNewBasePt.y = mMinPt.y + (mMaxPt.y - mMinPt.y) / 2;

    //块表记录的插入原点属性

    blkRec.Origin = mNewBasePt;

    //重新生成图,重新生成所有显示数据

    axMxDrawX1.Regen();

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值