- Markers Plugin - fixed issue when adding existing markers to an external Geometry object
This commit is contained in:
@@ -11,6 +11,7 @@ CHANGELOG for FlatCAM beta
|
|||||||
|
|
||||||
- Cutout Plugin - improved the functionality in Manual mode: depending on the state of the Shape parameter different types of cutout manual geometry is generated
|
- Cutout Plugin - improved the functionality in Manual mode: depending on the state of the Shape parameter different types of cutout manual geometry is generated
|
||||||
- fixed a bug in the Editors when trying to launch the Editor without an object selected
|
- fixed a bug in the Editors when trying to launch the Editor without an object selected
|
||||||
|
- Markers Plugin - fixed issue when adding existing markers to an external Geometry object
|
||||||
|
|
||||||
31.10.2021
|
31.10.2021
|
||||||
|
|
||||||
|
|||||||
@@ -662,9 +662,11 @@ class ToolMarkers(AppTool):
|
|||||||
tool_found = tool
|
tool_found = tool
|
||||||
break
|
break
|
||||||
|
|
||||||
geo_buff_list = []
|
|
||||||
if tool_found:
|
if tool_found:
|
||||||
new_tools[tool_found]['solid_geometry'] += marker_geometry
|
if isinstance(new_tools[tool_found]['solid_geometry'], list):
|
||||||
|
new_tools[tool_found]['solid_geometry'] += marker_geometry
|
||||||
|
else:
|
||||||
|
new_tools[tool_found]['solid_geometry'] = [new_tools[tool_found]['solid_geometry'], marker_geometry]
|
||||||
else:
|
else:
|
||||||
obj_tools = list(new_tools.keys())
|
obj_tools = list(new_tools.keys())
|
||||||
if obj_tools:
|
if obj_tools:
|
||||||
@@ -696,23 +698,13 @@ class ToolMarkers(AppTool):
|
|||||||
|
|
||||||
s_list = []
|
s_list = []
|
||||||
if new_geo_obj.solid_geometry:
|
if new_geo_obj.solid_geometry:
|
||||||
if isinstance(new_geo_obj.solid_geometry, MultiPolygon):
|
s_list = flatten_shapely_geometry(new_geo_obj.solid_geometry)
|
||||||
work_geo = new_geo_obj.solid_geometry.geoms
|
|
||||||
else:
|
|
||||||
work_geo = new_geo_obj.solid_geometry
|
|
||||||
try:
|
|
||||||
for poly in work_geo:
|
|
||||||
s_list.append(poly)
|
|
||||||
except TypeError:
|
|
||||||
s_list.append(work_geo)
|
|
||||||
|
|
||||||
geo_buff_list = flatten_shapely_geometry(geo_buff_list)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for poly in geo_buff_list + marker_geometry:
|
for g_el in marker_geometry:
|
||||||
s_list.append(poly)
|
s_list.append(g_el)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
s_list.append(geo_buff_list)
|
s_list.append(marker_geometry)
|
||||||
|
|
||||||
def initialize(geo_obj, app_obj):
|
def initialize(geo_obj, app_obj):
|
||||||
geo_obj.options = LoudDict()
|
geo_obj.options = LoudDict()
|
||||||
@@ -722,11 +714,11 @@ class ToolMarkers(AppTool):
|
|||||||
|
|
||||||
# Propagate options
|
# Propagate options
|
||||||
geo_obj.options["tools_mill_tooldia"] = app_obj.defaults["tools_mill_tooldia"]
|
geo_obj.options["tools_mill_tooldia"] = app_obj.defaults["tools_mill_tooldia"]
|
||||||
geo_obj.solid_geometry = flatten_shapely_geometry(unary_union(s_list))
|
geo_obj.solid_geometry = flatten_shapely_geometry(s_list)
|
||||||
|
|
||||||
geo_obj.multitool = False
|
geo_obj.multitool = True
|
||||||
geo_obj.multigeo = False
|
geo_obj.multigeo = True
|
||||||
geo_obj.tools = new_tools
|
geo_obj.tools = deepcopy(new_tools)
|
||||||
|
|
||||||
ret = self.app.app_obj.new_object('geometry', outname, initialize, plot=True, autoselected=False)
|
ret = self.app.app_obj.new_object('geometry', outname, initialize, plot=True, autoselected=False)
|
||||||
|
|
||||||
|
|||||||
12
camlib.py
12
camlib.py
@@ -8219,14 +8219,12 @@ def flatten_shapely_geometry(geometry):
|
|||||||
"""
|
"""
|
||||||
flat_list = []
|
flat_list = []
|
||||||
try:
|
try:
|
||||||
if isinstance(geometry, (MultiLineString, MultiPolygon, MultiPoint)):
|
work_geo = geometry.geoms if isinstance(geometry, (MultiLineString, MultiPolygon, MultiPoint)) else geometry
|
||||||
for geo in geometry.geoms:
|
for geo in work_geo:
|
||||||
flat_list.append(geo)
|
flat_list += flatten_shapely_geometry(geo)
|
||||||
else:
|
|
||||||
for geo_el in geometry:
|
|
||||||
flat_list += flatten_shapely_geometry(geo_el)
|
|
||||||
except TypeError:
|
except TypeError:
|
||||||
flat_list.append(geometry)
|
if geometry and not geometry.is_empty:
|
||||||
|
flat_list.append(geometry)
|
||||||
|
|
||||||
return flat_list
|
return flat_list
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user