first commit
This commit is contained in:
65
helix/validators/dxf_layer_validator.py
Normal file
65
helix/validators/dxf_layer_validator.py
Normal file
@@ -0,0 +1,65 @@
|
||||
"""
|
||||
Created on Mar 23, 2017
|
||||
|
||||
@author: jvazquez
|
||||
"""
|
||||
from helix.constants.file_validation_error import FileValidationMessage
|
||||
from helix.models.dxf.dxf_error import OldDxfFormatException
|
||||
|
||||
|
||||
class DXFLayerValidator(object):
|
||||
"""
|
||||
In 2017, Aurora changed the format of their DXF files to meet new
|
||||
specifications. The old-style DXF files will not
|
||||
be supported, and this class will screen for old files.
|
||||
Most noticably, old files used "Roofs" section headers while
|
||||
new files use "Buildings"
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.layers = set()
|
||||
self.new_aurora_format = False
|
||||
|
||||
def add_layer(self, layer):
|
||||
"""Add a layer in a set
|
||||
|
||||
param
|
||||
layer (string)
|
||||
|
||||
"""
|
||||
self.layers.add(layer)
|
||||
|
||||
def determine_file(self):
|
||||
"""Based on the layers of the dxf,
|
||||
we will determine if is a "new"
|
||||
file format
|
||||
or is the "old" format.
|
||||
|
||||
Bare in mind that we are <strong>assuming</strong>
|
||||
this based on an assumption.
|
||||
|
||||
There's no drastic visible difference
|
||||
in the files if you inspect them
|
||||
with a text editor.
|
||||
|
||||
The whole difference comes
|
||||
from the space in the panels.
|
||||
The width remains the same, but there is a gap
|
||||
in the middle in the new format.
|
||||
|
||||
At this moment, this is the simplest
|
||||
format we know on how to determine this.
|
||||
|
||||
"""
|
||||
|
||||
try:
|
||||
assert "Buildings" in self.layers and "Roofs" not in self.layers
|
||||
self.new_aurora_format = True
|
||||
except AssertionError:
|
||||
error = FileValidationMessage.OldDxfFormat.value
|
||||
raise OldDxfFormatException(error)
|
||||
|
||||
def is_new_aurora_format(self):
|
||||
""" return boolean """
|
||||
|
||||
return self.new_aurora_format
|
||||
Reference in New Issue
Block a user