HomeAboutMeArticlesDiaryLinksContact

The only thing I would never allow is Boolean.

13 September, 2020 - 1 min read - Tags: RhinoCommon,Grasshopper

やったこと

  • HoaryFox の壁開口対応

    • 昨日から色々試したが、結果として対象サーフェスからTrimmedSurf作ってそれに対してDiffとった
    • BooleanDiffでエラーなのは、EvaluateSurfaceで変な値が返ってきているものだったのでそれ以外は成功していた
    • ただし思ったDiffではなかったので、TrimしたSurfにした
  • HoaryFox ver1.1.0のリリース

技術メモ

  • 多分だけれど、Surface.Trimは対象サーフェスのTrimmedSurfaceなので絶対にBooleanうまくいく?

    • 昨日手法はEvaluateしてサーフェス上の点を取得して別のサーフェスを作っていたので、うまく行かなかったのではないか?
    • Surface.Trim Method
    • surface.Trimはuvから作成できるので、今回の開口位置のデータの持ち方にあっていて実装しやすかった。
    • BooleanDiffの失敗があり得るので、try-catch で Exception 対応している
    • CreateBrep.cs

      if (open.Id.Count != 0  && brep != null)
      {
      var surface = brep.Surfaces[0];
      var trimSurf = new List<Brep>();
      
      for (var i = 0; i < open.Id.Count; i++)
      {
          var intervalX = new Interval(open.PositionX[i], open.PositionX[i] + open.LengthX[i]);
          var intervalY = new Interval(open.PositionY[i], open.PositionY[i] + open.LengthY[i]);
          trimSurf.Add(surface.Trim(intervalX, intervalY).ToBrep());
      }
      try
      {
          var diffBrep = Brep.CreateBooleanDifference(new Brep[]{ brep }, trimSurf.ToArray(), tol)[0];
          planeBrep = diffBrep;
      }
      catch(NullReferenceException)
      {
          planeBrep = brep;
      }
      }

その他

  • Boolean絶対に許さん

© 2021 hrntsm / Built with

Gatsby