2014-06-20 3 views
1

Revit에서 기존 "선 스타일"목록을 모으는 코드를 만들었습니다.Revit에서 새 SubCategory LineStyle 만들기

List<Category> All_Categories = doc.Settings.Categories.Cast<Category>().ToList(); 
Category Line_Category = All_Categories[1]; 
foreach (Category one_cat in All_Categories) { if (one_cat.Name == "Lines") { Line_Category = one_cat;} } 
if (Line_Category.CanAddSubcategory) 
{ 
     CategoryNameMap All_Styles = Line_Category.SubCategories; List<string> Line_Styles = new List<string>(); 
     foreach (Category one_category in All_Styles) { if (one_category.Name.Contains("CO_NAME")) {Line_Styles.Add(one_category.Name); } } 
       TaskDialog.Show(Line_Styles.Count.ToString() + " Current Line Styles", List_To_Dialog(Line_Styles)); 
} 

이 선 스타일의 목록을 가져옵니다,하지만 난하려고하면 카테고리 New_Line_Style = Line_Category.NewSubCategory .... Visual Studio에서

사람이 말해 줄 수 NewSubCategory

에 대한 정의가없는 나에게 말한다 "Lines"의 새 하위 카테고리를 만드는 방법 또는 위의 코드에서 내가 잘못하고있는 작업은 무엇입니까?

참고 : 주요 문제점을 발견했습니다. 내 변수 Line_Category에 하위 카테고리를 추가하려고 시도하고있었습니다 (이 카테고리 자체는 부모 여야 함). 나는 또한 All_Categories (CategoryNameMap이 아닌 목록으로 캐스팅 된)에 하위 카테고리를 추가하려고 시도했다.

캐스트되지 않은 변수를 추가하면 NewSubCategory를 사용할 수있게되었습니다. 그러나 이제는 새로운 스타일과 관련된 선 패턴을 설정하는 방법을 볼 수 없습니다. 온라인에서 NewLine_Style.LinePatternId를 사용하여 제안한 유일한 예는 새 하위 카테고리에서 사용할 수있는 옵션 목록에 없습니다. 새 하위 범주를 만들 때 사용할 기본 패턴을 설정하는 방법이 있습니까?

답변

1

제레미 탐밋 (Jeremy Tammik)은 여기에서 모든 선 스타일 검색에 대한 게시물을 작성했습니다 : http://thebuildingcoder.typepad.com/blog/2013/08/retrieving-all-available-line-styles.html. 그것은 linestyle 카테고리 물건의 일부를 더 자세히 설명하는 데 도움이 될 수 있습니다.

동일한 질문을하고 VB를 사용하여 해결 된 또 다른 좋은 링크가 있습니다 : http://thebuildingcoder.typepad.com/blog/2013/08/retrieving-all-available-line-styles.html. 여기에 새로운 이는 linestyle 일했던 VB 코드의 C# 버전입니다 : 대답에 대한

UIApplication app = commandData.Application; 
UIDocument uidoc = app.ActiveUIDocument; 
Document ptr2Doc = uidoc.Document; 

Category lineCat = ptr2Doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines); 
Category lineSubCat; 
string newSubCatName = "NewLineStyle"; 
Color newSubCatColor = new Color(255, 0, 0); //Red 

try 
{ 
    using (Transaction docTransaction = new Transaction(ptr2Doc, "hatch22 - Create SubCategory")) 
    { 
    docTransaction.Start(); 
    lineSubCat = ptr2Doc.Settings.Categories.NewSubcategory(lineCat, newSubCatName); 
    lineSubCat.LineColor = newSubCatColor; 
    docTransaction.Commit(); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
+0

덕분에 ..... 그러나, 나는 내 질문의 마지막 단락이 사실에 부분적인 대답이라고 명확히해야합니다. 나는 선 스타일을 만들 수 있었다. 그러나 모든 내 선 스타일은 이름이 무엇이든 상관없이 선 패턴 SOLID에 매핑됩니다. 색상과 선 두께를 모두 수정할 수 있었지만 선 패턴을 수정할 수없는 경우이 방법은 모두 쓸모가 없습니다. 물론 나는 이것을 "손으로"수정할 수 있지만, 이것은 프로그램이 상황 (콘크리트 대 강철) 또는 클라이언트를 기반으로 일련의 선 스타일을 자동으로 생성 할 수있게하는 목적의 대부분을 무효로 만듭니다. – KeachyPeen