博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Revit二次开发之“修改已经加载的族或系统族的参数”
阅读量:5862 次
发布时间:2019-06-19

本文共 1836 字,大约阅读时间需要 6 分钟。

目前只能修改门,墙,风管都没找到方法。
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public
 
class
 SetParam : IExternalCommand
{
    
public
 Result Execute(ExternalCommandData commandData, 
ref
 
string
 message, ElementSet elements)
    {
        UIDocument uiDoc 
=
 commandData.Application.ActiveUIDocument;
        Autodesk.Revit.ApplicationServices.Application app 
=
 commandData.Application.Application;
        
//
        
string
 family 
=
 
"
单开门
"
;
        
string
 type 
=
 
"
M0721
"
;
        FamilySymbol fs 
=
 FindElementType(uiDoc.Document, 
typeof
(FamilySymbol), family, type, BuiltInCategory.OST_Doors) 
as
 FamilySymbol;
        Transaction tr 
=
 
new
 Transaction(uiDoc.Document, 
"
test
"
);
        tr.Start();
        
foreach
 (Parameter para 
in
 fs.Parameters)
            
if
 (para.Definition.Name 
==
 
"
Height
"
)
                para.Set(mmToFeet(
200
));
        tr.Commit();
        
return
 Result.Succeeded;
    }
    
//
毫米到英寸,单位换算
    
public
 
double
 mmToFeet(
double
 val) { 
return
 val 
/
 
304.8
; }
    
//
通过族名称,族类型,从过滤器中找到指定的类型。
    
public
 Element FindElementType(Document doc, Type targetType, 
string
 familyName, 
string
 typeName, BuiltInCategory catagory)
    {
        IList
<
Element
>
 elements 
=
 FindSpecialElements(doc, targetType, catagory);
        Element elem 
=
 
null
;
        
foreach
 (Element e 
in
 elements)
        {
            
if
 (e.Name.Equals(typeName) 
&&
                e.get_Parameter(BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM).AsString().Equals(familyName))
            {
                elem 
=
 e;
                
break
;
            }
        }
        
return
 elem;
    }
    
//
过滤
    
//
FindSpecialElements(doc, typeof(FamilySymbol), BuiltInCategory.OST_Doors);
    
public
 IList
<
Element
>
 FindSpecialElements(Document doc, Type targetType, BuiltInCategory catagory)
    {
        FilteredElementCollector collector 
=
 
new
 FilteredElementCollector(doc);
        collector.OfClass(targetType);
        
if
 (collector 
!=
 
null
)
            collector.OfCategory(catagory);
        IList
<
Element
>
 elements 
=
 collector.ToElements();
        
return
 elements;
    }
}
from:

转载于:https://www.cnblogs.com/greatverve/archive/2011/08/08/revit-set-system-param.html

你可能感兴趣的文章
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
Linux 进程中 Stop, Park, Freeze【转】
查看>>
Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)...
查看>>
Duplicate Symbol链接错误的原因总结和解决方法[转]
查看>>
适配器模式
查看>>
刨根问底区块链 —— 基础篇
查看>>
php 直接调用svn命令
查看>>
建立低权限的ftp帐号
查看>>
htpasswd
查看>>
Android窗口机制(三)Window和WindowManager的创建与Activity
查看>>
Android 编译出错解决
查看>>
iOS--The request was denied by service delegate (SBMainWorkspace) for reason:
查看>>
Android 打开WIFI并快速获取WIFI的信息
查看>>
Spring boot 入门篇
查看>>
【IOS开发】GDataXML解析XML
查看>>
Iptables
查看>>
我的友情链接
查看>>
GridView多行多列合并单元格(指定列合并)
查看>>
什么是DDOS攻击?怎么防御?
查看>>
状态模式(State Pattern)
查看>>