将视图中的尺寸复制到另一个 Revit API
Copy dimensions from a View to another Revit API
我正在尝试使用 API 在 Revit 2016/2017 上创建一个新插件。
这个想法是将一组元素从小型 revit 文件复制到一个中央文件以进行编译。
这是我正在使用的代码:
FilterableValueProvider provider = new ParameterValueProvider(new ElementId(BuiltInParameter.ALL_MODEL_TYPE_NAME));
FilterRule rule = new FilterStringRule(provider, new FilterStringContains(), "BY_GO", false);
ElementParameterFilter epf = new ElementParameterFilter(rule, true);
ICollection<ElementId> npText = new FilteredElementCollector(secDoc, secView.Id).WherePasses(epf).ToElementIds();
using (TransactionGroup tx = new TransactionGroup(mainDoc, "Insert " + Main._roomFile.Typology))
{
ICollection<ElementId> pastedElements;
tx.Start();
using (Transaction tr = new Transaction(mainDoc, "Copy elements"))
{
tr.Start();
pastedElements = ElementTransformUtils.CopyElements(secView, npText, mainView, null, new CopyPasteOptions());
tr.Commit();
}
using (Transaction tr = new Transaction(mainDoc, "Move elements"))
{
tr.Start();
pastedElements = new FilteredElementCollector(mainDoc, pastedElements).WherePasses(epf).ToElementIds();
XYZ originePoint = new FilteredElementCollector(mainDoc, pastedElements).OfClass(typeof(Floor)).First().get_BoundingBox(null).Min;
XYZ translation = extremitePoint - originePoint;
translation = new XYZ(translation.X, translation.Y, 0);
ElementTransformUtils.MoveElements(mainDoc, pastedElements, translation);
tr.Commit();
}
tx.Assimilate();
}
我用的时候,除了尺寸,其他都很好。它们在新文档中(我可以通过 ID 和 RevitLookup 获取它们)但它们是隐藏的。如果我 select 在其中添加尺寸界线并添加尺寸界线,则尺寸现在再次可见。
我试图关闭并重新打开 Revit 并将 vien 放在 sheet bt nothing.
有什么想法吗?
谢谢!
你需要重新生成我认为的视图。
尝试添加:
Document.Regenerate();
Here就是问题的答案。
Autodesk 必须解决它,但解决方法是使用不可见尺寸的参考创建尺寸,然后删除它们。
我正在尝试使用 API 在 Revit 2016/2017 上创建一个新插件。 这个想法是将一组元素从小型 revit 文件复制到一个中央文件以进行编译。
这是我正在使用的代码:
FilterableValueProvider provider = new ParameterValueProvider(new ElementId(BuiltInParameter.ALL_MODEL_TYPE_NAME));
FilterRule rule = new FilterStringRule(provider, new FilterStringContains(), "BY_GO", false);
ElementParameterFilter epf = new ElementParameterFilter(rule, true);
ICollection<ElementId> npText = new FilteredElementCollector(secDoc, secView.Id).WherePasses(epf).ToElementIds();
using (TransactionGroup tx = new TransactionGroup(mainDoc, "Insert " + Main._roomFile.Typology))
{
ICollection<ElementId> pastedElements;
tx.Start();
using (Transaction tr = new Transaction(mainDoc, "Copy elements"))
{
tr.Start();
pastedElements = ElementTransformUtils.CopyElements(secView, npText, mainView, null, new CopyPasteOptions());
tr.Commit();
}
using (Transaction tr = new Transaction(mainDoc, "Move elements"))
{
tr.Start();
pastedElements = new FilteredElementCollector(mainDoc, pastedElements).WherePasses(epf).ToElementIds();
XYZ originePoint = new FilteredElementCollector(mainDoc, pastedElements).OfClass(typeof(Floor)).First().get_BoundingBox(null).Min;
XYZ translation = extremitePoint - originePoint;
translation = new XYZ(translation.X, translation.Y, 0);
ElementTransformUtils.MoveElements(mainDoc, pastedElements, translation);
tr.Commit();
}
tx.Assimilate();
}
我用的时候,除了尺寸,其他都很好。它们在新文档中(我可以通过 ID 和 RevitLookup 获取它们)但它们是隐藏的。如果我 select 在其中添加尺寸界线并添加尺寸界线,则尺寸现在再次可见。 我试图关闭并重新打开 Revit 并将 vien 放在 sheet bt nothing.
有什么想法吗?
谢谢!
你需要重新生成我认为的视图。
尝试添加:
Document.Regenerate();
Here就是问题的答案。 Autodesk 必须解决它,但解决方法是使用不可见尺寸的参考创建尺寸,然后删除它们。