Revit二次开发_获取视图样式替换

来源:建筑界编辑:黄子俊发布时间:2020-03-22 19:39:25

[摘要]         目的是用于导出视图样板中的图形替换,但Revit中视图样板其实也属于视图,所以对于所有视图都通用。        方

        目的是用于导出视图样板中的图形替换,但Revit中视图样板其实也属于视图,所以对于所有视图都通用。

       方法十分简单,视图中的样式替换都可以通过OverrideGraphicSettings读取,要注意的地方是需要对读出来的数据一些判别。

        对于类别替换的写入其实方法十分类似,几乎可以套用。

        以下代码:

        private class ViewGraphicOverride        {            static Document _doc;            static View _view;            static Category _category;            public ViewGraphicOverride(Document document,View view,string categoryName)            {                _doc = document;                _view = view;                _category = _doc.Settings.Categories.get_Item(categoryName);            }            //可见性            public string CategoryVisible            {                get                {                    return _view.GetVisibility(_category) ?"是":"否";                }            }            //投影线宽            public string ProjectionLineWeight            {                get                {                    string lineWeight ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    if (ogs.ProjectionLineWeight != -1) lineWeight = ogs.ProjectionLineWeight.ToString();                    return lineWeight;                }            }            //投影线颜色            public string ProjectionLineColor            {                get                {                    string lineColor ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    if (ogs.ProjectionLineColor.IsValid)                    {                        Color rgb = ogs.ProjectionLineColor;                        lineColor = rgb.Red.ToString() + ',' + rgb.Green.ToString() + ',' + rgb.Blue;                    }                    return lineColor;                }            }            //投影线样式            public string ProjectionLinePatternName            {                get                {                    string linePatternName ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    ElementId patternId = ogs.ProjectionLinePatternId;                    if (patternId.IntegerValue != -1)                    {                        if (patternId.IntegerValue == -3000010)                        {                            linePatternName ="实线";                        }                        else                        {                            linePatternName = LinePatternElement.GetLinePattern(_doc, patternId).Name;                        }                    }                    return linePatternName;                }            }            //表面填充样式替换可见性            public string IsProjectionFillPatternVisible            {                get                {                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    return ogs.IsProjectionFillPatternVisible ?"是":"否";                }            }            //表面填充颜色            public string ProjectionFillColor            {                get                {                    string fillColor ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    if (ogs.ProjectionFillColor.IsValid)                    {                        Color rgb = ogs.ProjectionFillColor;                        fillColor = rgb.Red.ToString() + ',' + rgb.Green.ToString() + ',' + rgb.Blue;                    }                    return fillColor;                }            }            //表面填充样式            public string ProjectionFillPatternName            {                get                {                    string fillPatternName ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    ElementId patternId = ogs.ProjectionFillPatternId;                    if (patternId.IntegerValue != -1)                    {                        fillPatternName = _doc.GetElement(patternId).Name;                    }                    return fillPatternName;                }            }            //透明度            public int Transparency            {                get                {                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    return ogs.Transparency;                }            }            //截面线宽            public string CutLineWeight            {                get                {                    string lineWeight ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    if (ogs.CutLineWeight != -1) lineWeight = ogs.CutLineWeight.ToString();                    return lineWeight;                }            }            //截面线颜色            public string CutLineColor            {                get                {                    string lineColor ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    if (ogs.CutLineColor.IsValid)                    {                        Color rgb = ogs.CutLineColor;                        lineColor = rgb.Red.ToString() + ',' + rgb.Green.ToString() + ',' + rgb.Blue;                    }                    return lineColor;                }            }            //截面线样式            public string CutLinePatternName            {                get                {                    string linePatternName ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    ElementId patternId = ogs.CutLinePatternId;                    if (patternId.IntegerValue != -1)                    {                        if (patternId.IntegerValue == -3000010)                        {                            linePatternName ="实线";                        }                        else                        {                            linePatternName = LinePatternElement.GetLinePattern(_doc, patternId).Name;                        }                    }                    return linePatternName;                }            }            //截面填充样式替换可见性            public string IsCutFillPatternVisible            {                get                {                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    return ogs.IsCutFillPatternVisible ?"是":"否";                }            }            //截面填充颜色            public string CutFillColor            {                get                {                    string fillColor ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    if (ogs.CutFillColor.IsValid)                    {                        Color rgb = ogs.CutFillColor;                        fillColor = rgb.Red.ToString() + ',' + rgb.Green.ToString() + ',' + rgb.Blue;                    }                    return fillColor;                }            }            //截面填充样式            public string CutFillPatternName            {                get                {                    string fillPatternName ="<无替换>";                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    ElementId patternId = ogs.CutFillPatternId;                    if (patternId.IntegerValue != -1)                    {                        fillPatternName = _doc.GetElement(patternId).Name;                    }                    return fillPatternName;                }            }            //半色调            public string Halftone            {                get                {                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    return ogs.Halftone ?"是":"否";                }            }            //详细程度            public string DetailLevel            {                get                {                    string detailLevel;                    OverrideGraphicSettings ogs = _view.GetCategoryOverrides(_category.Id);                    switch (ogs.DetailLevel)                    {                        case ViewDetailLevel.Coarse:                            detailLevel ="粗略";                            break;                        case ViewDetailLevel.Medium:                            detailLevel ="中等";                            break;                        case ViewDetailLevel.Fine:                            detailLevel ="精细";                            break;                        default:                            detailLevel ="按视图";                            break;                    }                    return detailLevel;                }            }        }
视图,替换,样式

延展阅读

相关文章