完善主體資料,免費贈送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開發之放棄重做操作

      主站蜘蛛池模板: 一区二区三区在线观看中文字幕 | 亚洲国产成人久久综合一区| 中文字幕一区二区三区乱码| 麻豆一区二区免费播放网站| 在线观看国产区亚洲一区成人| 韩国精品一区视频在线播放| 人妻aⅴ无码一区二区三区| 国产嫖妓一区二区三区无码| 3D动漫精品啪啪一区二区下载| 国产亚洲一区二区手机在线观看| 免费萌白酱国产一区二区 | 好吊视频一区二区三区| 午夜视频在线观看一区二区| 亚洲一区二区中文| 亚洲无人区一区二区三区| 久久AAAA片一区二区| 人成精品视频三区二区一区| 美女免费视频一区二区| 国产一区二区免费在线| 欧洲精品码一区二区三区| 国产肥熟女视频一区二区三区| 成人免费一区二区无码视频| 色欲AV蜜桃一区二区三| 国内精品一区二区三区东京| 亚洲国产一区在线观看| 欧美激情一区二区三区成人| 伊人久久精品无码麻豆一区| 精品无码人妻一区二区三区18 | 成人中文字幕一区二区三区| 91久久精品午夜一区二区| 日本一区二区视频| 亚无码乱人伦一区二区| 日韩精品中文字幕视频一区| 一区二区三区四区在线观看视频| 欧洲精品码一区二区三区免费看 | 精品视频一区二区观看| 精品不卡一区中文字幕| 精品一区二区无码AV| 无码精品视频一区二区三区| 国产一区在线mmai| 天堂不卡一区二区视频在线观看 |