C# 将尺寸从视图复制到另一个Revit API

C# 将尺寸从视图复制到另一个Revit API,c#,revit-api,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

我正在尝试使用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();
}
FilterableValueProvider provider=新的参数ValueProvider(新的ElementId(内置参数.ALL_MODEL_TYPE_NAME));
FilterRule规则=new FilterStringRule(提供程序,new FilterStringContains(),“按”,false);
ElementParameterFilter epf=新的ElementParameterFilter(规则,true);
ICollection npText=newfilteredelementcollector(secDoc,secView.Id).wherepasss(epf).ToElementIds();
使用(TransactionGroup tx=新TransactionGroup(mainDoc,“插入”+Main.\u roomFile.Typology))
{
i收集膏缺失;
tx.Start();
使用(事务tr=新事务(mainDoc,“复制元素”))
{
tr.Start();
pastedElements=ElementTransformUtils.CopyElements(secView、npText、mainView、null、new CopyPasteOptions());
tr.Commit();
}
使用(事务tr=新事务(mainDoc,“移动元素”))
{
tr.Start();
pastedElements=新的FilterDelementCollector(mainDoc,pastedElements).WherePass(epf).ToelementId();
XYZ originePoint=new FilteredElementCollector(mainDoc,pastedElements).OfClass(typeof(Floor)).First().get_BoundingBox(null).Min;
XYZ平移=极值点-原点;
平移=新的XYZ(translation.X,translation.Y,0);
ElementTransformUtils.MoveElements(mainDoc、粘贴删除、翻译);
tr.Commit();
}
同化物();
}
当我使用它时,除了尺寸之外,其他一切都很好。它们在新文档中(我可以用那里的id和RevitLookup获取它们),但它们是隐藏的。如果选择其中一个并添加尺寸界线,则尺寸标注现在再次可见。 我尝试关闭并重新打开Revit,并将vien放置在图纸上

有什么想法吗


谢谢大家!

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

尝试添加:

Document.Regenerate();
这就是问题的答案。 Autodesk必须解决此问题,但解决方法是使用“不可见”的参照创建尺寸标注,然后将其删除