完善主體資料,免費贈送VIP會員!
      * 主體類型
      * 企業名稱
      * 信用代碼
      * 所在行業
      * 企業規模
      * 所在職位
      * 姓名
      * 所在行業
      * 學歷
      * 工作性質
      請先選擇行業
      您還可以選擇以下福利:
      行業福利,領完即止!

      下載app免費領取會員

      NULL

      ad.jpg

      二次開發教程:Revit開發之警告和錯誤處理

      發布于:2019-08-26 16:40:58

      網友投稿

      更多

      在Revit 里很多操作都會彈出警告和錯誤提示,


      比如墻的高度降低,墻頂部的窗出現在墻的外面


      這個會彈一個錯誤提示框,


      比如在同一個位置創建兩面墻,


      會彈出一個警告提示框




      如果在自己寫的程序里出現了這種彈窗,會影響到用戶體驗,




      其實API里提供一些錯誤和警告的處理,


      下面提供一個例子解決上面的兩種情況,


      關鍵代碼如下:



          public class FailuresPreprocessor : IFailuresPreprocessor

          {

              public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)

              {           

                  IList<FailureMessageAccessor> listFma =failuresAccessor.GetFailureMessages();

                  if (listFma.Count == 0)

                      return FailureProcessingResult.Continue;

                  foreach (FailureMessageAccessor fma in listFma)

                  {

                      if (fma.GetSeverity() == FailureSeverity.Error)

                      {

                          if (fma.HasResolutions())

                              failuresAccessor.ResolveFailure(fma);

                      }

                      if (fma.GetSeverity() == FailureSeverity.Warning)

                      {

                          failuresAccessor.DeleteWarning(fma);

                      }

                  }

                  return FailureProcessingResult.ProceedWithCommit;

              }

          }


                  bool testError = true;

                  // 處理錯誤

                  if (testError)

                  {

                      Wall wall = doc.GetElement(uidoc.Selection.PickObject(ObjectType.Element)) as Wall;

                      Transaction trans = new Transaction(doc, "test");

                      trans.Start();

                      FailureHandlingOptions fho = trans.GetFailureHandlingOptions();

                      fho.SetFailuresPreprocessor(new FailuresPreprocessor());

                      trans.SetFailureHandlingOptions(fho);

                      Parameter p = wall.LookupParameter("無連接高度");

                      double h = p.AsDouble();

                      p.Set(h / 2);

                      trans.Commit();

                  }

                  // 處理警告

                  else

                  {

                      FilteredElementCollector lvlFilter = new FilteredElementCollector(doc);

                      lvlFilter.OfClass(typeof(Level));

                      Level lvl = lvlFilter.First() as Level;

                      Transaction trans1 = new Transaction(doc, "wall");

                      FailureHandlingOptions fho1 = trans1.GetFailureHandlingOptions();

                      fho1.SetFailuresPreprocessor(new FailuresPreprocessor());

                      trans1.SetFailureHandlingOptions(fho1);

                      trans1.Start();

                      Line line = Line.CreateBound(new XYZ(), new XYZ(10, 0, 0));

                      Wall.Create(doc, line, lvl.Id, false);

                      Wall.Create(doc, line, lvl.Id, false);

                      trans1.Commit();

                  }

                  return Result.Succeeded;

      本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

      未標題-1.jpg

      上一篇:二次開發教程:Revit開發創建部件和部件視圖

      下一篇:二次開發教程:Revit開發之放棄重做操作

      主站蜘蛛池模板: 亚洲国产精品无码第一区二区三区| 中文字幕一区二区三区有限公司 | 精品一区二区三区免费毛片 | 亚洲国产日韩在线一区| 国精产品一区一区三区MBA下载| 波多野结衣高清一区二区三区| 亚洲色无码专区一区| 国产av一区二区三区日韩 | 波多野结衣一区二区三区| 久久国产精品免费一区二区三区| 天天视频一区二区三区| 美女视频一区三区网站在线观看| 国产免费无码一区二区| 人妻免费一区二区三区最新| 精品国产日韩亚洲一区| 亚洲日本一区二区一本一道| 国产一区在线电影| 无码人妻一区二区三区av| 亚洲AV成人一区二区三区观看| 亚洲国产日韩在线一区| 2018高清国产一区二区三区| 精品无码人妻一区二区免费蜜桃| 国产丝袜美女一区二区三区| 精品久久一区二区| 无码人妻精品一区二区三区在线 | 福利在线一区二区| 视频一区视频二区在线观看| 亚洲视频一区二区| 中文字幕一区二区免费| 亚洲AV色香蕉一区二区| 99精品久久精品一区二区| 久久精品一区二区影院| 无码精品人妻一区二区三区人妻斩| 亚洲国产精品乱码一区二区| 日韩精品一区二区三区中文精品| 精品女同一区二区三区免费站| 亚洲丶国产丶欧美一区二区三区| 人妻夜夜爽天天爽一区| 美女视频免费看一区二区| 亚洲一区二区三区AV无码| 无码精品人妻一区二区三区人妻斩|