update webapp + bonsai integration

This commit is contained in:
Sayan Jyoti Das
2025-08-29 17:45:30 +05:30
committed by Dion Moult
parent 1672a7da32
commit a5d9fe551a
115 changed files with 10518 additions and 2024 deletions
@@ -0,0 +1,63 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="783.031" viewBox="0 0 800 783.031" xmlns:xlink="http://www.w3.org/1999/xlink" role="img" artist="Katerina Limpitsouni" source="https://undraw.co/">
<g id="Group_178" data-name="Group 178" transform="translate(-656 -242)">
<g id="Group_177" data-name="Group 177" transform="translate(656 242)">
<path id="Path_2918-215" data-name="Path 2918" d="M914.2,382.533q-.65-3.406-1.369-6.789c-1.077-5.056-2.259-10.1-3.535-15.1-.632-2.528-1.311-5.056-2-7.573v-.012A392.052,392.052,0,0,0,545.043,66.735h-.035q-7.532-.3-15.1-.293c-1.381,0-2.762.012-4.131.035A391.992,391.992,0,0,0,152.944,351.586q-1.089,3.827-2.072,7.678c-1.311,5.045-2.5,10.113-3.617,15.216v.012c-.492,2.282-.96,4.553-1.416,6.835a395.6,395.6,0,0,0-7.444,76.629c0,9.82.363,19.652,1.089,29.3.105,1.381.21,2.762.327,4.132.281,3.453.632,7.046,1.042,10.7a391.609,391.609,0,0,0,756.588,91.084q4.056-11.008,7.421-22.239a385.285,385.285,0,0,0,12.407-55.76q.965-6.531,1.7-13.086c.41-3.652.761-7.245,1.042-10.686.936-10.967,1.416-22.215,1.416-33.44a395.4,395.4,0,0,0-7.221-75.424Z" transform="translate(-121.423 -66.442)" fill="#fff"/>
<path id="Path_2919-216" data-name="Path 2919" d="M506.048,137.05a1.028,1.028,0,1,1,0-2.057h68.076A32.535,32.535,0,0,1,605.6,110.127a45.245,45.245,0,0,1,82.18-9.652c1.012-.079,2-.119,2.958-.119a38.41,38.41,0,0,1,38.2,35.592,1.028,1.028,0,0,1-.954,1.1l-.073,0a1.028,1.028,0,0,1-1.025-.956Z" transform="translate(-5.811 -62.72)" fill="#e6e6e6"/>
<path id="Path_2920-217" data-name="Path 2920" d="M705.856,133.47H537.193a1.028,1.028,0,1,1,0-2.057H705.856a1.028,1.028,0,1,1,0,2.057Z" transform="translate(4.01 -45.954)" fill="#e6e6e6"/>
<rect id="Rectangle_663" data-name="Rectangle 663" width="46.814" height="108.524" transform="translate(88.233 423.738)" fill="#090814"/>
<rect id="Rectangle_664" data-name="Rectangle 664" width="46.814" height="108.524" transform="translate(681.923 423.738)" fill="#090814"/>
<path id="Path_2921-218" data-name="Path 2921" d="M889.646,466.426C834.857,615.354,691.711,721.583,523.764,721.583S212.671,615.354,157.882,466.426Z" transform="translate(-115.278 59.69)" fill="#1ca595"/>
<circle id="Ellipse_470" data-name="Ellipse 470" cx="134.601" cy="134.601" r="134.601" transform="translate(0 62.619)" fill="#e6e6e6"/>
<path id="Path_2922-219" data-name="Path 2922" d="M914.2,382.533q-.65-3.406-1.369-6.789c-1.077-5.056-2.259-10.1-3.535-15.1-.632-2.528-1.311-5.056-2-7.573v-.012A392.052,392.052,0,0,0,545.043,66.735h-.035q-7.532-.3-15.1-.293c-1.381,0-2.762.012-4.131.035A391.992,391.992,0,0,0,152.944,351.586q-1.089,3.827-2.072,7.678c-1.311,5.045-2.5,10.113-3.617,15.216v.012c-.492,2.282-.96,4.553-1.416,6.835a395.6,395.6,0,0,0-7.444,76.629c0,9.82.363,19.652,1.089,29.3.105,1.381.21,2.762.327,4.132.281,3.453.632,7.046,1.042,10.7a391.609,391.609,0,0,0,756.588,91.084q4.056-11.008,7.421-22.239a385.285,385.285,0,0,0,12.407-55.76q.965-6.531,1.7-13.086c.41-3.652.761-7.245,1.042-10.686.936-10.967,1.416-22.215,1.416-33.44a395.4,395.4,0,0,0-7.221-75.424ZM916.507,491.1c-.269,3.406-.62,6.976-1.03,10.581q-.737,6.514-1.673,12.992a386.684,386.684,0,0,1-12.3,55.268q-3.354,11.113-7.362,22C838.252,743.885,691.875,845.96,529.909,845.96S221.567,743.885,165.678,591.949a385.547,385.547,0,0,1-21.337-90.265c-.41-3.6-.761-7.175-1.042-10.593-.117-1.358-.222-2.715-.327-4.085-.7-9.562-1.065-19.324-1.065-29.05a387.49,387.49,0,0,1,8.4-80.5c.492-2.353,1.018-4.693,1.545-7.034v-.012q1.861-7.936,4.015-15.754c.2-.726.4-1.451.609-2.165q.28-1.036.6-2.072c.351-1.264.726-2.516,1.1-3.757C205.754,188.028,352.317,71.779,525.8,69.977c1.369-.012,2.739-.023,4.108-.023q7.515,0,14.982.281c169.27,6.461,311.117,121.89,357.221,277.981q1.159,3.933,2.247,7.912c1.4,5.15,2.7,10.358,3.9,15.59q.79,3.476,1.51,6.987a387.08,387.08,0,0,1,8.146,79.251C917.912,469.076,917.444,480.23,916.507,491.1Z" transform="translate(-121.423 -66.442)" fill="#090814"/>
<rect id="Rectangle_665" data-name="Rectangle 665" width="36.175" height="68.093" transform="translate(93.554 360.965)" fill="#090814"/>
<rect id="Rectangle_666" data-name="Rectangle 666" width="8.512" height="153.21" transform="translate(98.874 214.138)" fill="#090814"/>
<rect id="Rectangle_667" data-name="Rectangle 667" width="8.512" height="153.21" transform="translate(115.897 214.138)" fill="#090814"/>
<rect id="Rectangle_668" data-name="Rectangle 668" width="19.151" height="10.64" transform="translate(103.131 220.522)" fill="#090814"/>
<rect id="Rectangle_669" data-name="Rectangle 669" width="19.151" height="10.64" transform="translate(103.131 263.08)" fill="#090814"/>
<rect id="Rectangle_670" data-name="Rectangle 670" width="19.151" height="10.64" transform="translate(103.131 309.894)" fill="#090814"/>
<rect id="Rectangle_671" data-name="Rectangle 671" width="4.256" height="10.64" transform="translate(101.001 207.754)" fill="#090814"/>
<rect id="Rectangle_672" data-name="Rectangle 672" width="4.256" height="10.64" transform="translate(118.026 207.754)" fill="#090814"/>
<rect id="Rectangle_673" data-name="Rectangle 673" width="36.175" height="68.093" transform="translate(687.243 360.965)" fill="#090814"/>
<rect id="Rectangle_674" data-name="Rectangle 674" width="8.512" height="153.21" transform="translate(692.564 214.138)" fill="#090814"/>
<rect id="Rectangle_675" data-name="Rectangle 675" width="8.512" height="153.21" transform="translate(709.586 214.138)" fill="#090814"/>
<rect id="Rectangle_676" data-name="Rectangle 676" width="19.151" height="10.64" transform="translate(696.818 220.522)" fill="#090814"/>
<rect id="Rectangle_677" data-name="Rectangle 677" width="19.151" height="10.64" transform="translate(696.818 263.08)" fill="#090814"/>
<rect id="Rectangle_678" data-name="Rectangle 678" width="19.151" height="10.64" transform="translate(696.818 309.894)" fill="#090814"/>
<rect id="Rectangle_679" data-name="Rectangle 679" width="4.256" height="10.64" transform="translate(694.691 207.754)" fill="#090814"/>
<rect id="Rectangle_680" data-name="Rectangle 680" width="4.256" height="10.64" transform="translate(711.713 207.754)" fill="#090814"/>
<path id="Path_2923-220" data-name="Path 2923" d="M917.505,389.4q-.439,5.355-1.041,10.639H141.839q-.6-5.285-1.041-10.639Z" transform="translate(-120.666 35.401)" fill="#090814"/>
<path id="Path_2924-221" data-name="Path 2924" d="M515.482,424.693c-102.026,0-207.255-66.265-312.844-197.029l3.311-2.675C312.155,356.519,417.736,422.315,519.7,420.4c99.111-1.811,197.892-67.535,293.6-195.348l3.407,2.552C720.175,356.521,620.274,422.818,519.782,424.655Q517.633,424.694,515.482,424.693Z" transform="translate(-101.165 -16.445)" fill="#090814"/>
<path id="Path_2925-222" data-name="Path 2925" d="M511.075,410.395c-96.371,0-195.758-61.448-295.485-182.712l3.287-2.7C319.169,346.93,418.815,407.834,515.151,406.1c93.523-1.716,186.738-62.634,277.056-181.061l3.384,2.581C704.445,347.134,610.117,408.616,515.229,410.357,513.846,410.382,512.459,410.395,511.075,410.395Z" transform="translate(-97.081 -16.448)" fill="#090814"/>
<path id="Path_2926-223" data-name="Path 2926" d="M752.237,332.535c-1.475-1.264-2.961-2.54-4.436-3.827q-47.772-41.592-95.789-101.045l3.312-2.669q45.594,56.48,90.967,96.726,2.282,2.037,4.577,4.026Q751.587,329.135,752.237,332.535Z" transform="translate(40.542 -16.444)" fill="#090814"/>
<path id="Path_2927-224" data-name="Path 2927" d="M743.25,310.653q-2.476-2.212-4.939-4.518a785.148,785.148,0,0,1-73.352-78.455l3.289-2.7a793.373,793.373,0,0,0,67.816,73.247c1.732,1.65,3.453,3.265,5.185,4.846v.012C741.939,305.6,742.618,308.125,743.25,310.653Z" transform="translate(44.625 -16.449)" fill="#090814"/>
<rect id="Rectangle_681" data-name="Rectangle 681" width="4.256" height="184.538" transform="translate(146.992 243.456)" fill="#090814"/>
<rect id="Rectangle_682" data-name="Rectangle 682" width="4.256" height="144.025" transform="translate(186.583 283.969)" fill="#090814"/>
<rect id="Rectangle_683" data-name="Rectangle 683" width="4.256" height="100.05" transform="translate(240.515 329.008)" fill="#090814"/>
<rect id="Rectangle_684" data-name="Rectangle 684" width="4.256" height="67.029" transform="translate(292.142 360.965)" fill="#090814"/>
<rect id="Rectangle_685" data-name="Rectangle 685" width="4.256" height="51.089" transform="translate(334.981 379.033)" fill="#090814"/>
<rect id="Rectangle_686" data-name="Rectangle 686" width="4.256" height="184.538" transform="translate(736.898 243.456)" fill="#090814"/>
<rect id="Rectangle_687" data-name="Rectangle 687" width="4.256" height="144.025" transform="translate(776.489 283.969)" fill="#090814"/>
<path id="Path_2928-225" data-name="Path 2928" d="M242.886,227.663q-22.191,27.476-44.348,51.172-2.142,2.265-4.249,4.506-17.7,18.592-35.336,34.762-2.141,1.966-4.26,3.874c-2.06,1.849-4.109,3.675-6.168,5.478-.48.421-.948.843-1.428,1.252-1.006.878-2.025,1.756-3.043,2.622.457-2.282.925-4.553,1.416-6.835v-.012c1.054-.9,2.1-1.826,3.137-2.762.491-.433.972-.866,1.463-1.3v-.012q2.317-2.054,4.623-4.167,2.141-1.931,4.26-3.921,17.645-16.345,35.336-35.2c1.416-1.51,2.832-3.02,4.249-4.553q20.506-22.139,41.036-47.579Z" transform="translate(-119.639 -16.444)" fill="#090814"/>
<path id="Path_2929-226" data-name="Path 2929" d="M224.65,227.68Q210.762,244.57,196.9,259.9c-1.276,1.4-2.54,2.8-3.815,4.178q-17.856,19.47-35.687,36.342-1.967,1.861-3.909,3.675c-.2.2-.41.386-.609.562-.527.5-1.053.983-1.58,1.475-1.136,1.065-2.271,2.107-3.418,3.137q.983-3.845,2.072-7.678,1.808-1.65,3.593-3.371c.55-.515,1.089-1.03,1.639-1.557q18.4-17.469,36.834-37.735,14.66-16.117,29.343-33.955Z" transform="translate(-118.432 -16.449)" fill="#090814"/>
<rect id="Rectangle_688" data-name="Rectangle 688" width="4.256" height="184.538" transform="translate(74.648 243.456)" fill="#090814"/>
<rect id="Rectangle_689" data-name="Rectangle 689" width="4.256" height="144.025" transform="translate(35.057 283.969)" fill="#090814"/>
<rect id="Rectangle_690" data-name="Rectangle 690" width="4.256" height="188.793" transform="translate(672.109 239.2)" fill="#090814"/>
<rect id="Rectangle_691" data-name="Rectangle 691" width="4.256" height="144.025" transform="translate(632.515 283.969)" fill="#090814"/>
<rect id="Rectangle_692" data-name="Rectangle 692" width="4.256" height="100.05" transform="translate(578.586 329.008)" fill="#090814"/>
<rect id="Rectangle_693" data-name="Rectangle 693" width="4.256" height="67.029" transform="translate(526.959 360.965)" fill="#090814"/>
<rect id="Rectangle_694" data-name="Rectangle 694" width="4.256" height="51.089" transform="translate(484.118 379.033)" fill="#090814"/>
<rect id="Rectangle_695" data-name="Rectangle 695" width="4.256" height="38.53" transform="translate(401.616 391.592)" fill="#090814"/>
<path id="Path_2930-227" data-name="Path 2930" d="M438.4,547.825H340.018a5.725,5.725,0,1,1,0-11.449H438.4a5.725,5.725,0,0,1,0,11.449Z" transform="translate(-59.648 81.748)" fill="#fff"/>
<path id="Path_2931-228" data-name="Path 2931" d="M558.407,521.032H460.025a5.725,5.725,0,1,1,0-11.449h98.381a5.724,5.724,0,1,1,0,11.449Z" transform="translate(-21.805 73.299)" fill="#fff"/>
<path id="Path_2932-229" data-name="Path 2932" d="M509.8,585.3H411.415a5.725,5.725,0,0,1,0-11.449H509.8a5.725,5.725,0,0,1,0,11.449Z" transform="translate(-37.134 93.564)" fill="#fff"/>
<path id="Path_2933-230" data-name="Path 2933" d="M362.048,212.05a1.028,1.028,0,1,1,0-2.057h68.076A32.535,32.535,0,0,1,461.6,185.127a45.245,45.245,0,0,1,82.18-9.652c1.012-.079,2-.119,2.958-.119a38.41,38.41,0,0,1,38.2,35.592,1.028,1.028,0,0,1-.954,1.1l-.073,0a1.028,1.028,0,0,1-1.025-.956Z" transform="translate(-51.22 -39.069)" fill="#e6e6e6"/>
<path id="Path_2934-231" data-name="Path 2934" d="M438.029,219.807H381.465a1.028,1.028,0,1,1,0-2.057h56.564a1.028,1.028,0,1,1,0,2.057Z" transform="translate(-45.097 -18.728)" fill="#e6e6e6"/>
<path id="Path_2935-232" data-name="Path 2935" d="M451.665,113.7l8.553-6.841c-6.644-.733-9.374,2.891-10.492,5.759-5.191-2.155-10.842.669-10.842.669L456,119.5A12.949,12.949,0,0,0,451.665,113.7Z" transform="translate(-26.666 -53.727)" fill="#090814"/>
<path id="Path_2936-233" data-name="Path 2936" d="M474.8,248.956l8.553-6.841c-6.644-.733-9.374,2.891-10.492,5.759-5.191-2.155-10.842.669-10.842.669l17.113,6.213a12.949,12.949,0,0,0-4.332-5.8Z" transform="translate(-19.371 -11.075)" fill="#090814"/>
<path id="Path_2937-234" data-name="Path 2937" d="M626.963,198.235l8.553-6.841c-6.644-.733-9.374,2.891-10.492,5.759-5.191-2.155-10.842.669-10.842.669l17.113,6.213A12.95,12.95,0,0,0,626.963,198.235Z" transform="translate(28.613 -27.069)" fill="#090814"/>
<rect id="Rectangle_696" data-name="Rectangle 696" width="83.102" height="14.045" transform="translate(67.887 512.07)" fill="#090814"/>
<rect id="Rectangle_697" data-name="Rectangle 697" width="83.102" height="14.045" transform="translate(663.644 512.07)" fill="#090814"/>
<rect id="Rectangle_698" data-name="Rectangle 698" width="778.085" height="3.511" transform="translate(19.376 414.524)" fill="#090814"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32mm" height="32mm" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:serif="http://www.serif.com/" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="d" x2="1" gradientTransform="matrix(388.04 -111.5 84.017 279.39 391.79 1018.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#3bb549" offset="0"/><stop stop-color="#f5ee30" offset="1"/></linearGradient><linearGradient id="c" x2=".95791" y2=".0001803" gradientTransform="matrix(122.94 -266.68 378.61 181.95 228.98 392.44)" gradientUnits="userSpaceOnUse"><stop stop-color="#f5ee30" offset="0"/><stop stop-color="#3bb549" offset="1"/></linearGradient><linearGradient id="b" x2="1" gradientTransform="matrix(208.13 0 0 420.73 148.9 534.09)" gradientUnits="userSpaceOnUse"><stop stop-color="#f1592a" offset="0"/><stop stop-color="#f5e732" offset="1"/></linearGradient><linearGradient id="a" x2="1" gradientTransform="matrix(401.83 285.46 -279.32 410.66 391.79 578.6)" gradientUnits="userSpaceOnUse"><stop stop-color="#f5e732" offset="0"/><stop stop-color="#f1592a" offset="1"/></linearGradient></defs><g transform="translate(-1082.3 -67.993)"><g transform="matrix(.02877 0 0 .027964 1085.1 67.175)" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" stroke-width="8.4072" serif:id="Logo IfcOpenShell"><path d="m744.02 832.33c18.051 11.403 55.982 31.518 63.628 94.935l-0.12525 23.628c-8.342 104.33-183.41 185.58-415.74 186.93v-215.59c141.61-0.7966 269.74-30.595 352.23-89.901z" fill="url(#d)" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" stroke-width="8.1335"/><path d="m181.03 442.16c-12.017-10.232-30.084-43.15-32.067-93.421l-0.0617-16.621c1.4066-109.27 91.01-193.98 208.13-195.34v214.31c-47.868 0.55282-122.9 15.206-176 91.069z" fill="url(#c)" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" stroke-width="8.3203"/><path d="m148.9 334.48c1.4117 109.69 91.548 194.06 208.13 195.34v214.63c-116.74-1.3026-206.72-85.776-208.13-195.34z" fill="url(#b)" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" stroke-width="8.3203"/><path d="m391.79 744.46v-214.64c235.46 1.3846 413.03 88.962 415.86 200.34v214.64c-2.8649-112.42-183.57-199-415.86-200.34z" fill="url(#a)" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" stroke-width="8.3164"/><rect transform="matrix(4.3448 0 0 4.47 -94.827 29.251)" x="-8.2421e-7" y="-1.0518e-16" width="256" height="256" fill="none"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+181
View File
@@ -0,0 +1,181 @@
import ifcopenshell
import ifcopenshell.util
import ifcopenshell.util.pset
import ifcopenshell.util.schema
import xml.etree.ElementTree as ET
from xmlschema.validators.exceptions import XMLSchemaValidationError
from ifctester.ids import Ids, IdsXmlValidationError, get_schema
# https://github.com/buildingSMART/IDS/blob/9914d568c7ac037acd97e58a0d16e9f93c3e3416/Schema/ids.xsd#L232
ifc_schemas = ["IFC2X3", "IFC4", "IFC4X3_ADD2"]
def get_predefined_types_for_entity(schema_name, entity_name):
"""Get a list of predefined types for a given entity."""
schema = ifcopenshell.schema_by_name(schema_name)
try:
entity = schema.declaration_by_name(entity_name)
except:
return []
if not entity or not entity.as_entity():
print(f"Entity {entity_name} not found")
return []
entity = entity.as_entity()
predefined_type_attr = None
# Check all attributes for "PredefinedType"
for attr in entity.all_attributes():
if attr.name() == "PredefinedType":
predefined_type_attr = attr
break
if not predefined_type_attr:
return []
param_type = predefined_type_attr.type_of_attribute()
if param_type.as_named_type():
enum_decl = param_type.as_named_type().declared_type()
if enum_decl.as_enumeration_type():
return enum_decl.as_enumeration_type().enumeration_items()
return []
def get_all_entity_classes(schema_name):
"""Get all IFC entity classes in the given schema."""
schema = ifcopenshell.schema_by_name(schema_name)
entities = []
for entity in schema.entities():
entities.append(entity.name())
# Sort alphabetically
entities.sort()
return entities
def get_all_data_types(schema_name):
"""Get all data types in the given schema."""
schema = ifcopenshell.schema_by_name(schema_name)
return {d.name(): ifcopenshell.util.attribute.get_primitive_type(d) for d in schema.declarations() if d.as_type_declaration()}
def get_entity_attributes(schema_name, entity_name):
"""Get all attributes for a given entity."""
schema = ifcopenshell.schema_by_name(schema_name)
try:
entity = schema.declaration_by_name(entity_name)
except:
return []
if not entity or not entity.as_entity():
print(f"Entity {entity_name} not found")
return []
entity = entity.as_entity()
attributes = []
for attr in entity.all_attributes():
attributes.append({
"name": attr.name(),
# "type": attr.type_of_attribute() # TODO Types of attribute
})
return attributes
def get_applicable_psets(schema_name, entity_name, predefined_type = ""):
"""Get all applicable property and quantity sets for a given entity."""
pset_qto = ifcopenshell.util.pset.PsetQto(schema_name)
pset_names = pset_qto.get_applicable_names(entity_name, predefined_type)
return pset_names
def get_all_psets(schema_name):
"""Get all property sets and quantity sets defined in an IFC schema"""
pset_qto = ifcopenshell.util.pset.PsetQto(schema_name)
result = {}
for template_file in pset_qto.templates:
for pset_template in template_file.by_type("IfcPropertySetTemplate"):
pset_name = pset_template.Name
properties = []
# Get property templates for this pset
if pset_template.HasPropertyTemplates:
for prop_template in pset_template.HasPropertyTemplates:
prop_info = {
"name": prop_template.Name,
# "description": prop_template.Description
}
# Extract type information
if prop_template.is_a("IfcSimplePropertyTemplate"):
if prop_template.PrimaryMeasureType:
prop_info["type"] = prop_template.PrimaryMeasureType
else:
prop_info["type"] = str(prop_template.TemplateType)
elif prop_template.is_a("IfcComplexPropertyTemplate"):
prop_info["type"] = None # Complex properties are not supported
else:
prop_info["type"] = None
properties.append(prop_info)
result[pset_name] = properties
return result
def get_material_categories():
return ['concrete', 'steel', 'aluminium', 'block', 'brick', 'stone', 'wood', 'glass', 'gypsum', 'plastic', 'earth']
def get_standard_classification_systems():
return {
'BB/SfB (3/4 cijfers)': {'source': 'Regie der Gebouwen', 'tokens': ['.']},
'BIMTypeCode': {'source': 'BIMStockholm', 'tokens': None},
'Common Arrangement of Work Sections (CAWS)': {'source': 'NBS', 'tokens': ['/']},
'CBI Classification - Level 2': {'source': 'Masterspec', 'tokens': None},
'CBI Classification - Level 4': {'source': 'Masterspec', 'tokens': None},
'Rumsfunktionskoder CC001 - 001': {'source': 'BIMAlliance', 'tokens': ['-']},
'CCS': {'source': 'Molio', 'tokens': None},
'CCTB': {'source': 'CCT-Bâtiments', 'tokens': ['.']},
'Funktionskoder Regionservice CD001 - 001': {'source': 'BIMAlliance', 'tokens': None},
'Rumsfunktion Blekinge CD002 - 001': {'source': 'BIMAlliance', 'tokens': None},
'EcoQuaestor Codetabel': {'source': 'EcoQuaestor', 'tokens': ['.', '-']},
'GuBIMclass CA': {'source': 'GuBIMClass', 'tokens': ['.']},
'GuBIMclass ES': {'source': 'GuBIMClass', 'tokens': ['.']},
'MasterFormat': {'source': 'CSI', 'tokens': [' ', '.']},
'NATSPEC Worksections': {'source': 'NATSPEC', 'tokens': None},
'NBS Create': {'source': 'NBS', 'tokens': ['_', '/']},
'NL/SfB (4 cijfers)': {'source': 'BIMLoket', 'tokens': ['.']},
'NS 3451 - Bygningsdelstabell': {'source': 'Standard Norge', 'tokens': None},
'OmniClass': {'source': 'OmniClass', 'tokens': ['-', ' ']},
'ÖNORM 6241-2': {'source': 'freeBIM 2', 'tokens': None},
'RICS NRM1': {'source': 'RICS', 'tokens': ['.']},
'RICS NRM3': {'source': 'RICS', 'tokens': ['.']},
'SFG20': {'source': 'SFG20', 'tokens': ['-']},
'SINAPI': {'source': 'Caixa', 'tokens': ['/']},
'STABU-Element': {'source': 'STABU', 'tokens': ['.']},
'TALO 2000 Building Component Classification': {'source': 'Rakennustieto', 'tokens': ['.']},
'TALO 2000 Hankenimikkeistö': {'source': 'Rakennustieto', 'tokens': ['.']},
'Uniclass': {'source': 'RIBA Enterprises Ltd', 'tokens': ['_']},
'Uniclass 2015': {'source': 'RIBA Enterprises Ltd', 'tokens': ['_']},
'UniFormat': {'source': 'UniFormat', 'tokens': ['.']},
'Uniformat': {'source': 'UniFormat', 'tokens': ['.']},
'VMSW': {'source': 'VMSW', 'tokens': ['.']}
}
def ids_from_xml_string(xml: str, validate: bool = False) -> Ids:
try:
decode = get_schema().decode(
xml, strip_namespaces=True, namespaces={
"": "http://standards.buildingsmart.org/IDS"
}
)
except XMLSchemaValidationError as e:
raise IdsXmlValidationError(e, "Provided XML appears to be invalid. See details above.")
return Ids().parse(decode)