将维度从View复制到另一个Revit API

时间:2017-07-12 15:08:31

标签: c# 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获取它们),但它们是隐藏的。如果我选择它们并添加见证线,则现在可以再次显示该尺寸。 我试图关闭并重新打开Revit并将vien放在一张纸上。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要重新生成我认为的视图。

尝试添加:

int work_start = 10, int work_end = 18

答案 1 :(得分:0)

https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement是问题的答案。 它的Autodesk必须解决它,但解决方法是使用不可见的引用创建Dimensions,然后删除它们。