viewsize 只获取了视图的高度, 那么它的宽度如何获取?
本帖最后由 mokson 于 2023-9-5 11:43 编辑viewsize 只获取了当前绘图的工作空间的高度,
那么它的宽度如何获取?
我想获取 当前的绘图区域 最大值的坐标, 即:左上角 和 右下角的坐标
(而不是 视口框 的左上角和右下角的坐标)
(setq
pix (getvar "screensize") ;当前视口宽高像素值
sc (/ (car pix) (cadr pix)) ;当前视口宽高比
h (getvar "viewsize") ;视口高度
w (* h sc) ;视口宽度
midpt (getvar "viewctr") ;视口中心点
x (car midpt) ;中心点X轴
y (cadr midpt) ;中心点Y轴
w/2 (/ w 2) ;半宽
h/2 (/ h 2) ;半高
pt22 (list (+ x w/2) (+ y h/2)) ;当前视口右上角
pt11 (list (- x w/2) (- y h/2)) ;当前视口左下角
) mokson 发表于 2023-9-5 10:09
但是对当前正在工作的区域是有限的呀.
limmax 存储当前空间的右上方图形界限,用世界坐标系坐标表示。
limmin 存储当前空间的左下方图形界限,用世界坐标系坐标表示。
Limits 属性
指定图形界限。
参阅 | 示例
语法
object.Limits
object
Document
使用该属性的对象。
Limits
Variant[变体] (双精度数组); 可读写
四元素数组。第一对值定义了左下角点的 X 和 Y 的坐标值, 第二对值定义了右上角点的 X 和 Y 的坐标值。
系统变量
左下角点控制 LIMMIN 系统变量。 右上角点控制 LIMMAX 系统变量。LIMCHECK 系统变量打开或关闭当前空间的界限检查,[明经通道提示]也就是说是否允许在图形界限外创建对象。
说明
图形界限在世界坐标系统中(WCS)是二维点,代表了左下角和右上角的界限。用户不能得到界限的 Z 方向坐标。
图形界限也控制了可见栅格所覆盖的图形部分,同时也决定了 ZoomAll 方法显示的最小区域。
viewctr 存储当前视口中视图的中心点。该值用 ucs 坐标表示。
vsmax 存储当前视口虚屏的右上角。该值用 ucs 坐标表示。
vsmin 存储当前视口虚屏的左下角。该值用 ucs 坐标表示。
本帖最后由 mokson 于 2023-9-5 10:01 编辑
liuhe 发表于 2023-9-5 09:28
viewctr 存储当前视口中视图的中心点。该值用 ucs 坐标表示。
vsmax 存储当前视口虚屏的右上角。该值用 uc ...
这是虚线框的视口坐标, 我要的是视图高度, 视图是作图区域的空间, 有时会比视口大得多.
(setq AcadObject(vlax-get-acad-object)
AcadDocument(vla-get-ActiveDocument AcadObject)
mSpace(vla-get-ModelSpace AcadDocument)
)
;;; 返回激活文件当前的视口
(setq currViewport(vla-get-ActiveViewport AcadDocument))
(vla-get-HeightcurrViewport)
(vla-get-Width currViewport) (tblsearch "view" "standard")
我想获取默认视图的高度和宽度, 但是内置的默认视图的名称是什么, 我写 "当前" 和 "standard" 都不对.
如果知道默认视图的名称,就好办了. 视图理论上无限大小,只有视口才会有边界。 kozmosovia 发表于 2023-9-5 10:06
视图理论上无限大小,只有视口才会有边界。
但是对当前正在工作的区域是有限的呀. 你是想搞清楚布局中的VP对象与其中显示区域的换算关系吧?