Revit二次开发之判断一个族实例是否基于面创建【比目鱼原创】
2017-03-03 09:10
344 查看
=========【更多高级应用请关注公众号】========
===================================
Revit中有些族是不基于面创建,有些族是基于面创建(如环形吸顶灯等),这时候需要查看该Family的属性【基于工作平面】这个参数进行判断,可以使用lookup查询到FamilyInstance的主体Family,然后在Parameters里查看。
【判断一个FamilyInstance基于面创建的参数,可以使用以下代码查看】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.DB;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI.Selection;
namespace Test_isFamilyInFace
{
[TransactionAttribute(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
Reference pickedRef = null;
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document;
UIApplication uiApp = commandData.Application;
Selection sel = uiApp.ActiveUIDocument.Selection;
pickedRef = sel.PickObject(ObjectType.Element, "Please select 1");
Element elem1 = doc.GetElement(pickedRef);
FamilyInstance fi = elem1 as FamilyInstance;
FamilySymbol fs = fi.Symbol;
Family f1 = fs.Family;
int a = f1.get_Parameter(BuiltInParameter.FAMILY_HOSTING_BEHAVIOR).AsInteger();
string s = HostName(a);
TaskDialog.Show("结果:", "主体编号:" + a.ToString() + "\r" + s);
return Result.Succeeded;
}
public string HostName(int a)
{
string s = "找不到属性";
switch (a)
{
case 0:
return s = "族不基于面";
case 1:
return s = "基于墙的";
case 2:
return s = "基于Floor(楼板的)";
case 3:
return s = "基于吊顶";
case 5:
return s = "基于Face的";
default:
return s = "找不到属性";
}
}
}
}
转载请复制以下信息:
原文链接:
作者: BIM_er
BIM_er
===================================
Revit中有些族是不基于面创建,有些族是基于面创建(如环形吸顶灯等),这时候需要查看该Family的属性【基于工作平面】这个参数进行判断,可以使用lookup查询到FamilyInstance的主体Family,然后在Parameters里查看。
【判断一个FamilyInstance基于面创建的参数,可以使用以下代码查看】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.DB;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI.Selection;
namespace Test_isFamilyInFace
{
[TransactionAttribute(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
Reference pickedRef = null;
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document;
UIApplication uiApp = commandData.Application;
Selection sel = uiApp.ActiveUIDocument.Selection;
pickedRef = sel.PickObject(ObjectType.Element, "Please select 1");
Element elem1 = doc.GetElement(pickedRef);
FamilyInstance fi = elem1 as FamilyInstance;
FamilySymbol fs = fi.Symbol;
Family f1 = fs.Family;
int a = f1.get_Parameter(BuiltInParameter.FAMILY_HOSTING_BEHAVIOR).AsInteger();
string s = HostName(a);
TaskDialog.Show("结果:", "主体编号:" + a.ToString() + "\r" + s);
return Result.Succeeded;
}
public string HostName(int a)
{
string s = "找不到属性";
switch (a)
{
case 0:
return s = "族不基于面";
case 1:
return s = "基于墙的";
case 2:
return s = "基于Floor(楼板的)";
case 3:
return s = "基于吊顶";
case 5:
return s = "基于Face的";
default:
return s = "找不到属性";
}
}
}
}
转载请复制以下信息:
原文链接:
作者: BIM_er
BIM_er
相关文章推荐
- 一个简单的模拟用户名是否存在的基于契约优先WSDL的webservice开发实例
- Revit二次开发之创建共享参数及绑定共享参数【比目鱼原创】
- 如何用创建命名对象来判断应用程序是否已有一个实例在运行?
- 在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器
- C# WINFORM判断程序是否运行,且只能运行一个实例
- 判断XML文件是否存在,不存在就创建一个XMl文件,存在就在里面添加一条数据
- Revit二次开发入门--创建一个简单的程序
- 创建一个基于套接字的bufferevent实例-echo程序的实现
- 判断一个类是否为另一个类的实例 instanceof关键字和isAssignableFrom方法的区别
- 判断Access中某个表是否已存在,不存在就创建一个
- 怎样判断一个类的实例是否属于一个类对象
- 【原创】演示判断一个字符串是否为另一字符串的子串的函数的汇编源程序
- 使用jquery判断一个元素是否含有一个指定的类(class)实例
- Unix学习笔记-------目录遍历实例----Linux下判断是否是一个目录还是一个文件的方法
- 如何判断一个已知的表中是否存在某个字段,如果不存在就创建它.
- c#反射机制判断同一个类的两个实例的值是否完全一样
- 判断输入的一个数是否为回文数c++代码实例及运行结果
- 判断输入的一个数是否为回文数c++代码实例及运行结果
- Android开发判断一个app应用是否在运行的方法详解
- 一个判断页面是否被刷方法(原创)