C# CAD 创建编组
时间: 2023-11-22 11:43:51 浏览: 99
要在 C# 中创建编组,可以使用 Autodesk.AutoCAD.DatabaseServices.BlockTableRecord 类。首先,需要获取当前文档的数据库对象,然后创建一个新的块表记录对象,并将其添加到块表中。接下来,可以将需要编组的实体对象添加到块表记录中,最后将块表记录添加到块表中即可。
以下是示例代码:
```
// 获取当前文档的数据库对象
Database db = HostApplicationServices.WorkingDatabase;
// 创建新的块表记录对象
BlockTableRecord btr = new BlockTableRecord();
// 将需要编组的实体对象添加到块表记录中
btr.AppendEntity(entity1);
btr.AppendEntity(entity2);
// ...
// 将块表记录添加到块表中
BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForWrite) as BlockTable;
bt.Add(btr);
db.TransactionManager.AddNewlyCreatedDBObject(btr, true);
```
相关问题
cad c# 创建匿名组
在 AutoCAD 中使用 C# 创建匿名组可以使用以下代码:
```csharp
// 创建匿名组
public void CreateGroup()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
// 获取要添加到组中的实体 ID
ObjectId[] ids = GetEntityIds();
using (Transaction tr = db.TransactionManager.StartTransaction())
{
// 创建组
Group group = new Group(true, true);
// 将实体添加到组中
foreach (ObjectId id in ids)
{
Entity ent = tr.GetObject(id, OpenMode.ForRead) as Entity;
group.Append(id);
}
// 将组添加到数据库中
DBDictionary namedObjects = tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite) as DBDictionary;
namedObjects.SetAt("MyGroup", group);
tr.AddNewlyCreatedDBObject(group, true);
tr.Commit();
}
}
// 获取要添加到组中的实体 ID
private ObjectId[] GetEntityIds()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
PromptSelectionResult selResult = ed.GetSelection();
if (selResult.Status != PromptStatus.OK)
{
return new ObjectId[0];
}
SelectionSet selSet = selResult.Value;
ObjectId[] ids = selSet.GetObjectIds();
return ids;
}
```
上述代码中,`CreateGroup()` 方法用于创建匿名组。首先获取要添加到组中的实体 ID,然后创建一个 `Group` 对象,将实体逐个添加到组中,最后将组添加到数据库中。
`GetEntityIds()` 方法用于获取要添加到组中的实体 ID。该方法使用 `Editor` 类的 `GetSelection()` 方法获取用户选择的实体,并返回它们的 ID 数组。
注意:在 AutoCAD 中,匿名组是通过在命名对象字典中创建具有唯一名称的组来实现的。因此,如果您想要创建多个匿名组,则需要为每个组使用不同的名称。
C# CAD 把图元 创建 匿名组
在C# CAD中,创建匿名组的方法如下:
1. 首先,创建一个新组对象:
```csharp
Group newGroup = new Group();
```
2. 然后,将需要添加到组中的图元对象添加到组的成员列表中:
```csharp
newGroup.AppendEntity(entityId);
```
其中,entityId是要添加到组中的图元对象的ObjectId。
3. 最后,将组对象添加到模型空间中:
```csharp
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
BlockTableRecord btr = trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
btr.AppendEntity(newGroup);
trans.AddNewlyCreatedDBObject(newGroup, true);
trans.Commit();
}
```
这样,就可以创建一个匿名组,并将图元对象添加到其中。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)