以下都是这些天研究布局的成果(能力有限导致认识有限,包涵)

    我目前是先激活某个图纸空间(布局),然后再增加图元,但是当图纸比较大的时候,重生成模型的时候比较长。那能不能不激活图纸空间,就能直接在某个布局中写入图元?

我目前代码:

    Dim Textlayout As Object
    Set Textlayout = ThisDrawing.Layouts.Item(layoutItemI)

    ThisDrawing.ActiveLayout = Textlayout

里面layoutItemI是我传入的一个参数。就是能不能不用激活(ThisDrawing.ActiveLayout = Textlayout),用某个方法吧图元增加到不激活图纸空间。(很遗憾没有找到方法)

目前的认识一:只有先激活某个图纸空间,才能在里面增加图元(但是可以修改图元,我目前在布局中插入页码就是用这个方法)

------------------------------------------------

修改1:认识一是错的。因为可以不激活某个图纸空间而在里面增加图元

如下:

Sub tt()
Dim blkdef As AcadBlock
Set blkdef = ThisDrawing.Layouts.Item("布局1").Block
Dim pt1(2) As Double, pt2(2) As Double
pt2(0) = 10
blkdef.AddLine pt1, pt2
End Sub

    当图纸比较大的时候,重生成模型的时候比较长,那能不能点击布局选项卡的时候让他不重生成模型呢?

    于是找CAD系统变量,看有没有什么变量能够控制它,找到了LAYOUTREGENCTL变量,摘录如下

LAYOUTREGENCTL
类型: 整数
保存位置: 注册表
初始值: 2
指定“模型”选项卡和布局选项卡中的显示列表的更新方式。 对于每个选项卡,更新显示列表的方法可以是切换到该选项卡时重生成图形,也可以是切换到该选项卡时将显示列表保存到内存并只重生成修改的对象。 修改 LAYOUTREGENCTL 设置可以提高性能。
0 每次切换选项卡都会重生成图形。
1 当在当前“模型”选项卡和上一个布局选项卡之间切换时,显示列表将被保存到内存中并禁止对它们进行重生成。 对于其他所有的布局选项卡,切换到它们时仍然进行重生成。
2 第一次切换选项卡时会重生成图形。 对于绘图任务中的其余选项卡,显示列表保存到内存,切换到这些选项卡时禁止重生成。
修改 LAYOUTREGENCTL 设置得到的性能取决于若干个因素,包括图形大小和类型、包含在图形中的对象、可用内存容量以及其他打开的图形或应用程序的影响。 LAYOUTREGENCTL 设置为 1 或 2 时,所使用的额外内存量为“模型”选项卡的显示列表的大小乘以为之保存显示列表的每个布局中的视口数目。
当 LAYOUTREGENCTL 设置为 1 或 2,性能总体变慢时,或者在显示列表为之保存的选项卡之间进行切换时,可以考虑设置为 0 或 1 以寻求工作环境的最优平衡。 有关性能设置的其他信息,请参见“系统”选项卡(位于“选项”对话框中)。
不论 LAYOUTREGENCTL 设置为何值,如果重新定义块或放弃选项卡切换,在第一次切换到任意包含保存视口的选项卡时重生成图形。

从上面看出不管设置哪个值,每次都会更新,不同的只是是否缓存。