zoukankan      html  css  js  c++  java
  • 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.0900.0);
            AddType(m_familyMgr, "600x600"600.0600.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 > 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
    }
    from:http://greatverve.cnblogs.com/p/revit-family-api-newtype.html
  • 相关阅读:
    django之orm单表查询
    python通过os.system()方法执行pscp提示却找不到该应用程序
    VUE 条件编译
    博客园Silence新主题美化,2021年最新更新!换个口味~
    JavaScript中数组的操作方法总汇
    Vue 上传材料(使用input)
    postgresql关于array类型有交集(包含查询数据任意元素,有重叠&&)的一些查询方法以及sqlalchemy语句实现
    linux便捷日志查询操作
    安装RabbitMQ
    v-model语法糖在input上组件上的使用
  • 原文地址:https://www.cnblogs.com/greatverve/p/revit-family-api-newtype.html
Copyright © 2011-2022 走看看