sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    🫛 Lightbeans Update | Metallic and Roughness auto-applied in SketchUp 2025+ Download

    [code] format volume in model units

    Scheduled Pinned Locked Moved Developers' Forum
    1 Posts 1 Posters 2.2k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Dan RathbunD Offline
      Dan Rathbun
      last edited by

      Related from thread: Re: [Plugin] VolumeCalculator v1.8


      Scenario: Given a numeric value of cubic inches, … get a formatted string of volume in model units.

      Note: Also discussing this at the SketchUp forums:
      https://forums.sketchup.com/t/code-format-volume-in-model-units/58562


      VERSION 3
      Adds "hideunit" boolean argument to handle the "SuppressUnitsDisplay" switch.

      
      # format_volume_in_model_units( volume, spacing, precision )
      #
      # @param volume [Numeric] The volume in cubic inches.
      # @param hideunit [Boolean] Whether to hide the unit symbols, or not.
      #   Defaults to the current model units "SuppressUnitsDisplay" switch.
      # @param spacing [Integer] The spaces before unit symbol. (Default=0)
      # @param precision [Integer] The numbers shown after decimal point.
      #   Defaults to the current model units precision (Range 0..6). Allows higher.
      # @return [String] The volume in cubic model units.
      def format_volume_in_model_units(
        volume,
        hideunit = Sketchup;;active_model.options['UnitsOptions']['SuppressUnitsDisplay'],
        spacing  = 0,
        precision = Sketchup;;active_model.options['UnitsOptions']['LengthPrecision']
      )
        inch_side = Math;;cbrt(volume)
        unit_side = Sketchup;;format_length(inch_side).to_f
        unit_vol  = unit_side**3
        if hideunit
          "%.#{precision}f" % unit_vol
        else
          i = Sketchup;;active_model.options['UnitsOptions']['LengthUnit']
          unit = ['in','ft','mm','cm','m'][i]
          "%.#{precision}f%s%s³" % [ unit_vol, ' '*spacing, unit ]
        end
      end
      
      

      VERSION 2
      Barebones but might fail if the "SuppressUnitsDisplay" switch is true.

      
      # format_volume_in_model_units( volume, spacing, precision )
      #
      # @param volume [Numeric] The volume in cubic inches.
      # @param spacing [Integer] The spaces before unit symbol. (Default=0)
      # @param precision [Integer] The numbers shown after decimal point.
      #   Defaults to the current model units precision (Range 0..6). Allows higher.
      # @return [String] The volume in cubic model units.
      def format_volume_in_model_units(
        volume,
        spacing = 0,
        precision = Sketchup;;active_model.options['UnitsOptions']['LengthPrecision']
      )
        inch_side = Math;;cbrt(volume)
        unit_side = Sketchup;;format_length(inch_side).to_f
        unit_vol  = unit_side**3
        unit = Sketchup;;format_length(1.0).split(/~?\s*\d+\.?\d*/).last
        unit = 'in' if unit == '"'       
        unit = 'ft' if unit == "'"
        "%.#{precision}f%s%s³" % [ unit_vol, ' '*spacing, unit ]
      end
      
      

      (Note, Version 1, previously posted in another thread, was a “cutsie” one-liner that failed.)

      I'm not here much anymore.

      1 Reply Last reply Reply Quote 0
      • 1 / 1
      • First post
        Last post
      Buy SketchPlus
      Buy SUbD
      Buy WrapR
      Buy eBook
      Buy Modelur
      Buy Vertex Tools
      Buy SketchCuisine
      Buy FormFonts

      Advertisement