明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 96|回复: 1

[图形系统] cad.net 布局映射

[复制链接]
发表于 昨天 19:12 | 显示全部楼层 |阅读模式
本帖最后由 你有种再说一遍 于 2025-11-1 02:02 编辑

众所周知,C#有个瞬态图元,并且有个main模式是刷新不消失的.
有什么功能是我们必须要用瞬态实现而不是普通图元呢?
1,无加载插件和加载后下次打开,都不应该显示的.
如果用普通图元,命令事件的保存命令触发时候也可以删除普通图元,不过如果有其他插件通过`doc.CloseAndSave()`就出现幽灵图元污染了数据库,这是极其不专业的行为.
2,数据库进出事件不触发.
3,选择事件不触发.

满足上述这种情况的有:bo边界出现不闭合的圆圈.
似乎有点寡淡,为什么只有这个命令用到,还有啥情况是必须用到呢?
今天给大家带来一个功能就很好的用到以上特性.


用布局画图的人会频繁切换布局,然后一旦切换就令视口重绘,如何降低这种重绘带来的卡顿呢?
那就是把布局的图元chspace过来.

chspace哪个视口呢?
我们提前把所有视口的边界用瞬态映射到模型,然后通过交互视口影子就可以实现了.

chspace什么范围的图元呢?
1,整个布局拷贝过来.
2,根据影子的视口获取图框,把图框内范围拷贝过来,此时需要倒序索引?要多少个索引?岂不是要维护?
mapA[瞬态id]=(布局id,视口id,图框id)
mapB[图框id]=图框内图元?
备注:图框名称需要配置中设置.

视口影子:鼠标钩子+四叉树定位瞬态图元.
影子刷新:如果视口显示位置变化了就用数据库对象改变事件进行改变视口影子.
如此一来,单击视口影子就可以显示图元(chspace布局to模型),再次单击就可以回收图元.

唉!既然有这个效果了,为什么我们不直接加一个功能,把chspace过来的图元给改完之后,再联动回布局那边呢?也就是"在位编辑".
在位编辑大家都知道原理吧,就是一个HashSet而已.
然后"添加"和"删除"就自己封装咯.
备注:由于我不想触发全局刷新,因此不采用褪色度.

唉!既然是这样,为什么不加一个ctrl+单击视口影子,此时进行跳转到布局,定位到视口本体.
可选配置:
1,跳转后把其他视口全部关闭,实现快速查看.并且双击ctrl后显示全部视口.命令事件保存实现打开全部视口.
2,跳转后显示全部视口.
3,跳转后不变.
逆跳:
视口本体可以用ctrl+单击跳转到视口影子.


实现回收"在位编辑"的HashSet普通图元:
A,命令事件:
拦截保存,这样就不会保存到数据库里面了.
B,加载后执行接口,文档打开事件:
防止`doc.CloseAndSave()`我们仍然需要打开时候清理.
b1,打开后遍历一次全图,查看被标记xdata的普通图元.
b2,把普通图元全部用规则重定义重写.
b3,在主字典记录这些普通图元,然后打开后直接删了.
C,共享内存
其他软件也可以通过共享内存直接获取我的HashSet,约定名称为:"LayoutWorkSet",第一个int32作为长度.
D:提供命令
命令清理可以给某种情况下清理.
命令配置启用停用.

悬停事件:
视口影子可以用悬停显示图片技术提示用户:
在博客最下面有C#相关的: https://www.cnblogs.com/edata/p/17311897.html

这一切都那么环环相扣,真是一个设计感十足的功能.
(完)
回复

使用道具 举报

发表于 昨天 19:17 | 显示全部楼层
确实,很多人一开始觉得瞬态图元“可有可无”,无非就是画个临时辅助线。但你点出了它的不可替代性——只要涉及“临时可视化但绝不进数据库”的需求,普通图元就是个雷。尤其是插件生态复杂的情况下,谁也不敢保证别人会不会偷偷调个 CloseAndSave(),一不小心就留下幽灵图元,模型就脏了。
你提到的“视口影子 + 双击跳转 + 在位编辑”这套组合拳,简直是布局工作流的痛点精准打击!  
  • 用瞬态图元映射视口边界,既不影响模型,又能快速定位;
  • 双击交互配合四叉树,性能也稳;
  • 再加上“在位编辑”的临时缓存机制,改完还能回写,体验直接拉满;
  • 甚至考虑到 Ctrl+双击 跳布局的多种策略(关其他视口 / 全显 / 不变),这种细节才是专业插件该有的样子。
其实类似场景还有很多:比如动态预览块插入效果、临时尺寸标注引导、拖拽过程中的吸附辅助线……这些要是用普通图元,轻则卡顿,重则污染图纸。瞬态图元的本质,就是“看得见但摸不着、用完就走不留痕”
期待你把这个功能做出来!如果真能开源或分享,绝对能提升一大波布局用户的幸福感


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-11-1 04:43 , Processed in 0.143709 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表