cad.net 在位编辑的原理猜测及找到在位编辑状态的图元

  1. 在位编辑的时候会产生一个名为 0-RefEdit0 的图层,原因不明....

  2. 在位编辑的本质是一个长事务,长事务是使用编辑库的对象替换源对象,相当于剪辑.
    不理解没关系,请看下面的聊天记录....

    【贵妃】惊惊 2019/7/13 17:52:02
    我遇到了一个问题,如果是在位编辑的时候,当前空间是模型空间,那么我用函数克隆一个块外的东西到模型空间,实际上会克隆到在位编辑的内部...
    我都不知道怎么处理这个情况了..莫非要关闭用户的在位编辑状态么..

    【才人】edata 2019/7/13 17:57:15
    在位编辑是这样的.

    【贵妃】惊惊 2019/7/13 17:58:08
    那桌子是怎么控制在位编辑-减出去块外的?

    【才人】edata 2019/7/13 17:58:20
    在位编辑实际上是对当前空间的修改,然后移动回块定义..

    【才人】edata 2019/7/13 17:58:44
    这个就不是很清楚了...

    【贵妃】惊惊 2019/7/13 17:58:47
    也就是长事务上面记录了要移动回去的id?
    如果减选了就是剔除了id?

    【才人】edata 2019/7/13 17:59:27
    你能卡到这个长事务吗?

    【贵妃】惊惊 2019/7/13 17:59:39
    net貌似无法控制长事务呀
    应该桌子有考虑到的,只是我还没有挖出来具体怎么处理的..

    【才人】edata 2019/7/13 18:08:59
    用命令去移除当前在位编辑.

  3. 跟e大聊完之后,大概就知道了
    1,桌子的长事务通过某个集合来储存复制出来的图元id,这个地方貌似我们拿不到,也改不了.
    2,也可能是用褪色度来控制的,不过偶尔cad会发生褪色度错误的情况,也没见在位编辑出现错误.但是褪色度有没有作用呢?这个只有桌子自己知道了.

  4. 如果获得在位编辑状态的图元,是否是块内图元,这个实际上困扰了我很久(大概两年),直到koz帮忙了,
    他在一个外国的网站搜索到:
    在位编辑命令触发时,选择全图的图元id,    ed.SelectAll这样选
    在位编辑命令触发后,选择全图的图元id,    ed.SelectAll这样选
    触发后的图元必然比触发前多,然后进行差集运算,得出多余的就是块内的.
    要使用多个反应器来操作,就可以得到了.
    你必须要知道的是,反应器的操作要注意锁文档,防止致命错误,但同时要防止你调用了命令,而它内锁了文档,你再锁就会出错.

猜你喜欢

转载自www.cnblogs.com/JJBox/p/11185185.html