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

原创 2018年04月17日 00:07:06

         目的是用于导出视图样板中的图形替换,但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;
                }
            }
        }

Revit二次开发--获取视图可见性中过滤器颜色

Revit二次开发
  • PC_Spider
  • PC_Spider
  • 2017-04-20 17:42:27
  • 997

编程获取Revit视图中的所有实例对象数量

转载请复制以下信息: 原文链接: http://blog.csdn.net/joexiongjin/article/details/7678923 作者: 叶雄进, Autodesk ADN  ...
  • JoeXiongjin
  • JoeXiongjin
  • 2012-06-20 10:36:26
  • 4254

创建视图样式对象

转载请复制以下信息: 原文链接: http://blog.csdn.net/joexiongjin/article/details/7433087 作者:  叶雄进 2012.4.6  ...
  • JoeXiongjin
  • JoeXiongjin
  • 2012-04-06 17:15:56
  • 3338

RevitAPI之草图及草图平面

一、草图编辑 草图编辑在Revit中被广泛用于创建各种元素,包括绘制和修改模型的形状。 没有用于创建元素的绘制形状的绘画也属于草图编辑,例如,用鼠标移动的操作画一根曲线,在已经创建好的楼板上绘制褶...
  • bbkxw001
  • bbkxw001
  • 2018-01-05 22:13:20
  • 204

[Revit二次开发]在WPF显示revit的三维视图

在revit插件开发过程中,有时候需要在自己的页面上展示某些元素的模型,关于WF上如何实现在RevitSDK中已经存在着代码, 这是运行效果 嗯,先写一下PreviewModel的解读,这个坑稍后...
  • AdijeShen
  • AdijeShen
  • 2017-08-11 15:58:02
  • 815

Revit二次开发之“显示或隐藏视图中未选中的元素”

方法是先隐藏全部元素,再显示选中的。  转自:http://revit.5d6d.com/thread-1094-1-1.html //显示或隐藏视图中未选中的元素 [Transacti...
  • hqx2008
  • hqx2008
  • 2012-10-20 11:48:05
  • 1333

Revit二次开发(3):Revit动态模型更新(DMU: Dynamic Model Update)功能

当用户修改了实例之后,捕获到这个事件以便对模型进行修改。 ​具体思路是在工程载入的时候注册一个从IUpdater继承的类; ​在继承类中重写Register函数,添加要监视的实例,如下; ...
  • u012141979
  • u012141979
  • 2015-12-23 16:46:47
  • 615

C# revit 二次开发 为线样式设置线型图案

Category category = CreateNewLineType(doc); category.SetLinePatternId(linePatternElem...
  • zhengxiaotaozz
  • zhengxiaotaozz
  • 2017-07-03 16:43:29
  • 467

revit 二次开发 如何修改元素的表面颜色

1、获取填充图案 FilteredElementCollector fillPatternElementFilter = new FilteredElementCollector(doc); ...
  • zhengxiaotaozz
  • zhengxiaotaozz
  • 2017-05-23 13:57:45
  • 779

Revit二次开发之如何选取Revit元素【比目鱼原创】

Revit API提供的获取元素的交互包括以下几种方式
  • bbkxw001
  • bbkxw001
  • 2017-12-02 14:20:53
  • 291
收藏助手
不良信息举报
您举报文章:Revit二次开发_获取视图样式替换
举报原因:
原因补充:

(最多只允许输入30个字)