博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Revit API创建标注NewTag
阅读量:6047 次
发布时间:2019-06-20

本文共 2613 字,大约阅读时间需要 8 分钟。

start
///
 
<summary>
///
 创建水管管径标注
///
 
</summary>
[Transaction(TransactionMode.Manual)]
public 
class CreatPipeDiameterTag : IExternalCommand
{
    
#region IExternalCommand Members
    
public Result Execute(ExternalCommandData commandData, 
ref 
string message, ElementSet elements)
    {
        UIDocument uiDoc = commandData.Application.ActiveUIDocument;
        Document doc = uiDoc.Document;
//
当前活动文档
        Autodesk.Revit.DB.View view = uiDoc.ActiveView;
//
当前活动视图
        Selection sel = uiDoc.Selection;
//
选择集
        Transaction ts = 
new Transaction(doc, 
"
水管管径标记
");
        
try
        {
            ts.Start();
            PipeSelectionFilter psf = 
new PipeSelectionFilter(doc);
            Reference refer = sel.PickObject(ObjectType.Element, psf, 
"
请选择要标注的水管:
");
            Pipe pipe = doc.GetElement(refer) 
as Pipe;
            
if (pipe == 
null)
            {
                ts.Dispose();
                TaskDialog.Show(
"
RevitMassge
"
"
没有选中水管
");
                
return Result.Failed;
            }
            
//
Define tag mode and tag orientation for new tag
            TagMode tageMode = TagMode.TM_ADDBY_CATEGORY;
            TagOrientation tagOri = TagOrientation.Horizontal;
            
//
Add the tag to the middle of duct
            LocationCurve locCurve = pipe.Location 
as LocationCurve;
            XYZ pipeMid = locCurve.Curve.Evaluate(
0.275
true);
            IndependentTag tag = doc.Create.NewTag(view, pipe, 
false, tageMode, tagOri, pipeMid);
            
//
遍历类型
            FilteredElementCollector filterColl = GetElementsOfType(doc, 
typeof(FamilySymbol), BuiltInCategory.OST_PipeTags);
            
//
WinFormTools.MsgBox(filterColl.ToElements().Count.ToString());
            
int elId = 
0;
            
foreach (Element el 
in filterColl.ToElements())
            {
                
if (el.Name == 
"
管道尺寸标记
")
                    elId = el.Id.IntegerValue;
            }
            tag.ChangeTypeId(
new ElementId(elId));
            ElementId eId = 
null;
            
if (tag == 
null)
            {
                ts.Dispose();
                TaskDialog.Show(
"
RevitMassge
"
"
创建标注失败!
");
                
return Result.Failed;
            }
            ICollection<ElementId> eSet = tag.GetValidTypes();
            
foreach (ElementId item 
in eSet)
            {
                
if (item.IntegerValue == 
532753)
                {
                    eId = item;
                }
            }
            tag = doc.get_Element(eId) 
as IndependentTag;
        }
        
catch (Exception)
        {
            ts.Dispose();
            
return Result.Cancelled;
        }
        ts.Commit();
        
return Result.Succeeded;
    }
    FilteredElementCollector GetElementsOfType(Document doc, Type type, BuiltInCategory bic)
    {
        FilteredElementCollector collector = 
new FilteredElementCollector(doc);
        collector.OfCategory(bic);
        collector.OfClass(type);
        
return collector;
    }
    
#endregion
}
///
 
<summary>
///
水管选择过滤器
///
 
</summary>
public 
class PipeSelectionFilter : ISelectionFilter
{
    
#region ISelectionFilter Members
    Document doc = 
null;
    
public PipeSelectionFilter(Document document)
    {
        doc = document;
    }
    
public 
bool AllowElement(Element elem)
    {
        
return elem 
is Pipe;
    }
    
public 
bool AllowReference(Reference reference, XYZ position)
    {
        
return doc.GetElement(reference) 
is Pipe;
    }
    
#endregion
}
end

转载地址:http://qznex.baihongyu.com/

你可能感兴趣的文章
Django serializers 序列化 rest_framework
查看>>
JVM byte code
查看>>
(转)CentOS 7.0关闭默认防火墙启用iptables防火墙
查看>>
easyui combotree模糊查询
查看>>
linux安装ftp组件
查看>>
【转】循序渐进地代码重构
查看>>
Unity3D研究院之获取摄像机的视口区域
查看>>
Ambari是啥?主要是干啥的?
查看>>
【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
查看>>
快速排序
查看>>
安装完CentOS 7 后必做的七件事
查看>>
linux下svn服务器安装配置与启动
查看>>
连接Oracle错误:800a0e7a未找到提供程序的解决
查看>>
Webpack、Browserify和Gulp
查看>>
一次java Cpu占用过高的排查
查看>>
Zookeeper配置文件中的配置项解释和Zookeeper的安装
查看>>
MySQL索引原理及慢查询优化
查看>>
rsync 精确同步文件用法 (转载)
查看>>
使用Python实现一个简单的项目监控
查看>>
编译 boost
查看>>