簡體   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