Revit Family API 添加类型
FamilyManager.NewType("");添加新类型,然后设置参数,就是为新类型设置参数。
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class cmdAddType : IExternalCommand
{
//添加类型
void AddType(FamilyManager familyMgr, string name, double w, double d)
{
FamilyType type1 = familyMgr.NewType(name);
FamilyParameter paramW = familyMgr.get_Parameter("Width");
double valW = Util.mmToFeet(w);
if (paramW != null)
{
familyMgr.Set(paramW, valW);
}
FamilyParameter paramD = familyMgr.get_Parameter("Depth");
double valD = Util.mmToFeet(d);
if (paramD != null)
{
familyMgr.Set(paramD, valD);
}
}
public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
{
UIApplication app = commandData.Application;
Document doc = app.ActiveUIDocument.Document; Transaction ts = new Transaction(doc, "AddType");
ts.Start(); //添加参数
FamilyManager m_familyMgr = doc.FamilyManager; //添加类型Type
AddType(m_familyMgr, "600x900", 600.0, 900.0);
AddType(m_familyMgr, "600x600", 600.0, 600.0); 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 > )
{ // we should have only one with the given name.
return elems[];
} // 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
}
from:http://greatverve.cnblogs.com/p/revit-family-api-newtype.html
Revit Family API 添加类型的更多相关文章
- Revit Family API 添加参数与尺寸标注
使用FamilyManager其他的与普通添加参数与标注没区别. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Man ...
- Revit Family API 添加对齐
没测试成功,留待以后研究. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] ; ; i < nV ...
- Revit Family API 添加材质参数设置可见性
start //添加类型 void AddType(FamilyManager familyMgr, string name, double w, double d) { FamilyType ...
- Revit Family API 添加几何实体
先创建一个封闭曲线createProfileLShape();再创建实体,这里需要手工画一个参考平面; ; i < nVerts; ++i) { Line l ...
- Revit Family API 创建参考平面
使用API来编辑族时,使用doc.FamilyCreate.NewReferencePlane();创建参考平面. ) { ]; } // canno ...
- 为IIS Host ASP.NET Web Api添加Owin Middleware
将OWIN App部署在IIS上 要想将Owin App部署在IIS上,只添加Package:Microsoft.OWIN.Host.SystemWeb包即可.它提供了所有Owin配置,Middlew ...
- 配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项
错误提示: 配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项 配置文件 \\?\D:\www\abc\web.config 出现 ...
- 问题.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合
问题现象:.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合 问题处理: 内容摘要: HTTP 错误 500.19 - ...
- Revit 2015 API 的全部变化和新功能
这里从SDK的文章中摘录出全部的API变化.主要是希望用户用搜索引擎时能找到相关信息: Major changes and renovations to the Revit API APIchange ...
随机推荐
- java 其它可选方法
异常处理的一个原则时,只有当你在知道如何处理的情况下才捕获异常,异常处理的一个重要目标时将错误处理代码同错误发生的地点相分离. "被检查异常"强制你在还没准备好处理错误的时候被迫加 ...
- java 捕获所有异常
1.) 通过捕获异常类型的基类Exception就可以处理所有类型的异常.(事实上还有其它的基类,但Exception是同编程活动相关的基类) 2.)因为Exception是与编程有关的所有异常类的基 ...
- 阿里云服务器配置nginx和PHP
1. 安装及启动nginx 输入yum install nginx命令进行nginx的安装,当需要确认时输入”y“确认. yum install nginx 安装完成后,输入service nginx ...
- Java编程的逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- Learning coding online
A lot of online courses for coding skills are available nowadays, both free and non-free. I will col ...
- [转] 钉钉的H5性能优化方案
对于一个H5的产品,功能无疑很重要,但是性能同样是用户体验中不可或缺的一环.原本H5的渲染性能就不及native的app,如果不把性能优化做起来,将极大地影响用户使用产品的积极性. 用户感受 当用户能 ...
- linux下如何查看命令的绝对路径
在linux上经常使用ls,grep,vi等命令,如何查看这些命令的绝对路径呢? 通过whereis/which 就可以啦,但是这两个命令之间还是有一些区别.网上查了一下资料,解释如下: which ...
- 【LOJ】#2076. 「JSOI2016」炸弹攻击
题解 我冷静一下,话说如果去掉建筑和R的限制好像是模拟退火吧 然后开始写模拟退火了,起始点就随机一个敌人作为起始点 没对着数据写了一下获得了70pts,感到美滋滋 然后对着数据卡了很久--发现有个数据 ...
- java 的反射机制
一:介绍 1.大纲 #1 允许程序在执行期间,调用反射API取得任何类的内部信息,并且可以直接操作任何对象的内部属性和方法. #2 学习反射,需要掌握的知识点: *实例化class类 *获取类的完整结 ...
- 升级到AndroidStudio3.2.1的注意事项
升级到AndroidStudio3.2.1的注意事项 即不用再在二级结构的build.gradle中的compileSdkVersion 28 下声明 buildToolsVersion &q ...