New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Authoring flow segments and fittings #2181
Comments
+1 on extrude towards +Z
Sent from a mobile device. Excuse my brevity. Kind regards, Thomas
Op di 3 mei 2022 04:53 schreef Dion Moult ***@***.***>:
… The goal is build operators that can perform connections between flow
segments, and automatically insert flow fittings.
IFC does not establish any conventions around axis orientations for
segments and fittings. I had a look at what Revit does, but their system is
pretty unsemantic, where all object origins are at the storey, and e.g. for
a rectangular ducts their rectangle X and Y parameters don't always
correlate to the cross section. It's pretty terrible. So I'm going to
follow what IFC does for beams / columns / profile sets which makes a ton
more sense.
When creating a rectangular duct segment, the axis convention must always
be like this: the duct cross section width is local X, height is local Y,
and it is always extruded in the positive Z direction. The position must
always be in the center as shown. This matches the convention for IFC
profiles exactly.
[image: 2022-05-03-121403_473x393_scrot]
<https://user-images.githubusercontent.com/88302/166395429-5b03cbe7-8870-40ed-8e12-dae6c2741202.png>
[image: image]
<https://user-images.githubusercontent.com/88302/166395509-f168d871-02cc-492d-b713-7609ce679c92.png>
The user must be able to choose a point with the 3D cursor, and use
Shift-E to "extend" the point closest to the cursor. Similar to how
extending walls works.
The user must also be able to choose a point with the 3D cursor and use
Shift-S to "split" at the point closest to the cursor. Similar to how
splitting walls works.
In addition, the following operations need to be possible:
- Bend
- Connector
- Junction (more than 2 connections)
- Obstruction (only needs one segment as input)
- Transition (same as connector, but occurs between segments of two
different types)
When a connection between two segments occurs a third object will be
inserted called the fitting. The fitting geometry will be already
available, so the only requirement is to derive the matrix_world of the
fitting.
See screenshots of typical operations:
mep-axis.blend.txt
<https://github.com/IfcOpenShell/IfcOpenShell/files/8608065/mep-axis.blend.txt>
[image: 2022-05-03-124438_761x739_scrot]
<https://user-images.githubusercontent.com/88302/166399362-f06e07ac-b048-42a5-87d4-ee7f5a9968de.png>
—
Reply to this email directly, view it on GitHub
<#2181>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAILWV3BNLLSRK65T2S542TVICIKTANCNFSM5U5VIF7Q>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
@aothms do you know whether or not there is an IFC relationships available to describes that an IfcFlowFittingType is capable of connecting one or more other IfcFlowSegmentTypes? Unless I missed something, there seems to be no way of knowing whether or not a flow fitting type is applicable to a segment type. The PredefinedType seems to help narrow the scenarios (e.g. a BEND is only applicable to 2 segments sharing the same type where as a TRANSITION is applicable to two segments of different types) The JunctionType in Pset_FittingJunction can also help filter 3 and 4 segment combos, but not exactly which segment type it applies to. And of course the class (e.g. duct fittings only connect ducts, not pipes) also helps. If nothing is available maybe IfcRelAssignsToProduct can be (ab)used for this purpose? |
No, sorry, I'm very unfamiliar with the semantic structure behind most of the systems in IFC |
OK, for the moment then as an authoring tool I can use the existing hints to narrow down a shortlist, then the user can pick from there. Once a fitting is used, however, it then becomes very easy to know which one its applicable to... just check where it's already used :) Not ideal of course. |
Could it be possible in the Future to get calculations of a whole system ? |
I can help with that basically in comfort air ventilation speed is 4 m/s , inner duct area is known , so basically you can visualized speed across duct, for water(heating and sanitary) is 1 m3/h, so if you know the flow for air like 1000 m3/h divide with 3600 to get m3/s and this divide with 4 m/s to get area. Now there are typical norms for duct size like round is fi100,fi125,fi160,fi200, fi250, etc and for square ducts there is 225x125; 325x125, and all combinations with y25xy25 where is y 1 to 12. Basically you need have parameters for flow on all terminals or total flow on AHU unit on source. This is velocity based sizing , and there is a pressure based sizing but basically is calculated thru speed, and more difficult. For me the main problem is if we have round pipe fi250 and air terminal fi100 how to detect difference put t element 250-250-250 and reducer 250->100 or T-reducer 250-100-250 and connect terminal with round duct fi 100 on this fi250 round duct. Idea would be for start that all terminal (grills, air valve, AHU, ventilators )have connection size and flow as parameter and then connect connection point on one element to another and if difference put reducer, and then later visualize speed like check if flow for this connection size (duct) is bellow 4 m/s if is ok we can then connect to bigger duct and total flow of all connected terminals on that duct must be bellow 4m/s . ( 4 m/s is typical but can be bellow in noise sensitive areas or higher where noise is no big issue ) |
Here is a sample Acca is reference in IFc world also member of ODA so is reference point for MEP authoring tool but is close source and can’t write plug-ins for academic world |
I think i understood 75% of it :D I cant really help with any technical solutions, only wanted to share what i think would be cool to have in such a tool, or rather what i could use, since thats what i need for my work. |
Basically you need to have volume flow defined in all terminal discharge points, but for that in each room, space you need to define ventilation method, one is AHI basically take room volume (area x height) and multiple with 6-8 1/h ( but can be one number from 0-20 1/h this method are for toilets, baths, restaurants etc., A second is define amount of person in room (number of person x 35m3/h/person) and with this you will get needed air volume for each room space ( m3/h ). Now you must check is sum volume flow of all air terminal in room equal or little bigger of flow needed for this room. Basically you must have small parametric database of air terminal IfcAirTerminal with size and nominal flow like (round air valve , fi 100, 90 m3/h) , (round air valve , fi125, 120 m3/h), and for grills size with plenums(round and square), ventilation box (fi100, 90 m3/h) -ifcFan , ahu (fi250, 500m3/h), all four connection point are fi250 , and flow in each duct is 500 m3/h ifcdamper, ifcFan, etc |
here is a good article for that, would be great to have implementation of this article into BlenderBIM so we can start comparing result from commercial solutions and this academic ones https://www.tandfonline.com/doi/pdf/10.1080/13467581.2022.2077734 also implement library like this https://source.thenbs.com/bimlibrary also Belgium, Nederland, Luxembourg have one National IFC library with standard elements |
This is awesome! We're not yet at the stage of running calculations - still implementing geometric authoring and port connectivity. After that, definitely the next step is calculations! |
One more idea , is possible to make like native ifc , git respiratory for hvac elements, furniture so we can make ifc elements as contributor , hvac element maybe parametric like |
The goal is build operators that can perform connections between flow segments, and automatically insert flow fittings.
IFC does not establish any conventions around axis orientations for segments and fittings. I had a look at what Revit does, but their system is pretty unsemantic, where all object origins are at the storey, and e.g. for a rectangular ducts their rectangle X and Y parameters don't always correlate to the cross section. It's pretty terrible. So I'm going to follow what IFC does for beams / columns / profile sets which makes a ton more sense.
When creating a rectangular duct segment, the axis convention must always be like this: the duct cross section width is local X, height is local Y, and it is always extruded in the positive Z direction. The position must always be in the center as shown. This matches the convention for IFC profiles exactly.
The user must be able to choose a point with the 3D cursor, and use Shift-E to "extend" the point closest to the cursor. Similar to how extending walls works.
The user must also be able to choose a point with the 3D cursor and use Shift-S to "split" at the point closest to the cursor. Similar to how splitting walls works.
In addition, the following operations need to be possible:
When a connection between two segments occurs a third object will be inserted called the fitting. The fitting geometry will be already available, so the only requirement is to derive the matrix_world of the fitting.
See screenshots of typical operations:
mep-axis.blend.txt
The text was updated successfully, but these errors were encountered: