[Bf-extensions-cvs] [45cad675] master: archipack: update to 1.2.8 add roof and freeform floors
Stephen Leger
noreply at git.blender.org
Tue Aug 1 03:51:17 CEST 2017
Commit: 45cad6756f10eb708d1a17dae4a70723accc1928
Author: Stephen Leger
Date: Tue Aug 1 03:48:42 2017 +0200
Branches: master
https://developer.blender.org/rBA45cad6756f10eb708d1a17dae4a70723accc1928
archipack: update to 1.2.8 add roof and freeform floors
===================================================================
M archipack/__init__.py
M archipack/archipack_2d.py
M archipack/archipack_autoboolean.py
A archipack/archipack_cutter.py
M archipack/archipack_door.py
M archipack/archipack_floor.py
M archipack/archipack_gl.py
M archipack/archipack_handle.py
M archipack/archipack_manipulator.py
A archipack/archipack_material.py
M archipack/archipack_object.py
M archipack/archipack_preset.py
A archipack/archipack_progressbar.py
M archipack/archipack_reference_point.py
A archipack/archipack_roof.py
M archipack/archipack_slab.py
M archipack/archipack_snap.py
M archipack/archipack_stair.py
M archipack/archipack_wall2.py
M archipack/archipack_window.py
M archipack/bmesh_utils.py
A archipack/icons/roof.png
D archipack/materialutils.py
A archipack/presets/archipack_floor/boards_200x20.png
A archipack/presets/archipack_floor/boards_200x20.py
M archipack/presets/archipack_floor/herringbone_50x10.png
M archipack/presets/archipack_floor/herringbone_50x10.py
M archipack/presets/archipack_floor/herringbone_p_50x10.png
M archipack/presets/archipack_floor/herringbone_p_50x10.py
A archipack/presets/archipack_floor/hexagon_10.png
A archipack/presets/archipack_floor/hexagon_10.py
A archipack/presets/archipack_floor/hopscotch_30x30.png
A archipack/presets/archipack_floor/hopscotch_30x30.py
M archipack/presets/archipack_floor/parquet_15x3.png
M archipack/presets/archipack_floor/parquet_15x3.py
D archipack/presets/archipack_floor/planks_200x20.png
D archipack/presets/archipack_floor/planks_200x20.py
A archipack/presets/archipack_floor/stepping_stone_30x30.png
A archipack/presets/archipack_floor/stepping_stone_30x30.py
A archipack/presets/archipack_floor/tile_30x60.png
A archipack/presets/archipack_floor/tile_30x60.py
D archipack/presets/archipack_floor/tiles_15x15.png
D archipack/presets/archipack_floor/tiles_15x15.py
D archipack/presets/archipack_floor/tiles_60x30.png
D archipack/presets/archipack_floor/tiles_60x30.py
D archipack/presets/archipack_floor/tiles_hex_10x10.png
D archipack/presets/archipack_floor/tiles_hex_10x10.py
D archipack/presets/archipack_floor/tiles_l+ms_30x30_15x15.png
D archipack/presets/archipack_floor/tiles_l+ms_30x30_15x15.py
D archipack/presets/archipack_floor/tiles_l+s_30x30_15x15.png
D archipack/presets/archipack_floor/tiles_l+s_30x30_15x15.py
A archipack/presets/archipack_floor/windmill_30x30.png
A archipack/presets/archipack_floor/windmill_30x30.py
A archipack/presets/archipack_materials/door.txt
A archipack/presets/archipack_materials/fence.txt
A archipack/presets/archipack_materials/floor.txt
A archipack/presets/archipack_materials/handle.txt
A archipack/presets/archipack_materials/roof.txt
A archipack/presets/archipack_materials/slab.txt
A archipack/presets/archipack_materials/stair.txt
A archipack/presets/archipack_materials/truss.txt
A archipack/presets/archipack_materials/wall2.txt
A archipack/presets/archipack_materials/window.txt
A archipack/presets/archipack_roof/braas_1.png
A archipack/presets/archipack_roof/braas_1.py
A archipack/presets/archipack_roof/braas_2.png
A archipack/presets/archipack_roof/braas_2.py
A archipack/presets/archipack_roof/eternit.png
A archipack/presets/archipack_roof/eternit.py
A archipack/presets/archipack_roof/lauze.png
A archipack/presets/archipack_roof/lauze.py
A archipack/presets/archipack_roof/metal.png
A archipack/presets/archipack_roof/metal.py
A archipack/presets/archipack_roof/ondule.png
A archipack/presets/archipack_roof/ondule.py
A archipack/presets/archipack_roof/roman.png
A archipack/presets/archipack_roof/roman.py
A archipack/presets/archipack_roof/round.png
A archipack/presets/archipack_roof/round.py
A archipack/presets/archipack_roof/square.png
A archipack/presets/archipack_roof/square.py
M archipack/presets/archipack_stair/u_wood_over_concrete.py
===================================================================
diff --git a/archipack/__init__.py b/archipack/__init__.py
index 5bdf9b10..93a50e66 100644
--- a/archipack/__init__.py
+++ b/archipack/__init__.py
@@ -31,7 +31,7 @@ bl_info = {
'author': 's-leger',
'license': 'GPL',
'deps': '',
- 'version': (1, 2, 6),
+ 'version': (1, 2, 8),
'blender': (2, 7, 8),
'location': 'View3D > Tools > Create > Archipack',
'warning': '',
@@ -46,6 +46,8 @@ import os
if "bpy" in locals():
import importlib as imp
+ imp.reload(archipack_progressbar)
+ imp.reload(archipack_material)
imp.reload(archipack_snap)
imp.reload(archipack_manipulator)
imp.reload(archipack_reference_point)
@@ -54,6 +56,7 @@ if "bpy" in locals():
imp.reload(archipack_window)
imp.reload(archipack_stair)
imp.reload(archipack_wall2)
+ imp.reload(archipack_roof)
imp.reload(archipack_slab)
imp.reload(archipack_fence)
imp.reload(archipack_truss)
@@ -62,6 +65,8 @@ if "bpy" in locals():
print("archipack: reload ready")
else:
+ from . import archipack_progressbar
+ from . import archipack_material
from . import archipack_snap
from . import archipack_manipulator
from . import archipack_reference_point
@@ -70,6 +75,7 @@ else:
from . import archipack_window
from . import archipack_stair
from . import archipack_wall2
+ from . import archipack_roof
from . import archipack_slab
from . import archipack_fence
from . import archipack_truss
@@ -78,7 +84,6 @@ else:
print("archipack: ready")
-
# noinspection PyUnresolvedReferences
import bpy
# noinspection PyUnresolvedReferences
@@ -135,7 +140,7 @@ class Archipack_Pref(AddonPreferences):
)
max_style_draw_tool = BoolProperty(
name="Draw a wall use 3dsmax style",
- description="Reverse clic / release cycle for Draw a wall",
+ description="Reverse clic / release & drag cycle for Draw a wall",
default=True
)
# Arrow sizes (world units)
@@ -151,6 +156,11 @@ class Archipack_Pref(AddonPreferences):
min=2,
default=10
)
+ matlib_path = StringProperty(
+ name="Folder path",
+ description="absolute path to material library folder",
+ default=""
+ )
# Font sizes and basic colour scheme
feedback_size_main = IntProperty(
name="Main",
@@ -225,6 +235,11 @@ class Archipack_Pref(AddonPreferences):
box.prop(self, "max_style_draw_tool")
box = layout.box()
row = box.row()
+ col = row.column()
+ col.label(text="Material library:")
+ col.prop(self, "matlib_path")
+ box = layout.box()
+ row = box.row()
split = row.split(percentage=0.5)
col = split.column()
col.label(text="Colors:")
@@ -296,6 +311,7 @@ class TOOLS_PT_Archipack_Create(Panel):
def draw(self, context):
global icons_collection
+
icons = icons_collection["main"]
layout = self.layout
row = layout.row(align=True)
@@ -356,10 +372,22 @@ class TOOLS_PT_Archipack_Create(Panel):
icon_value=icons["slab"].icon_id
).ceiling = True
row = box.row(align=True)
+ row.operator("archipack.roof_preset_menu",
+ text="Roof",
+ icon_value=icons["roof"].icon_id
+ ).preset_operator = "archipack.roof"
+ row = box.row(align=True)
row.operator("archipack.floor_preset_menu",
text="Floor",
icon_value=icons["floor"].icon_id
).preset_operator = "archipack.floor"
+ row.operator("archipack.floor_preset_menu",
+ text="->Wall",
+ icon_value=icons["floor"].icon_id
+ ).preset_operator = "archipack.floor_from_wall"
+ row.operator("archipack.floor_preset_menu",
+ text="",
+ icon='CURVE_DATA').preset_operator = "archipack.floor_from_curve"
# ----------------------------------------------------
@@ -400,13 +428,16 @@ def draw_menu(self, context):
layout.operator("archipack.floor_preset_menu",
text="Floor",
icon_value=icons["floor"].icon_id
- )
+ ).preset_operator = "archipack.floor"
+ layout.operator("archipack.roof_preset_menu",
+ text="Roof",
+ icon_value=icons["roof"].icon_id
+ ).preset_operator = "archipack.roof"
class ARCHIPACK_create_menu(Menu):
bl_label = 'Archipack'
bl_idname = 'ARCHIPACK_create_menu'
- bl_context = "objectmode"
def draw(self, context):
draw_menu(self, context)
@@ -454,6 +485,8 @@ def register():
icons.load(name, os.path.join(icons_dir, icon), 'IMAGE')
icons_collection["main"] = icons
+ archipack_progressbar.register()
+ archipack_material.register()
archipack_snap.register()
archipack_manipulator.register()
archipack_reference_point.register()
@@ -462,6 +495,7 @@ def register():
archipack_window.register()
archipack_stair.register()
archipack_wall2.register()
+ archipack_roof.register()
archipack_slab.register()
archipack_fence.register()
archipack_truss.register()
@@ -484,8 +518,8 @@ def unregister():
bpy.utils.unregister_class(TOOLS_PT_Archipack_Tools)
bpy.utils.unregister_class(TOOLS_PT_Archipack_Create)
bpy.utils.unregister_class(Archipack_Pref)
-
- # unregister subs
+ archipack_progressbar.unregister()
+ archipack_material.unregister()
archipack_snap.unregister()
archipack_manipulator.unregister()
archipack_reference_point.unregister()
@@ -494,6 +528,7 @@ def unregister():
archipack_window.unregister()
archipack_stair.unregister()
archipack_wall2.unregister()
+ archipack_roof.unregister()
archipack_slab.unregister()
archipack_fence.unregister()
archipack_truss.unregister()
diff --git a/archipack/archipack_2d.py b/archipack/archipack_2d.py
index 912e3cb8..fcd578da 100644
--- a/archipack/archipack_2d.py
+++ b/archipack/archipack_2d.py
@@ -118,6 +118,10 @@ class Line(Projection):
self.v = Vector((0, 0))
@property
+ def copy(self):
+ return Line(self.p.copy(), self.v.copy())
+
+ @property
def p0(self):
return self.p
@@ -250,6 +254,20 @@ class Line(Projection):
t = (c * (line.p - self.p)) / d
return True, self.lerp(t), t
+ def intersect_ext(self, line):
+ """
+ same as intersect, but return param t on both lines
+ """
+ c = line.cross_z
+ d = self.v * c
+ if d == 0:
+ return False, 0, 0, 0
+ dp = line.p - self.p
+ c2 = self.cross_z
+ u = (c * dp) / d
+ v = (c2 * dp) / d
+ return u > 0 and v > 0 and u < 1 and v < 1, self.lerp(u), u, v
+
def point_sur_segment(self, pt):
""" _point_sur_segment
point: Vector 2d
@@ -258,6 +276,8 @@ class Line(Projection):
"""
dp = pt - self.p
dl = self.length
+ if dl == 0:
+ return dp.length < 0.00001, 0, 0
d = (self.v.x * dp.y - self.v.y * dp.x) / dl
t = (self.v * dp) / (dl * dl)
return t > 0 and t < 1, d, t
@@ -318,7 +338,19 @@ class Line(Projection):
Draw Line with open gl in screen space
aka: coords are in pixels
"""
- raise NotImplementedError
+ curve = bpy.data.curves.new('LINE', type='CURVE')
+ curve.dimensions = '2D'
+ spline = curve.splines.new('POLY')
+ spline.use_endpoint_u = False
+ spline.use_cyclic_u = False
+ pts = self.pts
+ spline.points.add(len(pts) - 1)
+ for i, p in enumerate(pts):
+ x, y, z = p
+ spline.points[i].co = (x, y, 0, 1)
+ curve_obj = bpy.data.objects.new('LINE', curve)
+ context.scene.objects.link(curve_obj)
+ curve_obj.select = True
def make_offset(self, offset, last=None):
"""
@@ -581,6 +613,16 @@ class Arc(Circle):
steps = max(1, round(self.length / length, 0))
return 1.0 / steps, int(steps)
+ def intersect_ext(self, line):
+ """
+ same as intersect, but return param t on both lines
+ """
+ res, p, v = self.intersect(line)
+ v0 = self.p0 - self.c
+ v1 = p - self.c
+ u = self.signed_angle(v0, v1) / self.da
+ return res and u > 0 and v > 0 and u < 1 and v < 1, p, u, v
+
# this is for wall
def steps_by_angle(self, step_angle):
steps = max(1, round(abs(self.da) / step_angle, 0))
diff --git a/archipack/archipack_autoboolean.py b/archipack/archipack_autoboolean.py
index a171532c..f304ced0 100644
--- a/archipack/archipack_autoboolean.py
+++ b/archipack/archipack_autoboolean.py
@@ -28,16 +28,16 @@ import bpy
from bpy.types import Operator
from bpy.props import EnumProperty
from mathutils import Vector
-from .materialutils import MaterialUtils
-
-from os import path
+"""
+from os import path
def debug_using_gl(context, filename):
context.scene.update()
temp_path = "C:\\tmp\\"
context.scene.render.filepath = path.join(temp_path, filename + ".png")
bpy.ops.render.opengl(write_still=True)
+"""
class ArchipackBoolManager():
@@ -95,7 +95,7 @@ class ArchipackBoolManager():
'archipack_robusthole' in wall or
'archipack_handle' in wall)
- def datablock(self, o):
+ def datablock(self, o, basis='WALL'):
"""
get datablock from windows and doors
return
@@ -104,10 +104,14 @@ class ArchipackBoolManager():
"""
d = None
if o.data:
- if "archipack_window" in o.data:
- d = o.data.archipack_window[0]
- elif "archipack_door" in o.data:
- d = o.data.archipack_door[0]
+ if basis == 'WALL':
+ if "archipack_window" in o.data:
+ d = o.data.archipack_window[0]
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list