[Bf-extensions-cvs] [fe2ba559] master: archipack: version 1.2.5

Stephen Leger noreply at git.blender.org
Sun Jun 25 00:44:10 CEST 2017


Commit: fe2ba55966ec782311a67ca8bbe0d9137fd5c6fc
Author: Stephen Leger
Date:   Sun Jun 25 00:34:52 2017 +0200
Branches: master
https://developer.blender.org/rBACfe2ba55966ec782311a67ca8bbe0d9137fd5c6fc

archipack: version 1.2.5

===================================================================

M	archipack/__init__.py
M	archipack/addon_updater_ops.py
M	archipack/archipack_2d.py
M	archipack/archipack_autoboolean.py
M	archipack/archipack_door.py
M	archipack/archipack_fence.py
A	archipack/archipack_floor.py
M	archipack/archipack_gl.py
M	archipack/archipack_manipulator.py
M	archipack/archipack_object.py
M	archipack/archipack_preset.py
M	archipack/archipack_reference_point.py
M	archipack/archipack_slab.py
M	archipack/archipack_stair.py
M	archipack/archipack_truss.py
M	archipack/archipack_wall.py
M	archipack/archipack_wall2.py
M	archipack/archipack_window.py
M	archipack/bmesh_utils.py
A	archipack/icons/archipack.png
A	archipack/icons/floor.png
M	archipack/materialutils.py
A	archipack/presets/archipack_floor/herringbone_50x10.png
A	archipack/presets/archipack_floor/herringbone_50x10.py
A	archipack/presets/archipack_floor/herringbone_p_50x10.png
A	archipack/presets/archipack_floor/herringbone_p_50x10.py
A	archipack/presets/archipack_floor/parquet_15x3.png
A	archipack/presets/archipack_floor/parquet_15x3.py
A	archipack/presets/archipack_floor/planks_200x20.png
A	archipack/presets/archipack_floor/planks_200x20.py
A	archipack/presets/archipack_floor/tiles_15x15.png
A	archipack/presets/archipack_floor/tiles_15x15.py
A	archipack/presets/archipack_floor/tiles_60x30.png
A	archipack/presets/archipack_floor/tiles_60x30.py
A	archipack/presets/archipack_floor/tiles_hex_10x10.png
A	archipack/presets/archipack_floor/tiles_hex_10x10.py
A	archipack/presets/archipack_floor/tiles_l+ms_30x30_15x15.png
A	archipack/presets/archipack_floor/tiles_l+ms_30x30_15x15.py
A	archipack/presets/archipack_floor/tiles_l+s_30x30_15x15.png
A	archipack/presets/archipack_floor/tiles_l+s_30x30_15x15.py

===================================================================

diff --git a/archipack/__init__.py b/archipack/__init__.py
index 85be18e7..c5706762 100644
--- a/archipack/__init__.py
+++ b/archipack/__init__.py
@@ -31,7 +31,7 @@ bl_info = {
     'author': 's-leger',
     'license': 'GPL',
     'deps': 'shapely',
-    'version': (1, 2, 4),
+    'version': (1, 2, 5),
     'blender': (2, 7, 8),
     'location': 'View3D > Tools > Create > Archipack',
     'warning': '',
@@ -59,6 +59,8 @@ if "bpy" in locals():
     imp.reload(archipack_slab)
     imp.reload(archipack_fence)
     imp.reload(archipack_truss)
+    # imp.reload(archipack_toolkit)
+    imp.reload(archipack_floor)
     imp.reload(archipack_rendering)
     imp.reload(addon_updater_ops)
     try:
@@ -83,6 +85,8 @@ else:
     from . import archipack_slab
     from . import archipack_fence
     from . import archipack_truss
+    # from . import archipack_toolkit
+    from . import archipack_floor
     from . import archipack_rendering
     from . import addon_updater_ops
     try:
@@ -104,7 +108,7 @@ import bpy
 # noinspection PyUnresolvedReferences
 from bpy.types import (
     Panel, WindowManager, PropertyGroup,
-    AddonPreferences
+    AddonPreferences, Menu
     )
 from bpy.props import (
     EnumProperty, PointerProperty,
@@ -151,7 +155,11 @@ class Archipack_Pref(AddonPreferences):
         default="Create",
         update=update_panel
     )
-
+    create_submenu = BoolProperty(
+        name="Use Sub-menu",
+        description="Put Achipack's object into a sub menu (shift+a)",
+        default=True
+    )
     # Arrow sizes (world units)
     arrow_size = FloatProperty(
             name="Arrow",
@@ -266,11 +274,13 @@ class Archipack_Pref(AddonPreferences):
 
     def draw(self, context):
         layout = self.layout
-        row = layout.row()
+        box = layout.box()
+        row = box.row()
         col = row.column()
         col.label(text="Tab Category:")
         col.prop(self, "tools_category")
         col.prop(self, "create_category")
+        col.prop(self, "create_submenu")
         box = layout.box()
         row = box.row()
         split = row.split(percentage=0.5)
@@ -454,6 +464,7 @@ class TOOLS_PT_Archipack_Create(Panel):
 
     def draw(self, context):
         global icons_collection
+
         addon_updater_ops.check_for_update_background(context)
 
         icons = icons_collection["main"]
@@ -462,23 +473,24 @@ class TOOLS_PT_Archipack_Create(Panel):
         box = row.box()
         box.label("Objects")
         row = box.row(align=True)
-        col = row.column()
-        subrow = col.row(align=True)
-        subrow.operator("archipack.window_preset_menu",
+        # col = row.column()
+        # subrow = col.row(align=True)
+        row.operator("archipack.window_preset_menu",
                     text="Window",
                     icon_value=icons["window"].icon_id
                     ).preset_operator = "archipack.window"
-        subrow.operator("archipack.window_preset_menu",
+        row.operator("archipack.window_preset_menu",
                     text="",
                     icon='GREASEPENCIL'
                     ).preset_operator = "archipack.window_draw"
-        col = row.column()
-        subrow = col.row(align=True)
-        subrow.operator("archipack.door_preset_menu",
+        # col = row.column()
+        # subrow = col.row(align=True)
+        row = box.row(align=True)
+        row.operator("archipack.door_preset_menu",
                     text="Door",
                     icon_value=icons["door"].icon_id
                     ).preset_operator = "archipack.door"
-        subrow.operator("archipack.door_preset_menu",
+        row.operator("archipack.door_preset_menu",
                     text="",
                     icon='GREASEPENCIL'
                     ).preset_operator = "archipack.door_draw"
@@ -521,20 +533,31 @@ class TOOLS_PT_Archipack_Create(Panel):
                     ).ceiling = True
 
         addon_updater_ops.update_notice_box_ui(self, context)
+
         # row = box.row(align=True)
         # row.operator("archipack.roof", icon='CURVE_DATA')
 
+        # toolkit
+        # row = box.row(align=True)
+        # row.operator("archipack.myobject")
+
+        row = box.row(align=True)
+        row.operator("archipack.floor_preset_menu",
+                    text="Floor",
+                    icon_value=icons["floor"].icon_id
+                    ).preset_operator = "archipack.floor"
+
 # ----------------------------------------------------
 # ALT + A menu
 # ----------------------------------------------------
 
 
-def menu_func(self, context):
+def draw_menu(self, context):
     global icons_collection
     icons = icons_collection["main"]
     layout = self.layout
-    layout.separator()
     layout.operator_context = 'INVOKE_REGION_WIN'
+
     layout.operator("archipack.wall2",
                     text="Wall",
                     icon_value=icons["wall"].icon_id
@@ -559,6 +582,32 @@ def menu_func(self, context):
                     text="Truss",
                     icon_value=icons["truss"].icon_id
                     )
+    layout.operator("archipack.floor_preset_menu",
+                    text="Floor",
+                    icon_value=icons["floor"].icon_id
+                    )
+
+
+class ARCHIPACK_create_menu(Menu):
+    bl_label = 'Archipack'
+    bl_idname = 'ARCHIPACK_create_menu'
+
+    def draw(self, context):
+        draw_menu(self, context)
+
+
+def menu_func(self, context):
+    layout = self.layout
+    layout.separator()
+    global icons_collection
+    icons = icons_collection["main"]
+
+    # either draw sub menu or right at end of this one
+    if context.user_preferences.addons[__name__].preferences.create_submenu:
+        layout.operator_context = 'INVOKE_REGION_WIN'
+        layout.menu("ARCHIPACK_create_menu", icon_value=icons["archipack"].icon_id)
+    else:
+        draw_menu(self, context)
 
 
 # ----------------------------------------------------
@@ -602,16 +651,19 @@ def register():
     archipack_slab.register()
     archipack_fence.register()
     archipack_truss.register()
+    # archipack_toolkit.register()
+    archipack_floor.register()
     archipack_rendering.register()
 
     if HAS_POLYLIB:
         archipack_polylib.register()
 
-    bpy.types.INFO_MT_mesh_add.append(menu_func)
     bpy.utils.register_class(archipack_data)
     WindowManager.archipack = PointerProperty(type=archipack_data)
     bpy.utils.register_class(Archipack_Pref)
     update_panel(None, bpy.context)
+    bpy.utils.register_class(ARCHIPACK_create_menu)
+    bpy.types.INFO_MT_mesh_add.append(menu_func)
 
     addon_updater_ops.register(bl_info)
     # bpy.utils.register_module(__name__)
@@ -620,6 +672,7 @@ def register():
 def unregister():
     global icons_collection
     bpy.types.INFO_MT_mesh_add.remove(menu_func)
+    bpy.utils.unregister_class(ARCHIPACK_create_menu)
 
     bpy.utils.unregister_class(TOOLS_PT_Archipack_PolyLib)
     bpy.utils.unregister_class(TOOLS_PT_Archipack_Tools)
@@ -639,6 +692,8 @@ def unregister():
     archipack_slab.unregister()
     archipack_fence.unregister()
     archipack_truss.unregister()
+    # archipack_toolkit.unregister()
+    archipack_floor.unregister()
     archipack_rendering.unregister()
 
     if HAS_POLYLIB:
diff --git a/archipack/addon_updater_ops.py b/archipack/addon_updater_ops.py
index e085ec52..01052da6 100644
--- a/archipack/addon_updater_ops.py
+++ b/archipack/addon_updater_ops.py
@@ -908,7 +908,7 @@ def register(bl_info):
 	
 	# Optional, consider turning off for production or allow as an option
 	# This will print out additional debugging info to the console
-	updater.verbose = True # make False for production default
+	updater.verbose = False # make False for production default
 
 	# Optional, customize where the addon updater processing subfolder is,
 	# essentially a staging folder used by the updater on its own
diff --git a/archipack/archipack_2d.py b/archipack/archipack_2d.py
index 99d8782e..912e3cb8 100644
--- a/archipack/archipack_2d.py
+++ b/archipack/archipack_2d.py
@@ -26,9 +26,16 @@
 # ----------------------------------------------------------
 from mathutils import Vector, Matrix
 from math import sin, cos, pi, atan2, sqrt, acos
+import bpy
+# allow to draw parts with gl for debug puropses
+from .archipack_gl import GlBaseLine
 
 
-class Projection():
+class Projection(GlBaseLine):
+
+    def __init__(self):
+        GlBaseLine.__init__(self)
+
     def proj_xy(self, t, next=None):
         """
             length of projection of sections at crossing line / circle intersections
@@ -99,6 +106,7 @@ class Line(Projection):
             Will convert any into Vector 2d
             both optionnals
         """
+        Projection.__init__(self)
         if p is not None and v is not None:
             self.p = Vector(p).to_2d()
             self.v = Vector(v).to_2d()
@@ -183,13 +191,9 @@ class Line(Projection):
     def cross(self):
         return Vector((self.v.y, -self.v.x))
 
-    @property
-    def pts(self):
-        return [self.p0, self.p1]
-
     def signed_angle(self, u, v):
         """
-            signed angle between two vectors
+            signed angle between two vectors range [-pi, pi]
         """
         return atan2(u.x * v.y - u.y * v.x, u.x * v.x + u.y * v.y)
 
@@ -200,7 +204,7 @@ class Line(Projection):
         """
         if last is None:
             return self.angle
-        return self.signed_angle(last.straight(1).v, self.straight(0).v)
+        return self.signed_angle(last.straight(1, 1).v, self.straight(1, 0).v)
 
     def normal(self, t=0):
         """
@@ -287,12 +291,19 @@ class Line(Projection):
     def straight(self, length, t=1):
         return Line(self.lerp(t), self.v.normalized() * length)
 
-    def rotate(self, da):
-        cs = cos(da)
-        sn = sin(da)
-        x, y = self.v
-        self.v.x = x * cs - y * sn
-        self.v.y = x * sn + y * cs
+    def translate(self, dp):
+        self.p += dp
+
+    def rotate(self, a):
+        """
+            Rotate segment ccw arroud p0
+        """
+        ca = cos(a)
+        sa = sin(a)
+        self.v = Matrix([
+            [ca, -sa],
+            [sa, ca]
+            ]) * self.v
         retur

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list