Valid template header default (#6610)

* Valid template header default

* consistent version in tempalte file

* schema-dependent mvd
This commit is contained in:
Geert Hesselink
2025-05-05 12:56:40 +01:00
committed by GitHub
parent 1714516a81
commit fe9c548ae0
@@ -30,7 +30,7 @@ from typing import Optional
# http://academy.ifcopenshell.org/creating-a-simple-wall-with-property-set-and-quantity-information/
TEMPLATE = """ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_DESCRIPTION(('ViewDefinition [%(mvd)s]'),'2;1');
FILE_NAME('%(filename)s','%(timestring)s',('%(creator)s'),('%(organization)s'),'%(application)s','%(application)s','');
FILE_SCHEMA(('%(schema_identifier)s'));
ENDSEC;
@@ -60,14 +60,26 @@ END-ISO-10303-21;
"""
DEFAULTS = {
"application": lambda d: "IfcOpenShell-%s" % version(),
"application_version": lambda d: version(),
"application": lambda d: "IfcOpenShell contributors - IfcOpenShell - v%s" % get_pep440_version(version()),
"application_version": lambda d: get_pep440_version(version()),
"project_globalid": lambda d: compress(uuid.uuid4().hex),
"schema_identifier": lambda d: "IFC4",
"timestamp": lambda d: int(time.time()),
"timestring": lambda d: time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime(d.get("timestamp") or time.time())),
"mvd": lambda d: (
"ReferenceView_V1.2" if d.get("schema_identifier") == "IFC4"
else "CoordinationView_V2.0" if d.get("schema_identifier") == "IFC2X3"
else "ReferenceView" if d.get("schema_identifier") == "IFC4X3_ADD2"
else "ReferenceView_V1.2"
),
}
def get_pep440_version(ifcopenshell_wrapper_version):
"""
Returns a PEP 440-compliant version string, valid for use with
`packaging.version.parse()` and compliant with the Validation Service header policy.
"""
return ifcopenshell_wrapper_version.replace("-", "+", 1)
def create(
filename: Optional[str] = None,
@@ -80,6 +92,7 @@ def create(
application: Optional[str] = None,
project_globalid: Optional[str] = None,
project_name: Optional[str] = None,
mvd: Optional[str] = None
) -> file:
d = dict(locals())