revit 二次开发 怎么将CADLinkType 转换成 ImportInstance
时间: 2024-02-25 19:53:10 浏览: 24
在 Revit 二次开发中,可以使用以下代码将 CADLinkType 转换为 ImportInstance:
```
// 获取 CADLinkType
CADLinkType cadLinkType = ...;
// 获取 CAD 文件路径
string cadFilePath = cadLinkType.get_Path();
// 创建 ImportInstance
ImportInstance importInstance = ImportInstance.Create(
doc,
cadFilePath,
new Transform()
);
// 删除 CADLinkType
doc.Delete(cadLinkType.Id);
```
以上代码中,`doc` 是当前 Revit 文档对象,`cadLinkType` 是需要转换的 CADLinkType 对象,`cadFilePath` 是该 CADLinkType 对应的 CAD 文件路径。通过 `ImportInstance.Create()` 方法可以创建一个新的 ImportInstance 对象,最后通过 `doc.Delete()` 方法删除原来的 CADLinkType 对象。
相关问题
revit 二次开发 怎么将ImportInstance 转换成 CADLinkType
在 Revit 二次开发中,可以使用以下代码将 ImportInstance 转换为 CADLinkType:
```
// 获取 ImportInstance
ImportInstance importInstance = ...;
// 获取 ImportInstance 的图元 ID
ElementId importInstanceId = importInstance.Id;
// 获取 ImportInstance 对应的 CAD 文件路径
string cadFilePath = importInstance.get_Parameter(
BuiltInParameter.IMPORT_PATH
).AsString();
// 获取 CADLinkOptions 对象
CADLinkOptions cadLinkOptions = new CADLinkOptions();
// 设置 CADLinkOptions 对象的参数
cadLinkOptions.OptimizeImportFor = CADImportOption.OptimizeFor.AutoCAD;
cadLinkOptions.ColorMode = CADColorMode.BlackAndWhite;
cadLinkOptions.Unit = ImportUnit.Inch;
cadLinkOptions.ColorDepth = 256;
cadLinkOptions.RasterQuality = RasterQuality.High;
// 创建 CADLinkType
CADLinkType cadLinkType = CADLinkType.Create(
doc,
cadFilePath,
importInstanceId,
cadLinkOptions
);
// 删除 ImportInstance
doc.Delete(importInstanceId);
```
以上代码中,`doc` 是当前 Revit 文档对象,`importInstance` 是需要转换的 ImportInstance 对象。通过 `importInstance.Id` 获取 ImportInstance 的图元 ID,通过 `importInstance.get_Parameter()` 方法获取 ImportInstance 对应的 CAD 文件路径。然后创建一个 CADLinkOptions 对象并设置其参数,最后通过 `CADLinkType.Create()` 方法创建一个新的 CADLinkType 对象,并通过 `doc.Delete()` 方法删除原来的 ImportInstance 对象。
revit 二次开发 怎么将ImportInstance as CADLinkType
在Revit二次开发中,可以通过以下代码将ImportInstance转换为CADLinkType:
```
// 获取ImportInstance
ImportInstance importInstance = ...;
// 获取ImportInstance的图元ID
ElementId importInstanceId = importInstance.Id;
// 获取ImportInstance对应的CAD文件路径
string cadFilePath = importInstance.get_Parameter(
BuiltInParameter.IMPORT_PATH
).AsString();
// 获取CADLinkOptions对象
CADLinkOptions cadLinkOptions = new CADLinkOptions();
// 创建CADLinkType
CADLinkType cadLinkType = CADLinkType.Create(
doc,
cadFilePath,
importInstanceId,
cadLinkOptions
);
// 获取CADLinkType的图元ID
ElementId cadLinkTypeId = cadLinkType.Id;
// 用CADLinkType替换ImportInstance
ElementTransformUtils.CopyParameters(importInstance, cadLinkType, false);
ElementTransformUtils.TransferOwnership(importInstance, cadLinkType);
// 删除ImportInstance
doc.Delete(importInstanceId);
```
以上代码中,`doc`是当前Revit文档对象,`importInstance`是需要转换的ImportInstance对象。通过 `importInstance.Id` 获取ImportInstance的图元ID,通过`importInstance.get_Parameter()`方法获取ImportInstance对应的CAD文件路径。然后创建一个CADLinkOptions对象并设置其参数。使用`CADLinkType.Create()`方法创建一个新的CADLinkType对象,并通过`doc.Delete()`方法删除原来的ImportInstance对象。最后,使用`ElementTransformUtils.CopyParameters()`和`ElementTransformUtils.TransferOwnership()`方法将CADLinkType替换原来的ImportInstance对象。