Shawndoe 发表于 2010-3-18 20:42:44

运气不好,
您的代码就像我为我的版本描述的那样工作。 看起来您隔离了代码的 Zoom 部分,并添加了命令以通过其状态运行窗口。 遗憾的是,这不会强制更新与文档/客户端窗口大小相关的部分或全部 Acad 系统变量。 绘图的范围没有变化,但窗口的范围发生了变化。
我认为这已经是一个问题很长一段时间了。 如果在 LISP 中设置屏幕大小系统变量,则窗口将立即调整大小,但 Zoom 将失败,因为它使用的数据应该已更新,但在您离开 LISP 之前不会更新。 似乎AutoCAD将与窗口大小调整相关的变量更改保存在缓冲区中,直到所有ARX,VBA和LISP例程完成为止。 我不得不相信有这么多方法可以强制进行这些更新。 我认为pkohut给我的代码会有同样的问题,但是有很多代码需要查看(对于新手来说)。
尝试在LISP中调整绘图窗口的大小并使用您给我的ARX,并让我知道你的想法。
再次感谢你们两位。 我试图为最棘手的问题保留我的帖子,但我真的希望不要那么痛苦。
祝您晚上愉快。
肖恩
有一个很好的,

LE3 发表于 2010-3-18 20:54:43

我现在在其他渠道,几乎没有时间花在测试上...而且我的口齿不清技能也过时了。
也许,您可以提供更多的细节、图像、动画图像等...更多示例/代码部分和其他内容可能会有兴趣提供帮助。
Ps >您的代码没有更新后台,这就是我添加发送消息调用的原因...抱歉在这里帮不上什么忙。

pkohut 发表于 2010-3-18 21:01:24

不知道它是否会工作,但尝试添加红色的代码

Shawndoe 发表于 2010-3-19 15:33:47

还是不行...
我将发布一些AutoCAD的屏幕截图,以便您可以看到我正在尝试做什么。我已经发布了我所有的ARX代码,我发布的LISP代码片段就是为了演示这个问题。
下面,您可以在客户端窗口中看到打开图形时的图形。我把它从中心移开一点来隐藏一些标题栏。


下面是运行Pkohut所示例程的结果。在功能上,这相当于设置屏幕大小系统变量。但是,当您在LISP、VBA或ARX中设置SCREENSIZE sysvar时,窗口大小会立即更新,但是用于绘图到像素转换的数据不会更新,直到您返回到命令提示符。在ARX,我认为有一种方法可以解决这个问题,但我不知道它是什么。我怀疑acedCoordFromPixelToWorld或其相关函数可能会做到这一点,但我不确定如何使用它们。有趣的是,虽然不适合窗口,但该绘图正确地居中。


如果我能为您获取任何其他数据,请告诉我。
再次感谢您的努力。
肖恩

LE3 发表于 2010-3-19 23:23:44

有机会玩.-
(MYVIEW只是你的相同lisp,名称不同)
编辑:动画图像没有正确显示,并被删除 - 当我有机会时会尝试制作一个新的。
添加了:带有动画图像的拉链...
1.第一个MYVIEW调用和autocad与两个文档打开并注意到结果(使用您的原始代码,另一个由Paul)。
2. 第二次调用 MYVIEW 并打开单个文档。
3. MYVIEW的第三次调用和单个文档打开,下面的代码 - 如果我使用arx内部的zoomExtents()函数,它会进行缩放,而lisp中的那个则不会。
页: 1 [2]
查看完整版本: 更新模型空间显示范围