明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 570|回复: 5

[【高飞鸟】] 两个个可能改善性能的CAD命令

  [复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 highflybird 于 2025-3-28 20:15 编辑

今天无意发现了两个 CAD命令: TreeDepth ,TreeMax ,设置这两个系统变量,可能会改善你的CAD绘图速度和提高选择时的效率。
先看:
TreeDepth

类型 整数
保存位置 图形
初始值 3020

指定最大深度,即树状结构的空间索引可以分出分支的次数。
[td]
0

禁用整个空间索引。处理大的图形时,这可能会抵消其对系统性能的改善。 此设置可以确保始终按照数据库顺序处理对象。

>0

打开空间索引。 值为整数,最多可包含五位数字。 前三位针对模型空间,后两位针对图纸空间。

<0

将模型空间对象视为二维对象(忽略 Z 坐标),就像图纸空间对象一样。 此设置适于二维图形,它可以充分利用内存而不会降低性能

不能透明使用 TREEDEPTH
TreeMax

类型 整数
保存位置 注册表
初始值 10000000

通过限制空间索引(八分树)中的节点数目,从而限制重生成图形时占用的内存。
通过用 TREEMAX 规定一个固定的限定值,可以加载在内存大于本系统内存,而其 TREEDEPTH 设置超出本系统处理能力的系统上创建的图形。 如果这些图形未经检查,可能会产生一个很大的八叉树,消耗的内存最终可能超出本系统上可用的内存。 TREEMAX 还提供了一种防范机制避免 TREEDEPTH 的值过大。
TREEMAX 的初始默认值是 10000000 (10M),这个值非常大,避免了 TREEMAX 控制 TREEDEPTH 的情形发生。 TREEMAX 应当设置的值取决于系统可用的 RAM。 每兆内存可以处理约 15,000 个八叉树节点。
如果一个八叉树需要使用多达 2M 的内存,请将 TREEMAX 设置为 30000 (2 x 15,000)。 如果程序为八叉树节点所分配的内存不足,请重新启动程序,并将 TREEMAX 设置为较小的数值,然后再次尝试加载图形。

程序有时可能会达到 TREEMAX 设置的限制。 请按照结果提示说明进行操作。 能否增加 TREEMAX 的值取决于计算机可用的内存。

与之还有一个相关的查询命令: TreeStat
从中可以看到,AutoCAD本身使用了 四叉树 八叉树的算法。

然后顺便找到了几个改善使用大型参照图形时的性能 时候使用的命令:
系统变量
控制是否创建图层和空间索引并将其保存到图形文件中
指定最大深度,即树状结构的空间索引可以分出分支的次数
通过限制空间索引(八分树)中的节点数目,从而限制重生成图形时占用的内存
打开或关闭外部参照的按需加载功能,并控制是打开参照的图形还是打开副本
创建用于存储按需加载的外部参照文件临时副本的路径

为了最大限度地发挥按需加载的优势,请将用作外部参照的图形与图层索引和空间索引一起保存。
图层索引是一个列表,显示哪些对象处在哪些图层上。 在程序按需加载参照图形时,将根据这一列表判断需要读取和显示哪些对象。 如果参照图形具有图层索引并被按需加载,则不读取参照图形中位于冻结图层上的对象。
空间索引根据对象在三维空间中的位置来组织对象。 在按需加载图形并将其作为外部参照剪裁时,这种组织方法可以有效地判断需要读取哪些对象。 如果打开按需加载,而图形作为外部参照附着并且被剪裁,程序使用外部参照图形中的空间索引确定哪些对象位于剪裁边界内部。 程序只将那些对象读入当前任务。
如果图形将用作其他图形的外部参照,并且启用了按需加载,那么在该图形中使用空间和图层索引最为适宜。 如果并不打算把图形用作外部参照,使用图层和空间索引或者按需加载就不会带来什么好处。


希望这些系统变量或者命令对你的编程和CAD使用有帮助。





评分

参与人数 2明经币 +2 金钱 +10 收起 理由
tranque + 1
tigcat + 1 + 10 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
在 AutoCAD 中,`TREEDEPTH` 和 `TREEMAX` 是两个系统变量,与软件如何处理空间索引(oct-tree,即八叉树)相关,直接影响绘图再生(regeneration)和内存使用效率。通过适当调整这两个变量,可以优化 AutoCAD 的运行性能,尤其是在处理复杂或大型绘图时。以下是它们的含义及设置建议:

---

### 1. TREEDEPTH(空间索引深度)
- **作用**:  
  `TREEDEPTH` 控制 AutoCAD 如何在空间中组织对象(通过八叉树结构)。它决定了对象的空间划分深度,影响绘图再生和对象选择的速度。
- **值说明**:  
  - 默认值通常为 `3020`。
  - 前两位(如 `30`)表示模型空间(Model Space)的深度,后两位(如 `20`)表示图纸空间(Paper Space)的深度。
  - 正值(如 `3020`)适用于 3D 绘图,按 X、Y、Z 坐标划分空间。
  - 负值(如 `-3020`)适用于 2D 绘图,忽略 Z 轴,仅按 X、Y 坐标划分。
- **如何加速**:  
  - 对于 **2D 绘图**,将 `TREEDEPTH` 设置为负值(例如 `-3020` 或 `-1050`),因为它减少了对 Z 轴的处理,能显著提高性能。
  - 对于 **3D 绘图**,保持正值,但可以根据文件复杂度调整。例如,增加到 `4050`(更深的模型空间划分)可能有助于更快定位对象,但过高可能增加内存负担。
- **建议**:  
  - 2D 项目:尝试 `-3020` 或 `-1050`。
  - 3D 项目:从默认 `3020` 开始,若性能仍慢,可逐步调整至 `4050`,但需配合 `TREEMAX` 避免内存溢出。

---

### 2. TREEMAX(最大节点数)
- **作用**:  
  `TREEMAX` 限制八叉树中的节点数量,从而控制绘图再生时的内存消耗。它的值决定了 AutoCAD 在构建空间索引时最多允许多少个节点。
- **值说明**:  
  - 默认值通常为 `10000000`(1000 万),这是一个非常高的值,基本不起限制作用。
  - 每个节点约占用 1 MB RAM 的 1/15000(即 15,000 节点 ≈ 1 MB)。
- **如何加速**:  
  - 如果你的机器内存有限(例如只有 1 GB RAM),降低 `TREEMAX` 可以防止 AutoCAD 耗尽内存,从而避免崩溃或减缓。
  - 如果内存充足(例如 16 GB 或更高),可以适当增加 `TREEMAX`,让 AutoCAD 构建更大的索引,加快复杂绘图的处理。
- **计算方法**:  
  - 根据可用 RAM 计算。例如:
    - 1 GB RAM ≈ 1024 MB,可支持约 15,000 × 1024 = 15,360,000 个节点。
    - 若想限制在 50% 内存使用量,设 `TREEMAX` 为 7,680,000。
  - 实际中,通常不需要精确计算,建议从默认值调整并测试。
- **建议**:  
  - 低内存机器(1 GB RAM):设为 `500000` 到 `1000000`。
  - 高内存机器(8 GB+):可尝试 `20000000` 或更高,但观察是否提升性能。

---

### 设置方法
1. 在 AutoCAD 命令行输入 `TREEDEPTH`,按回车,输入新值(如 `-3020`)。
2. 输入 `TREEMAX`,按回车,输入新值(如 `1000000`)。
3. 保存设置后,重启 AutoCAD 或重新加载绘图,测试性能。

---

### 优化建议
- **根据绘图类型调整**:  
  - 2D 绘图:`TREEDEPTH = -3020`,`TREEMAX = 1000000`(假设 1 GB RAM)。
  - 3D 绘图:`TREEDEPTH = 4050`,`TREEMAX = 5000000`(视内存而定)。
- **测试与平衡**:  
  - 逐步调整并观察绘图再生时间(用 `REGEN` 命令测试)。
  - 如果设置过高导致内存不足,AutoCAD 可能崩溃,需降低值。
- **硬件支持**:  
  - 你的机器只有 1 GB RAM,属于较低配置。优先降低 `TREEMAX`(如 500,000)以确保稳定性,再调整 `TREEDEPTH`。
  - 若条件允许,升级 RAM(建议至少 4 GB)会带来更大性能提升。

---

### 注意事项
- 这些变量的效果因绘图复杂度、对象数量和硬件配置而异,需实际测试。
- 现代 AutoCAD 版本(例如 2025 年)对硬件依赖更大,`TREEDEPTH` 和 `TREEMAX` 的影响可能不如早期版本显著,但仍可优化低配系统。

如果你能提供更多信息(例如绘图是 2D 还是 3D、文件大小等),我可以进一步细化建议!
回复 支持 1 反对 0

使用道具 举报

发表于 4 天前 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-3-29 16:08 编辑

顺便一贴,四叉树如何构造
https://www.cnblogs.com/JJBox/p/15512317.html
我的实际上是无限树深度,
内存这种东西要炸就炸,不炸继续.
耗尽内存直接256G/服务器2T内存.
听过爆栈,什么时候爆堆过呢...
而且不同的数据量有不同的优化措施,
例如一亿个对象的建立现在也是轻轻松松的.

这两个变量应该不会引起卡顿.
约束了树深度,就会把图元储存在同一节点,
导致每次选择,触发索引就慢一点,
从O(log4(n))变成O(log4(n+m))
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
这可能会抵消其对系统性能的改善。
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
谢谢[【高飞鸟】]大师的帮助!
回复 支持 反对

使用道具 举报

发表于 前天 10:29 | 显示全部楼层
tigcat 发表于 2025-3-29 11:03
在 AutoCAD 中,`TREEDEPTH` 和 `TREEMAX` 是两个系统变量,与软件如何处理空间索引(oct-tree,即八叉树) ...

感谢tigcat大佬翻译成我能看懂的话
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-1 08:27 , Processed in 0.179660 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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