Revit Family API 添加参数与尺寸标注
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 添加参数与尺寸标注相关推荐
- Revit Family API 添加几何实体
先创建一个封闭曲线createProfileLShape(); 再创建实体,这里需要手工画一个参考平面Reference Plane: [TransactionAttribute(Autodesk.R ...
- OpenCV向Facemark API添加新算法
OpenCV向Facemark API添加新算法 向Facemark API添加新算法 目标 解释 添加类头 添加实施代码 编译代码 最佳实践 向Facemark API添加新算法 目标 在本教程中, ...
- rest api_摆脱困境:向REST API添加验证
rest api 我对此感到有些ham愧,但是直到昨天,我才知道我可以通过使用@Valid和@RequestBody批注将验证添加到REST API中. 这在Spring MVC 3.0中不起作用,由 ...
- 摆脱困境:向REST API添加验证
我对此感到有些to愧,但直到昨天,我才知道我可以使用@Valid和@RequestBody批注将验证添加到REST API中. 这在Spring MVC 3.0中不起作用,由于某种原因,我没有注意到在 ...
- 前端学习(1970)vue之电商管理系统电商系统之渲染添加参数的对话框
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- 前端学习(1965)vue之电商管理系统电商系统之渲染添加参数的按钮
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- python如何调用阿里云接口_python 调用阿里云云解析api添加记录
首先安装阿里云SDK pip install aliyun-python-sdk-core pip install aliyun-python-sdk-alidns 可以配合jenkins传递参数 # ...
- gdb 笔记(02)— gdb 调试执行(启动调试、添加参数、附加到进程、调试 core 文件)
在编译程序时,使用 gcc 或者 g++ 时一定要加上 -g 选项,如 gcc -g -o hello hello.c 以便调试程序含有调试符号信息,从而能够正常调试程序.否则则会出现如下提示,导致不 ...
- 微信公众号-添加参数获取场景二维码路径
1.微信公众平台测试账号 我用内网穿透把本地的项目映射到外网,主要为了方便测试 在本地项目映射成功后可以扫一下"测试号二维码 "看是否正常进入到后台 2,添加参数获取场景二维码路径 ...
最新文章
- 为什么我们要放弃win10 去使用deepinv20和ous呢
- Node.js 开发指南笔记
- SpringBoot的日志管理(输出级别,输出到文件)
- JAVA获取系统相关的信息
- 《解剖PetShop》系列之二
- javascript闭包_通过邮寄包裹解释JavaScript闭包
- 随想录(内存屏障示例代码)
- property中的strong 、weak、copy 、assign 、retain 、unsaf
- javaweb前台对参数加密,后台解密,避免出现中文乱码
- CCNA 折扣号申请流程(新版)
- pandas导入导出数据
- Raspberry Pi 4b CUPS AirPrint 共享网络打印机
- 模型预测控制路径跟踪python语言实现
- 【战“疫”案例展】上海临港方舱医院——7天打造“数字方舱”,搭建智能化管理系统平台...
- AWS EC2主机类型的区别和联系
- Python与Anaconda、Jupyter Notebook与Pycharm
- Packet Tracer 5.0建构CCNA实验攻略——帧中继Frame Relay
- Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: com/po/IdCard
- PHP汉字转拼音的两种方法+PHP提取汉字(中文)方法
- X86,x86_64(AMD64),ppc64,i386,ppc64le,ARM,AMD,,AArch64的概念
热门文章
- pix4d怎么查看点云数据_python里怎么查看数据类型
- ios android 发东西,Android、IOS主动发事件给React Native
- 天地伟业tiandy如何连手机_关注 | 天地盖手工盒裱纸选铜版纸还是白牛皮纸?
- 【大学课程】计算机组成原理知识点
- 信息系统项目管理师:第1章:信息化与信息系统(2)-重点汇总
- RFID和WiFi定位技术的比较
- RuoYi-Process多模块activity工作流项目快速搭建
- Nginx的配置文件位置以及组成部分结构讲解
- Mysql、Oracle、SQLServer等数据库参考文档免费分享下载
- SSM+KindEditor实现富文本编辑器图片上传