diff --git a/Documentation/README.md b/Documentation/README.md
index 718ae2a..4b31b71 100644
--- a/Documentation/README.md
+++ b/Documentation/README.md
@@ -1,6 +1,5 @@
# BIM Collaboration Format v3.0 Technical Documentation
-
-![BCF](https://raw.githubusercontent.com/buildingSMART/BCF-XML/master/Icons/BCFicon128.png 'The BCF logo')
+![BCF](https://raw.githubusercontent.com/buildingSMART/BCF-XML/master/Icons/BCFicon128.png "The BCF logo")
### Terms and Abbreviations
@@ -9,31 +8,30 @@ Globally Unique Identifier: http://en.wikipedia.org/wiki/Globally_Unique_Identif
IfcGuid
Globally Unique Identifier in the IFC data. This format is used only when referring to objects in IFC datasets.
-| | |
-| ---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| BCF | BIM Collaboration Format |
-| BCF file | File in BIM Collaboration Format |
-| Topic | One topic, such as a problem in the design, described in BCF file |
-| GUID | Globally Unique Identifier: http://en.wikipedia.org/wiki/Globally_Unique_Identifier |
+
+| | |
+| ------------- |:-------------|
+| BCF | BIM Collaboration Format |
+| BCF file | File in BIM Collaboration Format |
+| Topic | One topic, such as a problem in the design, described in BCF file |
+| GUID |Globally Unique Identifier: http://en.wikipedia.org/wiki/Globally_Unique_Identifier |
| ServerAssignedId | A server-controlled, user-friendly and project-unique issue identifier. More details in [BCF-API](https://github.com/buildingSMART/BCF-API/tree/release_2_2#429-topic-identifiers) |
### Background
-
-- This document describes the BCF format that is used to exchange topics, such as, issues, scenes, etc. between different BIM software.
+* This document describes the BCF format that is used to exchange topics, such as, issues, scenes, etc. between different BIM software.
### BCF file structure
-
A BCF file is a zip containing one folder for each topic with its file extension "bcfzip" for BCFv1.0 and BCFv2.0. The file extension "bcf" is introduced since BCFv2.1.
The root of the BCF zip contains the following files.
-- extensions.xml
- - An XML file defining the extensions of a project. The schema for this file is extensions.xsd.
-- project.bcfp (optional)
- - An XML file defining the details of a project. The schema for this file is project.xsd.
-- documents.xml (optional)
- - An XML file defining the documents in a project. The schema for this file is documents.xsd.
-- bcf.version
- - An XML file following the version.xsd schema with information of the BCF schema used. The file content should be identical to the contents of [bcf.version](bcf.version 'bcf.version')
+* extensions.xml
+ - An XML file defining the extensions of a project. The schema for this file is extensions.xsd.
+* project.bcfp (optional)
+ - An XML file defining the details of a project. The schema for this file is project.xsd.
+* documents.xml (optional)
+ - An XML file defining the documents in a project. The schema for this file is documents.xsd.
+* bcf.version
+ * An XML file following the version.xsd schema with information of the BCF schema used. The file content should be identical to the contents of [bcf.version](bcf.version "bcf.version")
It is possible to store additional files in the BCF container as documents.
The documents must be located in a folder called `Documents` in the root directory, and must be referenced by the `documents.xml` file.
@@ -47,22 +45,22 @@ When a property or an attribute is required, it must not be an empty value. For
The folder name is the GUID of the topic. This GUID is in the UUID form. The GUID must be all-lowercase. The folder contains the following file:
-- markup.bcf
- - An XML file following the markup.xsd schema that is described below.
+* markup.bcf
+ * An XML file following the markup.xsd schema that is described below.
Additionally the folder can contain other files:
-- Viewpoint files
- - An XML file conforming to the visinfo.xsd schema that is described below.
- - File names should end with the `.bcfv` extension and match the value of one of the [`Viewpoint` elements](https://github.com/BuildingSMART/BCF-XML/tree/release_3_0/Documentation#viewpoints).
-- Snapshot files
- - Both PNG and JPEG snapshots are allowed.
- - The longest dimension of should not exceed 1500 px, length or width.
- - File names should match the value of one of the [`Snapshot` elements](https://github.com/BuildingSMART/BCF-XML/tree/release_3_0/Documentation#viewpoints).
-- Bitmaps
- - See https://github.com/BuildingSMART/BCF-XML/tree/release_3_0/Documentation#bitmap-optional.
+* Viewpoint files
+ * An XML file conforming to the visinfo.xsd schema that is described below.
+ * File names should end with the `.bcfv` extension and match the value of one of the [`Viewpoint` elements](https://github.com/BuildingSMART/BCF-XML/tree/release_3_0/Documentation#viewpoints).
+* Snapshot files
+ * Both PNG and JPEG snapshots are allowed.
+ * The longest dimension of should not exceed 1500 px, length or width.
+ * File names should match the value of one of the [`Snapshot` elements](https://github.com/BuildingSMART/BCF-XML/tree/release_3_0/Documentation#viewpoints).
+* Bitmaps
+ * See https://github.com/BuildingSMART/BCF-XML/tree/release_3_0/Documentation#bitmap-optional.
-_Note: The elements in the XML files must appear in the order given in the schemas and described below._
+*Note: The elements in the XML files must appear in the order given in the schemas and described below.*
### DateTime Format
@@ -81,23 +79,25 @@ Numeric values in this specification are all in fixed units - meters for length
The project file contains reference information about the project the topics belong to.
-| Attribute | Optional | Description |
-| :-------- | :------- | :----------------------: |
-| ProjectId | No | ProjectId of the project |
-In addition it has the following nodes:
-| Element | Optional | Description |
-| :------ | :------- | :------------------- |
-| Name | Yes | Name of the project. |
+ Attribute | Optional | Description |
+:-----------|:------------|:------------:
+ ProjectId | No | ProjectId of the project
+
+ In addition it has the following nodes:
-## Markup (.bcf) file
+ Element | Optional | Description |
+:-----------|:------------|:------------
+Name | Yes | Name of the project.
+
+
+## Markup (.bcf) file
The markup file contains textual information about the topic.
### Header
-
-Header node contains information about the IFC files relevant to this topic.
+Header node contains information about the IFC files relevant to this topic.
The "files" should be used to match which models to be opened when displaying the topic viewpoints.
@@ -106,31 +106,30 @@ Therefore the software importing the BCF file should give the user a possibility
Each File node has the following attributes:
-| Attribute | Optional | Description |
-| :------------------------- | :------- | :---------------------------------------------------------------------------------------------------------- |
-| IfcProject | Yes | IfcGuid Reference to the project to which this topic is related in the IFC file |
-| IfcSpatialStructureElement | Yes | IfcGuid Reference to the spatial structure element, e.g. IfcBuildingStorey, to which this topic is related. |
-| IsExternal | Yes | Is the IFC file external or within the bcfzip. (Default = true). |
+ Attribute | Optional | Description |
+:-----------|:------------|:------------
+ IfcProject | Yes | IfcGuid Reference to the project to which this topic is related in the IFC file
+IfcSpatialStructureElement | Yes | IfcGuid Reference to the spatial structure element, e.g. IfcBuildingStorey, to which this topic is related.
+IsExternal | Yes | Is the IFC file external or within the bcfzip. (Default = true).
In addition File has the following nodes:
-| Attribute | Optional | Description |
-| :-------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Filename | Yes | The BIM file related to this topic. For IFC files this is the first item in the FILE_NAME entry in the IFC file's [header](https://standards.buildingsmart.org/documents/Implementation/ImplementationGuide_IFCHeaderData_Version_1.0.2.pdf). |
-| Date | Yes | Date of the BIM file. For IFC files this is the second entry of the FILE_NAME entry in the IFC file's [header](https://standards.buildingsmart.org/documents/Implementation/ImplementationGuide_IFCHeaderData_Version_1.0.2.pdf). When the timestamp given in the header does not provide timezone, it is interpreted as UTC. |
-| Reference | Yes | URI to IfcFile.
IsExternal=false “..\example.ifc“ (within bcfzip)
IsExternal=true “https://.../example.ifc“ |
-| Id | Yes | The id of the file. This is internal to the topic, and can be used by viewpoints to reference a subset of the files that should be loaded |
+ Attribute | Optional | Description |
+:-----------|:------------|:------------
+Filename | Yes | The BIM file related to this topic. For IFC files this is the first item in the FILE_NAME entry in the IFC file's [header](https://standards.buildingsmart.org/documents/Implementation/ImplementationGuide_IFCHeaderData_Version_1.0.2.pdf).
+Date | Yes | Date of the BIM file. For IFC files this is the second entry of the FILE_NAME entry in the IFC file's [header](https://standards.buildingsmart.org/documents/Implementation/ImplementationGuide_IFCHeaderData_Version_1.0.2.pdf). When the timestamp given in the header does not provide timezone, it is interpreted as UTC.
+Reference | Yes | URI to IfcFile.
IsExternal=false “..\example.ifc“ (within bcfzip)
IsExternal=true “https://.../example.ifc“
+Id | Yes | The id of the file. This is internal to the topic, and can be used by viewpoints to reference a subset of the files that should be loaded
### Topic
-
Topic node contains reference information of the topic. It has one required attribute, which is the topic GUID (`Guid`).
-| Attribute | Optional | Description |
-| :--------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------- |
-| Guid | No | Guid of the topic, in lowercase |
-| ServerAssignedId | Yes | A server controlled, user friendly and project-unique issue identifier. Clients provided values will be disregarded by the server |
-| TopicType | No | Type of the topic (Predefined list in “extensions.xml”) |
-| TopicStatus | No | Type of the topic (Predefined list in “extensions.xml”) |
+ Attribute | Optional | Description |
+:-----------|:------------|:------------
+Guid | No | Guid of the topic, in lowercase
+ServerAssignedId | Yes | A server controlled, user friendly and project-unique issue identifier. Clients provided values will be disregarded by the server |
+TopicType | No | Type of the topic (Predefined list in “extensions.xml”)
+TopicStatus | No | Type of the topic (Predefined list in “extensions.xml”)
**Server Assigned ID**
@@ -140,7 +139,6 @@ When exported to XML this information may be critical to the understanding of to
However, since the BCF-XML specification can't distinguish between server-side BCF and client-side BCF, it was decided to mark the field as optional in the XSD schema.
Clients should:
-
- Display the `ServerAssignedId` and enable searching topics by its content
- Prevent setting the `ServerAssignedId` when creating a new topic
- Prevent changes to the `ServerAssignedId` when editing an existing topic
@@ -150,130 +148,121 @@ Clients should:
In addition, a topic has the following nodes:
-| Element | Optional | Description |
-| :------------- | :------- | :------------------------------------------------------------------------------------------------------------------- |
-| ReferenceLink | Yes | List of references to the topic, for example, a work request management system or an URI to a model. |
-| Title | No | Title of the topic. |
-| Priority | Yes | Topic priority (Predefined list in “extensions.xml”). |
-| Index | Yes | Number to maintain the order of the topics. **This property is deprecated and will be removed in a future release.** |
-| Labels | Yes | Tags for grouping Topics (Predefined list in “extensions.xml”). |
-| CreationDate | No | Date when the topic was created. |
-| CreationAuthor | No | User who created the topic. |
-| ModifiedDate | Yes | Date when the topic was last modified. Exists only when Topic has been modified after creation. |
-| ModifiedAuthor | Yes | User who modified the topic. Exists only when Topic has been modified after creation. |
-| DueDate | Yes | Date until when the topics issue needs to be resolved. |
-| AssignedTo | Yes | The user to whom this topic is assigned to. Recommended to be in email format (Predefined list in “extensions.xml”). |
-| Description | Yes | Description of the topic. |
-| Stage | Yes | Stage this topic is part of (Predefined list in “extensions.xml”). |
+ Element | Optional | Description |
+:-----------|:------------|:------------
+ReferenceLink | Yes | List of references to the topic, for example, a work request management system or an URI to a model.
+Title | No | Title of the topic.
+Priority | Yes | Topic priority (Predefined list in “extensions.xml”).
+Index | Yes | Number to maintain the order of the topics. **This property is deprecated and will be removed in a future release.**
+Labels | Yes | Tags for grouping Topics (Predefined list in “extensions.xml”).
+CreationDate | No | Date when the topic was created.
+CreationAuthor | No | User who created the topic.
+ModifiedDate | Yes | Date when the topic was last modified. Exists only when Topic has been modified after creation.
+ModifiedAuthor | Yes | User who modified the topic. Exists only when Topic has been modified after creation.
+DueDate | Yes | Date until when the topics issue needs to be resolved.
+AssignedTo | Yes | The user to whom this topic is assigned to. Recommended to be in email format (Predefined list in “extensions.xml”).
+Description | Yes | Description of the topic.
+Stage | Yes | Stage this topic is part of (Predefined list in “extensions.xml”).
### BimSnippet (optional)
-
BimSnippet is an additional file containing information related to one or multiple topics. For example, it can be an IFC file containing provisions for voids.
-| Attribute | Optional | Description |
-| :---------- | :------- | :----------------------------------------------------------------------- |
-| SnippetType | No | Type of the Snippet (Predefined list in “extensions.xml”) |
-| IsExternal | Yes | Is the BimSnippet external or within the bcfzip.
(Default = false). |
+ Attribute | Optional | Description |
+:-----------|:------------|:------------
+SnippetType | No | Type of the Snippet (Predefined list in “extensions.xml”)
+IsExternal | Yes | Is the BimSnippet external or within the bcfzip.
(Default = false).
-| Element | Optional | Description |
-| :-------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------- |
-| Reference | No | URI to BimSnippet.
IsExternal=false “..\snippetExample.ifc“ (within bcfzip)
IsExternal=true “https://.../snippetExample.ifc“ |
-| ReferenceSchema | No | URI to BimSnippetSchema (always external) |
+ Element | Optional | Description |
+:-----------|:------------|:------------
+Reference | No | URI to BimSnippet.
IsExternal=false “..\snippetExample.ifc“ (within bcfzip)
IsExternal=true “https://.../snippetExample.ifc“
+ReferenceSchema | No | URI to BimSnippetSchema (always external)
### DocumentReferences (optional)
-
DocumentReferences provides a means to associate documents with topics. The references may point to files within the BCF or to external locations.
-| Attribute | Optional | Description |
-| :----------- | :----------------------------------------- | :---------------------------------------------------- |
-| Guid | No | Guid attribute for identifying the reference uniquely |
-| DocumentGuid | No, mutually exclusive with `Url` | Guid of the referenced document. |
-| Url | No, mutually exclusive with `DocumentGuid` | Url of an external document. |
-| Description | Yes | Human readable description of the document reference |
+Attribute | Optional | Description |
+:-----------|:------------|:------------
+Guid | No | Guid attribute for identifying the reference uniquely
+DocumentGuid | No, mutually exclusive with `Url` | Guid of the referenced document.
+Url | No, mutually exclusive with `DocumentGuid` | Url of an external document.
+Description | Yes | Human readable description of the document reference
### RelatedTopic (optional)
-
Relation between topics (Clash -> PfV -> Opening)
-| Attribute | Optional | Description |
-| :---------------- | :------- | :-------------------------------------- |
-| RelatedTopic/GUID | Yes | List of GUIDs of the referenced topics. |
+Attribute | Optional | Description |
+:-----------|:------------|:------------
+RelatedTopic/GUID | Yes | List of GUIDs of the referenced topics.
-### Comment
+### Comment
The markup file can contain comments related to the topic. Their purpose is to record discussion between different parties related to the topic. Each Comment has a Guid attribute for identifying it uniquely. A comment can reference a viewpoint to support the discussion. At least one of Viewpoint and/or Comment (text) must be provided. In addition, it has the following nodes:
-| Element | Optional | Description |
-| :------------- | :----------------------- | :---------------------------------------------- |
-| Date | No | Date of the comment |
-| Author | No | Comment author |
-| Comment | Yes, if Viewpoint exists | The comment text, must not be empty if provided |
-| Viewpoint | Yes, if Comment exists | Back reference to the viewpoint GUID. |
-| ModifiedDate | Yes | The date when comment was modified |
-| ModifiedAuthor | Yes | The author who modified the comment |
+Element | Optional | Description |
+:-----------|:------------|:------------
+Date | No | Date of the comment
+Author |No | Comment author
+Comment | Yes, if Viewpoint exists | The comment text, must not be empty if provided
+Viewpoint | Yes, if Comment exists | Back reference to the viewpoint GUID.
+ModifiedDate | Yes | The date when comment was modified
+ModifiedAuthor | Yes | The author who modified the comment
### Viewpoints
-
The markup file can contain multiple viewpoints related to one or more comments. A viewpoint has also the Guid attribute for identifying it uniquely. In addition, it has the following nodes:
-| Element | Optional | Description |
-| :-------- | :------- | :------------------------------------- |
-| Viewpoint | Yes | Filename of the viewpoint (.bcfv) |
-| Snapshot | Yes | Filename of the snapshot (png or jpeg) |
-| Index | Yes | Parameter for sorting |
+Element | Optional | Description |
+:-----------|:------------|:------------
+Viewpoint | Yes | Filename of the viewpoint (.bcfv)
+Snapshot | Yes | Filename of the snapshot (png or jpeg)
+Index | Yes | Parameter for sorting
Viewpoints are immutable, therefore they should never be changed once created. If new comments on a topic require different visualization, new viewpoints should be added.
## Visualization information (.bcfv) file
-
The visualization information file contains information of components related to the topic, camera settings, and possible markup and clipping information.
-### TopicFiles
+### TopicFileIds
-Parent topic objects specify a list of model files in their `Header.Files` element. These files contain an `Id` attribute, which are used to reference a subset of all the topic files for a specific viewpoint. To make viewpoints immutable, e.g. in the case of later added topic files, each viewpoint is required to list all their file references. Only those files referenced In a viewpoints `TopicFiles` should be loaded when visualizing the viewpoint.
+Parent topic objects specify a list of model files in their `Header.Files` element. These files contain an `Id` attribute, which are used to reference a subset of all the topic files for a specific viewpoint. To make viewpoints immutable, e.g. in the case of later added topic files, each viewpoint is required to list all their file references. Only those files referenced In a viewpoints `TopicFileIds` should be loaded when visualizing the viewpoint.
### Components
The `Components` element contains the following properties.
-
-- `Selection` to list components of interest
-- `Visibility` to describe which component is visible and which isn't
-- `Coloring` to convey coloring options for displaying components
+* `Selection` to list components of interest
+* `Visibility` to describe which component is visible and which isn't
+* `Coloring` to convey coloring options for displaying components
#### Selection
-
The `Selection` element lists all components that should be selected (highlighted) when displaying a viewpoint.
**Optimization Rules**
BCF is suitable for selecting a few components. A huge list of selected components causes poor performance. All clients should follow this rule:
-- If the size of the selected components is huge (over 1000 components), alert the user and ask them to reduce the number of selected components.
-- Provide help to the user to only select those models that are required to understand the topic, limiting the model files that need to be loaded to visualize a single viewpoint by specifying a small list of files in the viewpoints `TopicFiles` element.
+* If the size of the selected components is huge (over 1000 components), alert the user and ask them to reduce the number of selected components.
+* Provide help to the user to only select those models that are required to understand the topic, limiting the model files that need to be loaded to visualize a single viewpoint by specifying a small list of files in the viewpoints `TopicFileIds` element.
#### Visibility
-
The `Visibility` element decides which objects are visible and which are hidden.
-| Element/Attribute | Optional | Description |
-| :---------------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| DefaultVisibility | Yes | Boolean. Defaults to `false`