[Bf-extensions-cvs] [00b84551] master: archipack: thumb generator to replace static thumbs, revert _preset to preset according to talk with ideasman42
Stephen Leger
noreply at git.blender.org
Fri Aug 4 05:13:57 CEST 2017
Commit: 00b84551cf7798c402508bce9458a2ed2ca1fc77
Author: Stephen Leger
Date: Thu Aug 3 15:59:40 2017 +0200
Branches: master
https://developer.blender.org/rBA00b84551cf7798c402508bce9458a2ed2ca1fc77
archipack: thumb generator to replace static thumbs, revert _preset to preset according to talk with ideasman42
===================================================================
M archipack/__init__.py
D archipack/_presets/archipack_materials/floor.txt
D archipack/_presets/archipack_materials/roof.txt
D archipack/_presets/archipack_materials/wall.txt
M archipack/archipack_cutter.py
M archipack/archipack_floor.py
M archipack/archipack_manipulator.py
M archipack/archipack_material.py
M archipack/archipack_object.py
M archipack/archipack_preset.py
M archipack/archipack_progressbar.py
M archipack/archipack_rendering.py
M archipack/archipack_roof.py
A archipack/archipack_thumbs.py
R100 archipack/_presets/archipack_door/160x200_dual.py archipack/presets/archipack_door/160x200_dual.py
R100 archipack/_presets/archipack_door/400x240_garage.py archipack/presets/archipack_door/400x240_garage.py
R100 archipack/_presets/archipack_door/80x200.py archipack/presets/archipack_door/80x200.py
R100 archipack/_presets/archipack_fence/glass_panels.py archipack/presets/archipack_fence/glass_panels.py
R100 archipack/_presets/archipack_fence/inox_glass_concrete.py archipack/presets/archipack_fence/inox_glass_concrete.py
R100 archipack/_presets/archipack_fence/metal.py archipack/presets/archipack_fence/metal.py
R100 archipack/_presets/archipack_fence/metal_glass.py archipack/presets/archipack_fence/metal_glass.py
R100 archipack/_presets/archipack_fence/wood.py archipack/presets/archipack_fence/wood.py
R091 archipack/_presets/archipack_floor/boards_200x20.py archipack/presets/archipack_floor/boards_200x20.py
R091 archipack/_presets/archipack_floor/herringbone_50x10.py archipack/presets/archipack_floor/herringbone_50x10.py
R091 archipack/_presets/archipack_floor/herringbone_p_50x10.py archipack/presets/archipack_floor/herringbone_p_50x10.py
R088 archipack/_presets/archipack_floor/hexagon_10.py archipack/presets/archipack_floor/hexagon_10.py
R088 archipack/_presets/archipack_floor/hopscotch_30x30.py archipack/presets/archipack_floor/hopscotch_30x30.py
R091 archipack/_presets/archipack_floor/parquet_15x3.py archipack/presets/archipack_floor/parquet_15x3.py
R088 archipack/_presets/archipack_floor/stepping_stone_30x30.py archipack/presets/archipack_floor/stepping_stone_30x30.py
R088 archipack/_presets/archipack_floor/tile_30x60.py archipack/presets/archipack_floor/tile_30x60.py
R088 archipack/_presets/archipack_floor/windmill_30x30.py archipack/presets/archipack_floor/windmill_30x30.py
R100 archipack/_presets/archipack_materials/door.txt archipack/presets/archipack_materials/door.txt
R100 archipack/_presets/archipack_materials/fence.txt archipack/presets/archipack_materials/fence.txt
A archipack/presets/archipack_materials/floor.txt
R100 archipack/_presets/archipack_materials/handle.txt archipack/presets/archipack_materials/handle.txt
A archipack/presets/archipack_materials/roof.txt
R100 archipack/_presets/archipack_materials/slab.txt archipack/presets/archipack_materials/slab.txt
R100 archipack/_presets/archipack_materials/stair.txt archipack/presets/archipack_materials/stair.txt
R100 archipack/_presets/archipack_materials/truss.txt archipack/presets/archipack_materials/truss.txt
R100 archipack/_presets/archipack_materials/wall2.txt archipack/presets/archipack_materials/wall2.txt
R100 archipack/_presets/archipack_materials/window.txt archipack/presets/archipack_materials/window.txt
R088 archipack/_presets/archipack_roof/braas_1.py archipack/presets/archipack_roof/braas_1.py
R088 archipack/_presets/archipack_roof/braas_2.py archipack/presets/archipack_roof/braas_2.py
R088 archipack/_presets/archipack_roof/eternit.py archipack/presets/archipack_roof/eternit.py
R088 archipack/_presets/archipack_roof/lauze.py archipack/presets/archipack_roof/lauze.py
R091 archipack/_presets/archipack_roof/metal.py archipack/presets/archipack_roof/metal.py
R091 archipack/_presets/archipack_roof/ondule.py archipack/presets/archipack_roof/ondule.py
R090 archipack/_presets/archipack_roof/roman.py archipack/presets/archipack_roof/roman.py
R088 archipack/_presets/archipack_roof/round.py archipack/presets/archipack_roof/round.py
R088 archipack/_presets/archipack_roof/square.py archipack/presets/archipack_roof/square.py
R100 archipack/_presets/archipack_stair/i_wood_over_concrete.py archipack/presets/archipack_stair/i_wood_over_concrete.py
R100 archipack/_presets/archipack_stair/l_wood_over_concrete.py archipack/presets/archipack_stair/l_wood_over_concrete.py
R100 archipack/_presets/archipack_stair/o_wood_over_concrete.py archipack/presets/archipack_stair/o_wood_over_concrete.py
R099 archipack/_presets/archipack_stair/u_wood_over_concrete.py archipack/presets/archipack_stair/u_wood_over_concrete.py
R100 archipack/_presets/archipack_window/120x110_flat_2.py archipack/presets/archipack_window/120x110_flat_2.py
R100 archipack/_presets/archipack_window/120x110_flat_2_elliptic.py archipack/presets/archipack_window/120x110_flat_2_elliptic.py
R100 archipack/_presets/archipack_window/120x110_flat_2_oblique.py archipack/presets/archipack_window/120x110_flat_2_oblique.py
R100 archipack/_presets/archipack_window/120x110_flat_2_round.py archipack/presets/archipack_window/120x110_flat_2_round.py
R100 archipack/_presets/archipack_window/180x110_flat_3.py archipack/presets/archipack_window/180x110_flat_3.py
R100 archipack/_presets/archipack_window/180x210_flat_3.py archipack/presets/archipack_window/180x210_flat_3.py
R100 archipack/_presets/archipack_window/180x210_rail_2.py archipack/presets/archipack_window/180x210_rail_2.py
R100 archipack/_presets/archipack_window/240x210_rail_3.py archipack/presets/archipack_window/240x210_rail_3.py
R100 archipack/_presets/archipack_window/80x80_flat_1.py archipack/presets/archipack_window/80x80_flat_1.py
R100 archipack/_presets/archipack_window/80x80_flat_1_circle.py archipack/presets/archipack_window/80x80_flat_1_circle.py
R100 archipack/_presets/missing.png archipack/presets/missing.png
===================================================================
diff --git a/archipack/__init__.py b/archipack/__init__.py
index 93a50e66..7707abd3 100644
--- a/archipack/__init__.py
+++ b/archipack/__init__.py
@@ -261,7 +261,7 @@ class Archipack_Pref(AddonPreferences):
col.label(text="Manipulators:")
col.prop(self, "arrow_size")
col.prop(self, "handle_size")
-
+ # layout.operator("archipack.render_thumbs")
# ----------------------------------------------------
# Archipack panels
@@ -283,18 +283,16 @@ class TOOLS_PT_Archipack_Tools(Panel):
def draw(self, context):
wm = context.window_manager
layout = self.layout
- row = layout.row(align=True)
- box = row.box()
+ box = layout.box()
box.label("Auto boolean")
- row = box.row(align=True)
- row.operator("archipack.auto_boolean", text="AutoBoolean", icon='AUTO').mode = 'HYBRID'
- row = layout.row(align=True)
- box = row.box()
+ box.operator("archipack.auto_boolean", text="AutoBoolean", icon='AUTO').mode = 'HYBRID'
+ box = layout.box()
box.label("Rendering")
- row = box.row(align=True)
- row.prop(wm.archipack, 'render_type', text="")
- row = box.row(align=True)
- row.operator("archipack.render", icon='RENDER_STILL')
+ box.prop(wm.archipack, 'render_type', text="")
+ box.operator("archipack.render", icon='RENDER_STILL')
+ box = layout.box()
+ box.label("Render presets Thumbnails")
+ box.operator("archipack.render_thumbs", icon='ERROR')
class TOOLS_PT_Archipack_Create(Panel):
diff --git a/archipack/_presets/archipack_materials/floor.txt b/archipack/_presets/archipack_materials/floor.txt
deleted file mode 100644
index e04180a6..00000000
--- a/archipack/_presets/archipack_materials/floor.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFAULT##|##Floor_grout
-DEFAULT##|##Floor_alt1
-DEFAULT##|##Floor_alt2
-DEFAULT##|##Floor_alt3
-DEFAULT##|##Floor_alt4
-DEFAULT##|##Floor_alt5
-DEFAULT##|##Floor_alt6
-DEFAULT##|##Floor_alt7
-DEFAULT##|##Floor_alt8
-DEFAULT##|##Floor_alt9
-DEFAULT##|##Floor_alt10
diff --git a/archipack/_presets/archipack_materials/roof.txt b/archipack/_presets/archipack_materials/roof.txt
deleted file mode 100644
index 84e6394e..00000000
--- a/archipack/_presets/archipack_materials/roof.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFAULT##|##Roof_sheeting
-DEFAULT##|##Roof_rakes
-DEFAULT##|##Roof_eaves
-DEFAULT##|##Roof_ridge
-DEFAULT##|##Roof_rafter
-DEFAULT##|##Roof_valley
-DEFAULT##|##Roof_hip_tiles
-DEFAULT##|##Roof_tiles
-DEFAULT##|##Roof_tiles2
-DEFAULT##|##Roof_tiles3
-DEFAULT##|##Roof_tiles4
-DEFAULT##|##Roof_tiles5
diff --git a/archipack/_presets/archipack_materials/wall.txt b/archipack/_presets/archipack_materials/wall.txt
deleted file mode 100644
index e489e4a6..00000000
--- a/archipack/_presets/archipack_materials/wall.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFAULT##|##Wall_inside
-DEFAULT##|##Wall_outside
-DEFAULT##|##Wall_cuts
-DEFAULT##|##Wall_alt1
-DEFAULT##|##Wall_alt2
-DEFAULT##|##Wall_alt3
-DEFAULT##|##Wall_alt4
-DEFAULT##|##Wall_alt5
diff --git a/archipack/archipack_cutter.py b/archipack/archipack_cutter.py
index bce82008..ba51b863 100644
--- a/archipack/archipack_cutter.py
+++ b/archipack/archipack_cutter.py
@@ -40,6 +40,7 @@ class CutterSegment(Line):
def __init__(self, p, v, type='DEFAULT'):
Line.__init__(self, p, v)
self.type = type
+ self.is_hole = True
@property
def copy(self):
@@ -404,23 +405,29 @@ class CutAblePolygon():
# no points found at all
if start < 0:
# print("no pt inside")
- return
+ return not keep_inside
if not slice_res:
# print("slice fails")
# found more segments than input
# cutter made more than one loop
- return
+ return True
if len(store) < 1:
if is_inside:
# print("not touching, add as hole")
- self.holes.append(cutter)
- return
+ if keep_inside:
+ self.segs = cutter.segs
+ else:
+ self.holes.append(cutter)
+
+ return True
self.segs = store
self.is_convex()
+ return True
+
class CutAbleGenerator():
@@ -641,8 +648,7 @@ class ArchipackCutter():
row.prop(self, 'parts_expand', icon="TRIA_DOWN", icon_only=True, text="Parts", emboss=False)
box.prop(self, 'n_parts')
for i, part in enumerate(self.parts):
- if i < self.n_parts:
- part.draw(layout, context, i)
+ part.draw(layout, context, i)
else:
row.prop(self, 'parts_expand', icon="TRIA_RIGHT", icon_only=True, text="Parts", emboss=False)
diff --git a/archipack/archipack_floor.py b/archipack/archipack_floor.py
index 29957716..9899905d 100644
--- a/archipack/archipack_floor.py
+++ b/archipack/archipack_floor.py
@@ -806,9 +806,6 @@ class FloorGenerator(CutAblePolygon, CutAbleGenerator):
m.set_pts([pt1, pt2, pt3])
def generate_pattern(self, d, verts, faces, matids, uvs):
- # clear data before refreshing it
-
- self.uv_factor = 1 / max(self.xmax, self.ymax) # automatically scale to keep within reasonable bounds
if d.pattern == "boards":
self.boards(d, verts, faces, matids, uvs)
@@ -1225,14 +1222,14 @@ class archipack_floor(ArchipackObject, Manipulable, PropertyGroup):
vary_materials = BoolProperty(
name="Vary Material?",
- default=False,
+ default=True,
description="Vary Material indexes",
update=update)
matid = IntProperty(
name="#variations",
min=1,
max=10,
- default=1,
+ default=7,
description="Material index maxi",
update=update)
auto_update = BoolProperty(
@@ -1815,7 +1812,7 @@ class ARCHIPACK_OT_floor(ArchipackCreateTool, Operator):
# activate manipulators at creation time
o.select = True
context.scene.objects.active = o
- bpy.ops.archipack.floor_manipulate()
+ self.manipulate()
return {'FINISHED'}
else:
self.report({'WARNING'}, "Option only valid in Object mode")
diff --git a/archipack/archipack_manipulator.py b/archipack/archipack_manipulator.py
index c96af62a..034507d8 100644
--- a/archipack/archipack_manipulator.py
+++ b/archipack/archipack_manipulator.py
@@ -2094,7 +2094,7 @@ class ARCHIPACK_OT_manipulate(Operator):
return res
def invoke(self, context, event):
- if context.space_data.type == 'VIEW_3D':
+ if context.space_data is not None and context.space_data.type == 'VIEW_3D':
context.window_manager.modal_handler_add(self)
return {'RUNNING_MODAL'}
else:
@@ -2213,7 +2213,7 @@ class Manipulable():
# take care of context switching
# when call from outside of 3d view
- if context.space_data.type != 'VIEW_3D':
+ if context.space_data is not None and context.space_data.type != 'VIEW_3D':
for window in bpy.context.window_manager.windows:
screen = window.screen
for area in screen.areas:
diff --git a/archipack/archipack_material.py b/archipack/archipack_material.py
index 7cb44180..c226c7fb 100644
--- a/archipack/archipack_material.py
+++ b/archipack/archipack_material.py
@@ -37,6 +37,7 @@ from bpy.props import (
StringProperty
)
+
setman = None
libman = None
@@ -49,7 +50,10 @@ class MatLib():
"""
def __init__(self, matlib_path, name):
self.name = name
- self.path = os.path.join(matlib_path, name)
+ try:
+ self.path = os.path.join(matlib_path, name)
+ except:
+ pass
self.materials = []
def cleanup(self):
@@ -60,14 +64,15 @@ class MatLib():
list material names
"""
# print("MatLib.load_list(%s)" % (self.name))
-
self.materials.clear()
-
- with bpy.data.libraries.load(self.path) as (data_from, data_to):
- for mat in data_from.materials:
- self.materials.append(mat)
- if sort:
- self.materials = list(sorted(self.materials))
+ try:
+ with bpy.data.libraries.load(self.path) as (data_from, data_to):
+ for mat in data_from.materials:
+ self.materials.append(mat)
+ if sort:
+ self.materials = list(sorted(self.materials))
+ except:
+ pass
def has(self, name):
return name in self.materials
@@ -76,15 +81,19 @@ class MatLib():
"""
Load a material from library
"""
- # print("MatLib.load_mat(%s) linked:%s" % (name, link))
- with bpy.data.libraries.load(self.path, link, False) as (data_from, data_to):
- data_to.materials = [name]
+ try:
+ # print("MatLib.load_mat(%s) linked:%s" % (name, link))
+ with bpy.data.libraries.load(self.path, link, False) as (data_from, data_to):
+ data_to.materials = [name]
+ except:
+ pass
def get_mat(self, name, link):
"""
apply a material by name to active_object
into slot index
lazy load material list on demand
+ return material or None
"""
# Lazy load material names
@@ -116,14 +125,14 @@ class MatlibsManager():
self.matlibs.clear()
def get_prefs(self, context):
+ """
+ let raise error if any
+ """
global __name__
prefs = None
- try:
- # retrieve addon name from imports
- addon_name = __name__.split('.')[0]
- prefs = context.user_preferences.addons[addon_name].preferences
- except:
- pass
+ # retrieve addon name from imports
+ addon_name = __name__.split('.')[0]
+ prefs = context.user_prefere
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list