我們知道,手工創建一條帶顏色的線過程如下:
- 新建族,例如,使用模板“Generic Annotation.rft”
- 點擊菜單“創建” > “直線”,畫一條線
- 選中該線,“管理” > ”對象樣式",可以看見裏面有多個類別
- 選中“常規註釋”,修改子類別的“新建”按鈕高亮,點擊“新建”,新建一個子類別,並設置顏色和線寬
- 關閉窗口,再次選擇該線
- 在“修改|線”,子類別下面的多選框中就出現了我們新建的子類別,可以選擇它。至此帶顏色的線創建完成。
- 首先,我們畫的線是DetailLine,所以,應該使用Document.FamilyCreate.NewDetailCurve方法來創建。
- 而設置線形可以使用DetailLine.LineStyle屬性。
- 創建子類別使用Categories.NewSubcategory(Category parentCategory, string name)方法。
- 目前唯一的問題就剩下NewSubcategory裏面的參數parentCategory是什麼了。
public void CreateSubCategoryAndDetailLine(Document doc)
{
var categories = doc.Settings.Categories;
var subCategoryName = "MySubCategory";
Category category = doc.Settings.Categories.
get_Item(BuiltInCategory.OST_GenericAnnotation);
Category subCategory = null;
if (!category.SubCategories.Contains(subCategoryName))
{
subCategory = categories.NewSubcategory(category,
subCategoryName);
var newcolor = new Color(250, 10, 0);
subCategory.LineColor = newcolor;
subCategory.SetLineWeight(10, GraphicsStyleType.Projection);
}
else
subCategory = category.SubCategories.get_Item(subCategoryName);
Line newLine = Line.CreateBound(
new XYZ(0, 1, 0), new XYZ(-1, 0, 0));
var detailLine = doc.FamilyCreate.NewDetailCurve(
doc.ActiveView, newLine);
detailLine.LineStyle = subCategory.GetGraphicsStyle(
GraphicsStyleType.Projection);
}
執行的結果: