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

上一篇:【新产品发布】【iHMI43 智能液晶模块 2013 版】


下一篇:Java读取Excel文件的几种方法