I now have quite a few different assembly types associated with my wall plugin, and unfortunately I am thinking about adding another one. For each assembly type I am creating context menus in my initial plugin load routine/method. The current list of context menus created is given below:
#################################################################
#
# Add Context Menus for Editing Wall, Door and Window Assemblies
#
#################################################################
unless file_loaded?(File.basename(__FILE__))
UI.add_context_menu_handler do |context_menu_medeek1|
if Sketchup.active_model.selection[0].respond_to? :name
if Sketchup.active_model.selection[0].name.include?('RECT_WALL_ASSEMBLY_')
# context_menu_medeek1.add_separator
context_menu_medeek1.add_item("Edit Wall Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_RECTANGULAR_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.rect_wall_edit_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek1.add_item("Regen Wall Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_RECTANGULAR_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.rect_wall_regen_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek1.add_item("2D") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_RECTANGULAR_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.rect_wall_3D_2D_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek1.add_item("3D (No Framing)") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_RECTANGULAR_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.rect_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "NO"
}
if pluginserial != "LT"
context_menu_medeek1.add_item("3D (Full Framing)") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_RECTANGULAR_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.rect_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "YES"
}
end
context_menu_medeek1.add_item("CMU") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_RECTANGULAR_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.rect_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "CMU"
}
end
end
end
UI.add_context_menu_handler do |context_menu_medeek2|
if Sketchup.active_model.selection[0].respond_to? :name
if Sketchup.active_model.selection[0].name.include?('GABLE_WALL_ASSEMBLY_')
# context_menu_medeek2.add_separator
context_menu_medeek2.add_item("Edit Gable Wall Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_GABLE_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.gable_wall_edit_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek2.add_item("Regen Wall Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_GABLE_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.gable_wall_regen_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek2.add_item("2D") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_GABLE_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.gable_wall_3D_2D_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek2.add_item("3D (No Framing)") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_GABLE_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.gable_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "NO"
}
if pluginserial != "LT"
context_menu_medeek2.add_item("3D (Full Framing)") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_GABLE_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.gable_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "YES"
}
end
context_menu_medeek2.add_item("CMU") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_GABLE_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.gable_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "CMU"
}
end
end
end
UI.add_context_menu_handler do |context_menu_medeek5|
if Sketchup.active_model.selection[0].respond_to? :name
if Sketchup.active_model.selection[0].name.include?('SHED_WALL_ASSEMBLY_')
# context_menu_medeek5.add_separator
context_menu_medeek5.add_item("Edit Shed Wall Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_SHED_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.shed_wall_edit_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek5.add_item("Regen Wall Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_SHED_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.shed_wall_regen_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek5.add_item("2D") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_SHED_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.shed_wall_3D_2D_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek5.add_item("3D (No Framing)") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_SHED_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.shed_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "NO"
}
if pluginserial != "LT"
context_menu_medeek5.add_item("3D (Full Framing)") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_SHED_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.shed_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "YES"
}
end
context_menu_medeek5.add_item("CMU") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_SHED_WALL"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.shed_wall_2D_3D_menu pluginversion, pluginserial, pluginlang, "CMU"
}
end
end
end
#################################################################
#
# Add Context Menus for Editing Beam Assemblies
#
#################################################################
UI.add_context_menu_handler do |context_menu_medeek3|
if Sketchup.active_model.selection[0].respond_to? :name
if Sketchup.active_model.selection[0].name.include?('BEAM_ASSEMBLY_')
# context_menu_medeek3.add_separator
context_menu_medeek3.add_item("Edit Beam Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_BEAM_TOOLS"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.beam_edit_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek3.add_item("Regen Beam Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_BEAM_TOOLS"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.beam_regen_menu pluginversion, pluginserial, pluginlang
}
end
end
end
#################################################################
#
# Add Context Menus for Editing Post Assemblies
#
#################################################################
UI.add_context_menu_handler do |context_menu_medeek3|
if Sketchup.active_model.selection[0].respond_to? :name
if Sketchup.active_model.selection[0].name.include?('POST_ASSEMBLY_')
# context_menu_medeek3.add_separator
context_menu_medeek3.add_item("Edit Post Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_POST_TOOLS"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.post_edit_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek3.add_item("Regen Post Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_POST_TOOLS"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.post_regen_menu pluginversion, pluginserial, pluginlang
}
end
end
end
#################################################################
#
# Add Context Menus for Editing Stair Assemblies
#
#################################################################
UI.add_context_menu_handler do |context_menu_medeek4|
if Sketchup.active_model.selection[0].respond_to? :name
if Sketchup.active_model.selection[0].name.include?('STAIR_ASSEMBLY_')
# context_menu_medeek4.add_separator
context_menu_medeek4.add_item("Edit Stair Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_STAIR_TOOLS"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.stair_edit_menu pluginversion, pluginserial, pluginlang
}
context_menu_medeek4.add_item("Regen Stair Assembly") {
Sketchup.load(File.join(THIS_DIR,"MEDEEK_STAIR_TOOLS"))
Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods.stair_regen_menu pluginversion, pluginserial, pluginlang
}
end
end
end
My concern is that adding all of these context menu handlers will slow down the performance of SketchUp or the model. However, I haven’t noticed any significant problems to date even with what I have so far. Just looking for some guidance or what would be considered best practice in this regard.