mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 12:57:57 +00:00
Code review for BCFXML v3 Markup.xsd implementation with TestPrab
This commit is contained in:
@@ -92,6 +92,12 @@ class BcfXml:
|
|||||||
subdirs = dirnames
|
subdirs = dirnames
|
||||||
break
|
break
|
||||||
for subdir in subdirs:
|
for subdir in subdirs:
|
||||||
|
try:
|
||||||
|
uuid.UUID(subdir)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
if not os.path.exists(os.path.join(self.filepath, subdir, "markup.bcf")):
|
||||||
|
continue
|
||||||
self.topics[subdir] = self.get_topic(subdir)
|
self.topics[subdir] = self.get_topic(subdir)
|
||||||
return self.topics
|
return self.topics
|
||||||
|
|
||||||
|
|||||||
+31
-20
@@ -86,6 +86,12 @@ class BcfXml:
|
|||||||
subdirs = dirnames
|
subdirs = dirnames
|
||||||
break
|
break
|
||||||
for subdir in subdirs:
|
for subdir in subdirs:
|
||||||
|
try:
|
||||||
|
uuid.UUID(subdir)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
if not os.path.exists(os.path.join(self.filepath, subdir, "markup.bcf")):
|
||||||
|
continue
|
||||||
self.topics[subdir] = self.get_topic(subdir)
|
self.topics[subdir] = self.get_topic(subdir)
|
||||||
return self.topics
|
return self.topics
|
||||||
|
|
||||||
@@ -95,7 +101,7 @@ class BcfXml:
|
|||||||
return
|
return
|
||||||
header = bcf.v3.data.Header()
|
header = bcf.v3.data.Header()
|
||||||
if data["Header"].get("Files"):
|
if data["Header"].get("Files"):
|
||||||
for item in data["Header"]["Files"]["File"]:
|
for item in data["Header"]["Files"].get("File", []):
|
||||||
header_file = bcf.v3.data.HeaderFile()
|
header_file = bcf.v3.data.HeaderFile()
|
||||||
optional_keys = {
|
optional_keys = {
|
||||||
"filename": "Filename",
|
"filename": "Filename",
|
||||||
@@ -133,8 +139,6 @@ class BcfXml:
|
|||||||
optional_keys = {
|
optional_keys = {
|
||||||
"priority": "Priority",
|
"priority": "Priority",
|
||||||
"index": "Index",
|
"index": "Index",
|
||||||
"labels": "Labels",
|
|
||||||
"reference_links": "ReferenceLink",
|
|
||||||
"modified_date": "ModifiedDate",
|
"modified_date": "ModifiedDate",
|
||||||
"modified_author": "ModifiedAuthor",
|
"modified_author": "ModifiedAuthor",
|
||||||
"due_date": "DueDate",
|
"due_date": "DueDate",
|
||||||
@@ -147,6 +151,12 @@ class BcfXml:
|
|||||||
if value in data["Topic"]:
|
if value in data["Topic"]:
|
||||||
setattr(topic, key, data["Topic"][value])
|
setattr(topic, key, data["Topic"][value])
|
||||||
|
|
||||||
|
if "ReferenceLinks" in data["Topic"]:
|
||||||
|
topic.reference_links.extend(data["Topic"]["ReferenceLinks"].get("ReferenceLink", []))
|
||||||
|
|
||||||
|
if "Labels" in data["Topic"]:
|
||||||
|
topic.labels.extend(data["Topic"]["Labels"].get("Label", []))
|
||||||
|
|
||||||
if "BimSnippet" in data["Topic"]:
|
if "BimSnippet" in data["Topic"]:
|
||||||
bim_snippet = bcf.v3.data.BimSnippet()
|
bim_snippet = bcf.v3.data.BimSnippet()
|
||||||
keys = {
|
keys = {
|
||||||
@@ -159,8 +169,9 @@ class BcfXml:
|
|||||||
if value in data["Topic"]["BimSnippet"]:
|
if value in data["Topic"]["BimSnippet"]:
|
||||||
setattr(bim_snippet, key, data["Topic"]["BimSnippet"][value])
|
setattr(bim_snippet, key, data["Topic"]["BimSnippet"][value])
|
||||||
topic.bim_snippet = bim_snippet
|
topic.bim_snippet = bim_snippet
|
||||||
|
|
||||||
if data["Topic"].get("DocumentReferences"):
|
if data["Topic"].get("DocumentReferences"):
|
||||||
for item in data["Topic"]["DocumentReferences"]["DocumentReference"]:
|
for item in data["Topic"]["DocumentReferences"].get("DocumentReference", []):
|
||||||
document_reference = bcf.v3.data.DocumentReference()
|
document_reference = bcf.v3.data.DocumentReference()
|
||||||
keys = {
|
keys = {
|
||||||
"document_guid": "DocumentGuid",
|
"document_guid": "DocumentGuid",
|
||||||
@@ -172,8 +183,9 @@ class BcfXml:
|
|||||||
if value in item:
|
if value in item:
|
||||||
setattr(document_reference, key, item[value])
|
setattr(document_reference, key, item[value])
|
||||||
topic.document_references.append(document_reference)
|
topic.document_references.append(document_reference)
|
||||||
|
|
||||||
if data["Topic"].get("RelatedTopics"):
|
if data["Topic"].get("RelatedTopics"):
|
||||||
for item in data["Topic"]["RelatedTopics"]["RelatedTopic"]:
|
for item in data["Topic"]["RelatedTopics"].get("RelatedTopic", []):
|
||||||
related_topic = bcf.v3.data.RelatedTopic()
|
related_topic = bcf.v3.data.RelatedTopic()
|
||||||
related_topic.guid = item["@Guid"]
|
related_topic.guid = item["@Guid"]
|
||||||
topic.related_topics.append(related_topic)
|
topic.related_topics.append(related_topic)
|
||||||
@@ -276,16 +288,15 @@ class BcfXml:
|
|||||||
with open(os.path.join(self.filepath, topic.guid, "markup.bcf"), "wb") as f:
|
with open(os.path.join(self.filepath, topic.guid, "markup.bcf"), "wb") as f:
|
||||||
f.write(self.document.toprettyxml(encoding="utf-8"))
|
f.write(self.document.toprettyxml(encoding="utf-8"))
|
||||||
|
|
||||||
def write_document_references(self, reference, root):
|
def write_document_references(self, references, root):
|
||||||
|
for reference in references:
|
||||||
for refer in reference:
|
document_reference_el = self._create_element(root, "DocumentReference", {"Guid": reference.guid})
|
||||||
document_reference_el = self._create_element(root, "DocumentReference", {"Guid": refer.guid})
|
if reference.document_guid:
|
||||||
if refer.document_guid:
|
self._create_element(document_reference_el, "DocumentGuid", text=reference.document_guid)
|
||||||
self._create_element(document_reference_el, "DocumentGuid", text=refer.document_guid)
|
elif reference.url:
|
||||||
if refer.url:
|
self._create_element(document_reference_el, "Url", text=reference.url)
|
||||||
self._create_element(document_reference_el, "Url", text=refer.url)
|
if reference.description:
|
||||||
if refer.description:
|
self._create_element(document_reference_el, "Description", text=reference.description)
|
||||||
self._create_element(document_reference_el, "Description", text=refer.description)
|
|
||||||
|
|
||||||
def write_header(self, header, root):
|
def write_header(self, header, root):
|
||||||
if not header or not header.files:
|
if not header or not header.files:
|
||||||
@@ -615,10 +626,10 @@ class BcfXml:
|
|||||||
|
|
||||||
def get_comments(self, guid):
|
def get_comments(self, guid):
|
||||||
comments = {}
|
comments = {}
|
||||||
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
|
if "Comments" not in data["Topics"]:
|
||||||
if "Comment" not in data:
|
|
||||||
return comments
|
return comments
|
||||||
for item in data["Topic"]["Comments"]["Comment"]:
|
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
|
||||||
|
for item in data["Topic"]["Comments"].get("Comment", []):
|
||||||
comment = bcf.v3.data.Comment()
|
comment = bcf.v3.data.Comment()
|
||||||
mandatory_keys = {
|
mandatory_keys = {
|
||||||
"guid": "@Guid",
|
"guid": "@Guid",
|
||||||
@@ -645,9 +656,9 @@ class BcfXml:
|
|||||||
|
|
||||||
def get_viewpoints(self, guid):
|
def get_viewpoints(self, guid):
|
||||||
viewpoints = {}
|
viewpoints = {}
|
||||||
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
|
if "Viewpoints" not in data["Topic"]:
|
||||||
if "Viewpoints" not in data:
|
|
||||||
return viewpoints
|
return viewpoints
|
||||||
|
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
|
||||||
for item in data["Topic"]["Viewpoints"]:
|
for item in data["Topic"]["Viewpoints"]:
|
||||||
viewpoint = self.get_viewpoint(item, guid)
|
viewpoint = self.get_viewpoint(item, guid)
|
||||||
viewpoints[viewpoint.guid] = viewpoint
|
viewpoints[viewpoint.guid] = viewpoint
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class DocumentReference:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.description = None
|
self.description = None
|
||||||
self.document_guid = None
|
self.document_guid = None
|
||||||
self.url = False
|
self.url = None
|
||||||
self.guid = None
|
self.guid = None
|
||||||
|
|
||||||
|
|
||||||
@@ -178,4 +178,4 @@ class Viewpoint:
|
|||||||
self.perspective_camera = None
|
self.perspective_camera = None
|
||||||
self.lines = []
|
self.lines = []
|
||||||
self.clipping_planes = []
|
self.clipping_planes = []
|
||||||
self.bitmaps = []
|
self.bitmaps = []
|
||||||
|
|||||||
Reference in New Issue
Block a user