#!BPY __author__="Matthew Baynham" __date__ ="$08-May-2009 12:34:49$" __name__ ="modDataObjects" __module__ = "modDataObjects" __version__ = "0.1" __bpydoc__ = """ Just the classes that contain all the data """ from modBasics import ClsBasics #import modBasics #reload(modBasics) class ClsFeature(ClsBasics): __doc__ = """ a feature is a feature in a walls of type ='door', 'window', 'divider' or 'end of wall' Note: the perpous of a divider is to provide more points to draw vertexs from Note: the 'end of wall' type is self explainatory """ # global lstVariables def __init__(self, psName, psType, psSubType, pfPosHor, pfPosVert, pfHieght, pfWidth): __doc__ = """ Type = 'door' 'window', 'divider' (a vertical line of pont that can a have vertex's coming off of them) 'end of wall' Doors ===== Sub Type = 'square' 'simple arch' i.e. just one curve with the centre in the centre of the feature 'double curve arch' i.e. two curves with centre of curve off centre of the feature required extra variables (subtype: square) = 'doorway hieght' 'doorway width' required extra variables (subtype: simple arch) = 'doorway hieght' 'doorway width' 'centre of arch hieght' 'arch radius' required extra variables (subtype: double curve arch) = 'doorway hieght' 'doorway width' 'centre of arches hieght' 'arches radius' 'centre of arches offset from feature centre' """ self.initialiseBasicsClass() self.sClassName = "ClsFeature" self.iId = 0 self.sName = psName self.sType = psType self.sSubType = psSubType self.fPosHor = pfPosHor self.fPosVert = pfPosVert self.fHieght = pfHieght self.fWidth = pfWidth # self.lstVariables = [] def getName(self): return self._sName def setName(self, value): self._sName = value sName = property(getName, setName) def getType(self): return self._sType def setType(self, value): self._sType = value sType = property(getType, setType) def getSubType(self): return self._sSubType def setSubType(self, value): self._sSubType = value sSubType = property(getSubType, setSubType) def getHieght(self): return self._fHieght def setHieght(self, value): self._fHieght = float(value) fHieght = property(getHieght, setHieght) def getWidth(self): return self._fWidth def setWidth(self, value): self._fWidth = float(value) fWidth = property(getWidth, setWidth) def getPosVert(self): return self._fPosVert def setPosVert(self, value): self._fPosVert = float(value) fPosVert = property(getPosVert, setPosVert) def getPosHor(self): return self._fPosHor def setPosHor(self, value): self._fPosHor = float(value) fPosHor = property(getPosHor, setPosHor) def getId(self): return self._iId def setId(self, value): self._iId = value iId = property(getId, setId) # def varInisialise(self): # self.lstVariables = [] # def varAddVariable(self, sName, sType, Amount): # try: # iIdMax = self.getMaxVarId() # cTempVariable = ClsFeatureVariable # cTempVariable.iId = iIdMax + 1 # cTempVariable.sName = sName # cTempVariable.sType = sType # cTempVariable.Amount = Amount # self.lstVariables.append(cTempVariable) # return cTempVariable.iId # except: # self.errorCode() # def getMaxVarId(self): # try: # iMax = 0 # for cTemp in self.lstVariables: # if cTemp.iId > iMax: # iMax = cTemp.iId # return iMax # except: # self.errorCode() # def varGetAmount(self, iVariableId=None, sName=None, sType=None): # __doc__ = """ # 1st returned value = Is Found # 2nd returned value = the actual value # """ # try: # bIsFound = False # for cTemp in self.lstVariables: # if (iVariableId == cTemp.iId or iVariableId is None) and (sName == cTemp.sName or sName is None) and (sType == cTemp.sType or sType is None): # bIsFound = True # return True, cTemp.Amount # if bIsFound == False: # cEmpty = ClsFeatureVariable # return False, cEmpty # except: # self.errorCode() # def varSetAmount(self, Amount, iVariableId = None, sName = None, sType = None): # try: # bIsFound = False # for cTemp in self.lstVariables: # if (iVariableId == cTemp.iId or iVariableId is None) and (sName == cTemp.sName or sName is None) and (sType == cTemp.sType or sType is None): # bIsFound = True # cTemp.Amount = Amount # if bIsFound == False: # self.addWarning("Couldn't set a Amount in the Feature Element.....") # except: # self.errorCode() class ClsVertex(ClsBasics): __doc__ = """ ID - corisponds to the id in the list of vertexs within Mesh object Orientation - Orientation within the feature, eg. the beginning or the end of the door (Orientation note: we don't want to connect the vertexes on the left side of a door with the vertexes on the divider to the right of the door) Orientation Options: 'start', 'middle', 'end' Side - This refers to which side of the wall the vertex is positioned on Side Options:'a', 'b', 'middle' """ def __init__(self, x, y, z): self.initialiseBasicsClass() self.sClassName = "ClsVertex" self.fX = x self.fY = y self.fZ = z self.iId = 0 self.iFeatureId = 0 def getId(self): return self._iId def setId(self, value): self._iId = value iId = property(getId, setId) def getFeatureId(self): return self._iFeatureId def setFeatureId(self, value): self._iFeatureId = value iFeatureId = property(getFeatureId, setFeatureId) def getX(self): return self._fX def setX(self, value): self._fX = value fX = property(getX, setX) def getY(self): return self._fY def setY(self, value): self._fY = value fY = property(getY, setY) def getZ(self): return self._fZ def setZ(self, value): self._fZ = value fZ = property(getZ, setZ) def getOrientation(self): return self._sOrientation def setOrientation(self, value): self._sOrientation = value sOrientation = property(getOrientation, setOrientation) def getSide(self): return self._sSide def setSide(self, value): self._sSide = value sSide = property(getSide, setSide) class ClsFace(ClsBasics): __doc__ = """ ID - corisponds to the id in the list of vertexs within Mesh object """ def getId(self): return self._iId def setId(self, value): self._iId = value iId = property(getId, setId) def getVertex(self): return self._cVertex def setVertex(self, value): self._cVertex = value cVertex = property(getVertex, setVertex) def getX(self): return self._fX def setX(self, value): self._fX = value fX = property(getX, setX) def getY(self): return self._fY def setY(self, value): self._fY = value fY = property(getY, setY) def getZ(self): return self._fZ def setZ(self, value): self._fZ = value fZ = property(getZ, setZ) class ClsFeatureElement(ClsBasics): __doc__ = """ type = 'corner', 'centre of rotation' """ global lstVariables, lstVertexes def __init__(self): self.iId = 0 self.sName = "" self.sType = "" self.vPosition = Mathutils.Vector(0.0, 0.0, 0.0) def getId(self): return self._iId def setId(self, value): self._iId = int(value) iId = property(getId, setId) def getName(self): return self._sName def setName(self, value): self._sName = value sName = property(getName, setName) def getType(self): return self._sType def setType(self, value): self._sType = value sType = property(getType, setType) def getPosition(self): return self._vPosition def setPosition(self, value): self._vPosition = value vPosition = property(getPosition, setPosition) class ClsFeatureVariable(ClsBasics): __doc__ = """ type = 'corner', 'centre of rotation', 'number of vertexes' """ def __init__(self, iFeatureId, sName, sType, Amount): self.iId = 0 self.iFeatureId = iFeatureId self.sName = sName self.sType = sType self.Amount = Amount def getId(self): return self._iId def setId(self, value): self._iId = int(value) iId = property(getId, setId) def getFeatureId(self): return self._iFeatureId def setFeatureId(self, value): self._iFeatureId = int(value) iFeatureId = property(getFeatureId, setFeatureId) def getName(self): return self._sName def setName(self, value): self._sName = value sName = property(getName, setName) def getType(self): return self._sType def setType(self, value): self._sType = value sType = property(getType, setType) def getAmount(self): return self._Amount def setAmount(self, value): self._Amount = value Amount = property(getAmount, setAmount)