• 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这样选
      触发后的图元必然比触发前多,然后进行差集运算,得出多余的就是块内的.
      要使用多个反应器来操作,就可以得到了.
      你必须要知道的是,反应器的操作要注意锁文档,防止致命错误,但同时要防止你调用了命令,而它内锁了文档,你再锁就会出错.



    cad编辑器,不是在位编辑,而是编辑器编辑块的时候,有个现象是,如果你用代码克隆一个块表记录进来,按道理来说是会更新的,

    这在普通块上面只需要刷新一下就可以了.但是在动态块上面就不一样了.

    我是通过编辑器移动某个图元0距离就可以更新,而不能打开编辑器之后直接保存,可能这是块编辑器内置了一个flag,看某个图元是不是有改过....

    直接保存会导致

  • 相关阅读:
    WPF 体验数据邦定
    数组和指针
    关于js的this上下文环境绑定
    比较特别的dean edward的javascript事件处理
    ie6 png透明支持缩放后的图片透明
    使用局部上下文创建控制器对象
    html5和c++封装webkit内核实现开放式游戏大厅设计(一)
    第二种简单方式创建模型控制器的方式
    Express 3.x + Socket.IO 版本升级后的改动(无法加载/socket.io/socket.io.js)
    MVC中简单数据模型(M): Model类
  • 原文地址:https://www.cnblogs.com/JJBox/p/11185185.html
Copyright © 2020-2023  润新知