hrntsm / HoaryFox

Grasshopper component for handling ST-Bridge data, and exchange between Karamba3D and ST-Bridge
https://hiron.dev/HoaryFox/
MIT License
8 stars 2 forks source link

Create a Brep for a thick non-planar slab. #164

Closed hrntsm closed 3 years ago

hrntsm commented 3 years ago

厚さのある non-planar なスラブをclosed brepの作り方を考える。

hrntsm commented 3 years ago

作成した trimmed surface を押し出しして、側面を作り、反対側はコピーしたサーフェスを作りJoinすることで解決した
押し出し方向はサーフェスの中心のnormal方向とした。

サーフェスのドメインの取得の仕方は以下 https://discourse.mcneel.com/t/how-to-reparameterize-a-surface-in-python/109317

hrntsm commented 3 years ago
  private void RunScript(Brep y, ref object A)
  {
    var brepList = new List<Brep>();
    var curveList = new List<Curve>();
    brepList.Add(y);

    var aaa = y.Faces[0];
    var vec = aaa.NormalAt(aaa.Domain(0).Mid, aaa.Domain(1).Mid);

    foreach(var brepEdge in y.Edges)
    {
      curveList.Add(brepEdge.DuplicateCurve());
    }

    foreach(Curve crv in curveList)
    {
      brepList.Add(Surface.CreateExtrusion(crv, vec).ToBrep());
    }
    Brep x = y.DuplicateBrep();
    x.Translate(vec);
    brepList.Add(x);

    var brep = Brep.JoinBreps(brepList, 0.0001);
    A = brep;
  }