parameters: (self,elttype,shapes,storey=None,placement=None,name="Unnamed element",description=None,extra=None)
return_statement: return elt
docstring: addProduct(elttype,representations,[storey,placement,name,description,extra]): creates an element of the given type
          (IfcWall, IfcBeam, etc...) with the given attributes, plus the given extra attributes.
docstring_summary: addProduct(elttype,representations,[storey,placement,name,description,extra]): creates an element of the given type
          (IfcWall, IfcBeam, etc...) with the given attributes, plus the given extra attributes.
docstring_tokens: addProduct ( elttype representations [ storey placement name description extra ] ) : creates an element of the given type ( IfcWall IfcBeam etc ... ) with the given attributes plus the given extra attributes .
function: def addProduct(self,elttype,shapes,storey=None,placement=None,name="Unnamed element",description=None,extra=None):
          """addProduct(elttype,representations,[storey,placement,name,description,extra]): creates an element of the given type
          (IfcWall, IfcBeam, etc...) with the given attributes, plus the given extra attributes."""
          elttype = str(elttype)
          if not extra:
              extra = []
          if not description:
              description = None
          if not placement:
              placement = self.addPlacement()
          representations = self.addRepresentations(shapes)
          prd = create(self._fileobject,"IfcProductDefinitionShape",[None,None,representations])
          try:
              elt = create(self._fileobject,elttype,[uid(),self._owner,name,description,None,placement,prd,None]+extra)
          except Exception:
              print("unable to create an ",elttype, " with attributes: ",[uid(),self._owner,str(name),description,None,placement,prd,None]+extra)
              try:
                  if hasattr(ifcw,"Entity"):
                      o = ifcw.Entity(elttype)
                  else:
                      o = ifcw.entity_instance(elttype)
                  print("supported attributes are: ")
                  print(getPropertyNames(o))
              except Exception:
                  print("unable to create an element of type '"+elttype+"'")
              print("WARNING: skipping object '"+name+"' of type "+elttype)
              return None
          self.BuildingProducts.append(elt)
          if not storey:
              if self.Storeys:
                  storey = self.Storeys[0]
              else:
                  storey = self.addStorey()
          self._relate(storey,elt)
          return elt
function_tokens: def addProduct ( self , elttype , shapes , storey = None , placement = None , name = "Unnamed element" , description = None , extra = None ) : elttype = str ( elttype ) if not extra : extra = [ ] if not description : description = None if not placement : placement = self . addPlacement ( ) representations = self . addRepresentations ( shapes ) prd = create ( self . _fileobject , "IfcProductDefinitionShape" , [ None , None , representations ] ) try : elt = create ( self . _fileobject , elttype , [ uid ( ) , self . _owner , name , description , None , placement , prd , None ] + extra ) except Exception : print ( "unable to create an " , elttype , " with attributes: " , [ uid ( ) , self . _owner , str ( name ) , description , None , placement , prd , None ] + extra ) try : if hasattr ( ifcw , "Entity" ) : o = ifcw . Entity ( elttype ) else : o = ifcw . entity_instance ( elttype ) print ( "supported attributes are: " ) print ( getPropertyNames ( o ) ) except Exception : print ( "unable to create an element of type '" + elttype + "'" ) print ( "WARNING: skipping object '" + name + "' of type " + elttype ) return None self . BuildingProducts . append ( elt ) if not storey : if self . Storeys : storey = self . Storeys [ 0 ] else : storey = self . addStorey ( ) self . _relate ( storey , elt ) return elt