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;
                }
            }
        }

猜你喜欢

转载自blog.csdn.net/imfour/article/details/79968760