首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Revit中创建新的SubCategory LineStyle

在Revit中创建新的SubCategory LineStyle
EN

Stack Overflow用户
提问于 2014-06-20 22:06:43
回答 1查看 2.2K关注 0票数 1

我创建了一段代码,用于收集Revit中现有“线条样式”的列表。

代码语言:javascript
复制
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时使用的默认模式吗?

EN

回答 1

Stack Overflow用户

发布于 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#版本:

代码语言:javascript
复制
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());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24329204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档