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.exract_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