diff options
author | opiopan <opiopan@gmail.com> | 2019-04-24 22:55:23 +0900 |
---|---|---|
committer | opiopan <opiopan@gmail.com> | 2019-04-24 22:55:23 +0900 |
commit | 6ec58842030b0bbe6aa3391456f017d71b74aeaa (patch) | |
tree | 0c70aba68412d5f0f6ab5e7e47175e7196759da6 /gerberex/dxf_path.py | |
parent | 0d91ed834d7a28b249b86081294a9c1b95e8f39c (diff) | |
download | gerbonara-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.py | 17 |
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): |