明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: masterlong

[源码] 发个小程序,设置两点,快速同步【模型·双视口】~~~【20211227尝试修复BUG】

  [复制链接]
发表于 2021-6-28 14:46:27 | 显示全部楼层
感谢楼主免费共享源码(给所有共享源码的朋友点赞
但是据我了解:
1、lisp没有定时器
2、viewctr等几个相关的系统变量变化并不会使系统变量反应器响应(即使.NET也在高版本CAD才提供视图变化事件的函数,低版本还得用定时器)
所以用纯lisp想要做出自动同步,几乎不可能,楼主可以研究一下
 楼主| 发表于 2021-6-28 15:37:26 | 显示全部楼层
lsp想实现实时同步
唯一可能的手段也就是反应器监控系统变量了
如果viewctr、viewsize不在监控范围内
那就无法实现实时同步了

不过
这跟我有啥关系呢
这个程序压根不需要实时同步
甚至就这个程序而言
实时同步是有严重负面影响的

从实际操作出发想像一下
如果真的实现了实时同步会是什么情况
一个视口在缩放平移
另一个视口跟着缩放平移
听起来很爽是吧
但实际上绝大多数情况
需要的是一个视口保持不动
另一个视口缩放平移以进行观察对比
原因很简单
显示器只有那么大
就算显示器够大
也需要在区域和细部之间进行转换

什么场合适用实时同步?
答案是“大家来找茬”
画图或是校审
还是算了吧
发表于 2021-6-28 18:23:30 | 显示全部楼层
masterlong 发表于 2021-6-28 15:37
lsp想实现实时同步
唯一可能的手段也就是反应器监控系统变量了
如果viewctr、viewsize不在监控范围内

的確如此!!!!!
发表于 2021-6-28 20:34:15 | 显示全部楼层
masterlong 发表于 2021-6-26 22:47
编程初期的想法和最后的成品
有一定的差距
所以代码有些凌乱

这是逛论坛以来的巨大收获,这个非常实用。对我而言要扩展下,比如支持多个视口巡航。一直想写一个,但苦于技术储备不行,没写出来。谢谢大侠分享这么实用的工具。
发表于 2021-6-28 21:37:12 | 显示全部楼层
这是我心目中明经论坛2021年度十佳原创作品之一,虽然剩下6个月,但我现在就敢肯定。

点评

过奖了,惭愧。虽然我也觉得是挺好用,哈哈  发表于 2021-6-28 22:07
 楼主| 发表于 2021-6-28 22:01:05 | 显示全部楼层
本帖最后由 masterlong 于 2021-6-28 22:18 编辑

对于改写支持模型多视口
因为不知道你的多视口
具体会采用什么的拼合方案
是均分视口还是1主多副
也不知道你的具体用途
这里只能提醒你一下
多视口的代码量
或许是双视口的几倍甚至十几倍
而且正式动手改写以前
一定要仔细规划好
否则写出来不好用就很难受

之所以这么说是因为
我的程序是均分双视口
不存在主副之分
这样我就不用确定视口的顺序
任一个视口内都可以进行绘图等操作
而均分3视口4视口就不一样了
虽然还是均分
但必须要区分出它们的顺序
否则每个视口都显示不同平面的相同区域时
很容易搞混淆哪个视口对应的哪个平面
1主多副也是差不多的道理

换句话说
多视口情况下你必须对屏幕上的视口进行编号
同时必须指定每个位置的视口
用来显示第几个相对区域
这个规则是需要固化在你的程序里的
千万不要使用时随机确定
否则一旦搞错了平面
悔之晚矣

一点不成熟的建议仅供参考吧


发表于 2021-6-28 22:35:58 | 显示全部楼层
我的一点想法是,程序就一个视口(准确的讲,我是想实现视图的快速平移),做个dcl面板,面板两列,左侧是存放基点,右侧同步。左侧数字存放基点,右侧字母实现视图平移。
所以程序需要一个功能,就是范围识别,就是当前屏幕中心点的坐标与那个基点最近,然后点字母可以切换到下一个基点,比如说我当前屏幕中心坐标x0,y0,程序自动识别出离第2个点最近;我点B时视图不动,点C时以3点坐标为基点,相同的屏幕比例展现视图。
视图的快速平移也很有应用前景。我自己做的一个不能按比例平移,感觉挺局限的。所以楼主这个视口同步出来的时候,我感觉好像可以改进我的视图插件了。
发表于 2021-6-28 22:40:25 | 显示全部楼层
tigcat 发表于 2021-6-28 22:35
我的一点想法是,程序就一个视口(准确的讲,我是想实现视图的快速平移),做个dcl面板,面板两列,左侧是 ...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2021-6-28 23:16:47 | 显示全部楼层
lingduwx 发表于 2021-6-28 10:08
不知道是不是我操作问题,我用不了同步啊,当在其中一个视口内放大缩小显示,另外一个视口没有同步显示

存放两个视口基点后,左右两个视口A和B,缩放平移A视口的对象,输入命令gg,此时可以看到B视口相同位置,相同视口大小呈现。同理,可以在B视口缩放平移,按命令看A视口图形是什么情形。
 楼主| 发表于 2021-6-28 23:32:21 | 显示全部楼层
你的这个思路
前段时间print1985有一个类似的程序
可以搜一下他的帖子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 08:47 , Processed in 0.172741 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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