使用FamilyManager其他的与普通添加参数与标注没区别。

[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class cmdAddParam : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
    {
        UIApplication app = commandData.Application;
        Document doc = app.ActiveUIDocument.Document;

Transaction ts = new Transaction(doc, "NewDimension");
        ts.Start();

//添加参数
        FamilyManager m_familyMgr = doc.FamilyManager;
        bool isInstance = false;
        FamilyParameter paramTw = m_familyMgr.AddParameter("Tw", BuiltInParameterGroup.PG_GEOMETRY, ParameterType.Length, isInstance);
        double tw = Util.mmToFeet(150.0);
        m_familyMgr.Set(paramTw, tw);
        m_familyMgr.SetFormula(paramTw, "Width / 4.0");//公式

//添加尺寸标注
        View pViewPlan = Util.findElement(doc, typeof(ViewPlan), "Lower Ref. Level") as View;
        ReferencePlane ref1 = Util.findElement(doc, typeof(ReferencePlane), "Left") as ReferencePlane;
        ReferencePlane ref2 = Util.findElement(doc, typeof(ReferencePlane), "offsetV") as ReferencePlane;
        ReferenceArray pRefArray = new ReferenceArray();
        pRefArray.Append(ref1.Reference);
        pRefArray.Append(ref2.Reference);
        XYZ p0 = ref1.FreeEnd;
        XYZ p1 = ref2.FreeEnd;
        Line pLine = app.Application.Create.NewLineBound(p0, p1);
        Dimension pDimTw = doc.FamilyCreate.NewDimension(pViewPlan, pLine, pRefArray);
        pDimTw.Label = m_familyMgr.get_Parameter("Tw");

ts.Commit();

return Result.Succeeded;
    }
}
public class Util
{
    //Revit内部单位feet转化为mm即毫米
    public static double mmToFeet(double val) { return val / 304.8; }
    public static double feetToMm(double val) { return val * 304.8; }
    //通过类型与名称找Element
    public static Element findElement(Document _rvtDoc, Type targetType, string targetName)
    {
        // get the elements of the given type
        //
        FilteredElementCollector collector = new FilteredElementCollector(_rvtDoc);
        collector.WherePasses(new ElementClassFilter(targetType));

// parse the collection for the given name
        // using LINQ query here. 
        // 
        var targetElems = from element in collector where element.Name.Equals(targetName) select element;
        List<Element> elems = targetElems.ToList<Element>();

if (elems.Count > 0)
        {  // we should have only one with the given name. 
            return elems[0];
        }

// cannot find it.
        return null;
    }
    #region Formatting and message handlers
    public const string Caption = "Revit Family API Labs";

/// <summary>
    /// MessageBox wrapper for informational message.
    /// </summary>
    public static void InfoMsg(string msg)
    {

System.Diagnostics.Debug.WriteLine(msg);
        WinForm.MessageBox.Show(msg, Caption, WinForm.MessageBoxButtons.OK, WinForm.MessageBoxIcon.Information);
    }

/// <summary>
    /// MessageBox wrapper for error message.
    /// </summary>
    public static void ErrorMsg(string msg)
    {
        WinForm.MessageBox.Show(msg, Caption, WinForm.MessageBoxButtons.OK, WinForm.MessageBoxIcon.Error);
    }
    #endregion // Formatting and message handlers
}

url:http://greatverve.cnblogs.com/p/revit-family-api-param.html

Revit Family API 添加参数与尺寸标注相关推荐

  1. Revit Family API 添加几何实体

    先创建一个封闭曲线createProfileLShape(); 再创建实体,这里需要手工画一个参考平面Reference Plane: [TransactionAttribute(Autodesk.R ...

  2. OpenCV向Facemark API添加新算法

    OpenCV向Facemark API添加新算法 向Facemark API添加新算法 目标 解释 添加类头 添加实施代码 编译代码 最佳实践 向Facemark API添加新算法 目标 在本教程中, ...

  3. rest api_摆脱困境:向REST API添加验证

    rest api 我对此感到有些ham愧,但是直到昨天,我才知道我可以通过使用@Valid和@RequestBody批注将验证添加到REST API中. 这在Spring MVC 3.0中不起作用,由 ...

  4. 摆脱困境:向REST API添加验证

    我对此感到有些to愧,但直到昨天,我才知道我可以使用@Valid和@RequestBody批注将验证添加到REST API中. 这在Spring MVC 3.0中不起作用,由于某种原因,我没有注意到在 ...

  5. 前端学习(1970)vue之电商管理系统电商系统之渲染添加参数的对话框

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  6. 前端学习(1965)vue之电商管理系统电商系统之渲染添加参数的按钮

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  7. python如何调用阿里云接口_python 调用阿里云云解析api添加记录

    首先安装阿里云SDK pip install aliyun-python-sdk-core pip install aliyun-python-sdk-alidns 可以配合jenkins传递参数 # ...

  8. gdb 笔记(02)— gdb 调试执行(启动调试、添加参数、附加到进程、调试 core 文件)

    在编译程序时,使用 gcc 或者 g++ 时一定要加上 -g 选项,如 gcc -g -o hello hello.c 以便调试程序含有调试符号信息,从而能够正常调试程序.否则则会出现如下提示,导致不 ...

  9. 微信公众号-添加参数获取场景二维码路径

    1.微信公众平台测试账号 我用内网穿透把本地的项目映射到外网,主要为了方便测试 在本地项目映射成功后可以扫一下"测试号二维码 "看是否正常进入到后台 2,添加参数获取场景二维码路径 ...

最新文章

  1. 为什么我们要放弃win10 去使用deepinv20和ous呢
  2. Node.js 开发指南笔记
  3. SpringBoot的日志管理(输出级别,输出到文件)
  4. JAVA获取系统相关的信息
  5. 《解剖PetShop》系列之二
  6. javascript闭包_通过邮寄包裹解释JavaScript闭包
  7. 随想录(内存屏障示例代码)
  8. property中的strong 、weak、copy 、assign 、retain 、unsaf
  9. javaweb前台对参数加密,后台解密,避免出现中文乱码
  10. CCNA 折扣号申请流程(新版)
  11. pandas导入导出数据
  12. Raspberry Pi 4b CUPS AirPrint 共享网络打印机
  13. 模型预测控制路径跟踪python语言实现
  14. 【战“疫”案例展】上海临港方舱医院——7天打造“数字方舱”,搭建智能化管理系统平台...
  15. AWS EC2主机类型的区别和联系
  16. Python与Anaconda、Jupyter Notebook与Pycharm
  17. Packet Tracer 5.0建构CCNA实验攻略——帧中继Frame Relay
  18. Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: com/po/IdCard
  19. PHP汉字转拼音的两种方法+PHP提取汉字(中文)方法
  20. X86,x86_64(AMD64),ppc64,i386,ppc64le,ARM,AMD,,AArch64的概念

热门文章

  1. pix4d怎么查看点云数据_python里怎么查看数据类型
  2. ios android 发东西,Android、IOS主动发事件给React Native
  3. 天地伟业tiandy如何连手机_关注 | 天地盖手工盒裱纸选铜版纸还是白牛皮纸?
  4. 【大学课程】计算机组成原理知识点
  5. 信息系统项目管理师:第1章:信息化与信息系统(2)-重点汇总
  6. RFID和WiFi定位技术的比较
  7. RuoYi-Process多模块activity工作流项目快速搭建
  8. Nginx的配置文件位置以及组成部分结构讲解
  9. Mysql、Oracle、SQLServer等数据库参考文档免费分享下载
  10. SSM+KindEditor实现富文本编辑器图片上传