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
Automated Revit annotation and simple IFC roundtripping #18
Comments
This is strange, when I reimport my own IFC file, indeed the lower stud comes cleanly, while the 2 others have some defects. This is clearly a flaw somewhere in the exporter, I'll try to locate the problem. The very good thing is that Revit is apparently able to edit any object as long as it doesn't come triangulated. We might be able to improve the workflow a lot, because normally FreeCAD's IFC exporter should only triangulate when absolutely unavoidable (curves that it can't attribute to a 2D profile). About the master file, we could try something like this: leave a couple of objects there (for example the exterior panel, or the window), then each of us models different parts and we try to merge... About Constructivity, unfortunately I cannot run it at the moment (crashes on Linux and in my Win7 virtual machine), but Tim said he would have a new version son that might solve that problem. Anyway, we should certainly explore it. But having several partial IFC files, I think both FreeCAD and Revit can handle it. About the "description" field, I'll try to store the same info inside an IfcProperty too, let's see if it works better. EDIT ok, found the problem already... |
okay, sounds good. Just curious, did my IFC file with the new copied studs come in triangulated?
sound good. I'll look at running merge tests with our 'detail file' as we evolve it.
sounds good. From my perspective, i feel we should look into using the IFCSURFACESTYLE or the IFCMATERIAL property. Having run tests, upon import, Revit translates those properties to Revit's native material property. If we approach this way, i can from Revit's side globably change a material throughout the file, if necessary, instead of changing each instance if we went with another parameter for example. @yorikvanhavre, would it be the same from FreeCAD's side, that is changing the material property globally? @dimven what's your thoughts here?
Actually i wasn't looking to view our 3D details in an axon view. I was looking to model in 3D, but view and annotate this content in 'plan' and 'section' only. examples... |
Yes your file opened correctly. I updated mine too, I believe now the 3 studs should be editable. At the moment FreeCAD will export "basic" material info as IfcSurfaceStyle, but will create a separate one for each object. I could change that easily I think. Replying to some @dimven's observations above:
|
@yorikvanhavre @theoryshaw Another interesting find was that when you link the file, import and ungroup, the parameter data remains inside. |
I've been digging through the API. It seems like Revit 2015 has two modes of opening an IFC files - Reference and Parametric. This might be what is taking away the parameter data. |
Sure, i'll test it. as you hinted above, the objects are not editable when you bind an IFC file into Revit. |
Yes. Unfortunately the above dynamo graph makes elements uneditable as well. It seems that during the conversion process from IFC to RVT components, the assigned parameters are lost. The dynamo definition bypasses the conversion process by importing the file in "Reference" mode. |
resultant files: a499c59 video workflow: Unfortunately we need those objects/parameters to be editable for roundtripping. Can we entertain using IFCSURFACESTYLE or the IFCMATERIAL property? Those translate into revit's native material parameter. |
Hmm, ok I think I've got some ideas how to fix this. |
sounds good. I would only say let's keep an eye toward future expand-ability to other platforms (archiCAD, microstation, for example). If we embrace a parameter that is already consistently translated with existing MVD's like CV 2.0 then it will make it easier to translate this roundtripping workflow to those platforms in the future. Obviously the automated annotation part of this will be Dynamo/Revit specific, but let's try and keep the ability to roundtrip the object/parameter/value as agnostic as possible. (or as close to an existing MVD, as possible) If that makes sense. |
@dimven dynamo works in a virtual machine, I just installed it and seems to work fine. Cool! Now I need to look a that python thing. You might not be aware of that, but FreeCAD can be imported as a python module in another application (once the path is set in sys.path, a simple "import FreeCAD" does it) imagine freecad running inside dynamo, sickening wild possibilities! I'm working on proper materials support in FreeCAD now (discussion here if anyone interested http://forum.freecadweb.org/viewtopic.php?f=23&t=10503 ), not finished yet but we'll soon have something reliable I think. |
Thanks @yorikvanhavre for the update. including these for others... openIDF or BSDD might not be appropriate here, but wanted to log nonetheless. Thanks. |
Hi @dimven It appears, via the back/forth with @yorikvanhavre that we'll be embracing the IfcMaterial parameter. Just wanted to check in with you to get your thoughts on the annotation part. Would like to use this solution, if possible, for the CDs we're putting together for the State Submission, which will be in a couple weeks. Here's the latest detail_ryan.ifc file. |
Hi guys, unfortunately I've been hard-pressed for time lately and haven't been able to contribute much to the workflow. First of all, the new detail looks great. However I have some comments. https://www.youtube.com/watch?v=kWzGKjihrFE&feature=youtu.be On the FreeCad/IFC materials side, I am not sure how other software solutions handle IFC materials but at least for Revit my observation is the following: This is how the material is extracted from Yorik's original detail: |
Hi @dimven Unfortunately, when you assign a material via a 'material parameter' as your video illustrates, it's lost upon a roundtrip. On a high level, what other object types could we use, other than a MIP, that will holdup to a roundtrip? So Dynamo cannot extract the material 'text string' from objects inside a MIP? |
Wow, pretty simple system (map from the name "concrete" to a "concrete" material found in Revit's presets...) Could lead to major problems if one is not very careful! I'm working on something in FreeCAD now ( @dimven it is normal that no material info gets exported from your version), that I think will be good, and be ready in the next days, with total control over material properties. I didn't look much yet at how you store these properties in an IfcMaterial (for ex: how do you store that a concrete material must have a certain color, or a certain finish (rough, smooth, etc), but it is certainly possible (probably with this: http://www.buildingsmart-tech.org/ifc/IFC4/final/html/schema/ifcmaterialresource/lexical/ifcmaterialproperties.htm ). Then we'll be able to store and retrieve all that from/to IFC files. Curious to see what Revit can do with it... @theoryshaw can you try dong something like that in Revit? For example, a blue concrete. I'd be curious to see how it comes in the IFC files. So far the materials you used in the detail don't seem to have any extra property stored (unless I'm wrong), just their name... In IFC there also seems to exist a lot of presets ( such as http://www.buildingsmart-tech.org/ifc/IFC4/final/html/schema/ifcstructuralelementsdomain/pset/pset_concreteelementgeneral.htm ). Unfortunately it seems to be a big mess (wood pset contains different entries than concrete pset, for ex), not sure how/if that can be used efficiently. This discussion is extremely interesting and useful. Many people theorize about IFC workflows, few try to actually do it. Hurray! |
@yorikvanhavre Then I made sure I assigned the new template from Open>IFC Options: Opened the detail as usual and switched to the "Realistic" visual style and ta-daa we've got bricks! :) However when you go back to the "Shaded" visual style things look a bit different. It seems that the shading of the material gets overwritten as per the IFC file: |
@theoryshaw As you're probably well aware, there are three classes of parameters inside Revit - Instance, Type and Family. Dynamo's approach is quite robust and can access any exposed parameter of an object like so: Which export settings are you using when exporting to IFC? (Assuming you're using the alt. exporter from here: https://apps.exchange.autodesk.com/RVT/en/Detail/Index?id=appstore.exchange.autodesk.com%3aifc2015_windows32and64%3aen&autostart=true ) I cloned the "IFC2x3 Coordination View*" settings and tried experimenting with the advanced settings to see if I can preserve the material assignment from the MIP families but nothing seems to work. There's one more option left - experimenting with the category assignment of the MIP objects. the GenericModel category just doesn't seem to process well. I'm pretty sure that if we assign the elements to better handled categories like Door/Wall/Column/StructuralFraming, the parameters will be preserved. I'll try to switch the MIPs to different categories and see if that helps. |
damn... @yorikvanhavre, how about automated annotation on your end? :) |
Hi @AngelVelezSosa, per @dimven's comment above, do you guys have any plans of exposing the parameters/values inside MIP families? |
Quick update. So changing the In-Place's category does have some effect. The most potent ones seem to be Walls/Columns/StructuralColumns. When assigned as a wall, you can access the material property from the wall type's composite structure layers(hard). When assigned to columns, the material can be accessed as a type property. When assigned to structural columns, the material can be changed as an instance property. However this approach is sub-optimal because: In-place components are great for drafting the detail because they're really easy and quick to create and edit but it seems like they're not very robust once exported to IFC. Unfortunately I can't think of a good replacement. Do you guys have any other ideas? |
@dimven ok that's great. So we would have already a quick way to map materials... Would be just a question of giving them a defined name when exporting from FreeCAD, and the trick is done. But I added yesterday a first draft of material support to FreeCAD's arch workbench, I think it will prove pretty powerful. Now I'll adapt the IFC exporter and importer to work with it. At the moment, in FreeCAD, in IFC and apparently in Revit too, object color and material color are two different things. In IFC, an object can have both an IfcMaterial and an IfcSurfaceStyle. Revit apparently uses one or the other depending on the view level... In FreeCAD, I just unified these (the material now dictates the object color). Not sure it is the best solution, it's more a test to see how it goes. Anyway, both will have the same color when exported to IFC. This WE I'll probably have first tries at IFC files with full IfcMaterials. About objects that are not editable in Revit, frankly I would only try up to a certain point, then leave it... I think we will always end up with a couple of objects that are uneditable, both in Revit and FreeCAD. The thing would be to consider that, if these objects must be changed, then they must be remodeled, and restrict that to as few cases as possible... At least, if these objects don't create further problems (they appear correctly in 2D projections, etc), I think it's manageable... |
totally agree... currently dialing into that lowest common denominator. |
Hi guys, |
There are a lot of comments to go through here, so I'll add some information. For Link IFC, Revit imports the IfcOpeningElements and the IfcSpaces. This allows you to schedule the information and also update them (since we store their GUIDs). These can be turned off under Generic Models visibility - unfortunately the API doesn't allow a great way to do this automatically, but once you do it once, it should remain off through updates. As far as the entities that don't get parameters on Open IFC - that's a bug, so we'll put it on the list. Link IFC has already fixed that bug as mentioned in the thread. Note that Link IFC also has some support for IFC4 in addition to IFC2x3. If you do import faceted geometry, you will see the edges, unfortunately. If you have some more specific questions, I'll be glad to give it a shot at answering them. Angel |
The material isn't the most crucial point of our work flow, I just wanted to get it out of the way. I have an idea for transferring all the parameter data over to the MIP components that I will explore this long weekend. I'll keep you updated once I make any progress. |
A very interesting link: |
for sure... thanks for sharing. Exciting days. |
Parameter extraction from the IFC file is ready: I start off by setting the default template to the one you uploaded.
At this point the RVT file and the shared parameters file can be discarded. The parameter creation proved to be a bit tricky but previous work from Konrad Sobon and his archi-lab.net package proved invaluable. (http://dynamobim.com/forums/topic/create-new-revit-project-parameter-from-dynamo/) (http://archi-lab.net/) To preserve the parameters on export, we'll need to modify the IFC export settings and enable "Export user defined property sets" similar to the description here (http://sourceforge.net/p/ifcexporter/wiki/Custom%20parameter%20mapping/) I think the next step of the round-trip will be to apply revit materials as per the IfcMaterial parameter. I'll try to make the material override work flow a bit more robust and then integrate it together with the parameter population work flow. Once I sort out materials, I'll focus on view generation, annotation and finally sheet generation. What are your thoughts on the process so far? Any comments or ideas how I can improve this further? |
Hi @dimven Sorry for the delay, have been buried. This looks good. There's a couple things i'd like to hash out and discuss. Too nuanced for github discussion. Would it be possible for us to schedule a conf. call? Phone: 302.202.5900 I'm fairly open, mornings, my time, work better. @yorikvanhavre Please let us know if you'd like to join as well. Let me know what time works for you guys. Thanks Much, Ryan |
Yes! (For me skype/hangout will work better than phone, though). Anytime is good for me (I'm on GMT-3) |
cool. Yorik, once you go to https://join.me/ryanschultz there's an option to have it call you via a VOIP, no phone number necessary. |
you're good at finding these cool apps :) |
we'll see how cool it is after testing the limits of this São Paulo, Singapore, Wisconsin stream. :) I'm at GMT-5 |
What's the best middle ground between GMT -5, -3 and +8 during this weekend? :) |
cool, i shot out a time tomorrow via Google calender, also can do same time sunday too, if that works better. Cheers. |
Okay for me both days |
I'd prefer if we could push it to Sunday, same time ?
|
np... yes, 8pm on a saturday night in Singapore would be pretty rough. That's well into cocktail hour. :) |
Our last discussion was extremely helpful and helped me set goals better aligned with your expectations.
Right now it works pretty well for narrow cross sections. If you use it for longitudinal sections or elevations, you'll need to tinker with the "tagoffset" value. |
Wow, very nice! |
Agreed, very nice! Let me play around with it and get back to you with comments. Thanks! |
Thanks @dimven Sorry for the delay. Have been buried as of late. Again, I think this is great and basically usable right now, however, here's a couple tweaks ordered from more to least important (as I perceive it anyway)....
If we can address the first bulletpoint that would be awesome, i could start using this right now. The others can wait. Thanks Much, Ryan |
Hi, This ( http://bim42.com/2015/07/align-tags-update/ ) was just released recently by Simon Moreau and seems to be doing exactly what we're after. One option is to try and incorporate the code to Dynamo, the other is to simply use Dynamo to write the data from the IFC file and then use Simon's tool directly inside Revit. |
Hi Dimitar, sounds good. Let me know what you find. If there's no way, we'll just have to live with it, for now. Yeah great solution. As you can see on twitter i pinged Simon Moreau to this discussion to get this thoughts and okay with potentially incorporating his work into our open source solution. Best. |
Hello Ryan,
I'm having some difficulties solving the problem with crossing leader tags. I think that Symon already has a solution for that problem. I wasn't able to make much use of any of Symon's great code unfortunately. I'll need to improve my knowledge of C# and further review his work. Please note that I am using the daily build and there's currently an annoying bug with the "Family Types" drop-down selection node ( renamed to IFC Tag Type in our workflow). The problem with the node is that it forgets the current selection and I had to re-select the correct tag type a few times in the video. This shouldn't be a problem in the stable builds. |
Thanks @dimven! Can we schedule a chat tomorrow to go over? Phone: 302.202.5900 I'm relatively open. Thanks. |
Would 9:00 AM to 10:00 AM WI time be convenient for you? |
Yep...that works...thx
|
Material tags proved to be more trouble than I thought. Now I understand why Revit doesn't have a "Tag All" option for material tags :) I managed to tackle a lot of problems but at the same time found new limitations and trouble areas. There's still a lot to be improved upon but at least we've got a starting step from which to experiment with and improve upon. |
I'll take a look. Would it help us to possibly look at using the 'keynote tag'? Thanks. |
Just so you know @dimven, i'm using Revit keynoting on certain sheets: I started doing it on sheet A-201 in this Revit file. We're using this spreadsheet to add/modify keynotes--of which we copy/paste into this text file. Not that we incorporate keynoting in this #18 issue, but wanted to share nonetheless, just in case it informs the roadmap. Thanks. |
The new version is out and about: I've optimized the distribution of the tag heads and I've added an algorithm for uncrossing the tag leaders. Neither is flawless but they're performing pretty well now. I've tweaked the leader end point position but it's still problematic in cases where you have two materials glued next to each other. The one created last will take priority. This is also a problem where an element is covering another element(there was a case where the insulation is drawn over some wall supports). I get the position correctly but due to the way material tags work, it reads only the material of the element that is on top. So I'll need to further tweak this. Previous limitations are still in place but overall the work flow looks a lot more like a complete and should be able to handle a lot of views. I haven't explored keynote tags option completely but so fat it looks like the API does not have support for automatic keynote placement. The only exposed functionality seems to be the addition of new keynotes in the text file. |
@yorikvanhavre @dimven
Hey guys, let's continue the conversation here...
The text was updated successfully, but these errors were encountered: