start

//把当前视图名称与比例标注在最低的轴网下面
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmdCreateViewTag : IExternalCommand
{
    /// <summary>
    /// 得到最下面的轴网
    /// </summary>
    /// <param name="doc"></param>
    /// <returns></returns>
    public Grid GetLowestGrid(Document doc)
    {
        FilteredElementCollector collector = new FilteredElementCollector(doc);
        collector.OfClass(typeof(Grid)).OfCategory(BuiltInCategory.OST_Grids);//
        Grid grid = null;
        foreach (Element el in collector)
        {
            if (grid == null)
            {
                grid = el as Grid;
            }
            else
            {
                Grid gridTmp = el as Grid;
                if (gridTmp.Curve.get_EndPoint(0).Y < grid.Curve.get_EndPoint(0).Y)
                {
                    grid = gridTmp;
                }
            }
        }
        return grid;
    }
    /// <summary>
    /// 得到当前视图名称
    /// </summary>
    /// <param name="doc"></param>
    /// <returns></returns>
    public string GetViewName(Document doc)
    {
        return doc.ActiveView.Name;
    }
    /// <summary>
    /// 得到视图比例
    /// </summary>
    /// <param name="doc"></param>
    /// <returns></returns>
    public string GetViewScale(Document doc)
    {
        return "1 : " + doc.ActiveView.get_Parameter(BuiltInParameter.VIEW_SCALE).AsInteger().ToString();
    }
    public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
    {
        Document doc = cmdData.Application.ActiveUIDocument.Document;         Transaction ts = new Transaction(doc, "http://revit.5d6d.com");
        ts.Start();
        //得到最低的轴网,得到原点
        Grid grid = GetLowestGrid(doc);
        if (grid == null)
        {
            ts.RollBack();
            return Result.Cancelled;
        }
        XYZ xyzOrigin = grid.Curve.get_EndPoint(0) + new XYZ(0, -1, 0);
        //得到视图名称,得到视图比例
        string strText = "视图名称:" + GetViewName(doc) + "\n视图比例:" + GetViewScale(doc);
        //
        XYZ baseVec = new XYZ(0, 0, 0);
        XYZ upVec = new XYZ(0, 0, 0);
        double dWidth = 0.16;
        TextAlignFlags textAlign = TextAlignFlags.TEF_ALIGN_LEFT | TextAlignFlags.TEF_ALIGN_TOP;
        TextNote textNote = doc.Create.NewTextNote(doc.ActiveView, xyzOrigin, baseVec, upVec, dWidth, textAlign, strText);         ts.Commit();         return Result.Succeeded;
    }
}

end

cmdCreateViewTag的更多相关文章

随机推荐

  1. 小甲鱼python视频弟十一讲(课后习题)

    1.修改列表里的值 list1 = [,,[,,,[,,,,] list1[] = print(list1) list1[][][] = '?' print(list1) 2.列表的排序(sort) ...

  2. Rsync+inotify实现实时同步

    1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...

  3. TextFile 类的创写

    TextFile 作为自写的方法,继承自List<String>.像统计文本中出现的哪些单词,不重复等等,适合用Set集合完成统计. class TextFile extends Arra ...

  4. SR触发器和JK触发器

    SR触发器(电平触发器) 基本RS触发器的逻辑方程为:Q(n+1)=一S+RQ(n); 约束方程:R+S=1; 根据上述两个式子得到它的四种输入与输出的关系: 1.当R端有效(0),S端无效时(1), ...

  5. [Windows-Linux]Windows and Linux 共享文件

    在 windows 上共享一个文件夹 共享操作很简单就不多熬述,不过要注意权限分配问题.我们假定共享了 E:\Develop\Share 这个目录. 我们假设主机局域网的 IP 为 192.168.0 ...

  6. livequery源码解读

    从使用说起: 若干年前,有一天发现,通过js代码创建的html元素及ajax加载的html,无法被$([selector]).click(function(){...})绑定上事件,于是发现了jQue ...

  7. Asp.Net Web API 2第三课——.NET客户端调用Web API

    详情请查看http://aehyok.com/Blog/Detail/70.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  8. Kali linux系列之 zmap 安装

    Kali linux系列之 zmap 安装 官方文档地址:https://zmap.io/ 准备:保证有比较顺畅的更新源,可以更新系统,下载安装包. 安装 第一步:sudo apt-get insta ...

  9. 转:判断DATASET是否为空

    http://blog.sina.com.cn/jiangshuqin2010 1,if(ds == null) 这是判断内存中的数据集是否为空,说明DATASET为空,行和列都不存在!! 2,if( ...

  10. SRS用列建模

    基本规则: 五子棋是两个人之间进行的竞技活动,由于对黑方白方 规则不同,黑棋必须先行.五子棋专用盘为 15×15 , 五连子的方向为横.竖.斜. 禁手是对局中被判为负的行棋手段.白棋无禁手. 在棋盘上 ...