Sample Code Revit Batch Processor 1.1.14 documentation

Contents:

This Page

duHast.Revit.Family.Utility package

Submodules

duHast.Revit.Family.Utility.family_swap_instances_by_type_utils module

Helper functions to read swap instances by type directives file(s) and return them as a tuple to the caller

These helper function expect a text file in csv format with 5 columns:

  • SOURCE_FAMILY_NAME = 0

  • SOURCE_FAMILY_CATEGORY_NAME = 1

  • SOURCE_FAMILY_TYPE_NAME = 2

  • TARGET_FAMILY_NAME = 3

  • TARGET_FAMILY_TYPE = 4

Note:

  • First row is treated as a header row and its content is ignored.

duHast.Revit.Family.Utility.family_swap_instances_by_type_utils.get_swap_directives(directory_path)

Retrieves file swap directives from a given folder location.

Parameters:

directory_path (str) – Fully qualified folder path to folder containing directives.

Returns:

Result class instance.

  • result.status. True if rename directives where found and loaded successfully, otherwise False.

  • result.message will contain number of directives found in format:’Found rename directives: ‘ + number

  • result.result list of directives

On exception:

  • result.status (bool) will be False.

  • result.message will contain an exception message.

  • result.result will be empty

Return type:

Result

duHast.Revit.Family.Utility.loadable_family_categories module

This module contains a number of lists containing loadable family categories.

duHast.Revit.Family.Utility.loadable_family_categories.CATEGORIES_LOADABLE_3D = [Autodesk.Revit.DB.BuiltInCategory.OST_Casework, Autodesk.Revit.DB.BuiltInCategory.OST_Columns, Autodesk.Revit.DB.BuiltInCategory.OST_CommunicationDevices, Autodesk.Revit.DB.BuiltInCategory.OST_DataDevices, Autodesk.Revit.DB.BuiltInCategory.OST_Doors, Autodesk.Revit.DB.BuiltInCategory.OST_ElectricalEquipment, Autodesk.Revit.DB.BuiltInCategory.OST_ElectricalFixtures, Autodesk.Revit.DB.BuiltInCategory.OST_Entourage, Autodesk.Revit.DB.BuiltInCategory.OST_FireAlarmDevices, Autodesk.Revit.DB.BuiltInCategory.OST_Furniture, Autodesk.Revit.DB.BuiltInCategory.OST_FurnitureSystems, Autodesk.Revit.DB.BuiltInCategory.OST_GenericModel, Autodesk.Revit.DB.BuiltInCategory.OST_LightingFixtures, Autodesk.Revit.DB.BuiltInCategory.OST_LightingDevices, Autodesk.Revit.DB.BuiltInCategory.OST_MechanicalEquipment, Autodesk.Revit.DB.BuiltInCategory.OST_NurseCallDevices, Autodesk.Revit.DB.BuiltInCategory.OST_Parking, Autodesk.Revit.DB.BuiltInCategory.OST_Planting, Autodesk.Revit.DB.BuiltInCategory.OST_PlumbingFixtures, Autodesk.Revit.DB.BuiltInCategory.OST_SecurityDevices, Autodesk.Revit.DB.BuiltInCategory.OST_Site, Autodesk.Revit.DB.BuiltInCategory.OST_SpecialityEquipment, Autodesk.Revit.DB.BuiltInCategory.OST_Sprinklers, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralColumns, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralFoundation, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralFraming, Autodesk.Revit.DB.BuiltInCategory.OST_TitleBlocks, Autodesk.Revit.DB.BuiltInCategory.OST_TelephoneDevices, Autodesk.Revit.DB.BuiltInCategory.OST_Windows]

This list contains 3D element categories and is used in obsolete revit family purge function any revit category commented out with note ‘purged else where’ can be found in list ‘catsLoadableThreeDOther’

duHast.Revit.Family.Utility.loadable_family_categories.CATEGORIES_LOADABLE_3D_OTHER = [Autodesk.Revit.DB.BuiltInCategory.OST_CableTrayFitting, Autodesk.Revit.DB.BuiltInCategory.OST_ConduitFitting, Autodesk.Revit.DB.BuiltInCategory.OST_CurtainWallPanels, Autodesk.Revit.DB.BuiltInCategory.OST_DetailComponents, Autodesk.Revit.DB.BuiltInCategory.OST_DuctAccessory, Autodesk.Revit.DB.BuiltInCategory.OST_DuctTerminal, Autodesk.Revit.DB.BuiltInCategory.OST_DuctFitting, Autodesk.Revit.DB.BuiltInCategory.OST_PipeAccessory, Autodesk.Revit.DB.BuiltInCategory.OST_PipeFitting, Autodesk.Revit.DB.BuiltInCategory.OST_ProfileFamilies, Autodesk.Revit.DB.BuiltInCategory.OST_StairsRailingBaluster]

Contains 3D family categories which needed specific purge code, rather then checking for unplaced family instances. i.e. built in revit type settings

duHast.Revit.Family.Utility.loadable_family_categories.CATEGORIES_LOADABLE_TAGS = [Autodesk.Revit.DB.BuiltInCategory.OST_CurtainWallPanelTags, Autodesk.Revit.DB.BuiltInCategory.OST_AreaTags, Autodesk.Revit.DB.BuiltInCategory.OST_CaseworkTags, Autodesk.Revit.DB.BuiltInCategory.OST_CeilingTags, Autodesk.Revit.DB.BuiltInCategory.OST_DataDeviceTags, Autodesk.Revit.DB.BuiltInCategory.OST_DetailComponentTags, Autodesk.Revit.DB.BuiltInCategory.OST_DoorTags, Autodesk.Revit.DB.BuiltInCategory.OST_DuctAccessoryTags, Autodesk.Revit.DB.BuiltInCategory.OST_DuctFittingTags, Autodesk.Revit.DB.BuiltInCategory.OST_DuctInsulationsTags, Autodesk.Revit.DB.BuiltInCategory.OST_DuctLiningsTags, Autodesk.Revit.DB.BuiltInCategory.OST_DuctTags, Autodesk.Revit.DB.BuiltInCategory.OST_DuctTerminalTags, Autodesk.Revit.DB.BuiltInCategory.OST_ElectricalCircuitTags, Autodesk.Revit.DB.BuiltInCategory.OST_ElectricalEquipmentTags, Autodesk.Revit.DB.BuiltInCategory.OST_ElectricalFixtureTags, Autodesk.Revit.DB.BuiltInCategory.OST_FabricAreaTags, Autodesk.Revit.DB.BuiltInCategory.OST_FabricReinforcementTags, Autodesk.Revit.DB.BuiltInCategory.OST_FireAlarmDeviceTags, Autodesk.Revit.DB.BuiltInCategory.OST_FlexDuctTags, Autodesk.Revit.DB.BuiltInCategory.OST_FlexPipeTags, Autodesk.Revit.DB.BuiltInCategory.OST_FloorTags, Autodesk.Revit.DB.BuiltInCategory.OST_FoundationSlabAnalyticalTags, Autodesk.Revit.DB.BuiltInCategory.OST_FurnitureTags, Autodesk.Revit.DB.BuiltInCategory.OST_FurnitureSystemTags, Autodesk.Revit.DB.BuiltInCategory.OST_GenericModelTags, Autodesk.Revit.DB.BuiltInCategory.OST_InternalAreaLoadTags, Autodesk.Revit.DB.BuiltInCategory.OST_InternalLineLoadTags, Autodesk.Revit.DB.BuiltInCategory.OST_InternalPointLoadTags, Autodesk.Revit.DB.BuiltInCategory.OST_IsolatedFoundationAnalyticalTags, Autodesk.Revit.DB.BuiltInCategory.OST_KeynoteTags, Autodesk.Revit.DB.BuiltInCategory.OST_LightingDeviceTags, Autodesk.Revit.DB.BuiltInCategory.OST_LightingFixtureTags, Autodesk.Revit.DB.BuiltInCategory.OST_LineLoadTags, Autodesk.Revit.DB.BuiltInCategory.OST_LinkAnalyticalTags, Autodesk.Revit.DB.BuiltInCategory.OST_MassTags, Autodesk.Revit.DB.BuiltInCategory.OST_MaterialTags, Autodesk.Revit.DB.BuiltInCategory.OST_MechanicalEquipmentTags, Autodesk.Revit.DB.BuiltInCategory.OST_MEPSpaceTags, Autodesk.Revit.DB.BuiltInCategory.OST_MultiCategoryTags, Autodesk.Revit.DB.BuiltInCategory.OST_NodeAnalyticalTags, Autodesk.Revit.DB.BuiltInCategory.OST_NurseCallDeviceTags, Autodesk.Revit.DB.BuiltInCategory.OST_ParkingTags, Autodesk.Revit.DB.BuiltInCategory.OST_PartTags, Autodesk.Revit.DB.BuiltInCategory.OST_PathReinTags, Autodesk.Revit.DB.BuiltInCategory.OST_PipeAccessoryTags, Autodesk.Revit.DB.BuiltInCategory.OST_PipeFittingTags, Autodesk.Revit.DB.BuiltInCategory.OST_PipeInsulationsTags, Autodesk.Revit.DB.BuiltInCategory.OST_PipeTags, Autodesk.Revit.DB.BuiltInCategory.OST_PlantingTags, Autodesk.Revit.DB.BuiltInCategory.OST_PlumbingFixtureTags, Autodesk.Revit.DB.BuiltInCategory.OST_RailingSystemTags, Autodesk.Revit.DB.BuiltInCategory.OST_RebarTags, Autodesk.Revit.DB.BuiltInCategory.OST_RevisionCloudTags, Autodesk.Revit.DB.BuiltInCategory.OST_RoofTags, Autodesk.Revit.DB.BuiltInCategory.OST_RoomTags, Autodesk.Revit.DB.BuiltInCategory.OST_SecurityDeviceTags, Autodesk.Revit.DB.BuiltInCategory.OST_SitePropertyLineSegmentTags, Autodesk.Revit.DB.BuiltInCategory.OST_SitePropertyTags, Autodesk.Revit.DB.BuiltInCategory.OST_SpecialityEquipmentTags, Autodesk.Revit.DB.BuiltInCategory.OST_SprinklerTags, Autodesk.Revit.DB.BuiltInCategory.OST_StairsLandingTags, Autodesk.Revit.DB.BuiltInCategory.OST_StairsRailingTags, Autodesk.Revit.DB.BuiltInCategory.OST_StairsRunTags, Autodesk.Revit.DB.BuiltInCategory.OST_StairsSupportTags, Autodesk.Revit.DB.BuiltInCategory.OST_StairsTags, Autodesk.Revit.DB.BuiltInCategory.OST_StairsTriserTags, Autodesk.Revit.DB.BuiltInCategory.OST_StructConnectionTags, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralColumnTags, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralFoundationTags, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralFramingTags, Autodesk.Revit.DB.BuiltInCategory.OST_StructuralStiffenerTags, Autodesk.Revit.DB.BuiltInCategory.OST_TelephoneDeviceTags, Autodesk.Revit.DB.BuiltInCategory.OST_TrussTags, Autodesk.Revit.DB.BuiltInCategory.OST_WallTags, Autodesk.Revit.DB.BuiltInCategory.OST_WindowTags]

This list contains 2D element categories and is used in obsolete revit family purge function.any revit category commented out with note ‘purged else where’ can be found in list ‘catsLoadableTagsOther’

duHast.Revit.Family.Utility.loadable_family_categories.CATEGORIES_LOADABLE_TAGS_OTHER = [Autodesk.Revit.DB.BuiltInCategory.OST_CalloutHeads, Autodesk.Revit.DB.BuiltInCategory.OST_ElevationMarks, Autodesk.Revit.DB.BuiltInCategory.OST_GenericAnnotation, Autodesk.Revit.DB.BuiltInCategory.OST_GridHeads, Autodesk.Revit.DB.BuiltInCategory.OST_LevelHeads, Autodesk.Revit.DB.BuiltInCategory.OST_ReferenceViewerSymbol, Autodesk.Revit.DB.BuiltInCategory.OST_SectionHeads, Autodesk.Revit.DB.BuiltInCategory.OST_SpotElevSymbols, Autodesk.Revit.DB.BuiltInCategory.OST_ViewportLabel]

Contains 2D family categories which needed specific purge code, rather then checking for unplaced family instances i.e. built in revit type settings

duHast.Revit.Family.Utility.xml_create_atom_exports module

Module containing functions relating to family type xml file creation.

Reports:

  • all family located in library folder(s)

duHast.Revit.Family.Utility.xml_create_atom_exports.get_families_from_directory(directory)

Get all family files from a directory. (ignores subdirectories)

Parameters:

directory (str) – directory to search for family files

Returns:

list of family files

Return type:

[FileItem]

duHast.Revit.Family.Utility.xml_create_atom_exports.get_xml_files_from_directory(directory)

Get all xml files from a directory. (ignores subdirectories)

Parameters:

directory (str) – directory to search for xml files

Returns:

list of xml files

Return type:

[FileItem]

duHast.Revit.Family.Utility.xml_create_atom_exports.check_file_item_exists(instances, name_to_check)

Check if a file item exists in a list of file items based on the name property.

Parameters:
  • instances ([FileItem]) – list of file items

  • name_to_check (str) – name to check

Returns:

True if a file item with the name exists, False otherwise

Return type:

bool

duHast.Revit.Family.Utility.xml_create_atom_exports.get_families_requiring_update(family_files, xml_files)

Check if any family files require an xml file update

Parameters:
  • family_files ([FileItem]) – the family files to check

  • xml_files ([FileItem]) – the xml files to check against

Returns:

a list of family files that require updating

Return type:

list

duHast.Revit.Family.Utility.xml_create_atom_exports.write_data_to_xml_file(application, family_path, xml_path)

Write the family type data to an XML file.

Parameters:
  • application (Autodesk.Revit.ApplicationServices.Application) – The Revit application object.

  • family_path (str) – The path of the family file.

  • xml_path (str) – The path of the XML file.

Returns:

A result object with .status True if successful.

Return type:

Result

duHast.Revit.Family.Utility.xml_create_atom_exports.create_xml_file(revit_application, family_file)

Create an xml file for a given family file.

Parameters:
  • revit_application (Application) – revit application object

  • family_file (str) – family file to create xml file for

duHast.Revit.Family.Utility.xml_create_atom_exports.write_data_to_temp_xml_file_and_read_it_back(an_action_to_write_xml_data)

Write the data to a temp XML file and read it back.

Parameters:

an_action_to_write_xml_data (function returning a Result object) – The action to write the XML data.

Returns:

Result class instance.

  • result.status: True if data was written and read back successfully, False otherwise.

  • result.message will contain the log data.

  • result.result will be a XML document object.

On exception

  • Reload.status (bool) will be False

  • Reload.message will contain the exception message

  • Reload.result will be an empty list.

Return type:

Result

duHast.Revit.Family.Utility.xml_create_atom_exports.write_data_to_xml_file_and_read_it_back(an_action_to_write_xml_data, xml_file_path)

Write the data to an XML file and read it back.

Parameters:
  • an_action_to_write_xml_data (function) – The action to write the XML data.

  • xml_file_path (str) – The path of the XML file.

Returns:

Result class instance.

  • result.status: True if data was written and read back successfully, False otherwise.

  • result.message will contain log data

  • result.result will be a XML document object.

On exception

  • Reload.status (bool) will be False

  • Reload.message will contain the exception message

  • Reload.result will be an empty list.

Return type:

Result

duHast.Revit.Family.Utility.xml_create_atom_exports.create_family_xml_files(revit_application, process_directories, progress_callback=None)

Create xml files for all families in a list of directories using Revit API PartAtomExport function.

Parameters:
  • revit_application (Application) – revit application object

  • process_directories ([str]) – list of directories to process

  • progress_callback (ProgressBase) – progress callback object

Returns:

Result object

Return type:

Result

duHast.Revit.Family.Utility.xml_family_defaults module

Family type xml defaults.

duHast.Revit.Family.Utility.xml_family_type_reader module

A module with helper function to read xml family type data into storage objects.

Separate module for ease of testing and maintainability.

duHast.Revit.Family.Utility.xml_family_type_reader.get_name_space_manager(doc_xml)

Get the XML namespace manager for the XML document. Also adds the required namespaces.

Parameters:

doc_xml (XmlDocument) – The XML document.

Returns:

An XML namespace manager.

Return type:

XmlNamespaceManager

duHast.Revit.Family.Utility.xml_family_type_reader.get_parameter(xml_node, family_name, root_category_path, family_path, family_type_name='unknown family type name', default_value='unknown value')

Get a parameter from the XML node.

Parameters:
  • xml_node (XmlNode) – The XML node.

  • family_name (str) – The name of the family.

  • root_category_path (str) – The root category path.

  • family_path (str) – The path of the family file.

  • family_type_name (str) – The name of the family type.

  • default_value (str) – The default value to use if the parameter value is not set.

Returns:

A family type parameter data storage object.

Return type:

FamilyTypeParameterDataStorage

duHast.Revit.Family.Utility.xml_family_type_reader.get_unique_parameters_from_family_xml(doc_xml, family_name, root_category_path, family_path)

Get all unique parameters from the family type XML document by inspecting every part node representing a family type.

Note: The part atom export will only contain parameters for a family type if they have a value set.

Parameters:

doc_xml (XmlDocument) – The XML document.

Returns:

A list of family type parameter data storage objects.

Return type:

[FamilyTypeParameterDataStorage]

duHast.Revit.Family.Utility.xml_family_type_reader.add_missing_empty_parameters(all_parameters_in_atom_export, parameters_in_type, root_name_path, root_category_path, family_name, family_path, family_type_name)

Add missing empty parameters to the list of parameters for a family type.

Parameters:
  • all_parameters_in_atom_export ([FamilyTypeParameterDataStorage]) – The list of all parameters in the atom export.

  • parameters_in_type ([FamilyTypeParameterDataStorage]) – The list of parameters for the family type.

  • root_name_path (str) – The root name path.

  • root_category_path (str) – The root category path.

  • family_name (str) – The name of the family.

  • family_path (str) – The path of the family file.

  • family_type_name (str) – The name of the family type.

Returns:

The list of parameters for the family type.

Return type:

[FamilyTypeParameterDataStorage]

duHast.Revit.Family.Utility.xml_family_type_reader.read_xml_into_storage(doc_xml, family_name, family_path, root_category_path='None')

Read the XML data into the storage object.

Note all names and values will be encoded to ascii.

Parameters:
  • doc_xml (XmlDocument) – The XML document.

  • family_name (str) – The name of the family.

  • family_path (str) – The path of the family file.

  • root_category_path (str) – The root category path.

Returns:

A family type data storage manager object.

Return type:

FamilyTypeDataStorageManager

duHast.Revit.Family.Utility.xml_remove_obsolete_exports module

duHast.Revit.Family.Utility.xml_remove_obsolete_exports.remove_obsolete_part_atom_exports(process_dirs)

Removes all xml files in the process directories with no associated family files.

Parameters:

process_dirs (list) – List of directories to process.

Returns:

Result object with status and message.

Return type:

Result

Module contents