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

本文共 2676 字,大约阅读时间需要 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

转载于:https://www.cnblogs.com/greatverve/p/revit-api-NewTag.html

你可能感兴趣的文章
RHEL 7--RHCE笔记
查看>>
解决当文本框为readonly时,按Backspace会刷新页面问题
查看>>
面向对象之异常处理
查看>>
前端PS切图技巧(二)
查看>>
史上最全直播系统开发流程!速度收藏
查看>>
我的python之路(三):什么是代码与python的基本类型+字符串
查看>>
Xml中SelectSingleNode方法中的xpath用法
查看>>
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...
查看>>
【模板】kmp
查看>>
PHP实现文件下载
查看>>
开博纪念
查看>>
用游标备份单个或所有db
查看>>
Python之string
查看>>
图解用Apache + Mod_Python 部署python web应用
查看>>
nginx 400 Bad Request
查看>>
Hibernate笔记——(ONE TO ONE)一对一
查看>>
我的友情链接
查看>>
留在时光中的永恒记忆——父亲(下)
查看>>
图像处理之霍夫变换(直线检测算法)
查看>>
Preconditions的简单学习
查看>>