# 场景管理

AnyCAD支持多场景,使用内置的SceneManager统一管理。通过ViewContext.GetSceneManager可以得到SceneManager。通过SceneManager.GetScene方法可得到默认的Scene。Scene可以用来管理SceneNode,通过GroupSceneNode可以构建树形的场景结构。

TIP

SceneNode不支持多次加入场景,即SceneNode在整个场景中只能存在一个。

SceneNode

# 场景节点状态

通过SceneNode可以设置显示对象的可见性、可选择性、用户业务系统的UserId。

每个对象具有session级别的全局唯一的ID,称之为Uuid。

# 三维对象管理

Scene提供了API添加、删除、遍历显示对象。

# 对象查找

使用Scene.FindNode方法通过对象的uuid查找SceneNode对象。

# 对象类型转换

SceneNode是所有类型SceneNode的基类,比如BrepSceneNode、PrimitiveSceneNode等。使用BrepSceneNode.Cast方法可以把SceneNOde对象转换为BrepSceneNode对象,其他类型的显示对象亦然。

# 对象删除

使用Scene.RemoveNode方法通过显示对象的Uuid可以删除显示对象。

# 对象遍历

SceneNodeIterator用于遍历Scene场景中所有的显示对象。 Scene.CreateIterator()创建SceneNodeIterator,使用以下方法遍历:


for(var itr = scene.CreateIterator();itr.More(); itr.Next())
{
    var node = itr.Current();
    //....
}
1
2
3
4
5
6

# 对象选择

SelectionManager.Select可以根据对象的ID来选择对象。

# 二维对象管理

Scene2D用于管理二维对象,用法与Scene类似。

Last Updated: 2/17/2021, 9:01:27 PM