我创建了一段代码,用于收集Revit中现有“线条样式”的列表。
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));
}这将获得线条样式列表,但当我尝试时: Category New_Line_Style = Line_Category.NewSubCategory...Visual Studio告诉我没有对NewSubCategory的定义
谁能告诉我如何创建一个“行”的新SubCategory,或者我在上面的代码中做错了什么?
注意:我发现了主要问题。我试图将子类别添加到我的变量Line_Category (它本身就是一个类别,它应该是一个父类别)。我还曾尝试将子类别添加到All_Categories (它被转换为列表而不是CategoryNameMap)。
当我添加一个未强制转换的变量时,NewSubCategory变得可用。但是,现在我不知道如何设置与我的新样式相关联的线条模式--我在网上找到的唯一示例建议使用New_Line_Style.LinePatternId,但这不在我的新SubCategory上的可用选项列表中。有什么方法可以设置在创建新SubCategory时使用的默认模式吗?
发布于 2014-06-22 01:21:17
Jeremy Tammik在这里写了一篇关于检索所有线型的文章:http://thebuildingcoder.typepad.com/blog/2013/08/retrieving-all-available-line-styles.html。这可能有助于更详细地解释一些线型类别的东西。
这里有另一个很好的链接,问了同样的问题,以及如何使用VB:http://thebuildingcoder.typepad.com/blog/2013/08/retrieving-all-available-line-styles.html解决这个问题。以下是适用于新线型的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());
}https://stackoverflow.com/questions/24329204
复制相似问题