
#####
Model
#####

.. js:class:: Model

   Object representing the model geometry and its associated data. All major functionality for querying the model hierarchy, retrieving geometry data and loading additional model data are part of this object.
   
   More information can be found `here <https://docs.techsoft3d.com/hoops/visualize-web/latest/prog_guide/viewing/data_model/model-tree.html>`_\ .
   
   
   Index
   =====
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~Model.activateCadConfiguration`
   * :js:meth:`~Model.activateCadView`
   * :js:meth:`~Model.activateDefaultCadConfiguration`
   * :js:meth:`~Model.activateDefaultCadView`
   * :js:meth:`~Model.addPropertyToNode`
   * :js:meth:`~Model.cadConfigurationsEnabled`
   * :js:meth:`~Model.clear`
   * :js:meth:`~Model.clearNodeFaceVisibility`
   * :js:meth:`~Model.clearNodeLineVisibility`
   * :js:meth:`~Model.clearNodePointVisibility`
   * :js:meth:`~Model.computeMinimumBodyBodyDistance`
   * :js:meth:`~Model.computeMinimumFaceFaceDistance`
   * :js:meth:`~Model.computeMinimumFaceLineDistance`
   * :js:meth:`~Model.computeMinimumFaceRayDistance`
   * :js:meth:`~Model.createAndAddRepresentationItem`
   * :js:meth:`~Model.createCadView`
   * :js:meth:`~Model.createImage`
   * :js:meth:`~Model.createMesh`
   * :js:meth:`~Model.createMeshInstance`
   * :js:meth:`~Model.createNode`
   * :js:meth:`~Model.createPart`
   * :js:meth:`~Model.createPmiInstance`
   * :js:meth:`~Model.deleteImages`
   * :js:meth:`~Model.deleteMeshes`
   * :js:meth:`~Model.deleteMeshInstances`
   * :js:meth:`~Model.deleteNode`
   * :js:meth:`~Model.getAbsoluteRootNode`
   * :js:meth:`~Model.getActiveCadConfiguration`
   * :js:meth:`~Model.getAssociatedModelKey`
   * :js:meth:`~Model.getBimIdConnectedElements`
   * :js:meth:`~Model.getBimIdFromNode`
   * :js:meth:`~Model.getBimIdRelatedElements`
   * :js:meth:`~Model.getBimIdRelatingElements`
   * :js:meth:`~Model.getBimIdsFromGenericId`
   * :js:meth:`~Model.getBimInfoFromBimId`
   * :js:meth:`~Model.getBranchVisibility`
   * :js:meth:`~Model.getCadConfigurations`
   * :js:meth:`~Model.getCadViewConfiguration`
   * :js:meth:`~Model.getCadViewMap`
   * :js:meth:`~Model.getCadViewPmis`
   * :js:meth:`~Model.getDataFromIds`
   * :js:meth:`~Model.getDefaultCadConfiguration`
   * :js:meth:`~Model.getDefaultCadView`
   * :js:meth:`~Model.getEdgeAttributes`
   * :js:meth:`~Model.getEdgeCount`
   * :js:meth:`~Model.getEdgeProperty`
   * :js:meth:`~Model.getFaceAttributes`
   * :js:meth:`~Model.getFaceCount`
   * :js:meth:`~Model.getFaceProperty`
   * :js:meth:`~Model.getFilterName`
   * :js:meth:`~Model.getFilters`
   * :js:meth:`~Model.getFiltersWithNode`
   * :js:meth:`~Model.getGenericIdFromBimId`
   * :js:meth:`~Model.getGenericTypeIdMap`
   * :js:meth:`~Model.getGenericTypes`
   * :js:meth:`~Model.getLayerIdsFromName`
   * :js:meth:`~Model.getLayerName`
   * :js:meth:`~Model.getLayers`
   * :js:meth:`~Model.getLooseBounding`
   * :js:meth:`~Model.getLowestAvailableNodeId`
   * :js:meth:`~Model.getMeshIds`
   * :js:meth:`~Model.getMetallicRoughness`
   * :js:meth:`~Model.getModelBounding`
   * :js:meth:`~Model.getModelFileNameFromNode`
   * :js:meth:`~Model.getModelFileTypeFromNode`
   * :js:meth:`~Model.getNodeCappingMeshData`
   * :js:meth:`~Model.getNodeChildren`
   * :js:meth:`~Model.getNodeColorMap`
   * :js:meth:`~Model.getNodeEffectiveFaceColor`
   * :js:meth:`~Model.getNodeEffectiveLineColor`
   * :js:meth:`~Model.getNodeEffectivePointColor`
   * :js:meth:`~Model.getNodeExchangeId`
   * :js:meth:`~Model.getNodeFaceColor`
   * :js:meth:`~Model.getNodeFaceHighlighted`
   * :js:meth:`~Model.getNodeGenericId`
   * :js:meth:`~Model.getNodeGenericType`
   * :js:meth:`~Model.getNodeIdFromBimId`
   * :js:meth:`~Model.getNodeIdFromScInstanceKey`
   * :js:meth:`~Model.getNodeIdOffset`
   * :js:meth:`~Model.getNodeIdsByGenericIds`
   * :js:meth:`~Model.getNodeLayerId`
   * :js:meth:`~Model.getNodeLineColor`
   * :js:meth:`~Model.getNodeLineHighlighted`
   * :js:meth:`~Model.getNodeMatrix`
   * :js:meth:`~Model.getNodeMeshData`
   * :js:meth:`~Model.getNodeName`
   * :js:meth:`~Model.getNodeNetMatrix`
   * :js:meth:`~Model.getNodeParent`
   * :js:meth:`~Model.getNodePointColor`
   * :js:meth:`~Model.getNodePointHighlighted`
   * :js:meth:`~Model.getNodeProperties`
   * :js:meth:`~Model.getNodeRealBounding`
   * :js:meth:`~Model.getNodesAmbientColor`
   * :js:meth:`~Model.getNodesBounding`
   * :js:meth:`~Model.getNodesByGenericType`
   * :js:meth:`~Model.getNodesCappingMeshData`
   * :js:meth:`~Model.getNodesCullingVectors`
   * :js:meth:`~Model.getNodesDrawMode`
   * :js:meth:`~Model.getNodesEffectiveAmbientColor`
   * :js:meth:`~Model.getNodesEffectiveEmissiveColor`
   * :js:meth:`~Model.getNodesEffectiveFaceColor`
   * :js:meth:`~Model.getNodesEffectiveLineColor`
   * :js:meth:`~Model.getNodesEffectiveOpacity`
   * :js:meth:`~Model.getNodesEffectivePointColor`
   * :js:meth:`~Model.getNodesEffectiveSpecularColor`
   * :js:meth:`~Model.getNodesFaceColor`
   * :js:meth:`~Model.getNodesFaceEmissiveColor`
   * :js:meth:`~Model.getNodesFaceSpecularColor`
   * :js:meth:`~Model.getNodesFromFiltersId`
   * :js:meth:`~Model.getNodesFromLayer`
   * :js:meth:`~Model.getNodesFromLayerName`
   * :js:meth:`~Model.getNodesFromLayers`
   * :js:meth:`~Model.getNodesHaveTransparency`
   * :js:meth:`~Model.getNodesHighlighted`
   * :js:meth:`~Model.getNodesInstancingSamePart`
   * :js:meth:`~Model.getNodesLineColor`
   * :js:meth:`~Model.getNodesMaterial`
   * :js:meth:`~Model.getNodesOpacity`
   * :js:meth:`~Model.getNodesPointColor`
   * :js:meth:`~Model.getNodeType`
   * :js:meth:`~Model.getNodeUnitMultiplier`
   * :js:meth:`~Model.getNodeUserData`
   * :js:meth:`~Model.getNodeUserDataIndices`
   * :js:meth:`~Model.getNodeVisibility`
   * :js:meth:`~Model.getOutOfHierarchy`
   * :js:meth:`~Model.getPmiColor`
   * :js:meth:`~Model.getPmiColorOverride`
   * :js:meth:`~Model.getPmis`
   * :js:meth:`~Model.getPmiSubtype`
   * :js:meth:`~Model.getPmiTopologyReferences`
   * :js:meth:`~Model.getPmiType`
   * :js:meth:`~Model.getPointAttributes`
   * :js:meth:`~Model.getRelationshipTypesFromBimId`
   * :js:meth:`~Model.getScInstanceKey`
   * :js:meth:`~Model.getUniqueLayerNames`
   * :js:meth:`~Model.getViewAxes`
   * :js:meth:`~Model.getVisibilityState`
   * :js:meth:`~Model.hasDepthRange`
   * :js:meth:`~Model.hasEffectiveGenericType`
   * :js:meth:`~Model.isAnnotationView`
   * :js:meth:`~Model.isCombineStateView`
   * :js:meth:`~Model.isDrawing`
   * :js:meth:`~Model.isFaceMeasurable`
   * :js:meth:`~Model.isLineMeasurable`
   * :js:meth:`~Model.isMeasurable`
   * :js:meth:`~Model.isNodeLoaded`
   * :js:meth:`~Model.isWithinExternalModel`
   * :js:meth:`~Model.loadMeasurementFromFile`
   * :js:meth:`~Model.loadMeasurementFromJson`
   * :js:meth:`~Model.loadMeasurementFromString`
   * :js:meth:`~Model.loadSubtreeFromModel`
   * :js:meth:`~Model.loadSubtreeFromScsBuffer`
   * :js:meth:`~Model.loadSubtreeFromScsFile`
   * :js:meth:`~Model.loadSubtreeFromScsXmlBuffer`
   * :js:meth:`~Model.loadSubtreeFromScsXmlFile`
   * :js:meth:`~Model.loadSubtreeFromXmlBuffer`
   * :js:meth:`~Model.loadSubtreeFromXmlFile`
   * :js:meth:`~Model.registerBimNodes`
   * :js:meth:`~Model.registerIfcNodes`
   * :js:meth:`~Model.replaceMesh`
   * :js:meth:`~Model.requestNodes`
   * :js:meth:`~Model.reset`
   * :js:meth:`~Model.resetModelHighlight`
   * :js:meth:`~Model.resetModelOpacity`
   * :js:meth:`~Model.resetNodeMatrixToInitial`
   * :js:meth:`~Model.resetNodesColor`
   * :js:meth:`~Model.resetNodesMaterial`
   * :js:meth:`~Model.resetNodesOpacity`
   * :js:meth:`~Model.resetNodesTransform`
   * :js:meth:`~Model.resetNodesVisibility`
   * :js:meth:`~Model.setBehaviorInitiallyHidden`
   * :js:meth:`~Model.setBodyNodesVisibility`
   * :js:meth:`~Model.setDepthRange`
   * :js:meth:`~Model.setEdgeProperty`
   * :js:meth:`~Model.setEnableAutomaticUnitScaling`
   * :js:meth:`~Model.setFaceProperty`
   * :js:meth:`~Model.setInstanceModifier`
   * :js:meth:`~Model.setMeshLevel`
   * :js:meth:`~Model.setMetallicRoughness`
   * :js:meth:`~Model.setNodeFaceColor`
   * :js:meth:`~Model.setNodeFaceHighlighted`
   * :js:meth:`~Model.setNodeFaceVisibility`
   * :js:meth:`~Model.setNodeLineColor`
   * :js:meth:`~Model.setNodeLineHighlighted`
   * :js:meth:`~Model.setNodeLineVisibility`
   * :js:meth:`~Model.setNodeMatrix`
   * :js:meth:`~Model.setNodePointColor`
   * :js:meth:`~Model.setNodePointHighlighted`
   * :js:meth:`~Model.setNodePointVisibility`
   * :js:meth:`~Model.setNodesAmbientColor`
   * :js:meth:`~Model.setNodesAmbientMix`
   * :js:meth:`~Model.setNodesColors`
   * :js:meth:`~Model.setNodesCullingVector`
   * :js:meth:`~Model.setNodesDrawModes`
   * :js:meth:`~Model.setNodesFaceColor`
   * :js:meth:`~Model.setNodesFaceEmissiveColor`
   * :js:meth:`~Model.setNodesFaceSpecularColor`
   * :js:meth:`~Model.setNodesFaceSpecularIntensity`
   * :js:meth:`~Model.setNodesHighlighted`
   * :js:meth:`~Model.setNodesLineColor`
   * :js:meth:`~Model.setNodesLinePattern`
   * :js:meth:`~Model.setNodesMaterial`
   * :js:meth:`~Model.setNodesOpacities`
   * :js:meth:`~Model.setNodesOpacity`
   * :js:meth:`~Model.setNodesPointColor`
   * :js:meth:`~Model.setNodesTexture`
   * :js:meth:`~Model.setNodesVisibilities`
   * :js:meth:`~Model.setNodesVisibility`
   * :js:meth:`~Model.setPart`
   * :js:meth:`~Model.setPhysicalProperties`
   * :js:meth:`~Model.setPmiColor`
   * :js:meth:`~Model.setPmiColorOverride`
   * :js:meth:`~Model.setViewAxes`
   * :js:meth:`~Model.switchToModel`
   * :js:meth:`~Model.triangulatePolygon`
   * :js:meth:`~Model.unsetDepthRange`
   * :js:meth:`~Model.unsetMetallicRoughness`
   * :js:meth:`~Model.unsetNodeFaceColor`
   * :js:meth:`~Model.unsetNodeLineColor`
   * :js:meth:`~Model.unsetNodePointColor`
   * :js:meth:`~Model.unsetNodesAmbientColor`
   * :js:meth:`~Model.unsetNodesCullingVectors`
   * :js:meth:`~Model.unsetNodesFaceColor`
   * :js:meth:`~Model.unsetNodesFaceEmissiveColor`
   * :js:meth:`~Model.unsetNodesFaceSpecularColor`
   * :js:meth:`~Model.unsetNodesFaceSpecularIntensity`
   * :js:meth:`~Model.unsetNodesLineColor`
   * :js:meth:`~Model.unsetNodesLinePattern`
   * :js:meth:`~Model.unsetNodesPointColor`
   * :js:meth:`~Model.unsetNodesTexture`
   * :js:meth:`~Model.viewAxesHaveBeenSet`
   
   




Methods
=======

.. js:method:: Model.activateCadConfiguration

   .. rst-class:: sig-pretty-signature
   
      | activateCadConfiguration(**nodeId**\ : *number*\ , **view**\ : :js:class:`~IView`\ ?): *Promise*
   
   Activates a CAD configuration
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **view**\ : :js:class:`~IView` = ...
   
         View to set the CAD Configuration in. Visibility will be applied to all views. Uses default view if not specified.
   
   
   
   **Returns**\ : *Promise*
   
      None.
   
   



.. js:method:: Model.activateCadView

   .. rst-class:: sig-pretty-signature
   
      | activateCadView(**nodeId**\ : *number*\ , **duration**\ : *number*\ ?, **massageCamera**\ : *boolean*\ ?, **view**\ : :js:class:`~IView`\ ?): *Promise*
   
   Activates a CAD View
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **duration**\ : *number* = DefaultTransitionDuration
   
         camera transition time in milliseconds.
   
   
      **massageCamera**\ : *boolean* = true
   
         If true, undesirable authored cameras may be modified into a camera with more reasonable values
   
   
      **view**\ : :js:class:`~IView` = ...
   
         View to activate the CAD View in. Visibility will be applied to all views. Uses default view if not specified.
   
   
   
   **Returns**\ : *Promise*
   
      None.
   
   



.. js:method:: Model.activateDefaultCadConfiguration

   .. rst-class:: sig-pretty-signature
   
      | activateDefaultCadConfiguration(**fitNodes**\ : *boolean*\ ?, **view**\ : :js:class:`~IView`\ ?): *Promise*
   
   Activates Default CAD configuration
   
   **Parameters**
   
      **fitNodes**\ : *boolean* = true
   
         Fit view to visible nodes if possible (default true)
   
   
      **view**\ : :js:class:`~IView` = ...
   
         View to set the CAD Configuration in. Visibility will be applied to all views. Uses default view if not specified.
   
   
   
   **Returns**\ : *Promise*
   
      None.
   
   



.. js:method:: Model.activateDefaultCadView

   .. rst-class:: sig-pretty-signature
   
      | activateDefaultCadView(**duration**\ : *number*\ ?, **massageCamera**\ : *boolean*\ ?, **view**\ : :js:class:`~IView`\ ?): *Promise*
   
   Activate the default CAD view
   
   **Parameters**
   
      **duration**\ : *number* = DefaultTransitionDuration
   
         Duration of the camera animation
   
   
      **massageCamera**\ : *boolean* = true
   
         If true, undesirable authored cameras may be modified into a camera with more reasonable values
   
   
      **view**\ : :js:class:`~IView` = ...
   
         View to set the CAD View in. Visibility will be applied to all views. Uses default view if not specified.
   
   
   
   **Returns**\ : *Promise*
   
      None.
   
   



.. js:method:: Model.addPropertyToNode

   .. rst-class:: sig-pretty-signature
   
      | addPropertyToNode(**nodeId**\ : *number*\ , **propertyName**\ : *string*\ , **propertyValue**\ : *string*\ , **propertyUnit**\ : :js:class:`~UnitElement`\ []): *boolean*
   
   Purpose: Adds a property to the node
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **propertyName**\ : *string*
   
      **propertyValue**\ : *string*
   
      **propertyUnit**\ : :js:class:`~UnitElement`\ []
   
   
   **Returns**\ : *boolean*
   
      true if all went right, false otherwise
   
   



.. js:method:: Model.cadConfigurationsEnabled

   .. rst-class:: sig-pretty-signature
   
      | cadConfigurationsEnabled(): *Promise*
   
   Gets whether or not cad configurations are enabled
   
   **Returns**\ : *Promise*
   
      Boolean indicating whether or not cad configurations are enabled
   
   



.. js:method:: Model.clear

   .. rst-class:: sig-pretty-signature
   
      | clear(): *Promise*
   
   Remove all nodes, CAD views, configurations, and sheets from the model.
   
   If you intend to load additional models via the ``loadSubtree`` family of methods, you should wait on the resolution of this promise before doing so.
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.clearNodeFaceVisibility

   .. rst-class:: sig-pretty-signature
   
      | clearNodeFaceVisibility(**partId**\ : *number*\ ): *void*
   
   Clears the visibility for a node's face elements, resetting them to default.
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the part to be reset
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.clearNodeLineVisibility

   .. rst-class:: sig-pretty-signature
   
      | clearNodeLineVisibility(**partId**\ : *number*\ ): *void*
   
   Clears the visibility for a node's line elements, resetting them to default.
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the part to clear visibilities from
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.clearNodePointVisibility

   .. rst-class:: sig-pretty-signature
   
      | clearNodePointVisibility(**partId**\ : *number*\ ): *void*
   
   Clears the visibility for a node's point elements, resetting it to default.
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the part to clear visibilities from
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.computeMinimumBodyBodyDistance

   .. rst-class:: sig-pretty-signature
   
      | computeMinimumBodyBodyDistance(**partId1**\ : *number*\ , **partId2**\ : *number*\ ): *Promise*
   
   Computes the distance between two bodies
   
   **Parameters**
   
      **partId1**\ : *number*
   
         id for the part which the first face belongs to
   
   
      **partId2**\ : *number*
   
         id for the part which the second face belongs to
   
   
   
   **Returns**\ : *Promise*
   
      a promise that resolves with a Markup.Measure.FaceFaceDistanceItem when the operation completes
   
   



.. js:method:: Model.computeMinimumFaceFaceDistance

   .. rst-class:: sig-pretty-signature
   
      | computeMinimumFaceFaceDistance(**partId1**\ : *number*\ , **faceId1**\ : *number*\ , **partId2**\ : *number*\ , **faceId2**\ : *number*\ ): *Promise*
   
   Computes the distance between two faces
   
   **Parameters**
   
      **partId1**\ : *number*
   
         id for the part which the first face belongs to
   
   
      **faceId1**\ : *number*
   
         id for the face in the first part
   
   
      **partId2**\ : *number*
   
         id for the part which the second face belongs to
   
   
      **faceId2**\ : *number*
   
         id for the face in the second part
   
   
   
   **Returns**\ : *Promise*
   
      a promise that resolves with a Markup.Measure.FaceFaceDistanceItem when the operation completes
   
   



.. js:method:: Model.computeMinimumFaceLineDistance

   .. rst-class:: sig-pretty-signature
   
      | computeMinimumFaceLineDistance(**partId**\ : *number*\ , **faceId**\ : *number*\ , **ray**\ : :js:class:`~Ray`\ ): *Promise*
   
   Computers the minimum distance between a face and an infinite line.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **faceId**\ : *number*
   
         id of the face in the node
   
   
      **ray**\ : :js:class:`~Ray`
   
         the line (in the form of a ray) to test against
   
   
   
   **Returns**\ : *Promise*
   
      a promise that resolves with a Markup.Measure.FaceFaceDistanceItem when the operation completes
   
   



.. js:method:: Model.computeMinimumFaceRayDistance

   .. rst-class:: sig-pretty-signature
   
      | computeMinimumFaceRayDistance(**partId**\ : *number*\ , **faceId**\ : *number*\ , **ray**\ : :js:class:`~Ray`\ ): *Promise*
   
   Computers the minimum distance between a face and a ray.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **faceId**\ : *number*
   
         id of the face in the node
   
   
      **ray**\ : :js:class:`~Ray`
   
         the ray to test against
   
   
   
   **Returns**\ : *Promise*
   
      a promise that resolves with a Markup.Measure.FaceFaceDistanceItem when the operation completes
   
   



.. js:method:: Model.createAndAddRepresentationItem

   .. rst-class:: sig-pretty-signature
   
      | createAndAddRepresentationItem(**partNodeId**\ : (*undefined* \| *None* \| *number*\ ), **repItemId**\ : (*None* \| *number*\ )): (*None* \| *number*\ )
   
   Creates a representation item on a part
   
   **Parameters**
   
      **partNodeId**\ : (*undefined* \| *None* \| *number*\ )
   
         ID of the part node
   
   
      **repItemId**\ : (*None* \| *number*\ )
   
         (optional) Id you want the node to have, if not specified the nodeId will be set automatically. Be aware that if the specified node Id is already used by another node, then it will be ignored and a new one will be set automatically.
   
   
   
   **Returns**\ : (*None* \| *number*\ )
   
      node ID to access the created representation item, null is returned if something went wrong
   
   



.. js:method:: Model.createCadView

   .. rst-class:: sig-pretty-signature
   
      | createCadView(**nodeId**\ : *number*\ , **viewName**\ : *string*\ , **camera**\ : :js:class:`~Camera`\ , **pmiIds**\ : (*None* \| *number*\ []), **nodesToShow**\ : (*None* \| *number*\ []), **nodesToHide**\ : (*None* \| *number*\ []), **nodeIdsAndLocalTransforms**\ : (*None* \| [*number*\ , :js:class:`~Matrix`\ ][]), **cuttingPlane**\ : (*None* \| :js:class:`~Plane`\ ), **meshInstanceData**\ : (*None* \| :js:class:`~MeshInstanceData`\ )): (*None* \| *number*\ )
   
   Creates a CAD view. This method will trigger a "cadViewCreated" callback if the creation is successful.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **viewName**\ : *string*
   
         Name of the view
   
   
      **camera**\ : :js:class:`~Camera`
   
         Camera that will be set when the view gets activated
   
   
      **pmiIds**\ : (*None* \| *number*\ [])
   
         (optional, if undefined or null no change applied to pmis) Node IDs of the PMI to show for the view others will be hidden
   
   
      **nodesToShow**\ : (*None* \| *number*\ [])
   
         (optional, pass null or empty array if none to send) Node IDs of the elements to force visibility on
   
   
      **nodesToHide**\ : (*None* \| *number*\ [])
   
         (optional, pass null or empty array if none to send) Node IDs of the elements to force visibility off
   
   
      **nodeIdsAndLocalTransforms**\ : (*None* \| [*number*\ , :js:class:`~Matrix`\ ][])
   
         (optional, pass null or empty array if none to send) array of node ID and matrix pair, defining specific local transform to apply
   
   
      **cuttingPlane**\ : (*None* \| :js:class:`~Plane`\ )
   
         (optional, pass null if none to send) Cutting plane to set when the view gets activated. Distance of the planes must be in the same unit as the model.
   
   
      **meshInstanceData**\ : (*None* \| :js:class:`~MeshInstanceData`\ )
   
         (optional, pass null if none to send) object that specifies the data for the mesh instance of the rectangular frame (mostly found on capture views)
   
   
   
   **Returns**\ : (*None* \| *number*\ )
   
      id of the view, null is returned if the function fails
   
   



.. js:method:: Model.createImage

   .. rst-class:: sig-pretty-signature
   
      | createImage(**primaryImage**\ : :js:class:`~ImageOptions`\ , **thumbnailImage**\ : :js:class:`~ImageOptions`\ ): *Promise*
   
   Creates an image that can be applied as a texture via [[setNodesTexture]]. See [[deleteImages]].
   
   **Parameters**
   
      **primaryImage**\ : :js:class:`~ImageOptions`
   
         The image data and associated options
   
   
      **thumbnailImage**\ : :js:class:`~ImageOptions`
   
         If specified, an uncompressed image that will be used as a placeholder for the primary image until it is fully loaded. Only useful when ``primaryImage`` is a compressed image.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.createMesh

   .. rst-class:: sig-pretty-signature
   
      | createMesh(**meshData**\ : :js:class:`~MeshData`\ , **config**\ : { doNotDelete: *boolean* }): *Promise*
   
   **Parameters**
   
      **meshData**\ : :js:class:`~MeshData`
   
         [[MeshData]] object containing data to insert into the scene.
   
   
      **config**\ : { doNotDelete: *boolean* }
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with a [[MeshId]] when the mesh has been created. The [[MeshId]] can be used to create instances of the mesh using [[createMeshInstance]].
   
   



.. js:method:: Model.createMeshInstance

   .. rst-class:: sig-pretty-signature
   
      | createMeshInstance(**data**\ : :js:class:`~MeshInstanceData`\ , **parentNodeId**\ : (*None* \| *number*\ ), **preventFromResetting**\ : (*None* \| *boolean*\ ), **isOutOfHierarchy**\ : (*None* \| *boolean*\ )): *Promise*
   
   Creates an instance of a mesh that has been created using [[createMesh]] or retrieved using [[getMeshIds]].
   
   **Parameters**
   
      **data**\ : :js:class:`~MeshInstanceData`
   
         object that specifies the data for this mesh instance
   
   
      **parentNodeId**\ : (*None* \| *number*\ )
   
         the ID of the desired parent node
   
   
      **preventFromResetting**\ : (*None* \| *boolean*\ )
   
         if set to true, then the visibility and positioning won't be reset when resetxxx() functions gets called.
   
   
      **isOutOfHierarchy**\ : (*None* \| *boolean*\ )
   
         True if the node created shouldn't appear in the model structure.
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with a node ID that can be used to perform operations on this instance.
   
   



.. js:method:: Model.createNode

   .. rst-class:: sig-pretty-signature
   
      | createNode(**parentNodeId**\ : (*undefined* \| *None* \| *number*\ ), **nodeName**\ : *string*\ , **nodeId**\ : (*None* \| *number*\ ), **localMatrix**\ : (*None* \| :js:class:`~Matrix`\ ), **visibility**\ : (*None* \| *boolean*\ ), **measurementUnit**\ : (*None* \| *number*\ )): *number*
   
   Creates a node
   
   **Parameters**
   
      **parentNodeId**\ : (*undefined* \| *None* \| *number*\ )
   
         ID of the node to link the child node to. This ID should not have a type of Body or BodyInstance. If this parameter is ``undefined``\ , the child node will be linked to the root.
   
   
      **nodeName**\ : *string*
   
      **nodeId**\ : (*None* \| *number*\ )
   
      **localMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         (optional) Initial local matrix of the node (identity if none set)
   
   
      **visibility**\ : (*None* \| *boolean*\ )
   
         (optional) Initial visibility of the node (visible if nothing set)
   
   
      **measurementUnit**\ : (*None* \| *number*\ )
   
   
   **Returns**\ : *number*
   
      child node ID
   
   



.. js:method:: Model.createPart

   .. rst-class:: sig-pretty-signature
   
      | createPart(**nodeId**\ : (*None* \| *number*\ )): *number*
   
   Creates an part node
   
   **Parameters**
   
      **nodeId**\ : (*None* \| *number*\ )
   
   
   **Returns**\ : *number*
   
      a node ID to access the created part node
   
   



.. js:method:: Model.createPmiInstance

   .. rst-class:: sig-pretty-signature
   
      | createPmiInstance(**data**\ : :js:class:`~MeshInstanceData`\ , **pmiType**\ : :js:data:`~PmiType`\ , **pmiSubType**\ : :js:data:`~PmiSubType`\ , **refOnTopoItems**\ : :js:class:`~RefOnTopoItem`\ [], **parentNodeId**\ : (*None* \| *number*\ )): *Promise*
   
   Creates a PMI Instance from a mesh that has been created using the createMesh method.
   
   **Parameters**
   
      **data**\ : :js:class:`~MeshInstanceData`
   
         object that specifies the data for the PMI graphic representation
   
   
      **pmiType**\ : :js:data:`~PmiType`
   
         see PmiType enum (Datum, Gdt, Dimension...)
   
   
      **pmiSubType**\ : :js:data:`~PmiSubType`
   
         see PmiSubType enum (DatumTarget, GdtFcf, DimensionDistance...)
   
   
      **refOnTopoItems**\ : :js:class:`~RefOnTopoItem`\ []
   
         see RefOnTopoItem. It defines the PMI links to a body element, like a face or an edge
   
   
      **parentNodeId**\ : (*None* \| *number*\ )
   
         the ID of the desired parent node
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with a node ID that can be used to perform operations on this instance. You can use deleteMeshInstances() to delete the PMI
   
   



.. js:method:: Model.deleteImages

   .. rst-class:: sig-pretty-signature
   
      | deleteImages(**imageIds**\ : :js:data:`~ImageId`\ []): *Promise*
   
   Deletes images created with [[createImage]].
   
   **Parameters**
   
      **imageIds**\ : :js:data:`~ImageId`\ []
   
         The IDs of the images to be deleted
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.deleteMeshes

   .. rst-class:: sig-pretty-signature
   
      | deleteMeshes(**ids**\ : :js:data:`~MeshId`\ []): *Promise*
   
   Deletes meshes that have been created at run time.
   
   In order for this method to succeed, all mesh instances created for the given IDs must have also been destroyed with [[deleteMeshInstances]].
   
   **Parameters**
   
      **ids**\ : :js:data:`~MeshId`\ []
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.deleteMeshInstances

   .. rst-class:: sig-pretty-signature
   
      | deleteMeshInstances(**nodeIds**\ : *number*\ []): *Promise*
   
   Deletes mesh instances that have been created at run time
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         array of IDs for mesh instances created at run time that should be destroyed
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.deleteNode

   .. rst-class:: sig-pretty-signature
   
      | deleteNode(**nodeId**\ : *number*\ ): *Promise*
   
   Delete a node and all its children
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getAbsoluteRootNode

   .. rst-class:: sig-pretty-signature
   
      | getAbsoluteRootNode(): *number*
   
   Returns the absolute root node of the assembly tree.
   
   **Returns**\ : *number*
   
      Id for the model tree root node or null if the model structure is not loaded.
   
   



.. js:method:: Model.getActiveCadConfiguration

   .. rst-class:: sig-pretty-signature
   
      | getActiveCadConfiguration(): (*None* \| *number*\ )
   
   Gets Active CAD configuration
   
   **Returns**\ : (*None* \| *number*\ )
   
      ID of activated CAD Configuration
   
   



.. js:method:: Model.getAssociatedModelKey

   .. rst-class:: sig-pretty-signature
   
      | getAssociatedModelKey(**nodeId**\ : *number*\ ): *Promise*
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getBimIdConnectedElements

   .. rst-class:: sig-pretty-signature
   
      | getBimIdConnectedElements(**node**\ : *number*\ , **bimId**\ : *string*\ , **type**\ : :js:data:`~RelationshipType`\ ): { relateds: *string*\ [], relatings: *string*\ [] }
   
   Retrieve all relationships that a bim id have, sorted in 2 arrays (relateds and relatings)
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimId**\ : *string*
   
         bim id for which you want its relationships.
   
   
      **type**\ : :js:data:`~RelationshipType`
   
   
   **Returns**\ : { relateds: *string*\ [], relatings: *string*\ [] }
   
      double array of bim id of relationship of the BimId sorted by its relateds and its relatings.
   
   



.. js:method:: Model.getBimIdFromNode

   .. rst-class:: sig-pretty-signature
   
      | getBimIdFromNode(**node**\ : *number*\ ): (*None* \| *string*\ )
   
   Retrieves the bim id of the corresponding node id.
   
   **Parameters**
   
      **node**\ : *number*
   
         the id of the node for which you want its bim id.
   
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      the bim id corresponding to the node or null if none.
   
   



.. js:method:: Model.getBimIdRelatedElements

   .. rst-class:: sig-pretty-signature
   
      | getBimIdRelatedElements(**node**\ : *number*\ , **bimId**\ : *string*\ , **type**\ : :js:data:`~RelationshipType`\ ): *string*\ []
   
   Retrieve all related relationships that a bim id have.
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimId**\ : *string*
   
         bim id for which you want its related relationships.
   
   
      **type**\ : :js:data:`~RelationshipType`
   
   
   **Returns**\ : *string*\ []
   
      array of bim id which are the related relationship of the BimId.
   
   



.. js:method:: Model.getBimIdRelatingElements

   .. rst-class:: sig-pretty-signature
   
      | getBimIdRelatingElements(**node**\ : *number*\ , **bimId**\ : *string*\ , **type**\ : :js:data:`~RelationshipType`\ ): *string*\ []
   
   Retrieve all relating relationships that a bim id have.
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimId**\ : *string*
   
         bim id for which you want its relating relationships.
   
   
      **type**\ : :js:data:`~RelationshipType`
   
   
   **Returns**\ : *string*\ []
   
      array of bim id which are the relating relationship of the BimId.
   
   



.. js:method:: Model.getBimIdsFromGenericId

   .. rst-class:: sig-pretty-signature
   
      | getBimIdsFromGenericId(**ifcGuid**\ : *string*\ ): *string*\ []
   
   Retrieves the bim ids of the corresponding generic id.
   
   **Parameters**
   
      **ifcGuid**\ : *string*
   
         the generic id for which you want its bim id.
   
   
   
   **Returns**\ : *string*\ []
   
      the bim id corresponding to the ifcGuid or null if none.
   
   



.. js:method:: Model.getBimInfoFromBimId

   .. rst-class:: sig-pretty-signature
   
      | getBimInfoFromBimId(**node**\ : *number*\ , **bimId**\ : *string*\ ): { connected: *boolean*\ , name: *string* }
   
   Retrieve the name of the bim element
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimId**\ : *string*
   
         bim id for which you want the bim element name.
   
   
   
   **Returns**\ : { connected: *boolean*\ , name: *string* }
   
      the name and the info regarding the connection to a node of the bim element.
   
   



.. js:method:: Model.getBranchVisibility

   .. rst-class:: sig-pretty-signature
   
      | getBranchVisibility(**nodeId**\ : *number*\ ): :js:data:`~BranchVisibility`
   
   Branch visibility indicates the visibility state for all of a node's children.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node at the root of the branch.
   
   
   
   **Returns**\ : :js:data:`~BranchVisibility`
   
      Shown/Hidden if all children have the same visibility state, Mixed otherwise.
   
   



.. js:method:: Model.getCadConfigurations

   .. rst-class:: sig-pretty-signature
   
      | getCadConfigurations(): :js:class:`~IdStringMap`
   
   Gets CAD configurations
   
   **Returns**\ : :js:class:`~IdStringMap`
   
      an object mapping CAD configuration ID to config name
   
   



.. js:method:: Model.getCadViewConfiguration

   .. rst-class:: sig-pretty-signature
   
      | getCadViewConfiguration(**cadViewNodeId**\ : *number*\ ): (*None* \| *number*\ )
   
   Get the configuration in which the view is defined
   
   **Parameters**
   
      **cadViewNodeId**\ : *number*
   
   
   **Returns**\ : (*None* \| *number*\ )
   
      ID of CAD Configuration of the view
   
   



.. js:method:: Model.getCadViewMap

   .. rst-class:: sig-pretty-signature
   
      | getCadViewMap(): *Map*
   
   Gets CAD View information for this model.
   
   **Returns**\ : *Map*
   
      a map mapping associating CAD View ID to name
   
   



.. js:method:: Model.getCadViewPmis

   .. rst-class:: sig-pretty-signature
   
      | getCadViewPmis(**nodeId**\ : *number*\ ): *number*\ []
   
   Get PMI IDs for a CAD View
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *number*\ []
   
      IDs of visible PMIs for the view
   
   



.. js:method:: Model.getDataFromIds

   .. rst-class:: sig-pretty-signature
   
      | getDataFromIds(**ids**\ : :js:data:`DataIds <Sc.DataIds>`\ ): *Promise*
   
   Returns a data object. During the authoring phase, a user can store general data within a model. (This is how properties are stored, for example.) This function allows you to retrieve the data from the client application.
   
   **Parameters**
   
      **ids**\ : :js:data:`DataIds <Sc.DataIds>`
   
   
   **Returns**\ : *Promise*
   
      promise that resolves when this operation has completed returning an array of 8bits int arrays for each ModelKey-DataKey pairs
   
   



.. js:method:: Model.getDefaultCadConfiguration

   .. rst-class:: sig-pretty-signature
   
      | getDefaultCadConfiguration(): (*None* \| *number*\ )
   
   Gets CAD default configuration
   
   **Returns**\ : (*None* \| *number*\ )
   
      ID of default CAD Configuration
   
   



.. js:method:: Model.getDefaultCadView

   .. rst-class:: sig-pretty-signature
   
      | getDefaultCadView(): (*None* \| *number*\ )
   
   Gets CAD default view
   
   **Returns**\ : (*None* \| *number*\ )
   
      ID of default CAD Configuration
   
   



.. js:method:: Model.getEdgeAttributes

   .. rst-class:: sig-pretty-signature
   
      | getEdgeAttributes(**nodeId**\ : *number*\ , **edgeIndex**\ : *number*\ ): *Promise*
   
   Returns edge attributes for a node of the given node and edge.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve edge properties from
   
   
      **edgeIndex**\ : *number*
   
         Index of edge for which to retrieve edge attributes
   
   
   
   **Returns**\ : *Promise*
   
      Promise for the requested edge attributes. Properties returned will be null if none associated with the edge.
   
   



.. js:method:: Model.getEdgeCount

   .. rst-class:: sig-pretty-signature
   
      | getEdgeCount(**nodeId**\ : *number*\ ): *Promise*
   
   Returns edge count for a node of the given node.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve edge count from
   
   
   
   **Returns**\ : *Promise*
   
      Promise providing the number of edges
   
   



.. js:method:: Model.getEdgeProperty

   .. rst-class:: sig-pretty-signature
   
      | getEdgeProperty(**nodeId**\ : *number*\ , **edgeId**\ : *number*\ ): *Promise*
   
   Returns edge properties for a node of the given node and edge.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve edge properties from
   
   
      **edgeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   
      Promise for the requested edge properties. Properties returned will be null if none associated with the edge.
   
   



.. js:method:: Model.getFaceAttributes

   .. rst-class:: sig-pretty-signature
   
      | getFaceAttributes(**nodeId**\ : *number*\ , **faceIndex**\ : *number*\ ): *Promise*
   
   Returns face attributes for a node of the given node and face.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve edge properties from
   
   
      **faceIndex**\ : *number*
   
         Index of face for which to retrieve face attributes
   
   
   
   **Returns**\ : *Promise*
   
      Promise for the requested face attributes. Properties returned will be null if none associated with the edge.
   
   



.. js:method:: Model.getFaceCount

   .. rst-class:: sig-pretty-signature
   
      | getFaceCount(**nodeId**\ : *number*\ ): *Promise*
   
   Returns face count for a node of the given node and face.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve face count from
   
   
   
   **Returns**\ : *Promise*
   
      Promise providing the number of faces
   
   



.. js:method:: Model.getFaceProperty

   .. rst-class:: sig-pretty-signature
   
      | getFaceProperty(**nodeId**\ : *number*\ , **faceId**\ : *number*\ ): *Promise*
   
   Returns Face properties for a node of the given node and face.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve face properties from
   
   
      **faceId**\ : *number*
   
   
   **Returns**\ : *Promise*
   
      Promise for the requested face properties. Properties returned will be null if none associated with the face.
   
   



.. js:method:: Model.getFilterName

   .. rst-class:: sig-pretty-signature
   
      | getFilterName(**filterId**\ : :js:data:`~FilterId`\ ): (*None* \| *string*\ )
   
   **Parameters**
   
      **filterId**\ : :js:data:`~FilterId`
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      The name of a filter for the given filter ID index or null if filter was not found
   
   



.. js:method:: Model.getFilters

   .. rst-class:: sig-pretty-signature
   
      | getFilters(): *Map*
   
   Returns names and ids of all filters available in the scene
   
   **Returns**\ : *Map*
   
      a map associating Filter IDs to filter names
   
   



.. js:method:: Model.getFiltersWithNode

   .. rst-class:: sig-pretty-signature
   
      | getFiltersWithNode(**nodeIdSearched**\ : *number*\ ): :js:data:`~FilterId`\ []
   
   **Parameters**
   
      **nodeIdSearched**\ : *number*
   
   
   **Returns**\ : :js:data:`~FilterId`\ []
   
      Filters which retain or remove the given node.
   
   



.. js:method:: Model.getGenericIdFromBimId

   .. rst-class:: sig-pretty-signature
   
      | getGenericIdFromBimId(**node**\ : *number*\ , **bimId**\ : *string*\ ): (*None* \| *string*\ )
   
   Retrieves the generic id of the corresponding bim id.
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimId**\ : *string*
   
         bim id for which you want its generic id.
   
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      the generic id corresponding to the BimId or null if none.
   
   



.. js:method:: Model.getGenericTypeIdMap

   .. rst-class:: sig-pretty-signature
   
      | getGenericTypeIdMap(): *Map*
   
   Gets all generic types and NodeIds with that type.
   
   **Returns**\ : *Map*
   
      Map containing generic types and NodeIds
   
   



.. js:method:: Model.getGenericTypes

   .. rst-class:: sig-pretty-signature
   
      | getGenericTypes(): *string*\ []
   
   This function gets all generic types contained in the model.
   
   **Returns**\ : *string*\ []
   
      All generic types.
   
   



.. js:method:: Model.getLayerIdsFromName

   .. rst-class:: sig-pretty-signature
   
      | getLayerIdsFromName(**name**\ : *string*\ ): (*None* \| :js:data:`~LayerId`\ [])
   
   **Parameters**
   
      **name**\ : *string*
   
   
   **Returns**\ : (*None* \| :js:data:`~LayerId`\ [])
   
      Id of layers for the given filter name or null if no layers are found
   
   



.. js:method:: Model.getLayerName

   .. rst-class:: sig-pretty-signature
   
      | getLayerName(**layerId**\ : :js:data:`~LayerId`\ ): (*None* \| *string*\ )
   
   **Parameters**
   
      **layerId**\ : :js:data:`~LayerId`
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      The name of a layer for the given filter ID or null if layer was not found
   
   



.. js:method:: Model.getLayers

   .. rst-class:: sig-pretty-signature
   
      | getLayers(): *Map*
   
   Returns names and ids of all layers available in the scene
   
   **Returns**\ : *Map*
   
      a map associating Layer IDs to Layer names
   
   



.. js:method:: Model.getLooseBounding

   .. rst-class:: sig-pretty-signature
   
      | getLooseBounding(): *Promise*
   
   Gets the world space bounding box for the model. This does not take node visibility into account.
   
   **Returns**\ : *Promise*
   
      Promise that resolves with a Box representing the world space bounding box of the model.
   
   



.. js:method:: Model.getLowestAvailableNodeId

   .. rst-class:: sig-pretty-signature
   
      | getLowestAvailableNodeId(): *number*
   
   Returns the lowest available node ID
   
   **Returns**\ : *number*
   



.. js:method:: Model.getMeshIds

   .. rst-class:: sig-pretty-signature
   
      | getMeshIds(**nodeIds**\ : *number*\ []): *Promise*
   
   Retrieve the [[MeshId]] associated with the mesh data attached to the given nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getMetallicRoughness

   .. rst-class:: sig-pretty-signature
   
      | getMetallicRoughness(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the metallic and roughness factors for the supplied nodes materials. Materials that are not currently set to use the Metallic Roughness shading model will have a null entry
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         List of nodes to get material properties for
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getModelBounding

   .. rst-class:: sig-pretty-signature
   
      | getModelBounding(**ignoreInvisible**\ : *boolean*\ , **includeExcluded**\ : *boolean*\ , **tightBounding**\ : *boolean*\ ?): *Promise*
   
   Gets the world space bounding box for the model.
   
   **Parameters**
   
      **ignoreInvisible**\ : *boolean*
   
      **includeExcluded**\ : *boolean*
   
      **tightBounding**\ : *boolean* = false
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with a Box representing the world space bounding box of the model.
   
   



.. js:method:: Model.getModelFileNameFromNode

   .. rst-class:: sig-pretty-signature
   
      | getModelFileNameFromNode(**nodeId**\ : *number*\ ): (*None* \| *string*\ )
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      the original file name of the model which contain the given node or null if the node is not found.
   
   



.. js:method:: Model.getModelFileTypeFromNode

   .. rst-class:: sig-pretty-signature
   
      | getModelFileTypeFromNode(**nodeId**\ : *number*\ ): (*None* \| :js:data:`~FileType`\ )
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : (*None* \| :js:data:`~FileType`\ )
   
      the original file type of the model which contain the given node or null if the node is not found.
   
   



.. js:method:: Model.getNodeCappingMeshData

   .. rst-class:: sig-pretty-signature
   
      | getNodeCappingMeshData(**nodeId**\ : *number*\ ): *Promise*
   
   Fetch the mesh data for any capping geometry on a particular node
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeChildren

   .. rst-class:: sig-pretty-signature
   
      | getNodeChildren(**nodeId**\ : *number*\ , **includeOutOfHierarchy**\ : *boolean*\ ): *number*\ []
   
   Returns IDs for child nodes for the given Id.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **includeOutOfHierarchy**\ : *boolean*
   
         true to include Out Of Hierarchy node, false or null to exclude them
   
   
   
   **Returns**\ : *number*\ []
   
      ID for the children of this node, or null if the ID is invalid
   
   



.. js:method:: Model.getNodeColorMap

   .. rst-class:: sig-pretty-signature
   
      | getNodeColorMap(**startNodeId**\ : *number*\ , **elementType**\ : :js:data:`~ElementType`\ ): *Promise*
   
   Gets a map associating NodeIds to colors that are set on those nodes. Only NodeIds of nodes that have a color set will be included.
   
   **Parameters**
   
      **startNodeId**\ : *number*
   
         The start node to walk when building the color map.
   
   
      **elementType**\ : :js:data:`~ElementType`
   
         Returned colors are of this element type.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeEffectiveFaceColor

   .. rst-class:: sig-pretty-signature
   
      | getNodeEffectiveFaceColor(**partId**\ : *number*\ , **faceIndex**\ : *number*\ , **view**\ : :js:class:`~IView`\ ): *Promise*
   
   Gets the color set via [[setNodeFaceColor]] on a face element. If no color has been set, the node's face color will be returned. If the node's face color has not been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **faceIndex**\ : *number*
   
         the index of the face in the node
   
   
      **view**\ : :js:class:`~IView`
   
         the View to use when calculating view effects
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeEffectiveLineColor

   .. rst-class:: sig-pretty-signature
   
      | getNodeEffectiveLineColor(**partId**\ : *number*\ , **lineIndex**\ : *number*\ , **view**\ : :js:class:`~IView`\ ): *Promise*
   
   Gets the color set via [[setNodeLineColor]] on a line element. If no color has been set, the node's line color will be returned. If the node's line color has not been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **lineIndex**\ : *number*
   
         the index of the line in the node
   
   
      **view**\ : :js:class:`~IView`
   
         the View to use when calculating view effects
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeEffectivePointColor

   .. rst-class:: sig-pretty-signature
   
      | getNodeEffectivePointColor(**partId**\ : *number*\ , **pointIndex**\ : *number*\ , **view**\ : :js:class:`~IView`\ ): *Promise*
   
   Gets the color set via [[setNodePointColor]] on a point element. If no color has been set, the node's point color will be returned. If the node's point color has not been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **pointIndex**\ : *number*
   
         the index of the point in the node
   
   
      **view**\ : :js:class:`~IView`
   
         the View to use for calculating view effects
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeExchangeId

   .. rst-class:: sig-pretty-signature
   
      | getNodeExchangeId(**nodeId**\ : *number*\ ): (*None* \| *string*\ )
   
   Returns the Exchange ID of a node in the assembly tree.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The node ID to get the Exchange ID from.
   
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      The Exchange ID of the node with the given nodeId or null if no Exchange ID is found.
   
   



.. js:method:: Model.getNodeFaceColor

   .. rst-class:: sig-pretty-signature
   
      | getNodeFaceColor(**partId**\ : *number*\ , **faceIndex**\ : *number*\ ): *Promise*
   
   Gets the color set via [[setNodeFaceColor]] on a face element. If no color has been set, ``null`` will be returned. <br><br> See also: [[getNodeEffectiveFaceColor]]
   
   **Parameters**
   
      **partId**\ : *number*
   
      **faceIndex**\ : *number*
   
         the index of the face in the node
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeFaceHighlighted

   .. rst-class:: sig-pretty-signature
   
      | getNodeFaceHighlighted(**nodeId**\ : *number*\ , **faceIndex**\ : *number*\ ): *Promise*
   
   Returns whether the supplied face element has been highlighted with [[setNodeFaceHighlighted]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         the ID of the node containing the face element
   
   
      **faceIndex**\ : *number*
   
         the index of the face within the node
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeGenericId

   .. rst-class:: sig-pretty-signature
   
      | getNodeGenericId(**nodeId**\ : *number*\ ): (*None* \| *string*\ )
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      the generic id of the given node or null if the node is not found.
   
   



.. js:method:: Model.getNodeGenericType

   .. rst-class:: sig-pretty-signature
   
      | getNodeGenericType(**nodeId**\ : *number*\ ): (*None* \| *string*\ )
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      the generic type of the given node or null if the node is not found.
   
   



.. js:method:: Model.getNodeIdFromBimId

   .. rst-class:: sig-pretty-signature
   
      | getNodeIdFromBimId(**node**\ : *number*\ , **bimID**\ : *string*\ ): (*None* \| *number*\ )
   
   Retrieves the node id of the corresponding bim id.
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimID**\ : *string*
   
         bim id for which you want its node id.
   
   
   
   **Returns**\ : (*None* \| *number*\ )
   
      the node id corresponding to the BimId or null if none.
   
   



.. js:method:: Model.getNodeIdFromScInstanceKey

   .. rst-class:: sig-pretty-signature
   
      | getNodeIdFromScInstanceKey(**inclusionKey**\ : :js:data:`InclusionKey <Sc.InclusionKey>`\ , **instanceKey**\ : :js:data:`InstanceKey <Sc.InstanceKey.Invalid>`\ ): (*None* \| *number*\ )
   
   Returns the body node instance ID for the given SC instance ID
   
   **Parameters**
   
      **inclusionKey**\ : :js:data:`InclusionKey <Sc.InclusionKey>`
   
      **instanceKey**\ : :js:data:`InstanceKey <Sc.InstanceKey.Invalid>`
   
   
   **Returns**\ : (*None* \| *number*\ )
   
      body node instance ID
   
   



.. js:method:: Model.getNodeIdOffset

   .. rst-class:: sig-pretty-signature
   
      | getNodeIdOffset(**nodeId**\ : *number*\ ): *number*
   
   Retrieves the node ID offset for a given node.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The node to obtain the node ID offset from.
   
   
   
   **Returns**\ : *number*
   
      The node ID offset for the supplied node.
   
   



.. js:method:: Model.getNodeIdsByGenericIds

   .. rst-class:: sig-pretty-signature
   
      | getNodeIdsByGenericIds(**genericIds**\ : *string*\ []): *number*\ []
   
   Returns a list of node IDs given a list of generic IDs. Note that the returned list of node IDs may be longer than the provided list of generic IDs since one ID can be used by more than one node.
   
   **Parameters**
   
      **genericIds**\ : *string*\ []
   
         Array of generic IDs to find nodes fore
   
   
   
   **Returns**\ : *number*\ []
   
      Array of node ids corresponding to the provided generic IDs
   
   



.. js:method:: Model.getNodeLayerId

   .. rst-class:: sig-pretty-signature
   
      | getNodeLayerId(**nodeId**\ : *number*\ ): (*None* \| :js:data:`~LayerId`\ )
   
   Returns the layer ID of a node in the assembly tree.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The node ID to get the Exchange ID from.
   
   
   
   **Returns**\ : (*None* \| :js:data:`~LayerId`\ )
   
      The layer ID of the node with the given nodeId or null if no layer is found.
   
   



.. js:method:: Model.getNodeLineColor

   .. rst-class:: sig-pretty-signature
   
      | getNodeLineColor(**partId**\ : *number*\ , **lineIndex**\ : *number*\ ): *Promise*
   
   Gets the color set via [[setNodeLineColor]] on a line element. If no color has been set, ``null`` will be returned.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **lineIndex**\ : *number*
   
         the index of the line in the node
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeLineHighlighted

   .. rst-class:: sig-pretty-signature
   
      | getNodeLineHighlighted(**nodeId**\ : *number*\ , **lineIndex**\ : *number*\ ): *Promise*
   
   Returns whether the supplied line element has been highlighted with [[setNodeLineHighlighted]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         the ID of the node containing the line element
   
   
      **lineIndex**\ : *number*
   
         the index of the line within the node
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeMatrix

   .. rst-class:: sig-pretty-signature
   
      | getNodeMatrix(**nodeId**\ : *number*\ ): :js:class:`~Matrix`
   
   Returns a copy of the Matrix for a node of the given ID
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : :js:class:`~Matrix`
   
      Copy of the Matrix of the node
   
   



.. js:method:: Model.getNodeMeshData

   .. rst-class:: sig-pretty-signature
   
      | getNodeMeshData(**nodeId**\ : *number*\ ): *Promise*
   
   Fetch the mesh data for a particular node
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         the node's ID
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeName

   .. rst-class:: sig-pretty-signature
   
      | getNodeName(**nodeId**\ : *number*\ ): (*None* \| *string*\ )
   
   Returns the name for a node in the assembly tree.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The node ID to get the name of.
   
   
   
   **Returns**\ : (*None* \| *string*\ )
   
      The name of the node with the given nodeId or null if no name is found.
   
   



.. js:method:: Model.getNodeNetMatrix

   .. rst-class:: sig-pretty-signature
   
      | getNodeNetMatrix(**nodeId**\ : *number*\ ): :js:class:`~Matrix`
   
   Returns net matrix for a node of the given ID
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : :js:class:`~Matrix`
   
      Net Matrix of the Node
   
   



.. js:method:: Model.getNodeParent

   .. rst-class:: sig-pretty-signature
   
      | getNodeParent(**nodeId**\ : *number*\ ): (*None* \| *number*\ )
   
   Returns the parent Id for the given node id.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : (*None* \| *number*\ )
   
      ID of the parent node for the supplied ID. If the ID is invalid or the root ID, null is returned.
   
   



.. js:method:: Model.getNodePointColor

   .. rst-class:: sig-pretty-signature
   
      | getNodePointColor(**partId**\ : *number*\ , **pointIndex**\ : *number*\ ): *Promise*
   
   Gets the color set via [[setNodePointColor]] on a point element. If no color has been set, ``null`` will be returned. <br><br> See also: [[getNodeEffectivePointColor]]
   
   **Parameters**
   
      **partId**\ : *number*
   
      **pointIndex**\ : *number*
   
         the index of the point in the node
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodePointHighlighted

   .. rst-class:: sig-pretty-signature
   
      | getNodePointHighlighted(**nodeId**\ : *number*\ , **pointIndex**\ : *number*\ ): *Promise*
   
   Returns whether the supplied point element has been highlighted with [[setNodePointHighlighted]].
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         the ID of the node containing the point element
   
   
      **pointIndex**\ : *number*
   
         the index of the point within the node
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeProperties

   .. rst-class:: sig-pretty-signature
   
      | getNodeProperties(**nodeId**\ : *number*\ , **computeFromChildren**\ : *boolean*\ ?): *Promise*
   
   Returns the properties for the given node ID.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **computeFromChildren**\ : *boolean* = true
   
         If true physical properties will be computed from child nodes.
   
   
   
   **Returns**\ : *Promise*
   
      object properties for the supplied ID, or null if the ID was invalid
   
   



.. js:method:: Model.getNodeRealBounding

   .. rst-class:: sig-pretty-signature
   
      | getNodeRealBounding(**nodeId**\ : *number*\ , **view**\ : :js:class:`~IView`\ ): *Promise*
   
   Gets the world space bounding box for a node including any effects (explosion, camera suppression, etc). Note: This function can have performance implications when used on nodes with many children.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node for which you wish to get the bounding box.
   
   
      **view**\ : :js:class:`~IView`
   
         View to use for determining visibility.
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with the world space bounding box for the given ID.
   
   



.. js:method:: Model.getNodesAmbientColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesAmbientColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the ambient color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to get
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesBounding

   .. rst-class:: sig-pretty-signature
   
      | getNodesBounding(**nodeIds**\ : *number*\ [], **config**\ : :js:class:`~GetNodesBoundingConfig`\ ): *Promise*
   
   Gets the world space bounding box for a list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes for which you wish to get the bounding box.
   
   
      **config**\ : :js:class:`~GetNodesBoundingConfig`
   
         Allows fine control of what body types to compute the bounding against. If not provided, all body types are considered.
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with the world space bounding box for the given IDs.
   
   



.. js:method:: Model.getNodesByGenericType

   .. rst-class:: sig-pretty-signature
   
      | getNodesByGenericType(**genericType**\ : *string*\ ): (*None* \| *Set*\ )
   
   This function returns all NodeIds with an IFC type.
   
   **Parameters**
   
      **genericType**\ : *string*
   
   
   **Returns**\ : (*None* \| *Set*\ )
   
      All NodeIds with an IFC type
   
   



.. js:method:: Model.getNodesCappingMeshData

   .. rst-class:: sig-pretty-signature
   
      | getNodesCappingMeshData(**nodeIds**\ : *number*\ []): *Promise*
   
   Fetch the mesh data for any capping geometry on a list of nodes and their children
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         the node IDs to get capping data from.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesCullingVectors

   .. rst-class:: sig-pretty-signature
   
      | getNodesCullingVectors(**nodeIds**\ : *number*\ []): *Promise*
   
   Retrieves the vector and angle used to determine an object's visibility based on camera orientation. If unset, ``null`` will appear at the corresponding array index.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The nodes to query culling vectors from.
   
   
   
   **Returns**\ : *Promise*
   
      A promise of culling vectors.
   
   



.. js:method:: Model.getNodesDrawMode

   .. rst-class:: sig-pretty-signature
   
      | getNodesDrawMode(**nodeIds**\ : *number*\ []): *Record*
   
   Get overridden draw mode for the given node ids. Only leaf nodes attached to a body are considered. Other wont be in the returned record.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The node ids to get the draw mode from.
   
   
   
   **Returns**\ : *Record*
   
      A record mapping node ids to their overridden draw modes.
   
   



.. js:method:: Model.getNodesEffectiveAmbientColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectiveAmbientColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the ambient color set on the faces of a list of leaf nodes. If no color has been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesEffectiveEmissiveColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectiveEmissiveColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the emissive color set on the faces of a list of leaf nodes. If no color has been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesEffectiveFaceColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectiveFaceColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the color set on the faces of a list of leaf nodes. If no color has been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesEffectiveLineColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectiveLineColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the color set on the lines of a list of leaf nodes. If no color has been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesEffectiveOpacity

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectiveOpacity(**leafNodes**\ : *number*\ [], **elementType**\ : :js:data:`~ElementType`\ ): *Promise*
   
   Gets the opacity set on a list of leaf nodes multiplied by the opacity specified when the model was authored. If no opacity has been set, the opacity specified when the model was authored will be returned directly.
   
   **Parameters**
   
      **leafNodes**\ : *number*\ []
   
      **elementType**\ : :js:data:`~ElementType`
   
         the type of element (faces, lines or points) to query
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesEffectivePointColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectivePointColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the color set on the points of a list of leaf nodes. If no color has been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesEffectiveSpecularColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesEffectiveSpecularColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the specular color set on the faces of a list of leaf nodes. If no color has been set, the color specified when the model was authored will be returned.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesFaceColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesFaceColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the color set via [[setNodesFaceColor]] on the faces of a list of leaf nodes. If no color has been explicitly set for a particular node, ``null`` will appear at the corresponding position in the returned array. <br><br> See also: [[getNodesEffectiveFaceColor]]
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesFaceEmissiveColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesFaceEmissiveColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the emissive color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to get
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesFaceSpecularColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesFaceSpecularColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the specular color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to get
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesFromFiltersId

   .. rst-class:: sig-pretty-signature
   
      | getNodesFromFiltersId(**filtersId**\ : :js:data:`~FilterId`\ []): (*None* \| :js:class:`~FilteredNodes`\ )
   
   **Parameters**
   
      **filtersId**\ : :js:data:`~FilterId`\ []
   
         array of filters indexes to take in account
   
   
   
   **Returns**\ : (*None* \| :js:class:`~FilteredNodes`\ )
   
      nodesId of nodes retained by the given filter indices and the type of filter (inclusive or not). Returns null if no filter is found.
   
   



.. js:method:: Model.getNodesFromLayer

   .. rst-class:: sig-pretty-signature
   
      | getNodesFromLayer(**layerId**\ : :js:data:`~LayerId`\ , **onlyTreeNodes**\ : *boolean*\ ): (*None* \| *number*\ [])
   
   Returns IDs of nodes in the given layer.
   
   **Parameters**
   
      **layerId**\ : :js:data:`~LayerId`
   
         The layer ID to get nodes from.
   
   
      **onlyTreeNodes**\ : *boolean*
   
         if true return only nodes present in model Tree
   
   
   
   **Returns**\ : (*None* \| *number*\ [])
   
      An array of nodes Id of nodes with the given layerId or null if no layers are found.
   
   



.. js:method:: Model.getNodesFromLayerName

   .. rst-class:: sig-pretty-signature
   
      | getNodesFromLayerName(**layerName**\ : *string*\ , **onlyTreeNodes**\ : *boolean*\ ): (*None* \| *number*\ [])
   
   Returns IDs of nodes in the given layer.
   
   **Parameters**
   
      **layerName**\ : *string*
   
      **onlyTreeNodes**\ : *boolean*
   
         if true return only nodes present in model Tree
   
   
   
   **Returns**\ : (*None* \| *number*\ [])
   
      An array of nodes Id of nodes with the given layerName or null if no layers are found.
   
   



.. js:method:: Model.getNodesFromLayers

   .. rst-class:: sig-pretty-signature
   
      | getNodesFromLayers(**layersId**\ : :js:data:`~LayerId`\ [], **onlyTreeNodes**\ : *boolean*\ ): (*None* \| *number*\ [])
   
   Returns IDs of nodes in given layers.
   
   **Parameters**
   
      **layersId**\ : :js:data:`~LayerId`\ []
   
         Array of layers Id to get nodes from.
   
   
      **onlyTreeNodes**\ : *boolean*
   
         if true return only nodes present in model Tree
   
   
   
   **Returns**\ : (*None* \| *number*\ [])
   
      An array of nodes Id of nodes with one of the given layerId or null if no layers are found.
   
   



.. js:method:: Model.getNodesHaveTransparency

   .. rst-class:: sig-pretty-signature
   
      | getNodesHaveTransparency(**nodeIds**\ : *number*\ []): *Promise*
   
   Returns whether nodes with the given NodeIds have an opacity value that is not fully opaque.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes to query.
   
   
   
   **Returns**\ : *Promise*
   
      array of boolean values corresponding to the id array passed into the function.  A value of true indicates that the node contains transparency and is not fully opaque.
   
   



.. js:method:: Model.getNodesHighlighted

   .. rst-class:: sig-pretty-signature
   
      | getNodesHighlighted(**partIds**\ : *number*\ []): *Promise*
   
   Returns whether the supplied nodes have been highlighted with [[setNodesHighlighted]].
   
   **Parameters**
   
      **partIds**\ : *number*\ []
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesInstancingSamePart

   .. rst-class:: sig-pretty-signature
   
      | getNodesInstancingSamePart(**nodeId**\ : *number*\ ): *Promise*
   
   Returns IDs of nodes who instance the same part as the supplied node. This method should be called on nodes whose type is ``PartInstance``\ .
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   
      Array containing ``PartInstance`` node IDs. These nodes all instance the same part as the supplied node.  If this method is called on a node which is not of type ``PartInstance`` then ``null`` will be returned.
   
   



.. js:method:: Model.getNodesLineColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesLineColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the color set via [[setNodesLineColor]] on the lines of a list of leaf nodes. If no color has been set for a particular node, ``null`` will appear at the corresponding position in the returned array.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesMaterial

   .. rst-class:: sig-pretty-signature
   
      | getNodesMaterial(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the material properties of a node. This will combine material properties set at runtime with authored material properties to return the complete current material.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves with an array of material properties for each node
   
   



.. js:method:: Model.getNodesOpacity

   .. rst-class:: sig-pretty-signature
   
      | getNodesOpacity(**leafNodes**\ : *number*\ []): *Promise*
   
   Gets the opacity set via [[setNodesOpacity]] on a list of leaf nodes. If no value has been set for a particular node, ``null`` will appear at the corresponding position in the returned array.
   
   **Parameters**
   
      **leafNodes**\ : *number*\ []
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodesPointColor

   .. rst-class:: sig-pretty-signature
   
      | getNodesPointColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Gets the color set via [[setNodesPointColor]] on the points of a list of leaf nodes. If no color has been explicitly set for a particular node, ``null`` will appear at the corresponding position in the returned array. <br><br> See also: [[getNodesEffectivePointColor]]
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of the nodes to be queried
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.getNodeType

   .. rst-class:: sig-pretty-signature
   
      | getNodeType(**nodeId**\ : *number*\ ): :js:data:`~NodeType`
   
   Returns the type of the node with the given ID.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : :js:data:`~NodeType`
   
      The type of the node.
   
   



.. js:method:: Model.getNodeUnitMultiplier

   .. rst-class:: sig-pretty-signature
   
      | getNodeUnitMultiplier(**nodeId**\ : *number*\ ): *number*
   
   Returns the unit multiplier affecting the supplied node. This number is a multiplier of millimeters (for example inches will be ``25.4``\ ). The default value is ``1.0``\ .
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *number*
   
      The unit multiplier for the model (in mm)
   
   



.. js:method:: Model.getNodeUserData

   .. rst-class:: sig-pretty-signature
   
      | getNodeUserData(**nodeId**\ : *number*\ , **index**\ : :js:data:`~UserDataIndex`\ ): *Uint8Array*
   
   Returns the user data for a given node and index.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The ID of the node to query.
   
   
      **index**\ : :js:data:`~UserDataIndex`
   
         The index of the data.
   
   
   
   **Returns**\ : *Uint8Array*
   
      The user data.
   
   



.. js:method:: Model.getNodeUserDataIndices

   .. rst-class:: sig-pretty-signature
   
      | getNodeUserDataIndices(**nodeId**\ : *number*\ ): :js:data:`~UserDataIndex`\ []
   
   Returns all the ``UserDataIndex`` items associated with the input node.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The ID of the node to query.
   
   
   
   **Returns**\ : :js:data:`~UserDataIndex`\ []
   
      A list of ``UserDataIndex``\ , possibly empty.
   
   



.. js:method:: Model.getNodeVisibility

   .. rst-class:: sig-pretty-signature
   
      | getNodeVisibility(**nodeId**\ : *number*\ ): *boolean*
   
   Returns the current visibility for a node.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to get visibility for.
   
   
   
   **Returns**\ : *boolean*
   
      true if the current node's visibility state is on or false if it is not.
   
   



.. js:method:: Model.getOutOfHierarchy

   .. rst-class:: sig-pretty-signature
   
      | getOutOfHierarchy(**nodeId**\ : *number*\ ): *boolean*
   
   Returns "Out Of Hierarchy" status for child node for the given Id.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *boolean*
   
      false if node is Out Of Hierarchy, true if it is
   
   



.. js:method:: Model.getPmiColor

   .. rst-class:: sig-pretty-signature
   
      | getPmiColor(): :js:class:`~Color`
   
   Returns the set PMI override color  (if none is set, defaults to black)
   
   **Returns**\ : :js:class:`~Color`
   
      color
   
   



.. js:method:: Model.getPmiColorOverride

   .. rst-class:: sig-pretty-signature
   
      | getPmiColorOverride(): *boolean*
   
   **Returns**\ : *boolean*
   
      a boolean value indicating the status of the PMI override color.
   
   



.. js:method:: Model.getPmis

   .. rst-class:: sig-pretty-signature
   
      | getPmis(): :js:class:`~IdStringMap`
   
   Returns names and ids of all the PMIs available in the scene
   
   **Returns**\ : :js:class:`~IdStringMap`
   
      a map associating PMI IDs to PMI names
   
   



.. js:method:: Model.getPmiSubtype

   .. rst-class:: sig-pretty-signature
   
      | getPmiSubtype(**pmiId**\ : *number*\ ): :js:data:`~PmiSubType`
   
   Returns the subtype of a given PMI
   
   **Parameters**
   
      **pmiId**\ : *number*
   
   
   **Returns**\ : :js:data:`~PmiSubType`
   
      Subtype of the PMI (Dimension distance, Datum target, GD&T fcf...)
   
   



.. js:method:: Model.getPmiTopologyReferences

   .. rst-class:: sig-pretty-signature
   
      | getPmiTopologyReferences(**pmiNodeId**\ : *number*\ ): (*None* \| :js:class:`~RefOnTopoItem`\ [])
   
   Gets an array of PMI topology references linking a PMI node to a body element, like a face or an edge.
   
   **Parameters**
   
      **pmiNodeId**\ : *number*
   
         the ID of the PMI node.
   
   
   
   **Returns**\ : (*None* \| :js:class:`~RefOnTopoItem`\ [])
   



.. js:method:: Model.getPmiType

   .. rst-class:: sig-pretty-signature
   
      | getPmiType(**pmiId**\ : *number*\ ): :js:data:`~PmiType`
   
   Returns the type of a given PMI
   
   **Parameters**
   
      **pmiId**\ : *number*
   
   
   **Returns**\ : :js:data:`~PmiType`
   
      Type of the PMI (Dimension, Datum, GD&T...)
   
   



.. js:method:: Model.getPointAttributes

   .. rst-class:: sig-pretty-signature
   
      | getPointAttributes(**nodeId**\ : *number*\ , **pointIndex**\ : *number*\ ): *Promise*
   
   Returns point attributes for a node of the given node and point.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         Node to retrieve point properties from
   
   
      **pointIndex**\ : *number*
   
         Index of point for which to retrieve point attributes
   
   
   
   **Returns**\ : *Promise*
   
      Promise for the requested point attributes. Properties returned will be null if none associated with the point.
   
   



.. js:method:: Model.getRelationshipTypesFromBimId

   .. rst-class:: sig-pretty-signature
   
      | getRelationshipTypesFromBimId(**node**\ : *number*\ , **bimId**\ : *string*\ ): :js:data:`~RelationshipType`\ []
   
   Retrieves all type of relationships that a bim id has.
   
   **Parameters**
   
      **node**\ : *number*
   
         any known node id of the working model.
   
   
      **bimId**\ : *string*
   
         bim id for which you want its types of relationships.
   
   
   
   **Returns**\ : :js:data:`~RelationshipType`\ []
   
      array of type of relationship corresponding to the BimId.
   
   



.. js:method:: Model.getScInstanceKey

   .. rst-class:: sig-pretty-signature
   
      | getScInstanceKey(**nodeId**\ : *number*\ ): (*None* \| :js:data:`InstanceInc <Sc.InstanceInc>`\ )
   
   Returns the SC ID of a body instance
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         node instance ID. This must be a body node
   
   
   
   **Returns**\ : (*None* \| :js:data:`InstanceInc <Sc.InstanceInc>`\ )
   
      SC instance ID, a pair of numbers consisting of the inclusion ID and the instance ID. null is returned if the function fails.
   
   



.. js:method:: Model.getUniqueLayerNames

   .. rst-class:: sig-pretty-signature
   
      | getUniqueLayerNames(): *string*\ []
   
   Return names of layers. Different layers can have the same name. Some layers can be unnamed.
   
   **Returns**\ : *string*\ []
   
      Names of layers
   
   



.. js:method:: Model.getViewAxes

   .. rst-class:: sig-pretty-signature
   
      | getViewAxes(): :js:class:`~ViewAxes`
   
   **Returns**\ : :js:class:`~ViewAxes`
   
      the up and front vectors for the model coordinate system.
   
   



.. js:method:: Model.getVisibilityState

   .. rst-class:: sig-pretty-signature
   
      | getVisibilityState(**startNodeId**\ : *number*\ ): *Promise*
   
   Returns a defaultVisibility boolean value and a visibilityException set of NodeIds. defaultVisibility will be true if there are more nodes visible than hidden, and false otherwise. If defaultVisibility is true, set of nodes that are hidden, if false, nodes that are visible.
   
   **Parameters**
   
      **startNodeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.hasDepthRange

   .. rst-class:: sig-pretty-signature
   
      | hasDepthRange(**nodeIds**\ : *number*\ []): *Promise*
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.hasEffectiveGenericType

   .. rst-class:: sig-pretty-signature
   
      | hasEffectiveGenericType(**nodeId**\ : *number*\ , **genericType**\ : *string*\ ): *boolean*
   
   Checks if a [[NodeId]] is a generic type.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **genericType**\ : *string*
   
   
   **Returns**\ : *boolean*
   



.. js:method:: Model.isAnnotationView

   .. rst-class:: sig-pretty-signature
   
      | isAnnotationView(**cadViewNodeId**\ : *number*\ ): *boolean*
   
   Tells if the view is an annotation view or not
   
   **Parameters**
   
      **cadViewNodeId**\ : *number*
   
         Node ID of the CAD view
   
   
   
   **Returns**\ : *boolean*
   
      true if the view is an annotation view
   
   



.. js:method:: Model.isCombineStateView

   .. rst-class:: sig-pretty-signature
   
      | isCombineStateView(**cadViewNodeId**\ : *number*\ ): *boolean*
   
   Tells if the view is a combine state view or not
   
   **Parameters**
   
      **cadViewNodeId**\ : *number*
   
         Node ID of the CAD view
   
   
   
   **Returns**\ : *boolean*
   
      true if the view is a combine state view
   
   



.. js:method:: Model.isDrawing

   .. rst-class:: sig-pretty-signature
   
      | isDrawing(): *boolean*
   
   Tells if the model is a CAD drawing or not
   
   **Returns**\ : *boolean*
   
      true if the model is a CAD drawing
   
   



.. js:method:: Model.isFaceMeasurable

   .. rst-class:: sig-pretty-signature
   
      | isFaceMeasurable(**bodyId**\ : *number*\ , **faceIndex**\ : *number*\ ): *Promise*
   
   **Parameters**
   
      **bodyId**\ : *number*
   
      **faceIndex**\ : *number*
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.isLineMeasurable

   .. rst-class:: sig-pretty-signature
   
      | isLineMeasurable(**bodyId**\ : *number*\ , **lineIndex**\ : *number*\ ): *Promise*
   
   **Parameters**
   
      **bodyId**\ : *number*
   
         ID of the body node containing the line
   
   
      **lineIndex**\ : *number*
   
         Index of the line ot be checked
   
   
   
   **Returns**\ : *Promise*
   
      true if the line has associated measurement data
   
   



.. js:method:: Model.isMeasurable

   .. rst-class:: sig-pretty-signature
   
      | isMeasurable(): *boolean*
   
   **Returns**\ : *boolean*
   
      true if the model contains measurement data.
   
   



.. js:method:: Model.isNodeLoaded

   .. rst-class:: sig-pretty-signature
   
      | isNodeLoaded(**nodeId**\ : *number*\ ): *boolean*
   
   Queries if a node is fully loaded or not.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         The node to query.
   
   
   
   **Returns**\ : *boolean*
   
      True if the node is fully loaded; false otherwise.
   
   



.. js:method:: Model.isWithinExternalModel

   .. rst-class:: sig-pretty-signature
   
      | isWithinExternalModel(**nodeId**\ : *number*\ ): *boolean*
   
   Returns true if the node is within an external model.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *boolean*
   



.. js:method:: Model.loadMeasurementFromFile

   .. rst-class:: sig-pretty-signature
   
      | loadMeasurementFromFile(**filename**\ : *string*\ ): *Promise*
   
   Loads measurement data from a ZIP file
   
   **Parameters**
   
      **filename**\ : *string*
   
         Name of a file containing ZIP measurement data
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.loadMeasurementFromJson

   .. rst-class:: sig-pretty-signature
   
      | loadMeasurementFromJson(**json**\ : *any*\ ): *Promise*
   
   Loads measurement data from a JSON object
   
   **Parameters**
   
      **json**\ : *any*
   
         JSON object containing measurement data
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.loadMeasurementFromString

   .. rst-class:: sig-pretty-signature
   
      | loadMeasurementFromString(**str**\ : *string*\ ): *Promise*
   
   Loads measurement data from a JSON string
   
   **Parameters**
   
      **str**\ : *string*
   
         JSON string containing measurement data
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.loadSubtreeFromModel

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromModel(**nodeId**\ : *number*\ , **modelName**\ : *string*\ , **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in a model file and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the subtree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **modelName**\ : *string*
   
         The name of the model to load.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromModel(**nodeId**\ : *number*\ , **modelName**\ : *string*\ , **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )): *Promise*
   
   Loads the tree stored in a model file and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the subtree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **modelName**\ : *string*
   
         The name of the model to load.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   



.. js:method:: Model.loadSubtreeFromScsBuffer

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsBuffer(**nodeId**\ : *number*\ , **buffer**\ : :js:data:`ScsBuffer <Sc.ScsBuffer>`\ , **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in a model file and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the subtree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **buffer**\ : :js:data:`ScsBuffer <Sc.ScsBuffer>`
   
         The SCS buffer to load.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsBuffer(**nodeId**\ : *number*\ , **buffer**\ : :js:data:`ScsBuffer <Sc.ScsBuffer>`\ , **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )): *Promise*
   
   Loads the tree stored in a model file and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the subtree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **buffer**\ : :js:data:`ScsBuffer <Sc.ScsBuffer>`
   
         The SCS buffer to load.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   



.. js:method:: Model.loadSubtreeFromScsFile

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsFile(**nodeId**\ : *number*\ , **scsFilename**\ : *string*\ , **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in a model file and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the subtree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **scsFilename**\ : *string*
   
         The name of the SCS file to load.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsFile(**nodeId**\ : *number*\ , **scsFilename**\ : *string*\ , **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )): *Promise*
   
   Loads the tree stored in a model file and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the subtree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **scsFilename**\ : *string*
   
         The name of the SCS file to load.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   



.. js:method:: Model.loadSubtreeFromScsXmlBuffer

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsXmlBuffer(**nodeId**\ : *number*\ , **xmlData**\ : (*string* \| *Document*\ ), **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ ), **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes Load order is determined by the projected size of bounding information present in the XML. If streamCutoffScale is set to a non zero value, a file whose projected size is lower than the cutoff will not be streamed until its projected size reaches the cutoff.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlData**\ : (*string* \| *Document*\ )
   
         XML document or XML document string.
   
   
      **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ )
   
         Optional callback to massage model names within the XML file to SCS file URLS or SCS file buffers. Return null to skip the model.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs that will resolve when all files have been loaded.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsXmlBuffer(**nodeId**\ : *number*\ , **xmlData**\ : (*string* \| *Document*\ ), **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ ), **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ ), **allowMissingExternalModels**\ : *boolean*\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes. Load order is determined by the projected size of bounding information present in the XML. If streamCutoffScale is set to a non zero value, a file whose projected size is lower than the cutoff will not be streamed until its projected size reaches the cutoff.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlData**\ : (*string* \| *Document*\ )
   
         XML document or XML document string.
   
   
      **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ )
   
         Optional callback to massage model names within the XML file to SCS file URLS or SCS file buffers. Return null to skip the model.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
      **allowMissingExternalModels**\ : *boolean*
   
         Optional boolean to control whether or not missing models in the XML file are ignored or cause an error.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs that will resolve when all files have been loaded.
   
   



.. js:method:: Model.loadSubtreeFromScsXmlFile

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsXmlFile(**nodeId**\ : *number*\ , **xmlFilename**\ : *string*\ , **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ ), **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes Load order is determined by the projected size of bounding information present in the XML. If streamCutoffScale is set to a non zero value, a file whose projected size is lower than the cutoff will not be streamed until its projected size reaches the cutoff.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlFilename**\ : *string*
   
         URL of XML file to load.
   
   
      **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ )
   
         Optional callback to massage model names within the XML file to SCS file URLS or SCS file buffers. Return null to skip the model.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs that will resolve when all files have been loaded.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromScsXmlFile(**nodeId**\ : *number*\ , **xmlFilename**\ : *string*\ , **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ ), **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ ), **allowMissingExternalModels**\ : *boolean*\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes Load order is determined by the projected size of bounding information present in the XML. If streamCutoffScale is set to a non zero value, a file whose projected size is lower than the cutoff will not be streamed until its projected size reaches the cutoff.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlFilename**\ : *string*
   
         URL of XML file to load.
   
   
      **modelNameToScs**\ : (*None* \| :js:data:`~ModelNameToScsFileFunc`\ )
   
         Optional callback to massage model names within the XML file to SCS file URLS or SCS file buffers. Return null to skip the model.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
      **allowMissingExternalModels**\ : *boolean*
   
         Optional boolean to control whether or not missing models in the XML file are ignored or cause an error.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs that will resolve when all files have been loaded.
   
   



.. js:method:: Model.loadSubtreeFromXmlBuffer

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromXmlBuffer(**nodeId**\ : *number*\ , **xmlData**\ : (*string* \| *Document*\ ), **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ ), **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlData**\ : (*string* \| *Document*\ )
   
         XML document or XML document string.
   
   
      **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ )
   
         Optional callback to massage model names within the XML file. Return null to skip the model.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromXmlBuffer(**nodeId**\ : *number*\ , **xmlData**\ : (*string* \| *Document*\ ), **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ ), **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ ), **allowMissingExternalModels**\ : *boolean*\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlData**\ : (*string* \| *Document*\ )
   
         XML document or XML document string.
   
   
      **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ )
   
         Optional callback to massage model names within the XML file. Return null to skip the model.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
      **allowMissingExternalModels**\ : *boolean*
   
         Optional boolean to control whether or not missing models in the XML file are ignored or cause an error.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   



.. js:method:: Model.loadSubtreeFromXmlFile

   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromXmlFile(**nodeId**\ : *number*\ , **xmlFilename**\ : *string*\ , **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ ), **config**\ : :js:class:`~LoadSubtreeConfig`\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlFilename**\ : *string*
   
         URL of XML file to load.
   
   
      **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ )
   
         Optional callback to massage model names within the XML file. Return null to skip the model.
   
   
      **config**\ : :js:class:`~LoadSubtreeConfig`
   
         Configuration to control load behavior.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   
   .. rst-class:: sig-pretty-signature
   
      | loadSubtreeFromXmlFile(**nodeId**\ : *number*\ , **xmlFilename**\ : *string*\ , **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ ), **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ ), **allowMissingExternalModels**\ : *boolean*\ ): *Promise*
   
   Loads the tree stored in the XML and query loading of required meshes
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         ID of the node to link the sub tree with. This ID should not have a type of Body or BodyInstance. If this parameter is null, the sub tree will be linked to the root. This method will trigger a subtreeLoaded event.
   
   
      **xmlFilename**\ : *string*
   
         URL of XML file to load.
   
   
      **massageModelName**\ : (*None* \| :js:data:`~MassageModelNameFunc`\ )
   
         Optional callback to massage model names within the XML file. Return null to skip the model.
   
   
      **additionalMatrix**\ : (*None* \| :js:class:`~Matrix`\ )
   
         Optional matrix to get multiplied into the net attachment matrix.
   
   
      **allowMissingExternalModels**\ : *boolean*
   
         Optional boolean to control whether or not missing models in the XML file are ignored or cause an error.
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   



.. js:method:: Model.registerBimNodes

   .. rst-class:: sig-pretty-signature
   
      | registerBimNodes(**startNodeId**\ : *number*\ , **attributeToMask**\ : (**value**\ : *string*\ ) => :js:data:`BimMask <Sc.BimMask>`\ , **legacy_useAttributeTitle**\ : (*None* \| *string* \| *boolean*\ )?): *Promise*
   
   This function recursively discovers BIM nodes in the supplied subtree and registers them.
   
   **Parameters**
   
      **startNodeId**\ : *number*
   
         The root of the subtree to walk for registration.
   
   
      **attributeToMask**\ : (**value**\ : *string*\ ) => :js:data:`BimMask <Sc.BimMask>`
   
         The callback used to obtain a node's [[BimMask]] from its attributes.
   
   
      **legacy_useAttributeTitle**\ : (*None* \| *string* \| *boolean*\ ) = null
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.registerIfcNodes

   .. rst-class:: sig-pretty-signature
   
      | registerIfcNodes(**startNodeId**\ : *number*\ , **legacy_useAttributeTitle**\ : (*None* \| *string* \| *boolean*\ )?): *Promise*
   
   This function recursively discovers IFC nodes in the supplied subtree and registers them.
   
   **Parameters**
   
      **startNodeId**\ : *number*
   
         The root of the subtree to walk for registration.
   
   
      **legacy_useAttributeTitle**\ : (*None* \| *string* \| *boolean*\ ) = null
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.replaceMesh

   .. rst-class:: sig-pretty-signature
   
      | replaceMesh(**id**\ : :js:data:`~MeshId`\ , **data**\ : :js:class:`~MeshData`\ ): *Promise*
   
   Replace a mesh's data. This will affect all instances of that mesh.
   
   **Parameters**
   
      **id**\ : :js:data:`~MeshId`
   
      **data**\ : :js:class:`~MeshData`
   
         the new data
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.requestNodes

   .. rst-class:: sig-pretty-signature
   
      | requestNodes(**nodeIds**\ : *number*\ []): *Promise*
   
   Specifies nodes for the system to load. This method is useful when the viewer was created with the <code>streamOnDemand</code> option set to true.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         array of unique IDs for the system to load
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.reset

   .. rst-class:: sig-pretty-signature
   
      | reset(): *Promise*
   
   Resets the state of the model to its default
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.resetModelHighlight

   .. rst-class:: sig-pretty-signature
   
      | resetModelHighlight(): *Promise*
   
   Resets highlight for all nodes in the model.
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.resetModelOpacity

   .. rst-class:: sig-pretty-signature
   
      | resetModelOpacity(): *void*
   
   Resets opacity for all nodes in the model.
   
   **Returns**\ : *void*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.resetNodeMatrixToInitial

   .. rst-class:: sig-pretty-signature
   
      | resetNodeMatrixToInitial(**nodeId**\ : *number*\ ): *Promise*
   
   Reset node matrix to the one set as the initial one
   
   **Parameters**
   
      **nodeId**\ : *number*
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.resetNodesColor

   .. rst-class:: sig-pretty-signature
   
      | resetNodesColor(): *Promise*
   
   Resets color for all nodes in the model.
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.resetNodesMaterial

   .. rst-class:: sig-pretty-signature
   
      | resetNodesMaterial(**nodeIds**\ : *number*\ [], **params**\ : keyof :js:class:`~IMaterial`\ []): *void*
   
   Resets material properties for a given list of nodes to their default values.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose material properties to reset
   
   
      **params**\ : keyof :js:class:`~IMaterial`\ []
   
         optional array of specific material parameters to reset. If not provided, all material properties will be reset.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.resetNodesOpacity

   .. rst-class:: sig-pretty-signature
   
      | resetNodesOpacity(**nodeIds**\ : *number*\ []): *void*
   
   Resets opacity for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose opacity will be reset to their default values
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.resetNodesTransform

   .. rst-class:: sig-pretty-signature
   
      | resetNodesTransform(): *Promise*
   
   Resets transform for all nodes in the model.
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.resetNodesVisibility

   .. rst-class:: sig-pretty-signature
   
      | resetNodesVisibility(): *Promise*
   
   Resets visibility for all nodes in the model.
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.setBehaviorInitiallyHidden

   .. rst-class:: sig-pretty-signature
   
      | setBehaviorInitiallyHidden(**enabled**\ : *boolean*\ ): *void*
   
   By default, objects that are initially hidden stays hidden unless specifically set to be shown. This function allows this behavior to be disabled.
   
   **Parameters**
   
      **enabled**\ : *boolean*
   
         value indicating if initially hidden objects stay hidden
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setBodyNodesVisibility

   .. rst-class:: sig-pretty-signature
   
      | setBodyNodesVisibility(**startNodeId**\ : *number*\ , **visibility**\ : *boolean*\ ): *Promise*
   
   Sets the visibility of all body nodes starting from a given node.
   
   **Parameters**
   
      **startNodeId**\ : *number*
   
         The start node to walk when updating body nodes visibility.
   
   
      **visibility**\ : *boolean*
   
         If true, nodes will be shown. If false, they will be hidden.
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   
   .. rst-class:: sig-pretty-signature
   
      | setBodyNodesVisibility(**startNodeId**\ : *number*\ , **visibilityFormatter**\ : (**node**\ : *number*\ ) => (*undefined* \| *boolean*\ )): *Promise*
   
   Sets the visibility of all body nodes starting from a given node.
   
   **Parameters**
   
      **startNodeId**\ : *number*
   
         The start node to walk when updating body nodes visibility.
   
   
      **visibilityFormatter**\ : (**node**\ : *number*\ ) => (*undefined* \| *boolean*\ )
   
         A function that returns the visibility for a given node id
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.setDepthRange

   .. rst-class:: sig-pretty-signature
   
      | setDepthRange(**nodeIds**\ : *number*\ [], **min**\ : *number*\ , **max**\ : *number*\ ): *Promise*
   
   Remaps the depth values used for z-ordering of pixels to the given range, which must be a subset of ``[0,1]``\ . The depth value at the near plane (normally ``0``\ ) is mapped to ``min`` and the value at the far plane (normally ``1``\ ) is mapped to ``max``\ .
   
   The smaller the range, the more z-fighting you will see among objects set to that range.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         the node IDs to operate on
   
   
      **min**\ : *number*
   
         the depth value at the near plane
   
   
      **max**\ : *number*
   
         the depth value at the far plane
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setEdgeProperty

   .. rst-class:: sig-pretty-signature
   
      | setEdgeProperty(**nodeId**\ : *number*\ , **edgeId**\ : *number*\ , **prop**\ : *Base*\ ): *void*
   
   Set edge property for a node of the given node and edge.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **edgeId**\ : *number*
   
      **prop**\ : *Base*
   
         property (CircleElement, LineElement...)
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setEnableAutomaticUnitScaling

   .. rst-class:: sig-pretty-signature
   
      | setEnableAutomaticUnitScaling(**enabled**\ : *boolean*\ ): *void*
   
   If enabled then models loaded into an existing scene with a different unit value will be scaled to the unit value of the current scene.
   
   **Parameters**
   
      **enabled**\ : *boolean*
   
         value indicating if automatic unit scaling will be active
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setFaceProperty

   .. rst-class:: sig-pretty-signature
   
      | setFaceProperty(**nodeId**\ : *number*\ , **faceId**\ : *number*\ , **prop**\ : *Base*\ ): *void*
   
   Set face property for a node of the given node and face.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **faceId**\ : *number*
   
      **prop**\ : *Base*
   
         property (CylinderElement, PlaneElement...)
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setInstanceModifier

   .. rst-class:: sig-pretty-signature
   
      | setInstanceModifier(**instanceModifier**\ : :js:data:`~InstanceModifier`\ , **nodeIds**\ : *number*\ [], **value**\ : *boolean*\ ): *Promise*
   
   Allows changing the behavior in the viewer
   
   **Parameters**
   
      **instanceModifier**\ : :js:data:`~InstanceModifier`
   
         InstanceModifier
   
   
      **nodeIds**\ : *number*\ []
   
         Array of node ids
   
   
      **value**\ : *boolean*
   
         boolean
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setMeshLevel

   .. rst-class:: sig-pretty-signature
   
      | setMeshLevel(**nodeIds**\ : *number*\ [], **meshLevel**\ : *number*\ ): *Promise*
   
   Sets the desired mesh level
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes in the assembly on which mesh level will be set
   
   
      **meshLevel**\ : *number*
   
         0 standard, 1 low, 2 extra low
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.setMetallicRoughness

   .. rst-class:: sig-pretty-signature
   
      | setMetallicRoughness(**nodeIds**\ : *number*\ [], **metallicFactor**\ : *number*\ , **roughnessFactor**\ : *number*\ ): *void*
   
   Sets the metallic and roughness factors for the supplied nodes materials. Materials that are not currently set to use the Metallic Roughness shading model will be upgraded to use this mode.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         List of nodes to set material properties for
   
   
      **metallicFactor**\ : *number*
   
         The metalness of the material
   
   
      **roughnessFactor**\ : *number*
   
         The roughness of the material
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodeFaceColor

   .. rst-class:: sig-pretty-signature
   
      | setNodeFaceColor(**partId**\ : *number*\ , **faceId**\ : *number*\ , **color**\ : :js:class:`~Color`\ ): *Promise*
   
   Sets the color for a face element. This color will take precedence over any currently set color on the node
   
   **Parameters**
   
      **partId**\ : *number*
   
      **faceId**\ : *number*
   
         the Id of the face in the node that will have its color set
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodeFaceHighlighted

   .. rst-class:: sig-pretty-signature
   
      | setNodeFaceHighlighted(**nodeId**\ : *number*\ , **faceId**\ : *number*\ , **highlighted**\ : *boolean*\ ): *Promise*
   
   Sets whether the face element for a given node should appear highlighted. When a face element is highlighted, the highlight color will override any color previously set on the element.
   
   **Parameters**
   
      **nodeId**\ : *number*
   
         the id for the node containing the face element.
   
   
      **faceId**\ : *number*
   
         the face Id that is the target of this operation.
   
   
      **highlighted**\ : *boolean*
   
         value indicating whether the supplied face element should be highlighted.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodeFaceVisibility

   .. rst-class:: sig-pretty-signature
   
      | setNodeFaceVisibility(**partId**\ : *number*\ , **faceId**\ : *number*\ , **visibility**\ : *boolean*\ ): *void*
   
   Sets the visibility for a face element. This visibility setting will take precedence over other element visibility settings
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the part containing the face
   
   
      **faceId**\ : *number*
   
         the Id of the face in the node that will have its visibility set
   
   
      **visibility**\ : *boolean*
   
         visibility state to be set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodeLineColor

   .. rst-class:: sig-pretty-signature
   
      | setNodeLineColor(**partId**\ : *number*\ , **lineId**\ : *number*\ , **color**\ : :js:class:`~Color`\ ): *Promise*
   
   Sets the color for a line element.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **lineId**\ : *number*
   
         the Id of the line in the node that will have its color set.
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodeLineHighlighted

   .. rst-class:: sig-pretty-signature
   
      | setNodeLineHighlighted(**partId**\ : *number*\ , **lineId**\ : *number*\ , **highlighted**\ : *boolean*\ ): *Promise*
   
   Sets whether the line element for a given node should appear highlighted. When a line element is highlighted, the highlight color will override any color previously set on the element.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **lineId**\ : *number*
   
         the line Id that is the target of this operation.
   
   
      **highlighted**\ : *boolean*
   
         value indicating whether the supplied line element should be highlighted.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodeLineVisibility

   .. rst-class:: sig-pretty-signature
   
      | setNodeLineVisibility(**partId**\ : *number*\ , **lineId**\ : *number*\ , **visibility**\ : *boolean*\ ): *void*
   
   Sets the visibility for a line element. This visibility setting will take precedence over other element visibility settings
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the part containing the line
   
   
      **lineId**\ : *number*
   
         the Id of the line in the node that will have its visibility set
   
   
      **visibility**\ : *boolean*
   
         visibility state to be set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodeMatrix

   .. rst-class:: sig-pretty-signature
   
      | setNodeMatrix(**nodeId**\ : *number*\ , **matrix**\ : :js:class:`~Matrix`\ , **setAsInitial**\ : *boolean*\ ?): *Promise*
   
   Sets Matrix for a node of the given ID
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **matrix**\ : :js:class:`~Matrix`
   
      **setAsInitial**\ : *boolean* = false
   
         tells if you want to change the node initial matrix or not
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodePointColor

   .. rst-class:: sig-pretty-signature
   
      | setNodePointColor(**partId**\ : *number*\ , **pointId**\ : *number*\ , **color**\ : :js:class:`~Color`\ ): *void*
   
   Sets the color for a point element.
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the node containing the point.
   
   
      **pointId**\ : *number*
   
         the Id of the point in the node that will have its color set.
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodePointHighlighted

   .. rst-class:: sig-pretty-signature
   
      | setNodePointHighlighted(**partId**\ : *number*\ , **pointId**\ : *number*\ , **highlighted**\ : *boolean*\ ): *Promise*
   
   Sets whether the point element for a given node should appear highlighted. When a point element is highlighted, the highlight color will override any color previously set on the element.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **pointId**\ : *number*
   
         the point Id that is the target of this operation.
   
   
      **highlighted**\ : *boolean*
   
         value indicating whether the supplied point element should be highlighted.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodePointVisibility

   .. rst-class:: sig-pretty-signature
   
      | setNodePointVisibility(**partId**\ : *number*\ , **pointId**\ : *number*\ , **visibility**\ : *boolean*\ ): *void*
   
   Sets the visibility for a point element. This visibility setting will take precedence over other element visibility settings
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the part containing the point
   
   
      **pointId**\ : *number*
   
         the Id of the point in the node that will have its visibility set
   
   
      **visibility**\ : *boolean*
   
         visibility state to be set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesAmbientColor

   .. rst-class:: sig-pretty-signature
   
      | setNodesAmbientColor(**nodeIds**\ : *number*\ [], **color**\ : :js:class:`~Color`\ ): *void*
   
   Sets the ambient color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesAmbientMix

   .. rst-class:: sig-pretty-signature
   
      | setNodesAmbientMix(**nodeIds**\ : *number*\ [], **value**\ : *number*\ ): *void*
   
   Sets the ambient mix on the faces for a given list of nodes. The mix is between the material ambient light and the global ambient light, with 1.0 representing full material ambient mix and 0.0 representing full global ambient light.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **value**\ : *number*
   
         the decimal value to set, between 0 and 1
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesColors

   .. rst-class:: sig-pretty-signature
   
      | setNodesColors(**colorMap**\ : (*Map* \| :js:class:`~IdColorMap`\ ), **alsoApplyToWireframe**\ : *boolean*\ ?, **alsoApplyToPoints**\ : *boolean*\ ?): *Promise*
   
   Sets colors for a given set of nodes.
   
   **Parameters**
   
      **colorMap**\ : (*Map* \| :js:class:`~IdColorMap`\ )
   
      **alsoApplyToWireframe**\ : *boolean* = false
   
         change or not lines color
   
   
      **alsoApplyToPoints**\ : *boolean* = false
   
         change or not points color
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.setNodesCullingVector

   .. rst-class:: sig-pretty-signature
   
      | setNodesCullingVector(**nodeIds**\ : *number*\ [], **space**\ : :js:data:`~CullingVectorSpace`\ , **vector**\ : :js:class:`~Point3`\ , **toleranceDegrees**\ : *number*\ ): *Promise*
   
   Sets a vector and angle used to determine an object's visibility based on camera orientation.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
      **space**\ : :js:data:`~CullingVectorSpace`
   
         The space in which the culling vector is defined.
   
   
      **vector**\ : :js:class:`~Point3`
   
         A vector that will be compared with the view vector.
   
   
      **toleranceDegrees**\ : *number*
   
         The maximum angle between the culling vector and the view vector within which the object will be visible.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodesDrawModes

   .. rst-class:: sig-pretty-signature
   
      | setNodesDrawModes(**nodesDrawModes**\ : *Record*\ ): *void*
   
   Set the draw modes for the given node ids. Given nodes will be drawn according to their specified draw modes, overriding draw mode of the view. Only leaf nodes attached to a body can have overriden draw mode. If other nodes are passed, the draw mode will be applied recursively to the children and grand children which are attached to a body.
   
   **Parameters**
   
      **nodesDrawModes**\ : *Record*
   
         A record mapping node ids to their desired draw modes.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesFaceColor

   .. rst-class:: sig-pretty-signature
   
      | setNodesFaceColor(**nodeIds**\ : *number*\ [], **color**\ : :js:class:`~Color`\ ): *Promise*
   
   Sets the color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.setNodesFaceEmissiveColor

   .. rst-class:: sig-pretty-signature
   
      | setNodesFaceEmissiveColor(**nodeIds**\ : *number*\ [], **color**\ : :js:class:`~Color`\ ): *void*
   
   Sets the emissive color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesFaceSpecularColor

   .. rst-class:: sig-pretty-signature
   
      | setNodesFaceSpecularColor(**nodeIds**\ : *number*\ [], **color**\ : :js:class:`~Color`\ ): *void*
   
   Sets the specular color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesFaceSpecularIntensity

   .. rst-class:: sig-pretty-signature
   
      | setNodesFaceSpecularIntensity(**nodeIds**\ : *number*\ [], **value**\ : *number*\ ): *void*
   
   Sets the specular intensity on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **value**\ : *number*
   
         the value to set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesHighlighted

   .. rst-class:: sig-pretty-signature
   
      | setNodesHighlighted(**partIds**\ : *number*\ [], **highlighted**\ : *boolean*\ ): *Promise*
   
   Sets whether the supplied nodes should appear highlighted. When a node is highlighted, the highlight color will override any color previously set on the model.
   
   *Tip:* An easy way to unhighlight the entire model is to call [[setNodesHighlighted]] on the root node of the model:
   
   
   ::
   
      hwv.model.setNodesHighlighted([hwv.model.getAbsoluteRootNode()], false);
   
   (In this case, ``hwv`` is your instance of [[WebViewer]].)
   
   **Parameters**
   
      **partIds**\ : *number*\ []
   
      **highlighted**\ : *boolean*
   
         value indicating whether the supplied nodes should be highlighted.
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.setNodesLineColor

   .. rst-class:: sig-pretty-signature
   
      | setNodesLineColor(**nodeIds**\ : *number*\ [], **color**\ : :js:class:`~Color`\ ): *Promise*
   
   Sets the color on the lines/edges for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **color**\ : :js:class:`~Color`
   
         the color to set
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.setNodesLinePattern

   .. rst-class:: sig-pretty-signature
   
      | setNodesLinePattern(**nodeIds**\ : *number*\ [], **pattern**\ : :js:data:`~LinePattern`\ , **patternLength**\ : *number*\ , **patternLengthUnit**\ : :js:data:`~LinePatternLengthUnit`\ ): *void*
   
   Applies the given line pattern to the specified nodes. See also [[unsetNodesLinePattern]].
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The IDs of the nodes.
   
   
      **pattern**\ : :js:data:`~LinePattern`
   
         The line pattern. See [[LinePattern]] for details.
   
   
      **patternLength**\ : *number*
   
         The length of a single repetition of the line pattern.
   
   
      **patternLengthUnit**\ : :js:data:`~LinePatternLengthUnit`
   
         The unit in which the length of the pattern is measured. See [[LinePatternLengthUnit]] for details.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesMaterial

   .. rst-class:: sig-pretty-signature
   
      | setNodesMaterial(**nodeIds**\ : *number*\ [], **material**\ : :js:class:`~IMaterial`\ ): *void*
   
   Sets material properties for a given list of nodes. Any properties not defined in the provided material will be left as-is.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose material properties to set
   
   
      **material**\ : :js:class:`~IMaterial`
   
         the material properties to apply
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesOpacities

   .. rst-class:: sig-pretty-signature
   
      | setNodesOpacities(**params**\ : (*Map* \| :js:class:`~IdNumberMap`\ )): *void*
   
   Sets opacity for a given set of nodes.
   
   **Parameters**
   
      **params**\ : (*Map* \| :js:class:`~IdNumberMap`\ )
   
         object mapping node IDs to opacity to set for that NodeId. The opacity value should be between the range of 0.0 and 1.0. 0.0 indicates fully transparent, while 1.0 is fully opaque.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesOpacity

   .. rst-class:: sig-pretty-signature
   
      | setNodesOpacity(**nodeIds**\ : *number*\ [], **opacity**\ : *number*\ ): *void*
   
   Sets opacity for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose opacity will be set
   
   
      **opacity**\ : *number*
   
         opacity value to apply to each node. The value should be between the range of 0.0 and 1.0. 0.0 indicates fully transparent, while 1.0 is fully opaque.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setNodesPointColor

   .. rst-class:: sig-pretty-signature
   
      | setNodesPointColor(**nodeIds**\ : *number*\ [], **color**\ : :js:class:`~Color`\ ): *void*
   
   Sets the color on the points for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
      **color**\ : :js:class:`~Color`
   
   
   **Returns**\ : *void*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.setNodesTexture

   .. rst-class:: sig-pretty-signature
   
      | setNodesTexture(**nodeIds**\ : *number*\ [], **options**\ : :js:class:`~TextureOptions`\ ): *Promise*
   
   Apply an image to a node as a texture map. See [[createImage]] and [[unsetNodesTexture]].
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The nodes on which to apply the texture
   
   
      **options**\ : :js:class:`~TextureOptions`
   
         Options specifying how the texture is applied
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.setNodesVisibilities

   .. rst-class:: sig-pretty-signature
   
      | setNodesVisibilities(**mapping**\ : (*Map* \| :js:class:`~IdBooleanMap`\ ), **initiallyHiddenStayHidden**\ : (*None* \| *boolean*\ )?): *Promise*
   
   Sets the visibility for a given set of nodes.
   
   **Parameters**
   
      **mapping**\ : (*Map* \| :js:class:`~IdBooleanMap`\ )
   
         The mapping of node IDs to boolean value indicating the visibility setting for that node.
   
   
      **initiallyHiddenStayHidden**\ : (*None* \| *boolean*\ ) = null
   
         Controls whether or not initially hidden geometries stay hidden. Default behavior is driven by [[setBehaviorInitiallyHidden]].
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.setNodesVisibility

   .. rst-class:: sig-pretty-signature
   
      | setNodesVisibility(**nodeIds**\ : *number*\ [], **visibility**\ : *boolean*\ , **initiallyHiddenStayHidden**\ : (*None* \| *boolean*\ )?): *Promise*
   
   Sets visibility for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The node IDs whose visibilities will be set.
   
   
      **visibility**\ : *boolean*
   
         If true, nodes will be shown. If false, they will be hidden.
   
   
      **initiallyHiddenStayHidden**\ : (*None* \| *boolean*\ ) = null
   
         Controls whether or not initially hidden geometries stay hidden. Default behavior is driven by [[setBehaviorInitiallyHidden]].
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when the operation has completed.
   
   



.. js:method:: Model.setPart

   .. rst-class:: sig-pretty-signature
   
      | setPart(**assemblyNodeId**\ : (*undefined* \| *None* \| *number*\ ), **partNodeId**\ : (*undefined* \| *None* \| *number*\ )): *boolean*
   
   Set a part on an assembly node
   
   **Parameters**
   
      **assemblyNodeId**\ : (*undefined* \| *None* \| *number*\ )
   
      **partNodeId**\ : (*undefined* \| *None* \| *number*\ )
   
   
   **Returns**\ : *boolean*
   
      true if all went right, false otherwise
   
   



.. js:method:: Model.setPhysicalProperties

   .. rst-class:: sig-pretty-signature
   
      | setPhysicalProperties(**nodeId**\ : *number*\ , **gravityCenter**\ : :js:class:`~Point3`\ , **surfaceArea**\ : *number*\ , **volume**\ : *number*\ ): *boolean*
   
   Purpose: Sets physical properties
   
   **Parameters**
   
      **nodeId**\ : *number*
   
      **gravityCenter**\ : :js:class:`~Point3`
   
      **surfaceArea**\ : *number*
   
      **volume**\ : *number*
   
   
   **Returns**\ : *boolean*
   
      true if all went right, false otherwise
   
   



.. js:method:: Model.setPmiColor

   .. rst-class:: sig-pretty-signature
   
      | setPmiColor(**color**\ : :js:class:`~Color`\ ): *void*
   
   Saves a PMI override color
   
   **Parameters**
   
      **color**\ : :js:class:`~Color`
   
         the override color
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.setPmiColorOverride

   .. rst-class:: sig-pretty-signature
   
      | setPmiColorOverride(**enableOverride**\ : *boolean*\ , **rootId**\ : *number*\ ): *Promise*
   
   Takes a boolean value and either enables the set PMI override color or resets all PMI colors to their default
   
   **Parameters**
   
      **enableOverride**\ : *boolean*
   
      **rootId**\ : *number*
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.setViewAxes

   .. rst-class:: sig-pretty-signature
   
      | setViewAxes(**frontVector**\ : :js:class:`~Point3`\ , **upVector**\ : :js:class:`~Point3`\ ): *void*
   
   Sets the up and front vectors for the model coordinate system. Both the upVector and frontVector must be unique, cardinal axes.
   
   **Parameters**
   
      **frontVector**\ : :js:class:`~Point3`
   
      **upVector**\ : :js:class:`~Point3`
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.switchToModel

   .. rst-class:: sig-pretty-signature
   
      | switchToModel(**newModelFilename**\ : *string*\ ): *Promise*
   
   Delete all the current scene and load the specified model instead. Also triggers a "modelSwitched" when finished.
   
   **Parameters**
   
      **newModelFilename**\ : *string*
   
         Name of the model file to load after the existing scene gets deleted
   
   
   
   **Returns**\ : *Promise*
   
      A ``Promise`` of the newly loaded model's root nodes IDs.
   
   



.. js:method:: Model.triangulatePolygon

   .. rst-class:: sig-pretty-signature
   
      | triangulatePolygon(**polygonPoints**\ : (*number*\ [] \| *Float32Array*\ ), **normal**\ : :js:class:`~Point3`\ ): *Float32Array*
   
   Triangulates the supplied polygon.
   
   **Parameters**
   
      **polygonPoints**\ : (*number*\ [] \| *Float32Array*\ )
   
         An array of point data for the polygon. Points are stored [XYZXYZXYZ...] format.
   
   
      **normal**\ : :js:class:`~Point3`
   
         The normal of the polygon to triangulate.
   
   
   
   **Returns**\ : *Float32Array*
   
      An array containing the point data for the generated triangles. Points are stored [XYZXYZXYZ...] format. This returned list is always divisible by 9 (3 points per triangle; 3 floats per point).
   
   



.. js:method:: Model.unsetDepthRange

   .. rst-class:: sig-pretty-signature
   
      | unsetDepthRange(**nodeIds**\ : *number*\ []): *void*
   
   Unsets the depth range set by [[setDepthRange]].
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         the node IDs to operate on
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetMetallicRoughness

   .. rst-class:: sig-pretty-signature
   
      | unsetMetallicRoughness(**nodeIds**\ : *number*\ []): *void*
   
   Unsets the metallic and roughness values set with [[setMetallicRoughness]] These materials will no longer use the Metallic Roughness shading model.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         List of nodes to unset material properties for
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodeFaceColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodeFaceColor(**partId**\ : *number*\ , **faceId**\ : *number*\ ): *Promise*
   
   Unsets the color for a face element. This will return the face's color to its default state.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **faceId**\ : *number*
   
         the Id of the face in the node that will have its color unset
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.unsetNodeLineColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodeLineColor(**partId**\ : *number*\ , **lineId**\ : *number*\ ): *Promise*
   
   Unsets the color for a line element. This will return the line's color to its default state.
   
   **Parameters**
   
      **partId**\ : *number*
   
      **lineId**\ : *number*
   
         the Id of the line in the node that will have its color unset
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.unsetNodePointColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodePointColor(**partId**\ : *number*\ , **pointId**\ : *number*\ ): *void*
   
   Unsets the color for a point element. This will return the point's color to its default state.
   
   **Parameters**
   
      **partId**\ : *number*
   
         the Id of the node containing the point
   
   
      **pointId**\ : *number*
   
         the Id of the point in the node that will have its color unset
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesAmbientColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesAmbientColor(**nodeIds**\ : *number*\ []): *void*
   
   Unsets the ambient color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to unset
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesCullingVectors

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesCullingVectors(**nodeIds**\ : *number*\ []): *Promise*
   
   Unsets the vector and angle used to determine an object's visibility based on camera orientation.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The nodes to unset culling vectors on.
   
   
   
   **Returns**\ : *Promise*
   



.. js:method:: Model.unsetNodesFaceColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesFaceColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Unsets the color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes to modify
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.unsetNodesFaceEmissiveColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesFaceEmissiveColor(**nodeIds**\ : *number*\ []): *void*
   
   Resets the emissive color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to reset
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesFaceSpecularColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesFaceSpecularColor(**nodeIds**\ : *number*\ []): *void*
   
   Resets the specular color on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to reset
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesFaceSpecularIntensity

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesFaceSpecularIntensity(**nodeIds**\ : *number*\ []): *void*
   
   Resets the specular intensity on the faces for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes whose color to set
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesLineColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesLineColor(**nodeIds**\ : *number*\ []): *Promise*
   
   Unsets the color on the lines for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes to modify
   
   
   
   **Returns**\ : *Promise*
   
      Promise that resolves when this operation has completed.
   
   



.. js:method:: Model.unsetNodesLinePattern

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesLinePattern(**nodeIds**\ : *number*\ []): *void*
   
   Removes the line pattern applied by [[setNodesLinePattern]].
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The IDs of the nodes.
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesPointColor

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesPointColor(**nodeIds**\ : *number*\ []): *void*
   
   Unsets the color on the points for a given list of nodes.
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         IDs of nodes to modify
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.unsetNodesTexture

   .. rst-class:: sig-pretty-signature
   
      | unsetNodesTexture(**nodeIds**\ : *number*\ []): *void*
   
   Remove one or more textures applied via [[setNodesTexture]].
   
   **Parameters**
   
      **nodeIds**\ : *number*\ []
   
         The nodes from which to remove the texture or textures
   
   
   
   **Returns**\ : *void*
   



.. js:method:: Model.viewAxesHaveBeenSet

   .. rst-class:: sig-pretty-signature
   
      | viewAxesHaveBeenSet(): *boolean*
   
   Gets whether there has been a successful call to setViewAxes.
   
   **Returns**\ : *boolean*
   





