zoukankan      html  css  js  c++  java
  • Revit Family API 添加参数与尺寸标注

    使用FamilyManager其他的与普通添加参数与标注没区别。
    [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class cmdAddParam : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
        {
            UIApplication app = commandData.Application;
            Document doc = app.ActiveUIDocument.Document;

            Transaction ts = new Transaction(doc, "NewDimension");
            ts.Start();

            //添加参数
            FamilyManager m_familyMgr = doc.FamilyManager;
            bool isInstance = false;
            FamilyParameter paramTw = m_familyMgr.AddParameter("Tw", BuiltInParameterGroup.PG_GEOMETRY, ParameterType.Length, isInstance);
            double tw = Util.mmToFeet(150.0);
            m_familyMgr.Set(paramTw, tw);
            m_familyMgr.SetFormula(paramTw, "Width / 4.0");//公式

            
    //添加尺寸标注
            View pViewPlan = Util.findElement(doc, typeof(ViewPlan), "Lower Ref. Level"as View;
            ReferencePlane ref1 = Util.findElement(doc, typeof(ReferencePlane), "Left"as ReferencePlane;
            ReferencePlane ref2 = Util.findElement(doc, typeof(ReferencePlane), "offsetV"as ReferencePlane;
            ReferenceArray pRefArray = new ReferenceArray();
            pRefArray.Append(ref1.Reference);
            pRefArray.Append(ref2.Reference);
            XYZ p0 = ref1.FreeEnd;
            XYZ p1 = ref2.FreeEnd;
            Line pLine = app.Application.Create.NewLineBound(p0, p1);
            Dimension pDimTw = doc.FamilyCreate.NewDimension(pViewPlan, pLine, pRefArray);
            pDimTw.Label = m_familyMgr.get_Parameter("Tw");

            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
    }
    url:http://greatverve.cnblogs.com/p/revit-family-api-param.html
  • 相关阅读:
    checkbox判断选中的三种方法
    bzoj 4031: [HEOI2015]小Z的房间
    bzoj 5056: OI游戏
    Hdoj 5181 numbers
    Loj #6164. 「美团 CodeM 初赛 Round A」数列互质
    Codeforces 869 C The Intriguing Obsession
    Loj #6142. 「2017 山东三轮集训 Day6」A
    bzoj 3714: [PA2014]Kuglarz
    Loj #6185. 烷基计数
    [HNOI2008]水平可见直线
  • 原文地址:https://www.cnblogs.com/greatverve/p/revit-family-api-param.html
Copyright © 2011-2022 走看看