class_docstr: A Truss is an assembly of members such as beams,
  connected by nodes, that create a rigid structure.
  In engineering, a truss is a structure that
  consists of two-force members only.
  
  Trusses are extremely important in engineering applications
  and can be seen in numerous real-world applications like bridges.
  
  Examples
  ========
  
  There is a Truss consisting of four nodes and five
  members connecting the nodes. A force P acts
  downward on the node D and there also exist pinned
  and roller joints on the nodes A and B respectively.
  
  .. image:: truss_example.png
  
  >>> from sympy.physics.continuum_mechanics.truss import Truss
  >>> t = Truss()
  >>> t.add_node(("node_1", 0, 0), ("node_2", 6, 0), ("node_3", 2, 2), ("node_4", 2, 0))
  >>> t.add_member(("member_1", "node_1", "node_4"), ("member_2", "node_2", "node_4"), ("member_3", "node_1", "node_3"))
  >>> t.add_member(("member_4", "node_2", "node_3"), ("member_5", "node_3", "node_4"))
  >>> t.apply_load(("node_4", 10, 270))
  >>> t.apply_support(("node_1", "pinned"), ("node_2", "roller"))
code: def _draw_nodes(self, subs_dict):
      node_markers = []
  
      for node in self._node_coordinates:
          if type(self._node_coordinates[node][0]) in (
              Symbol,
              Quantity,
          ):
              if self._node_coordinates[node][0] in subs_dict:
                  self._node_coordinates[node][0] = subs_dict[
                      self._node_coordinates[node][0]
                  ]
              else:
                  raise ValueError(
                      "provided substituted dictionary is not adequate"
                  )
          elif type(self._node_coordinates[node][0]) == Mul:
              objects = self._node_coordinates[node][0].as_coeff_Mul()
              for object in objects:
                  if type(object) in (Symbol, Quantity):
                      if subs_dict == None or object not in subs_dict:
                          raise ValueError(
                              "provided substituted dictionary is not adequate"
                          )
                      else:
                          self._node_coordinates[node][0] /= object
                          self._node_coordinates[node][0] *= subs_dict[
                              object
                          ]
  
          if type(self._node_coordinates[node][1]) in (
              Symbol,
              Quantity,
          ):
              if self._node_coordinates[node][1] in subs_dict:
                  self._node_coordinates[node][1] = subs_dict[
                      self._node_coordinates[node][1]
                  ]
              else:
                  raise ValueError(
                      "provided substituted dictionary is not adequate"
                  )
          elif type(self._node_coordinates[node][1]) == Mul:
              objects = self._node_coordinates[node][1].as_coeff_Mul()
              for object in objects:
                  if type(object) in (Symbol, Quantity):
                      if subs_dict == None or object not in subs_dict:
                          raise ValueError(
                              "provided substituted dictionary is not adequate"
                          )
                      else:
                          self._node_coordinates[node][1] /= object
                          self._node_coordinates[node][1] *= subs_dict[
                              object
                          ]
  
      for node in self._node_coordinates:
          node_markers.append(
              {
                  "args": [
                      [self._node_coordinates[node][0]],
                      [self._node_coordinates[node][1]],
                  ],
                  "marker": "o",
                  "markersize": 5,
                  "color": "black",
              }
          )
      return node_markers
  
imports: from cmath import atan, inf
  from sympy.core.add import Add
  from sympy.core.evalf import INF
  from sympy.core.mul import Mul
  from sympy.core.symbol import Symbol
  from sympy.core.sympify import sympify
  from sympy import Matrix, pi
  from sympy.external.importtools import import_module
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.matrices.dense import zeros
  import math
  from sympy.physics.units.quantities import Quantity
  from sympy.plotting import plot
  from sympy.utilities.decorator import doctest_depends_on
  from sympy import sin, cos
label_desc: Use image node_id 23 for calling the Truss obj's underlying member method code with example usage: obj._draw_nodes(subs_dict) and returns: node_markers