在Revit 2013中,我使用的工具可以将尺寸从一个绘图视图复制到另一个绘图视图。我已经准确地创建了维度的新版本,包括Curve
,DimensionType
和References
,但我遇到了属性问题Above
,{ {1}},Below
和Prefix
。如果至少其中一个有值,它们就可以复制。但是,如果它们都没有值,那么当我尝试访问它们时它将抛出Suffix
。我试图捕获该异常,但它冒泡并且崩溃Revit(我假设它是由本机代码导致失败)。
如何在不触发此AccessViolationException
的情况下进行复制时检查这些属性是否具有任何值?
Autodesk Discussion Group Question
AccessViolationException
类是我自己用来存储维度信息的,因此可以用它来创建单独文档中的维度。
DimensionData
答案 0 :(得分:0)
关于交易:据我所知,当您进行任何类型的更改(修改,删除,添加)时,您只需要在交易中。如果您所做的只是收集维度信息,则不需要事务,但是当您使用该信息在另一个文档中创建新维度时,该代码必须位于事务内。我有一些正在开发的程序尚未修改文档,只是收集参数设置并将它们发布到TaskDialog.Show()。这些程序工作正常,我在代码中看不到任何实际修改模型的内容,因此这似乎不是您的问题。
答案 1 :(得分:-1)
好像我错了。 您可以将问题发布到ADN支持吗?
我建议的解决方案是使用Parameters
代替Dimension element
类属性的Dimension
。
例如,您可以通过以下代码获取Suffix
和Prefix
var suffixParameter =
oldDimension.get_Parameter(BuiltInParameter.SPOT_SLOPE_SUFFIX);
string suffix = null;
if (suffixParameter != null)
{
suffix = suffixParameter.AsString();
}
var prefixParameter =
oldDimension.get_Parameter(BuiltInParameter.SPOT_SLOPE_PREFIX);
string prefix = null;
if (prefixParameter != null)
{
prefix = prefixParameter.AsString();
}
不幸的是,我没有告诉你如何通过参数获取Above
和Below
属性,因为我没有要测试的项目。但您可以使用BuiltInParameter Checker
希望它有所帮助。