我尝试使用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获取它们),但它们是隐藏的。如果我选择它们并添加见证线,则现在可以再次显示该尺寸。 我试图关闭并重新打开Revit并将vien放在一张纸上。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
您需要重新生成我认为的视图。
尝试添加:
int work_start = 10, int work_end = 18
答案 1 :(得分:0)
https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement是问题的答案。 它的Autodesk必须解决它,但解决方法是使用不可见的引用创建Dimensions,然后删除它们。