tt-acm / dynamosap Goto Github PK
View Code? Open in Web Editor NEWDynamo <> SAP interoperability.
License: Other
Dynamo <> SAP interoperability.
License: Other
inputs:
StructuralModel
FilePath _ Optional GrabOpen SAp Intance is path is not provided
output
modified Structural Model π
workflow should be:
// 1. LoopOver Structural Model Elements
with element.GUID query the element in SAP
if exists update the properties of element (dynamo> sap)
if not exists create new element (frm) and return Label and set the item
//2, delete elements
Loop over SAP Model elements if not found in StructuralModel, delete them from the SAP Model.
@howesben @anagpuyol
I am thinking two options:
adding a Update.cs and and implementing all update nodes here! see below
or
we can add Bake.ToSap a boolean input for create/update? if false is creating if true updating the model. But we need also an optional Filepath if the SAPmodel is not opened already!
if update is true
update the open instance or exsitign one (use filepath)
if update false
create open new instance and save as given path if file path is set (path is optional)
Bake.ToSAP also needs Units input that I will implement it soon. Please let me know your thoughts.
Document what the class does and give credit:
Developed by Thornton Tomasetti's CORE studio for Autodesk.
CORE Developers: main coder, secondary coder
If a group already exists in SAP and we define new ones in Dynamo and bake them into the model, the old ones are deleted.
Make a separate project for each SAP version within the solution
Build a node that creates a distributed load along a frame. It should take a frame, a vector, and a load amount as inputs. Output should be a load object that the Create SAP Model node can collect
Add an apache v2 license to the repo
As per our discussion today, allow the user access to analysis results after running an analysis using a load combination.
@bhowes-tt , @anagpuyol
lets list the all the questions for Dynamo Team here.
Exception of type 'ProtoCore.Exceptions.CompilerInternalException' was thrown.
Exception of type 'ProtoCore.Exceptions.CompilerInternalException' was thrown.
my getting ROT code is sometimes works sometime doesn't. Don't know what is actually causing this.
I found this ROT sample file for accessing cad applications. I would compare with my code !
Similar to fixities, we need to provide a set of typical release types. We should ask Rob or @Reynolds534 for help defining these. The types that made it into the scope are:
I wanna discuss about dynamo units with u;
For now I have just add Units Bake.ToSap node, so whatever the units selected from dropdown, the length is set as it is, for example length of this frame is drawn as 10 cm in sap Model.
I was able to read display units of Dynamo environment successfully. yayy ! But Ana and I thought to convert the input value from dynamounit(inunit) to sapunit (outunit) might be confusing to user. I have been looking for units issues at DynamoDS repo. Actually I got more confused. It seems the double output in dynamo is unit less. There is length nodes if length from double node returns converted values !
dynamo display lenght units is meter:
dynamo display length units is decimal inch
this means that Dynamo API is in meter !
So I just need to make conversion meter to what ever is SAP units selected right ? display units doesn't make any difference but it is confusing from a user point of view.
I am curious about your thoughts before I do some progress on this.
@eertugrul Can you have a look at this?
@bhowes-tt @mnaugle-tt @anagpuyol
I have started the organizational chart of nodes structure of Dynamo<>SAP link. Please feel free to comment!
Build a node to create a point load on a frame. This should take a frame, a t value between 0 and 1, a vector (representing load direction) and a force amount.
I think this is related to #34
I am coding the Point Load on Frame node and there are several inputs that are optional. Unfortunately, Dynamo does not support them (yet). We will have to make them required for the time being. More here:
πΉ
Build nodes that create SAP restraints. These should take either a dynamo point or XYZ values as mandatory inputs, and XX, YY, ZZ default boolean values to set which axes are restrained. The output should be a Restraint object that can be collected by the Create SAP Model node
Write up an actual readme describing the spec for the package.
@anagpuyol and I made a very good progress today. We created generic IModel interface that holds the structure, loads, loadpatterns etc. And with Bake components we will be able bake (create or update) to related platforms such as Bake.ToSAP or Bake.ToRevit or Bake.ToEtabs etc. So we should meet up and layout the workflows again with this approach.
cheers π―
I installed the DYNAMOSAP package but it is not appearing in UI
Warning: Read.SAPModel operation failed.
Retrieving the COM class factory for component with CLSID {05C24B9F-F327-47C2-B6EF-5660A8175ECB} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Build a node that collects elements created upstream (frames, loads, fixities, etc) and composes a new SAP model. Ideally, this should open a new instance of sap and create a fresh model every time it solves.
@bhowes-tt, can you please share your Python node to read the Revit analytical model? Thanks!
@anagpuyol - please put together a dummy Dynamo graph containing all of the nodes we are building for this prototype, mocked up as code blocks. We'll use this file to get input names and orders correct, and to make sure we have a high level view of what we are building together.
I tried changing the load value and the type from Force to Moment. The change was not displayed in SAP
When the Frame input of the SetLoad is changed, the Bake component cannot handle it. It will return empty labels for the previous frames that were connected to the node (the beams, in red) and will not bake them into SAP.
As discussed with @eertugrul, users will need to add a new SetLoad node to bake a different frame with that same load into SAP
Find a suitable model that we can use for marketing
Confirmed: CSI tech support responded there is no current function to define polygon using SD via OAPI.
Here is what we can add:
It is possible to create :
General section property
Section property modifier ( it sets the factors to section existing property)
Non prismatic Section Property
SDShapes for most common types (such as I section, Angle, Channel etc)
I have also looked the GeoGym GH, there are components of the first three items I mentioned above ! No components to create SDShapes or from curve ! The last components creates a new section profile out of existing one with probably another material, this case the user should rename the section because u canβt create two property with same name.
I found this class showcasing a sample to use the IGraphicItem interface.
While a point can be colored (tho not supported yet), I'm not sure how this applies to meshes (or surfaces), since the IRenderPackage has limited methods (points and lines). I'm posting this for possible future implementation...
build a node that creates a load case in SAP. It should take as inputs:
output should be a Load Case object that can be passed into the Create Model node #2
Some SAP methods are called from BakeToSAP and they are not successful. However, decomposing the model shows more information (in this case, it shows that the model has releases).
If a Read node is used instead, the decomposed model shows correctly that the releases are null, that they were not updated in the SAP model
Create dynamo nodes that allow users to create SAP frames in dynamo. They should take either a line or two points as inputs, as well as a material property, section property, justification and rotation. Set default values for material, section ,justification, and rotation.
Build a node that defines a SAP load pattern. Inputs should be:
The output should be a Load Pattern object that can be passed to the create load nodes ( #3 #4 ) and to the Create SAP Model node #2
One of the workflows we have discussed beginning of this project: for SAP > Dynamo > SAP I think we need also update nodes to modify structural elements in Dynamo ! we have only Frame.Decompose node so we can watch the properties of each element after we read from SAP but actually we don't to update any of object properties in Dynamo now. I think we need Frame.Update nodes
Scenario one:
input
Frame as Element (read from SAP)
-Line or EndPoints
Scenario Two:
I wish we were able to make some of these input as 'optional' somehow in Dynamo. If this is not happening we might to create individual nodes for each updates such as Frame.Update (for just geometry) get either Line or end Points ) / UpdateSectionprop etc.
Any thoughts on this ? we can also name as 'Modify' !
We need to include a sample file that demonstrates how to edit an existing SAP model with Dynamo. A couple of good use cases are
This relates to #24 - we should also test geometrical updates, even though @eertugrul is skeptical.
We need nodes that add elements to (and remove elements from) an existing group. These will be useful in SAP > Dyn > SAP workflows.
Create a sample file that shows how to translate a revit structural model into sap, trigger an analysis, and write some force data from sap back into the Revit model.
We should keep this one very simple, and will probably have to create a project parameter or two to write force data in (in the Revit model).
All of this should be done with our nodes and vanilla dynamo nodes --- no fancy stuff.
can we rename the dropdown nodes as followings ?
LoadPatternTypeDropdown --> LoadPatternTypes
LoadCaseTypeDropDown --> LoadCaseTypes
UnitsDropDown --> Units
JustificationTypeDropdown --> Justifications
ForceTypeDropdown --> ForceTypes
SectionCatalogDropdown --> SectionCatalogs
MaterialDropDown --> Materials
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.