[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