Updates and Changes
3.7.1 - 26 May 2021
- Removed
AMS::TEMP_DIR and AMS::SU_PLUGINS_LOCATION
- Added
AMS.get_folder_path and AMS.get_temp_dir
- Added
AMS::Sketchup.is_viewport_focused?
- Upgraded
AMS::Translate to parse strings in JSON format. Translations
are now only compatible with SU2014 and later.
- Fixed the incorrect behavior with triggering shortcuts when the menu bar is
hidden. Now, if the menu bar is hidden, accelerators trigger if
and only if the viewport window has the keyboard focus. Originally, the
shortcuts triggered even if a child window had the keyboard focus.
- Updated the behavior of the
AMS::Sketchup.switch_full_screen function to
allow changing the target screen mode, without having to unset the
full-screen mode beforehand. Additional changes include window activation
removal and adjustments to the return value behavior.
- Removed unnecessary aliases, including:
AMS.is_bool?
AMS::Registry.read / write / remove
AMS::Sketchup.activate
AMS::Keyboard.key
AMS::Keyboard.alt_down? / alt_up?
AMS::Keyboard.ctrl_down? / ctrl_up?
AMS::Keyboard.lctrl_down? / lctrl_up?
AMS::Keyboard.rctrl_down? / rctrl_up?
AMS::Keyboard.lalt_down? / lalt_up?
AMS::Keyboard.ralt_down? / ralt_up?
- Reworked
AMS::Sketchup.show_toolbar_container, fixing potential bugs.
- Added
AMS::Sketchup.is_toolbar_container_hidden?
- Slightly altered the behavior of
AMS::Sketchup.is_toolbar_container_visible?
- Ruby 2.7
3.6.0 - November 15, 2018
- Added
AMS::SU_MAJOR_VERSION
- Added
AMS::SU_PLUGINS_LOCATION
- Added
AMS.clamp_int and AMS.clamp_real
- Added
AMS.min_int and AMS.min_real
- Added
AMS.max_int and AMS.max_real
- Added
AMS.sign_int and AMS.sign_real
- Added
AMS.refresh_toolbars
- Added
AMS::Translate.convert_text function for translating HTML files.
- Added
AMS::Keyboard.send_mouse_input
- Added
AMS::Keyboard.send_keyboard_input
- Added
AMS::Keyboard.send_hardware_input
- Added
AMS::Window.get_class_long
- Added
AMS::Window.set_class_long
- Added
AMS::Window.set_background_color
- Added
AMS::Window.get_keyboard_focus
- Added
AMS::Window.set_keyboard_focus
- Added
AMS::Menu.is_item_checked_by_pos?
- Added
AMS::Menu.is_item_checked_by_id?
- Added
AMS::Menu.is_item_grayed_by_pos?
- Added
AMS::Menu.is_item_grayed_by_id?
- Added
AMS::Geometry.scale_matrix
- Added
AMS::Geometry.extract_matrix_w_factor
- Added
AMS::Geometry.product_vectors
- Added
AMS::Group.split
- Revised all
AMS::Group and AMS::Geometry functions, optimizing for performance.
- Removed
AMS::Lib loader functions
- Removed
swo_on_viewport_paint and swo_on_post_viewport_paint
- Fixed bug in
AMS::Geometry.blend_colors
- Fixed bugs in
AMS::ExtensionManager and made it load from stage path as the last resort in case all else fails.
- Keyboard events are now triggered across the entire SketchUp thread. Unwanted events can be omitted with checks for active window.
- Changed mouse move, mouse enter, and mouse leave events from SWO to SWP.
- Compatibility with Ruby 2.5.
3.5.2 - July 25, 2017
- Compatibility with Windows XP.
3.5.1 - July 17, 2017
- Compatibility with SU versions prior to 2013.
3.5.0 - July 9, 2017
- Migrated
AMS, AMS::Group, AMS::Geometry, and AMS::MultiLineText to C++ extension, which includes optimizations and various fixes.
- Removed
AMS::System platform detection functions: is_windows?, is_mac?, and is_linux?; use constants instead.
- Removed
AMS::Sketchup.is_32bit? and AMS::Sketchup.is_64bit?.
- Added
AMS::IS_SKETCHUP_32BIT and AMS::IS_SKETCHUP_64BIT.
- Added
AMS::IS_RUBY_VERSION_18, AMS::IS_RUBY_VERSION_20, and AMS::IS_RUBY_VERSION_22.
- Revised
AMS::RayUtil functions and moved them to AMS::Geometry.
- Moved
AMS.scale_vector to AMS::Geometry.
- Added
AMS::Geometry.calc_cubic_bezier_point(ratio, p0, p1, p2, p3).
- Added
AMS::Geometry.calc_cubic_bezier_slope(ratio, p0, p1, p2, p3).
- Added
AMS::Geometry.scale_point(point, scale).
- Removed
AMS::Geometry.rotate_matrix1_to_matrix2.
- Added
AMS::Geometry.rotate_matrix_xaxis_to_dir(transformation, dir).
- Added
AMS::Geometry.rotate_matrix_yaxis_to_dir(transformation, dir).
- Added
AMS::Geometry.rotate_matrix_zaxis_to_dir(transformation, dir).
- Added
AMS::Geometry.rotate_vector(vector, normal, angle).
- Added
AMS::Geometry.angle_between_vectors(v1, v2, normal).
- Reworked
AMS::Geometry.transition_transformation(t1, t2, ratio) to consider scaled matrices.
- Rearranged parameters for
AMS::Geometry.blend_colors and AMS::Geometry.get_points_on_circle3d.
AMS::Geometry.get_points_on_circle2d and AMS::Geometry.get_points_on_circle3d now accept rot_angle in radians.
- Revised most
AMS::Group functions.
- Replaced
AMS::MultiLineText.#entity with AMS::MultiLineText.#get_entity.
- Added
AMS::MultiLineText.#set_entity(entity).
- Added
AMS::MultiLineText.#get_position.
- Added
AMS::MultiLineText.#set_position(x,y).
- Added
AMS::Window.peek_message(handle, msg_filter_min, msg_filter_max, remove_flag).
- Added
AMS::Window.peek_message2(handle, msg_filter_min, msg_filter_max, remove_flag).
- Added
AMS::Keyboard.get_key_name(vk_code).
- Added
AMS::Group.get_bounding_box_from_edges(object, recursive = true, transformation = nil, &entity_validation).
- Added
AMS::Sketchup.show_trays(state).
- Added
AMS::Sketchup.close_trays.
- Added
AMS::Sketchup.activate_scenes_bar_tab(tab_index).
- Added
AMS::Sketchup.threaded_messagebox(caption, text, type, owner_handle).
- Added
AMS::SketchupObserver.#swp_on_page_selected(page1, page2, tab_index1, tab_index2).
- Added two additional parameters to
AMS::SketchupObserver.#swo_on_page_selected.
- Removed
AMS::Win32::API as it hasn't been used since version 2.
- Removed
AMS::Lib.clean_up.
- Added
AMS::ExtensionManager to prevent overwrite issues that occur when updating loaded extensions. Thanks to ThomThom for the original version.
3.4.1 - December 17, 2016
3.4.0 - October 31, 2016
- Made most keyboard and midi functions compatible with Mac OS X.
- Added
AMS::MIDI.is_device_open?
- Added
AMS::MIDI.out_message(*args)
3.3.0 - July 10, 2016
- Added more MIDI functions.
- Added
Group and Geometry modules.
- Added
AMS.round(value, precision)
- Started making compatible with Mac OS X.
3.2.5 - May 22, 2016
- Improved performance with observers.
3.2.4 - May 21, 2016
- More compatibility with different encodings.
3.2.3 - May 19, 2016
- Made compatible with different encodings.
3.2.2 - April 05, 2016
- Fixed crash when toggling menu bar on different localization. Thanks to herojack and perroloco2000 for report.
3.2.1 - March 30, 2016
- Fixed small bug in AMS::Window.set_pos.
- Recompiled with optimized settings.
- Fixed the frozen path load error on particular machines.
3.2.0 - February 28, 2016
- Added
AMS::SketchupObserver.#swo_on_page_selected(page1, page2)
3.1.4 - February 06, 2016
- Made SU full screen function associate to the desired monitor(s). Thanks to DimaV83 for request.
3.1.3 - December 30, 2015
- Fixed a bug that caused a crash when remove AMS observer from within an observer method.
3.1.2 - December 04, 2015
- Made it compatible with Windows XP. Thanks for Junar Amaro for report.
- Fixed a bug that prevented menu bar from working properly on Windows XP.
- Fixed a bug where starting SU8, with dialogs open, the library failed to identify the main window.
3.1.1 - November 29, 2015
- Fixed a bug that caused increase in CPU usage and lead to a crash. Thanks to Pherim for report.
3.1.0 - November 26, 2015
- Added
AMS::Sketchup.send_user_message(receiver_handle, id, data)
- Added
AMS::SketchupObserver.#swo_on_user_message(sender_handle, id, data)
- Added
AMS::Sketchup.get_other_main_windows
- Added
AMS::Sketchup.get_executable_name
- Added
AMS::Window.get_moudle_handle(handle)
- Added
AMS::Window.get_executable_path(handle)
- Added
AMS::Window.get_executable_name(handle)
AMS::SketchupObserver.#swp_on_command(id) no longer triggers on 24214 command. The 24214 command occurs very often and is called when the view is invalidated, rather than when the tool is activated.
- Added
AMS.inspect_element(item)
3.0.1 - September 20, 2015
- Fixed some security issues.
3.0.0 - September 16, 2015
- Fully rewritten library with optimizations, bug fixes, and improvements.
- All code that deals with Windows API is now a C++ extension.
- Unicode strings are now handled properly.
- Removed Ruby-FFI library as it's no longer necessary.
- Changed MIDI behaviour and renamed some of its functions:
AMS::MIDI.play_note no longer has the 'duration' parameter, and it returns a sound id rather than boolean.
AMS::MIDI.stop_note now asks for a sound id.
- Replaced
AMS::MIDI.channel_sustain_pedal with AMS::MIDI.sustain_channel_pedal.
- Removed
AMS::MIDI.play_3d_note and AMS::MIDI.set_3d_note_position.
- Added
AMS::MIDI.set_note_position(id, position, max_hearing_range)
- Added
AMS::MIDI.get_device_handle()
- Replaced
AMS::Keyboard.get_key_value with AMS::Keyboard.get_key_code.
- Added
AMS::Keyboard.get_virtual_key_codes
- Added
AMS::Keyboard.get_virtual_key_codes2
- Added
AMS::Keyboard.get_virtual_key_names
- Added
AMS::Sketchup.include_toolbar(handle)
- Added
AMS::Sketchup.ignore_toolbar(handle)
- Added additional parameters to
AMS::Sketchup.find_window_by_caption(caption, full_match = true, case_sensitive = true)
- Added
AMS::Sketchup.find_child_window_by_caption(parent_handle, caption, include_sub_childs = false, full_match = true, case_sensitive = true)
- Added
AMS::Sketchup.find_window_by_class_name(class_name, full_match = true, case_sensitive = true)
- Added
AMS::Sketchup.find_child_window_by_class_name(parent_handle, class_name, include_sub_childs = false, full_match = true, case_sensitive = true)
AMS::Sketchup.refresh and AMS::Sketchup.close now return boolean rather than void.
- Removed
AMS::Menu.validate
- Replaced
AMS::Menu.get_menu_item_string_by_pos with AMS::Menu.get_item_string_by_pos.
- Replaced
AMS::Menu.get_menu_item_string_by_id with AMS::Menu.get_item_string_by_id.
- Replaced
AMS::Menu.set_menu_item_string_by_pos with AMS::Menu.set_item_string_by_pos.
- Replaced
AMS::Menu.set_menu_item_string_by_id with AMS::Menu.set_item_string_by_id.
- Fixed a bug where
AMS::Menu.get_item_id failed to return -1 if given index represented a submenu.
- Removed
AMS::Window.validate
AMS::Window.show(handle, state) now returns boolean rather than integer.
AMS::Window.is_child?(parent_handle, handle) was changed to AMS::Window.is_child?(handle, parent_handle)
- Replaced
AMS::Window.bring_window_to_top with AMS::Window.bring_to_top
- Replaced
AMS::Window.get_text with AMS::Window.get_caption
- Replaced
AMS::Window.set_text with AMS::Window.set_caption
AMS::Window.send_message now returns message processing result rather than nil.
- Added
AMS::Window.post_message(handle, message, wParam, lParam)
- Added
AMS::Window.get_layered_attributes(handle)
AMS::Window.set_layered_attributes(handle, color, opacity, flags) now accepts an array of RGB values for the color parameter.
- Added
AMS::Window.get_windows(include_hidden = true)
- Added
AMS::Window.get_process_windows(process_id, include_hidden = true)
- Added
AMS::Window.get_thread_windows(thread_id, include_hidden = true)
- Added
AMS::Window.get_child_windows(parent_handle, include_sub_childs = false, include_hidden = true)
- Added
AMS::Window.find_window_by_caption(caption, full_match = true, case_sensitive = true)
- Added
AMS::Window.find_child_window_by_caption(parent_handle, caption, include_sub_childs = false, full_match = true, case_sensitive = true)
- Added
AMS::Window.find_window_by_class_name(class_name, full_match = true, case_sensitive = true)
- Added
AMS::Window.find_child_window_by_class_name(parent_handle, class_name, include_sub_childs = false, full_match = true, case_sensitive = true)
- Added
AMS::Window.is_unicode?(handle)
- Added
AMS::Window.get_related(handle, command)
- Added
AMS::Window.get_ancestor(handle, flag)
- Added
AMS::Window.client_to_screen(handle, x, y)
- Added
AMS::Window.screen_to_client(handle, x, y)
- Added
AMS::Window.map_point(handle_from, handle_to, x, y)
- Added
AMS::DLL.load_libarary(path)
- Added
AMS::DLL.free_libarary(handle)
- NULL window/menu handles now return nil rather than zero.
- Fixed a bug where activating/deactivating particular observer triggered
swo_activate/swo_deactivate in all active observers rather than in particular observer being activated or deactivated.
- Fixed a bug where
swo_on_toolbar_container_filled/swo_on_toolbar_container_emptied was unintentionally called when toolbar container visibility state was changed.
- Added post events for
AMS::SketchupObserver: swo_on_post_enter_menu, swo_on_post_exit_menu, swo_on_post_switch_full_screen, swo_on_post_maximize, swo_on_post_minimize, swo_on_post_restore, swo_on_post_focus, swo_on_post_blur, swo_on_post_enter_size_move, swo_on_post_size_move, swo_on_post_exit_size_move, swo_on_post_caption_changed, swo_on_post_menu_bar_changed, swo_on_post_viewport_paint, swo_on_post_viewport_size, swo_on_post_viewport_border_changed, swo_on_post_scenes_bar_visibility_changed, swo_on_post_scenes_bar_filled, swo_on_post_scenes_bar_emptied, swo_on_post_status_bar_visibility_changed, swo_on_post_toolbar_container_visibility_changed, swo_on_post_toolbar_container_filled, swo_on_post_toolbar_container_emptied.
2.2.0 - January 22, 2015
- Migrated from a C extension to a C++ extension.
- Added an option to hide Vray dialogs. Thanks to shake1 for request.
2.1.0 - December 03, 2014
- Added
AMS::Lib.clean_up, which removes all unregistered Ruby files from the library.
- Added
AMS::System.get_metrics(index)
- Minor bug fixes.
2.0.0 - November 20, 2014
- Improved functionality.
- Added support for SU 64 bit.
- Reorganized various functions and rewrote documentation.
- Migrated from relying on win32-api gem to using a C extension.
- Implemented Windows MIDI.
- Made FFI Compatible with Ruby 1.8.6. It's not compatible with Ruby 1.8.0 though.
1.0.9 - April 26, 2014
- Added get_keys and get_values to the registry.
- Improved MultiLineText.
1.0.8 - February 12, 2014
- Stabilized registry readers and writers.
- Stabilized custom shortcuts on localized SU versions.
1.0.7 - February 04, 2014
- Added custom timers.
- Optimized show/hide dialogs function.
- Added
swo_tbc_onFilled(bar) and swo_tbc_onEmptied(bar) observers, which are called when a certain toolbar container is emptied or filled with toolbars.
- Added
swo_mw_onCommand(id), which responds to Sketchup.send_action events.
1.0.6 - January 29, 2014
- Figured out a way to keep all menu shortcuts working when the menu bar is removed. Yes!!!
- Added registry accessors.
- Added
swo_mw_onEnterMenu and swo_mw_onExitMenu observers.
- Added
AMS::Windows::API - thanks to Daniel J. Berger.
- Fixed get screen resolution function. Originally it returned resolution of the current screen. Now, it returns resolution of all monitors combined.
- Improved observers.
- Increased callbacks limit of
AMS::Win32::API to 20 callbacks.
- Simplified libraries.
1.0.5 - December 16, 2013
- Fixed the observers bug that made SketchUp freeze when pressing a key in the menu.
1.0.4 - December 15, 2013
- Improved the refresh function.
1.0.3 - December 15, 2013
- Some fixes and improvements.
- Added
AMS::Window.invalid?
- Added
AMS::Window.set_pos
- Added
AMS::Window.set_size
1.0.2 - December 06, 2013
- Some fixes and improvements.
- Increased observers reaction speed.
1.0.1 - November 22, 2013
- Improved set full screen, maximize, minimize, and restore functions.
1.0.0 - November 17, 2013