use crate::generated::IfcType;
#[derive(Debug, Clone, Copy)]
pub struct LegacyEntityInfo {
pub base_type: IfcType,
pub has_geometry: bool,
}
pub fn get_legacy_entity_info(entity_name: &str) -> Option<LegacyEntityInfo> {
match entity_name {
"IFCPRESENTATIONSTYLEASSIGNMENT" => Some(LegacyEntityInfo {
base_type: IfcType::IfcPresentationStyle,
has_geometry: false,
}),
"IFCBEAMSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcBeam,
has_geometry: true,
}),
"IFCCOLUMNSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcColumn,
has_geometry: true,
}),
"IFCMEMBERSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcMember,
has_geometry: true,
}),
"IFCPLATESTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcPlate,
has_geometry: true,
}),
"IFCSLABSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcSlab,
has_geometry: true,
}),
"IFCDOORSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcDoor,
has_geometry: true,
}),
"IFCWINDOWSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcWindow,
has_geometry: true,
}),
"IFCOPENINGSTANDARDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcOpeningElement,
has_geometry: true,
}),
"IFCSLABELEMENTEDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcSlab,
has_geometry: true,
}),
"IFCWALLELEMENTEDCASE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcWall,
has_geometry: true,
}),
"IFCDOORSTYLE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcDoorType,
has_geometry: false,
}),
"IFCWINDOWSTYLE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcWindowType,
has_geometry: false,
}),
"IFCPROXY" => Some(LegacyEntityInfo {
base_type: IfcType::IfcBuildingElementProxy,
has_geometry: true,
}),
"IFCBUILDINGELEMENT" => Some(LegacyEntityInfo {
base_type: IfcType::IfcBuiltElement,
has_geometry: true,
}),
"IFCBUILDINGELEMENTTYPE" => Some(LegacyEntityInfo {
base_type: IfcType::IfcBuiltElementType,
has_geometry: false,
}),
_ => None,
}
}
pub fn is_legacy_entity(entity_name: &str) -> bool {
get_legacy_entity_info(entity_name).is_some()
}
pub fn map_legacy_to_base_type(entity_name: &str) -> Option<IfcType> {
get_legacy_entity_info(entity_name).map(|info| info.base_type)
}