amddrafting

Members
  • Posts

    168
  • Joined

  • Last visited

Posts posted by amddrafting

  1. Not sure this is how @Renerabbitt did it but it inspired me to create something in a wall type and this was the end result, for a quick 3D rendering it works great.  Gables would take a little of clean up but it's quick and simple, create two layers of siding and make the outer one the depth of the siding you want.  Set it to have framing and set up the width and spacing you want.  Then set your top and bottom plates if you want them and voila...

    Windows and doors will create issues as the framing will be automatic around them but you can delete and edit as needed I guess.

     

    image.thumb.png.45c2f5629dbb3c86ab403cb73bb31ed0.png

    • Upvote 1
  2. 12 minutes ago, 5FT-20Designs said:

    You can backup a project that creates a file (similar to a zip) with all the information for the project.   This can be saved to the cloud for others to use.

    Someone else can download and make changes to the project, they will then have to backup the project and save it back to the cloud.  You will need to reload that backup to get the latest changes.

    Because of other issues, I’m not using Managed Mode right now.

    Wow, I hope this is not the case.  I love this idea of a managed resource one location for everything.  Just hoping we will be able to eventually do a "save as" location when setting up a new project eventually.  That way you described is way too tedious.

     

    • Like 1
  3. I'm going to be in the webinar later today so hopefully this question will be answered but I'm wondering how we are supposed to share projects in a cloud file management scenario?  Usually we save our files to the cloud in a shared folder and then we each access them from there when we need to work on it.  When setting up a new project there is not "Save As" or "Choose Location" only the default saving folder in preferences.

     

    If this is how it is going to be it kills my entire workflow set up I've established with my staff for the past 10 years.  Using MS Teams we create a team for each project and have a folders in the files for all of our relevant project information.  Then we all have access to this folder from our individual computers through shortcut links.  This seems to want to force a central location into one folder (which could be in the cloud I understand) but doesn't seem like we can move them to where they need to be or am I mistaken?

     

    Anyone wish to enlighten me I would be grateful

    • Like 1
    • Upvote 1
  4. 1 minute ago, Renerabbitt said:

    ah okay a singular use case, I get you. Also in case you didnt know, redlines notes can actually bind to objects in the z axis in a 3d view so you can make 3d notes:
    image.thumb.png.dbadb4d9c8437106dce37f917c6ecb57.png

    Yeah that's cool for sure!  We use a team to review out layout sets for each other and rather than putting it in the plan file itself we find it easier to add notes to the layout sheets and delete them as they are addressed.  However, having an annotation set makes it easier than having to copy paste to keep the red text, etc.  Just an efficiency thing.  Just think if we have annotation sets in Layout we should have arrows associated the same as in plan files... seems like common sense to me really.

  5. They are not... they are in the defaults and in order to change it for your annotation set you have to change it in the defaults and then "save your active defaults" to a new set.  And you can't overwrite your current set so you have to make a new one with a different name, delete the old one and then rename the new set back to the old name.

    This is how it looks in the plan file...

    image.thumb.png.3c911ed99cf5b5a4d1ccf4b706cd7d48.png

     

    Here's where you have to change it in layout file

    image.thumb.png.c032c5255a69079577f61a012e6c01b0.png

     

     

  6. I may have answered my own question, in doing some testing I found that Auto Framing was on by unchecking all auto framing it did help quite a bit which would make sense if it has to rebuild the framing everytime you nudge a wall in the slightest movement.  Still seems slow for typical operation however but it has improved.

  7. My staff and I have noticed significant slow down in performance lately.  We mostly all use the same computers except for one and we all experience the same issues.

     

    Usually once a plan gets over a certain size and / or we begin populating it with cabinets and other fixtures it can take 3-7 seconds to refresh with every move.  CA support says it's my fills in my wall types but we have tested this by removing all fills with no impact.  The only thing I can think is maybe there are some library objects I have created lately that might be slowing it down however these are not anything created outside of what CA already has provided in their library and mostly still basic.

     

    I would love to hear some feedback if anyone has experienced this and what you did to resolve the lag if you were able.

  8. Nevermind... just found this exact example in the Ruby Script Tutorial :rolleyes:  

     

    height = room.ceiling_elevation - room.floor_elevation

     

    nf = NumberFormatter.new

    nf.unit = "'-\"" # Hyphenated feet and inches

    nf.use_fractions = true

    nf.apply(height)

    • Like 1
  9. I'm using the script below to make ceiling height indicators in the framing plan and the current output is

     

    9 FT-1 1/8 IN

     

    using this code...

    nf = NumberFormatter.new

    nf.unit = 'ft-in'

    nf.use_fractions = true

    nf.denominator = 8

    nf.show_unit = true

    nf.apply(room.ceiling_elevation)

     

    I want it to output 9'-1 1/8" instead.

     

    Is it possible to do this without extensive coding?

  10. 34 minutes ago, Renerabbitt said:

    first off, mike is the man, love it when I get to read through his approach on anything macros...I believe he may still do ruby training so hit him up :)
    I would add in some variables in the beginning in case you ever expand your method and maybe some conditions.
     

    
    
    # Copyright Rabbitt Design 2024
    ##########################################################################################
    # Rabbitt Design assumes no liability for the accuracy of the occupancy calculations or 
    # any consequences arising from the use of this script. Users are responsible for verifying 
    # the appropriateness of the occupancy loads and ensuring the script functions as intended 
    # in their specific use case.
    ##########################################################################################
    
    #Use by putting a statement in your text box/polyline label/room_label
    #%$occupancy="Educational"%
    #Occupant Load:%occupancy_load%
    
    ##########################################################################################
    # Occupancy Load Constants
    # Note: Load values are in square feet per person
    OCCUPANCY_LOADS = {
      assembly: 15,    # Areas for public gatherings (e.g., auditoriums, dining areas)
      business: 100,   # Typical office spaces
      educational: 20, # Classrooms and educational facilities
      factory: 50,     # Industrial and manufacturing spaces
      high_hazard: 500,# High hazard areas with minimal occupancy
      institutional: 240, # Hospitals, care facilities
      mercantile: 30,  # Retail and sales floors
      residential: 200,# Living areas in residential settings
      storage: 300,    # Storage areas with limited occupancy
      utility: 500     # Miscellaneous and utility buildings
    }
    
    # Calculate Occupancy based on predefined occupancy type and defined area
    def calculate_occupancy(room_area)
      # Normalize occupancy type
      load_factor = OCCUPANCY_LOADS[$occupancy.downcase.to_sym] rescue nil
      if load_factor.nil?
        raise "Occupancy type '#{$occupancy}' is not defined or incorrect."
      end
    
      # Calculate occupancy
      occupancy = (room_area.to_f / load_factor).round
      occupancy
    end
    
    # Conditionally determine the room_area based on whether 'room' is defined
    room_area = if defined?(room)
                  room.internal_area
                elsif defined?(internal_area)
                  internal_area
                else
                  area  # Fallback to just 'area' if the other two are not available
                end
    
    # Call the function with room_area, assuming $occupancy is defined elsewhere
    final_occupancy = calculate_occupancy(room_area)
    final_occupancy  # This line implicitly outputs the result

    You could use this in your room label or in a text box or in a polyline label

    In either you could need:

    %$occupancy="Educational"%

    Occupant Load:%occupancy_load%


     

    For instance. this will set the appropriate variable call
    image.png.14f31ea5506cb456c1264888aa80e114.png

    Wow man, this was my next thought on how I could use "Room Type" and define them in a commercial template as such.  Then if the "Room Type" was "Business", "Assembly", "Educational", etc.  It would automatically update the label and update the occupancy calculation.  Super powerful tool and kicking myself for nothing thinking of this stuff sooner.

  11. 2 hours ago, Alaskan_Son said:

    There are all sorts of little problems:

     

    source_information = %room.area.internal%

    numeric_part = source_information.match(/\d+/)[0]

    numeric_value = numeric_part.to_i

    result = numeric_value / 20

    puts result

     

    1.  %room.area.internal% isn't a Ruby accessible object attribute (name:value pair).  It's just a Chief Architect string substitution macro.  If you want to use this macro in a text box placed in the room, the name:value pair you should be using is simply room.internal_area without the percentage signs.

    2.  The match method is a Ruby method used to parse a string.  The internal area attribute however is not a string.  Its a Measurement.  If you want to use the match method, you first need to convert the source_information to a string using the .to_s method.

    3.  Just an observation, but you may not be getting the results you think.  The .to_i method is converting your results to an integer which is the whole number rounded down.  0.999 would become zero, 559.9 becomes 559, etc.  What's worse though is that because you're diving by another integer (20) the results of your calculation would also become another integer.  So, instead of 559.9/20 = 27.995 you would get an even 27.  This one can be solved by just converting to a float (which contains decimal values) and then rounding the result.  This can be done a number of ways, but one of the easiest would simply be to replace .to_i with .to_f.

    4.  puts isn't used in Chief's text macro environment.  It's simply not needed.  If you try to use it, your results will by nil (empty).  

     

    So, the corrected macro becomes:

    source_information = room.internal_area

    numeric_part = source_information.to_s.match(/\d+/)[0]

    numeric_value = numeric_part.to_f

    result = numeric_value / 20

    result.round

     

    Although the above macro would work, it still has a handful of totally unnecessary code and could be reduced all the way down to:

    (room.internal_area.to_f/20).round

    Amazing!  Thank you so much!  This works perfectly.

     

    Now the next step will be taking that result and multiplying it by .2 to get inches required for openable door clearance code requirement.  Any thoughts?  It would be an if / then scenario.

    Ultimate goal would be to get the second number in this graph to display required door opening clearance.  Minimum is 32" but if it exceeds 32" then I would want it to show the actual required amount.

    Then I'll need a macro that will count width of doors provided (if labeled "egress') in the room

     

    The end goal would be to just have these in the library that I could paste into the room depending on the room type.  But I'd love to take it a step further and only need one object that could be place in any room and pick up the room type and change the calculation as needed based on the room type definition.  (see my post below in response to Rabbit)

    image.png.303ab75b328fa556028cb4cb1acbab84.png

  12. Morning all... I'm trying to create a macro to calculate the occupancy load of a room by taking the interior square footage of the room and dividing it by the occupancy load for occupancy type.  Using ChatGPT I got the result of this macro that should help me get the result I need but it's not working.  I assume I first have to get rid of the unit text in order to divide by the occupant load I want to divide by.  So this is the code it came up with.  Anyone ruby script people know what is wrong here?  Does this need to be different because it's in CA?  Any help would be appreciated.

     

    source_information = %room.area.internal%

    numeric_part = source_information.match(/\d+/)[0]

    numeric_value = numeric_part.to_i

    result = numeric_value / 20

    puts result

     

     

  13. Good morning folks.  Since we are getting into more commercial work it is more common for us to display room numbers on plans.  I noticed that the schedule has an option to show room numbers but there is no macro for us to be able to include room numbers to display in a text box or even in the room label that I can find.  Is this a possibility or are we stuck manually entering in room numbers?

  14. Talking to a Pella rep this morning I had mentioned the library and named the series we have access to, and they told me that those names / series are about 5 years outdated.  I realize that this is something that is probably not a priority for CA, but I just want to advise whoever that you might want to look into updating your Manufacturer libraries to current specifications/names.

     

    If you use Pella windows in the Manufacturers Catalogue, I was advised they can get close to what those were, but they are not the same anymore.

    • Like 1
  15. 16 hours ago, Renerabbitt said:

    Yes you can.

    I would NOT advise it.
    Chief will try to re-write the user library for every change that is made on ANYONE's machine so long as that machine is running Chief. When Chief sees that the user library is locked it will make a new file User Library_1 for instance, which will just get lost. Chief will only open a file named User_library.
    There are more advanced ways of setting up a cloud sync option but these all require a process that the entire team must stick to.
    Alternatively you could regularly export the days new library items and at the start of the next day have the team do their respective imports.
    I have 4 different methods for User Library syncing but every method is a process that must be trained to the team

    That's what I was afraid of.  I figured it was still too complex to not have some sort of process going.  I plan on just doing like you said and exporting daily/weekly and having them reimport the library as needed.  If they create library objects/details I usually have them export it to the library folder and then I reimport to my library then export the entire library with new items added.  Then just have them import that full library weekly.  I appreciate the feedback Rabbit!