繁体   English   中英

控制导入类别的可见性

[英]Controlling Visibility Of Imported Categories

我正在编写一个程序,以从导入的AutoCAD文件中关闭某些“子类别”(例如“ DEFPOINTS”,可以说应该将其自动隐藏或不在Revit中绘图)。 下面的代码似乎应该工作,但是反而会踢出一个奇怪的错误。

Transaction Do_Filtered_VG = new Transaction(doc, "FilteredVG")
Autodesk.Revit.DB.View CurrentView = doc.ActiveView;
Categories categories = doc.Settings.Categories; string CatUp = string.Empty;
List<Category> ToBeOff = new List<Category>();
List<string> myCategories = new List<string>();
foreach (Category c in categories)
{
    if (c.Name.ToLower().EndsWith("dwg"))
    {
        List<Category> SubCategories = new List<Category>();
        foreach (Category One_Cat in c.SubCategories)
        {
            CatUp = One_Cat.Name.ToUpper();
            if (CatUp.Contains("DEFPOINTS") || CatUp.Contains("NPLT") || CatUp.Contains("RDFF") || CatUp.Contains("SDFF") || CatUp.Contains("DUCT"))//or other pattern;
            {
                 myCategories.Add(One_Cat.Name); ToBeOff.Add(One_Cat);
            }
        }
    }
}
Do_Filtered_VG.Start();
foreach (Category One_Cat in ToBeOff)
{
    CurrentView.SetVisibility(One_Cat, false);
}
Do_Filtered_VG.Commit();
TestCodeX.If_Tony("Would Turn Off Layers:", TestCodeX.List_To_Dialog(myCategories));

给出的错误是:无法设置类别3的可见属性,因为它是用户隐藏的事务或子事务已打开但未关闭”。这很奇怪,因为“等级3”不是类别,而是ActiveView 。

但是我的交易是打开和关闭的。 我无法在在线搜索中找到hiddenA。 我还尝试使用以下构造:One_Cat.get_Visibility(CurrentView)(以尝试至少查看类别是否可见),这导致了相同的错误。 我还将我的引用从RevitAPI(2014)更改为(2015)和(2016),但未更改错误。 我的代码正确过滤了我想关闭的图层名称,如myCategories的“将关闭图层:” TaskDialog回显所示。 但是,每当未注释掉.SetVisibility行时,我都会得到描述的错误。

还有其他方法可以关闭RevitAPI中类别的可见性吗? 还是我需要使用其他交易方法?

存在一些内部类别,但是您无法设置可见性。 我没有便利的SDK,但是在“ Category.AllowsVisibilityControl [view]”中有一个属性,它将告诉您在当前视图中隐藏该类别是否合法。

因此,您将在代码中执行以下操作:

// inside your existing IF about the category name...
if (One_Cat.AllowsVisibilityControl[CurrentView])
{     
    myCategories.Add(One_Cat.Name); ToBeOff.Add(One_Cat);
}

我在您的代码中看到一个与事务有关的问题:您创建了一个新事务,但是从不对其调用StartCommit

请阅读有关处理事务和事务组的Building Coder主题组,以了解如何使用事务并将其包含在using语句中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM