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