Giter Club home page Giter Club logo

buildingblocks's Introduction

Building Blocks

Building Blocks is an open source repository of interrelated functions for the Hypar platform. Each of the functions contributes a building system to a generated model such as a building envelope, a facade, or floors. Feel free to fork this repository to make your own functions for Hypar!

buildingblocks's People

Contributors

andrewheumann avatar andrzej-rudzki avatar anthonie-kramer avatar anthonyhauck avatar cdriesler avatar dmytromuravskyi avatar gon avatar ikeough avatar jamesbradleym avatar katehryhorenko avatar katerynasloboda avatar mattc avatar nadiia-volyk avatar serenayl avatar srudenkoamc avatar wynged avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

buildingblocks's Issues

Enable override of span direction.

Structural members currently only span in the shortest direction of the cell. You should be able to override them to align to a grid direction, the longest direction of the cell, or a specific edge of the cell.

Disconnected structures are causing SkyCiv to timeout.

Disconnected structures cause SkyCiv analysis to run forever, causing a timeout on Hypar. Because we're setting down beam center lines to sit below floors, we're causing the lowest level beams, if they are created to be set below the bottoms of the columns, causing a disconnected structure.

ProgramReader: Incorrect height conversation factor

roomEntry.area = Math.Round(roomEntry.area *= METRIC_FACTOR, 3);
roomEntry.height = Math.Round(roomEntry.height *= METRIC_FACTOR, 3);

Just stumbled across this, I think length (height) and area would have different conversion factors. It appears METRIC_FACTOR is the area conversation between m^2 and ft^2, so you'd want Line 88 to be something like:

roomEntry.height = Math.Round(roomEntry.height *= Math.Sqrt(METRIC_FACTOR), 3);

Show member sizes aligned with the members.

You can display member sizes in the Structure function currently by labeling by Name, but the tags are all aligned the same way. The LabelConfiguration has been extended with a property Direction that is set to the world-space direction of the member. We should update Hypar to show the labels oriented according to the direction property.

image

Tile seams need to be knitted.

In the image below you can see seams between the tiles. The same effect was observed when creating a tile-set in the client and was fixed by averaging the vertex locations at the seams. The same needs to be done for the topos generated by the Location service.

image

Structure Block

Hi,

I am trying to use mixed-mode ai example (https://lnkd.in/e28GVqvt). The structure block is not working. I am getting this error: No LevelVolumes found in your Levels model. Please use a level function that generates LevelVolumes, such as Simple Levels by Envelope

I have levels block but structure block is not recognizing or accepting it. I just stuck here. Could you please help me?

Envelope By Sketch Improvements

  • The “basement height” for Envelope By Sketch should be 0 by default.
  • The “Building Height” property should be called “Height” and shouldn’t reference a building in its description.
  • The “Height” property should have a minimum of 0, or something really small.

Location is innacurate.

The picked Location in the location input is located southwest of the origin eventually placed on the topography. In the image below, the picked location in the location input is at the outer corner of the bend in the road. In the generated topography the origin is to the northeast. This is true for all northern hemisphere locations that I've tested.

image

In the image below, the same behavior occurs for the southern hemisphere. This suggests that it's not a skew based on something like the radius of the earth (one of the variables in the mercator calculations).
image

Envelope by Sketch throws exception thrown on dev.

Reported by @cdriesler

Object reference not set to an instance of an object.: NullReferenceException
   at EnvelopeBySketch.EnvelopeBySketch.Execute(Dictionary`2 inputModels, EnvelopeBySketchInputs input) in /Users/ikeough/Documents/Hypar/BuildingBlocks/Envelope/EnvelopeBySketch/src/EnvelopeBySketch.cs:line 37
   at Hypar.Functions.Execution.InvocationWrapper`2.InvokeAsync(TInput input)
   at EnvelopeBySketch.Function.Handler(EnvelopeBySketchInputs args, ILambdaContext context) in /Users/ikeough/Documents/Hypar/BuildingBlocks/Envelope/EnvelopeBySketch/src/Function.g.cs:line 45
   at lambda_method(Closure , Stream , Stream , LambdaContextInternal )

Envelope By Sketch has a null profile and new unexpected types.

Two recent changes to "Envelope By Level" should be discussed as they paint a picture of how Hypar will break in the future when function authors change the interface of their function.

  1. The Envelope schema has a Profile property which has recently started returning null. This breaks all functions which currently use that profile (ex: Facade).
  2. The "Envelope By Sketch" function now generates elements of type Elements.LevelPerimeter. Functions which consume "Levels" don't know anything about this type so they ignore it during deserialization.

Neither of these changes were obvious to consumers of "Levels". The code generator correctly generated updated class files for the updated schemas, and the compiler identified locations where API calls needed to be adjusted. In the first case, nothing in the tooling can identify when a function author decides to stop using a property. This may be an oversight, or an attempt at deprecation, but the consuming function needs to know. In the second case, a new type was introduced into the system but we do not currently track type dependencies so the "Facade" function could not know that the "Envelope by Sketch" function had begun generating a type that it did not understand.

The easiest short term solution is to update the documentation to the "Envelope By Sketch" function to say something like: "This function generates Envelope and LevelPerimeter objects. To get the perimeter of an envelope, use the LevelPerimeter object at the corresponding level." For properties which are deprecated, the property should not be removed and a deprecation message should be included in the property's description.

@anthonyhauck @mattc

Lights are not enabled if only a location is in the scene.

Open a new workflow. Place a Location function. Lights are dark. This is because we're currently fitting the sun position around everything except the topo (using a 1km test width). We need to fit the scene to the topo if it's the only thing in the scene.

Allow nodal editing of roof for setting high and low points.

Structural steel is currently placed at or below the level. In the case of a roof, the structural steel often has to slope to support a slanted roof. Given a roof defined by points, we should be able to project the steel vertically onto that roof.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.