summaryrefslogtreecommitdiff
path: root/gerberex/dxf_path.py
diff options
context:
space:
mode:
authoropiopan <opiopan@gmail.com>2019-04-24 22:55:23 +0900
committeropiopan <opiopan@gmail.com>2019-04-24 22:55:23 +0900
commit6ec58842030b0bbe6aa3391456f017d71b74aeaa (patch)
tree0c70aba68412d5f0f6ab5e7e47175e7196759da6 /gerberex/dxf_path.py
parent0d91ed834d7a28b249b86081294a9c1b95e8f39c (diff)
downloadgerbonara-6ec58842030b0bbe6aa3391456f017d71b74aeaa.tar.gz
gerbonara-6ec58842030b0bbe6aa3391456f017d71b74aeaa.tar.bz2
gerbonara-6ec58842030b0bbe6aa3391456f017d71b74aeaa.zip
fix a genarating closed path issue
Diffstat (limited to 'gerberex/dxf_path.py')
-rw-r--r--gerberex/dxf_path.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/gerberex/dxf_path.py b/gerberex/dxf_path.py
index 2825c58..ca48d00 100644
--- a/gerberex/dxf_path.py
+++ b/gerberex/dxf_path.py
@@ -173,9 +173,20 @@ class DxfPath(object):
def generate_closed_paths(statements, error_range=0):
from gerberex.dxf import DxfLineStatement, DxfArcStatement
- paths = [DxfPath(s, error_range) \
- for s in filter(lambda s: isinstance(s, DxfLineStatement) or \
- isinstance(s, DxfArcStatement), statements)]
+ unique_statements = []
+ redundant = 0
+ for statement in statements:
+ for target in unique_statements:
+ if not isinstance(statement, DxfLineStatement) and \
+ not isinstance(statement, DxfArcStatement):
+ break
+ if statement.is_equal_to(target, error_range):
+ redundant += 1
+ break
+ else:
+ unique_statements.append(statement)
+
+ paths = [DxfPath(s, error_range) for s in unique_statements]
prev_paths_num = 0
while prev_paths_num != len(paths):