pyNastran
0.5.0
pyNastran BDF Reader/Writer, OP2 Parser, and GUI
|
00001 ## GNU Lesser General Public License 00002 ## 00003 ## Program pyNastran - a python interface to NASTRAN files 00004 ## Copyright (C) 2011-2012 Steven Doyle, Al Danial 00005 ## 00006 ## Authors and copyright holders of pyNastran 00007 ## Steven Doyle <mesheb82@gmail.com> 00008 ## Al Danial <al.danial@gmail.com> 00009 ## 00010 ## This file is part of pyNastran. 00011 ## 00012 ## pyNastran is free software: you can redistribute it and/or modify 00013 ## it under the terms of the GNU Lesser General Public License as published by 00014 ## the Free Software Foundation, either version 3 of the License, or 00015 ## (at your option) any later version. 00016 ## 00017 ## pyNastran is distributed in the hope that it will be useful, 00018 ## but WITHOUT ANY WARRANTY; without even the implied warranty of 00019 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00020 ## GNU General Public License for more details. 00021 ## 00022 ## You should have received a copy of the GNU Lesser General Public License 00023 ## along with pyNastran. If not, see <http://www.gnu.org/licenses/>. 00024 ## 00025 # pylint: disable=E1101,C0103,R0902,R0904,R0914 00026 00027 from __future__ import division, print_function 00028 00029 class AddMethods(object): 00030 def __init__(self): 00031 pass 00032 00033 def addDMI(self, dmi, allowOverwrites=False): 00034 name = dmi.name 00035 #if key in self.params and not allowOverwrites: 00036 #if not param.isSameCard(self.params[key]): 00037 #assert param.key not in self.params,'key=%s param=%s oldPARAM=%s' %(key,param,self.params[key]) 00038 #self.log.warning('key=%s param=%s oldPARAM=%s' %(key,param,self.params[key])) 00039 #self.params[key] = param 00040 #else: 00041 self.dmis[name] = dmi 00042 ### 00043 00044 def addDMIG(self, dmig, allowOverwrites=False): 00045 name = dmig.name 00046 #if key in self.params and not allowOverwrites: 00047 #if not param.isSameCard(self.params[key]): 00048 #assert param.key not in self.params,'key=%s param=%s oldPARAM=%s' %(key,param,self.params[key]) 00049 #self.log.warning('key=%s param=%s oldPARAM=%s' %(key,param,self.params[key])) 00050 #self.params[key] = param 00051 #else: 00052 self.dmigs[name] = dmig 00053 ### 00054 00055 def addDMIJ(self, dmij, allowOverwrites=False): 00056 name = dmij.name 00057 #if key in self.params and not allowOverwrites: 00058 #if not param.isSameCard(self.params[key]): 00059 #assert param.key not in self.params,'key=%s param=%s oldPARAM=%s' %(key,param,self.params[key]) 00060 #self.log.warning('key=%s param=%s oldPARAM=%s' %(key,param,self.params[key])) 00061 #self.params[key] = param 00062 #else: 00063 self.dmijs[name] = dmij 00064 ### 00065 00066 def addDMIJI(self, dmiji, allowOverwrites=False): 00067 name = dmiji.name 00068 #if key in self.params and not allowOverwrites: 00069 #if not param.isSameCard(self.params[key]): 00070 #assert param.key not in self.params,'key=%s param=%s oldPARAM=%s' %(key,param,self.params[key]) 00071 #self.log.warning('key=%s param=%s oldPARAM=%s' %(key,param,self.params[key])) 00072 #self.params[key] = param 00073 #else: 00074 self.dmijis[name] = dmiji 00075 ### 00076 00077 def addDMIK(self, dmik, allowOverwrites=False): 00078 name = dmik.name 00079 #if key in self.params and not allowOverwrites: 00080 #if not param.isSameCard(self.params[key]): 00081 #assert param.key not in self.params,'key=%s param=%s oldPARAM=%s' %(key,param,self.params[key]) 00082 #self.log.warning('key=%s param=%s oldPARAM=%s' %(key,param,self.params[key])) 00083 #self.params[key] = param 00084 #else: 00085 self.dmiks[name] = dmik 00086 ### 00087 00088 def addParam(self, param, allowOverwrites=False): 00089 key = param.key 00090 if key in self.params and not allowOverwrites: 00091 if not param.isSameCard(self.params[key]): 00092 #assert param.key not in self.params,'key=%s param=%s oldPARAM=%s' %(key,param,self.params[key]) 00093 self.log.warning('key=%s param=%s oldPARAM=%s' %(key, param, self.params[key])) 00094 self.params[key] = param 00095 else: 00096 self.params[key] = param 00097 ### 00098 00099 def addNode(self, node, allowOverwrites=False): 00100 #print node 00101 #assert node.nid not in self.nodes,'nid=%s\noldNode=\n%snewNode=\n%s' %(node.nid,self.nodes[node.nid],node) ## @todo enable before release... 00102 #assert node.nid>0,'nid=%s node=\n%s' %(node.nid,node) 00103 #self.nodes[key] = node 00104 00105 key = node.nid 00106 if key in self.nodes and not allowOverwrites: 00107 if not node.isSameCard(self.nodes[key]): 00108 print('nid=%s\noldNode=\n%snewNode=\n%s' %(key, self.nodes[key], node)) 00109 assert node.nid not in self.nodes, 'nid=%s\noldNode=\n%snewNode=\n%s' %(node.nid, self.nodes[key], node) 00110 else: 00111 #print 'Node was duplicated...nid=%s\nnode=\n%s' %(key,node) 00112 pass 00113 else: 00114 assert key > 0, 'nid=%s node=%s' %(key, node) 00115 self.nodes[key] = node 00116 ### 00117 00118 def addSPoint(self, spoint): 00119 if self.spoints is None: 00120 self.spoints = spoint 00121 else: 00122 self.spoints.addSPoints(spoint.spoints) 00123 ### 00124 00125 def addElement(self, elem, allowOverwrites=False): 00126 key = elem.eid 00127 #self.elements[key] = elem ## @todo temporary 00128 #return ## @todo temporary 00129 00130 if key in self.elements and not allowOverwrites: 00131 if not elem.isSameCard(self.elements[key]): 00132 elem.isSameCard(self.elements[key], debug=True) 00133 #print 'eid=%s\noldElement=\n%snewElement=\n%s' %(key,self.elements[key],elem) 00134 assert elem.eid not in self.elements, 'eid=%s\noldElement=\n%snewElement=\n%s' %(elem.eid, self.elements[elem.eid], elem) 00135 else: 00136 assert key > 0, 'eid=%s elem=%s' %(key, elem) 00137 self.elements[key] = elem 00138 ### 00139 00140 def addMassElement(self, elem, allowOverwrites=False): 00141 key = elem.eid 00142 #self.massElements[key] = elem ## @todo temporary 00143 #return ## @todo temporary 00144 00145 if key in self.massElements and not allowOverwrites: 00146 if not elem.isSameCard(self.massElements[key]): 00147 elem.isSameCard(self.elements[key], debug=True) 00148 #print 'eid=%s\noldElement=\n%snewElement=\n%s' %(key,self.elements[key],elem) 00149 assert elem.eid not in self.massElements, 'eid=%s\noldElement=\n%snewElement=\n%s' %(elem.eid, self.massElements[elem.eid], elem) 00150 else: 00151 assert key > 0, 'eid=%s elem=%s' %(key, elem) 00152 self.massElements[key] = elem 00153 ### 00154 00155 def addDamperElement(self, elem, allowOverwrites=False): 00156 """@warning can dampers have the same ID as a standard element?""" 00157 return self.addElement(elem, allowOverwrites) 00158 key = elem.eid 00159 if key in self.damperElements and not allowOverwrites: 00160 if not elem.isSameCard(self.damperElements[key]): 00161 #print 'eid=%s\noldElement=\n%snewElement=\n%s' %(key,self.elements[key],elem) 00162 assert elem.eid not in self.damperElements,'eid=%s\noldDamperElement=\n%snewDamperElement=\n%s' %(elem.eid,self.damperElements[elem.eid],elem) 00163 else: 00164 assert key > 0,'eid=%s elem=%s' %(key,elem) 00165 self.damperElements[key] = elem 00166 ### 00167 00168 def addRigidElement(self, elem, allowOverwrites=False): 00169 key = elem.eid 00170 if key in self.rigidElements and not allowOverwrites: 00171 print('eid=%s\noldElement=\n%snewElement=\n%s' %(key,self.rigidElements[key],elem)) 00172 #assert elem.eid not in self.rigidElements,'eid=%s\noldElement=\n%snewElement=\n%s' %(elem.eid,self.rigidElements[elem.eid],elem) 00173 pass 00174 assert key > 0,'eid=%s elem=%s' %(key,elem) 00175 self.rigidElements[key] = elem 00176 00177 def addThermalElement(self,elem): 00178 """same as addElement at the moment...""" 00179 self.addElement(elem) 00180 #assert elem.eid not in self.elements 00181 #assert elem.eid>0 00182 #self.elements[elem.eid] = elem 00183 00184 def addDEQATN(self,deqatn,allowOverwrites=False): 00185 key = deqatn.eqID 00186 #if not allowOverwrites: 00187 # assert prop.pid not in self.properties,'pid=%s oldProperty=\n%snewProperty=\n%s' %(prop.pid,self.properties[prop.pid],prop) 00188 assert key > 0,'ID=%s deqatn\n%s' %(key, deqatn) 00189 self.dequations[key] = deqatn 00190 00191 def addProperty(self,prop,allowOverwrites=False): 00192 key = prop.pid 00193 #self.properties[key] = prop ## @todo temporary 00194 #return ## @todo temporary 00195 00196 if key in self.properties and not allowOverwrites: 00197 if not prop.isSameCard(self.properties[key]): 00198 #print 'pid=%s\noldProperty=\n%snewProperty=\n%s' %(key,self.properties[key],prop) 00199 assert key not in self.properties,'pid=%s oldProperty=\n%snewProperty=\n%s' %(key,self.properties[key],prop) 00200 else: 00201 assert key > 0,'pid=%s prop=%s' %(key,prop) 00202 self.properties[key] = prop 00203 ### 00204 00205 def addMaterial(self,material,allowOverwrites=False): 00206 """ 00207 only for adding structural materials 00208 @deprecated this method will be renamed in v0.3 to addStructuralMaterial. 00209 """ 00210 self.addStructuralMaterial(material,allowOverwrites) 00211 00212 def addStructuralMaterial(self,material,allowOverwrites=False): 00213 key = material.mid 00214 if key in self.materials and not allowOverwrites: 00215 if not material.isSameCard(self.materials[key]): 00216 assert key not in self.materials,'mid=%s\noldMaterial=\n%snewMaterial=\n%s' %(key,self.materials[key],material) 00217 else: 00218 assert key > 0,'mid=%s material=\n%s' %(key,material) 00219 self.materials[key] = material 00220 00221 def addThermalMaterial(self,material,allowOverwrites=False): 00222 key = material.mid 00223 if key in self.thermalMaterials and not allowOverwrites: 00224 if not material.isSameCard(self.thermalMaterials[key]): 00225 assert key not in self.thermalMaterials,'mid=%s\noldMaterial=\n%snewMaterial=\n%s' %(key,self.thermalMaterials[key],material) 00226 else: 00227 assert key > 0,'mid=%s material=\n%s' %(key,material) 00228 self.thermalMaterials[key] = material 00229 00230 def addMaterialDependence(self,material,allowOverwrites=False): 00231 key = material.mid 00232 if key in self.materialDeps and not allowOverwrites: 00233 if not material.isSameCard(self.materialDeps[key]): 00234 assert key not in self.materialDeps,'mid=%s\noldMaterialDep=\n%snewMaterialDep=\n%s' %(key,self.materialDeps[key],material) 00235 else: 00236 assert key > 0,'mid=%s material=\n%s' %(key,material) 00237 self.materialDeps[key] = material 00238 00239 def addCreepMaterial(self,material,allowOverwrites=False): 00240 """ 00241 @note 00242 May be removed in the future. Are CREEP cards materials? 00243 They have an MID, but reference structural materials. 00244 """ 00245 key = material.mid 00246 if key in self.thermalMaterials and not allowOverwrites: 00247 if not material.isSameCard(self.creepMaterials[key]): 00248 assert key not in self.creepMaterials,'mid=%s\noldMaterial=\n%snewMaterial=\n%s' %(key,self.creepMaterials[key],material) 00249 else: 00250 assert key > 0,'mid=%s material=\n%s' %(key,material) 00251 self.creepMaterials[key] = material 00252 00253 def addCoord(self,coord, allowOverwrites=False): 00254 key = coord.cid 00255 if not allowOverwrites: 00256 assert key not in self.coords,'cid=%s\noldElement=\n%snewElement=\n%s' %(key,self.coords[key],coord) 00257 assert coord.cid>-1,'cid=%s coord=\n%s' %(key,coord) 00258 self.coords[key] = coord 00259 00260 def addLoad(self, load): 00261 key = load.sid 00262 if key in self.loads: 00263 self.loads[key].append(load) 00264 else: 00265 self.loads[key] = [load] 00266 00267 def addLSeq(self,load): 00268 key = load.sid 00269 if key in self.loads: 00270 self.loads[key].append(load) 00271 else: 00272 self.loads[key] = [load] 00273 00274 def addThermalLoad(self, load): # same function at the moment... 00275 key = load.sid 00276 assert key > 0 00277 if key in self.loads: 00278 self.loads[key].append(load) 00279 else: 00280 self.loads[key] = [load] 00281 00282 def addPHBDY(self,prop): 00283 assert prop.pid>0 00284 assert prop.pid not in self.phbdys 00285 self.phbdys[prop.pid] = prop 00286 00287 def addConvectionProperty(self,prop): 00288 assert prop.pconid>0 00289 assert prop.pconid not in self.convectionProperties 00290 self.convectionProperties[prop.pconid] = prop 00291 00292 #def addThermalProperty(self,prop): 00293 # assert prop.pconid not in self.thermalProperties 00294 # self.thermalProperties[prop.pconid] = prop 00295 00296 def addThermalBC(self,bc,key): 00297 assert key > 0 00298 if key in self.bcs: 00299 self.bcs[key].append(bc) 00300 else: 00301 self.bcs[key] = [bc] 00302 00303 def addConstraint_MPCADD(self,constraint): 00304 #self.mpcObject.add(constraint) 00305 if constraint.conid in self.mpcadds: 00306 raise RuntimeError('must have unique MPCADD IDs') 00307 self.mpcadds[constraint.conid] = constraint 00308 00309 def addConstraint_MPC(self,constraint): 00310 #self.mpcObject.append(constraint) 00311 if constraint.conid in self.mpcs: 00312 self.mpcs[constraint.conid].append(constraint) 00313 else: 00314 self.mpcs[constraint.conid] = [constraint] 00315 00316 def addConstraint_SPCADD(self,constraint): 00317 #self.spcObject.add(constraint) 00318 if constraint.conid in self.spcadds: 00319 raise RuntimeError('must have unique SPCADD IDs') 00320 self.spcadds[constraint.conid] = constraint 00321 00322 def addConstraint_SPC(self,constraint): 00323 #self.spcObject.append(constraint) 00324 if constraint.conid in self.spcs: 00325 self.spcs[constraint.conid].append(constraint) 00326 else: 00327 self.spcs[constraint.conid] = [constraint] 00328 #key = constraint.conid 00329 #if self.constraints.has_key(key): 00330 # self.constraints[key].append(constraint) 00331 #else: 00332 # self.constraints[key] = [constraint] 00333 00334 def addConstraint(self,constraint): 00335 #self.spcObject.append(constraint) 00336 key = constraint.conid 00337 00338 if constraint.conid in self.spcs: 00339 self.spcs[key].append(constraint) 00340 else: 00341 self.spcs[key] = [constraint] 00342 00343 #assert key > 0 00344 #if self.constraints.has_key(key): 00345 # self.constraints[key].append(constraint) 00346 #else: 00347 # self.constraints[key] = [constraint] 00348 00349 def addSuport(self,suport): 00350 self.suports.append(suport) 00351 00352 def addDArea(self,darea,allowOverwrites=False): 00353 key = (darea.sid,darea.p) 00354 if key in self.dareas and not allowOverwrites: 00355 if not darea.isSameCard(self.dareas[key]): 00356 assert key not in self.dareas,'\ndarea=\n%s oldDArea=\n%s' %(darea,self.dareas[key]) 00357 else: 00358 assert darea.sid>0 00359 self.dareas[key] = darea 00360 ### 00361 00362 def addAero(self,aero): 00363 key = aero.acsid 00364 assert key not in self.aero,'\naero=\n%s oldAERO=\n%s' %(aero,self.aero[key]) 00365 assert key>=0 00366 self.aero[key] = aero 00367 00368 def addAeros(self,aero): 00369 key = aero.acsid 00370 assert key not in self.aeros,'\naeros=\n%s oldAEROS=\n%s' %(aero,self.aeros[key]) 00371 assert key>=0 00372 self.aeros[key] = aero 00373 00374 def addAEFact(self,aefact,allowOverwrites=False): 00375 key = aefact.sid 00376 if key in self.aefacts and not allowOverwrites: 00377 if not aefact.isSameCard(self.aefacts[key]): 00378 assert key not in self.aefacts,'sid=%s\noldAEFACT=\n%snewAEFACT=\n%s' %(key,self.aefacts[key],aefact) 00379 else: 00380 assert key > 0,'sid=%s method=\n%s' %(key,aefact) 00381 self.aefacts[key] = aefact 00382 ### 00383 00384 def addAEList(self,aelist): 00385 key = aelist.sid 00386 assert key not in self.aelists,'\naelist=\n%s oldAELIST=\n%s' %(aelist,self.aelists[key]) 00387 assert key>=0 00388 self.aelists[key] = aelist 00389 00390 def addAELink(self,aelink): 00391 key = aelink.id 00392 assert key>=0 00393 if key not in self.aelinks: 00394 self.aelinks[key] = [] 00395 self.aelinks[key].append(aelink) 00396 #assert key not in self.aestats,'\naestat=%s oldAESTAT=\n%s' %(aestat,self.aestats[key]) 00397 00398 def addAEParam(self,aeparam): 00399 key = aeparam.id 00400 assert key not in self.aeparams,'\naeparam=\n%s oldAESTAT=\n%s' %(aeparam,self.aeparams[key]) 00401 assert key>=0 00402 self.aeparams[key] = aeparam 00403 00404 def addAEStat(self,aestat): 00405 key = aestat.id 00406 assert key not in self.aestats,'\naestat=\n%s oldAESTAT=\n%s' %(aestat,self.aestats[key]) 00407 assert key>=0 00408 self.aestats[key] = aestat 00409 00410 def addAESurf(self,aesurf): 00411 key = aesurf.aesid 00412 assert key not in self.aesurfs,'\naesurf=\n%s oldAESURF=\n%s' %(aesurf,self.aesurfs[key]) 00413 assert key>=0 00414 self.aesurfs[key] = aesurf 00415 00416 def addCAero(self,caero): 00417 key = caero.eid 00418 assert key not in self.caeros,'\ncaero=\n|%s| oldCAERO=\n|%s|' %(caero,self.caeros[key]) 00419 assert key > 0 00420 self.caeros[key] = caero 00421 00422 def addPAero(self,paero): 00423 key = paero.pid 00424 assert key not in self.paeros,'\npaero=\n|%s| oldPAERO=\n|%s|' %(paero,self.paeros[key]) 00425 assert key > 0,'paero.pid = |%s|' %(key) 00426 self.paeros[key] = paero 00427 00428 def addSpline(self,spline): 00429 assert spline.eid not in self.splines 00430 assert spline.eid>0 00431 self.splines[spline.eid] = spline 00432 00433 def addGUST(self,gust): 00434 key = gust.sid 00435 assert key not in self.gusts 00436 assert key > 0 00437 self.gusts[key] = gust 00438 00439 def addTrim(self,trim,allowOverwrites=False): 00440 key = trim.sid 00441 if not allowOverwrites: 00442 assert key not in self.trims,'trim=%s oldTrim=\n%snewProperty=\n%s' %(key,self.trims[key],trim) 00443 assert key > 0,'trim=\n%s' %(key,trim) 00444 self.trims[key] = trim 00445 00446 def addFlutter(self,flutter): 00447 key = flutter.sid 00448 assert key not in self.flutters 00449 assert key > 0 00450 self.flutters[key] = flutter 00451 00452 def addFLFACT(self,flfact): 00453 key = flfact.sid 00454 #assert key not in self.flfacts 00455 assert key > 0 00456 self.flfacts[key] = flfact # set id... 00457 #print "added flfact...flflact =\n"+flfact 00458 00459 def addDConstr(self,dconstr): 00460 key = (dconstr.oid,dconstr.rid) 00461 assert key not in self.dconstrs 00462 assert dconstr.oid>0 00463 assert dconstr.rid>0 00464 self.dconstrs[key] = dconstr 00465 00466 def addDesvar(self,desvar): 00467 key = desvar.oid 00468 assert key not in self.desvars 00469 assert key > 0 00470 self.desvars[key] = desvar 00471 00472 def addDDVal(self,ddval): 00473 key = ddval.oid 00474 assert key not in self.ddvals 00475 assert key > 0 00476 self.ddvals[key] = ddval 00477 00478 def addDLink(self,dlink): 00479 key = dlink.oid 00480 assert key not in self.dlinks 00481 assert key > 0 00482 self.dlinks[key] = dlink 00483 00484 def addDResp(self,dresp): 00485 key = dresp.oid 00486 assert key not in self.dresps 00487 assert key > 0 00488 self.dresps[key] = dresp 00489 00490 def addDvmrel(self, dvmrel): 00491 key = dvmrel.oid 00492 assert key not in self.dvmrels 00493 assert key > 0 00494 self.dvmrels[key] = dvmrel 00495 00496 def addDvprel(self, dvprel): 00497 key = dvprel.oid 00498 assert key not in self.dvprels 00499 assert key > 0 00500 self.dvprels[key] = dvprel 00501 00502 def addNLParm(self, nlparm): 00503 key = nlparm.nid 00504 assert key not in self.nlparms 00505 assert key > 0 00506 self.nlparms[key] = nlparm 00507 00508 def addTSTEP(self, tstep, allowOverwrites=False): 00509 key = tstep.sid 00510 if key in self.tsteps and not allowOverwrites: 00511 if not tstep.isSameCard(self.tsteps[key]): 00512 assert key not in self.tsteps,'sid=%s\noldTSTEP=\n%snewTSTEP=\n%s' %(key, self.tsteps[key], tstep) 00513 else: 00514 assert key > 0, 'sid=%s tstep=\n%s' %(key,tstep) 00515 self.tsteps[key] = tstep 00516 ### 00517 00518 def addTSTEPNL(self, tstepnl, allowOverwrites=False): 00519 key = tstepnl.sid 00520 if key in self.tsteps and not allowOverwrites: 00521 if not tstepnl.isSameCard(self.tsteps[key]): 00522 assert key not in self.tstepnls, 'sid=%s\noldTSTEPNL=\n%snewTSTEPNL=\n%s' %(key, self.tstepnls[key], tstepnl) 00523 else: 00524 assert key > 0, 'sid=%s tstepnl=\n%s' %(key,tstepnl) 00525 self.tstepnls[key] = tstepnl 00526 ### 00527 def addFREQ(self,freq): 00528 key = freq.sid 00529 assert key > 0 00530 if key in self.frequencies: 00531 self.frequencies[key].addFrequencyObject(freq) 00532 else: 00533 self.frequencies[key] = freq 00534 #assert key not in self.frequencies,'\nfreq=\n%s oldFreq=\n%s' %(freq,self.frequencies[key]) 00535 00536 def addSet(self,setObj): 00537 key = setObj.sid 00538 assert key not in self.sets,'\nSET=\n%s oldSET=\n%s' %(setObj,self.sets[key]) 00539 assert key>=0 00540 self.sets[key] = setObj 00541 00542 def addASet(self,setObj): 00543 self.asets.append(setObj) 00544 00545 def addBSet(self,setObj): 00546 self.bsets.append(setObj) 00547 00548 def addCSet(self,setObj): 00549 self.csets.append(setObj) 00550 00551 def addQSet(self,setObj): 00552 self.qsets.append(setObj) 00553 00554 def addSetSuper(self,setObj): 00555 key = setObj.seid 00556 assert key not in self.setsSuper,'\nSESET=\n%s oldSESET=\n%s' %(setObj,self.setsSuper[key]) 00557 assert key>=0 00558 self.setsSuper[key] = setObj 00559 00560 def addTable(self,table): 00561 key = table.tid 00562 assert key not in self.tables,'\nTable=\n%s oldTable=\n%s' %(table,self.tables[key]) 00563 assert key > 0 00564 self.tables[key] = table 00565 00566 def addRandomTable(self,table): 00567 key = table.tid 00568 assert key not in self.randomTables,'\nTable=\n%s oldTable=\n%s' %(table,self.randomTables[key]) 00569 assert key > 0 00570 self.randomTables[key] = table 00571 00572 def addMethod(self,method,allowOverwrites=False): 00573 key = method.sid 00574 if key in self.methods and not allowOverwrites: 00575 if not method.isSameCard(self.methods[key]): 00576 assert key not in self.methods,'sid=%s\noldMethod=\n%snewMethod=\n%s' %(key,self.methods[key],method) 00577 else: 00578 assert key > 0,'sid=%s method=\n%s' %(key,method) 00579 self.methods[key] = method 00580 ### 00581 00582 def addCMethod(self,cMethod,allowOverwrites=False): 00583 key = cMethod.sid 00584 if key in self.cMethods and not allowOverwrites: 00585 if not cMethod.isSameCard(self.cMethods[key]): 00586 assert key not in self.cMethods,'sid=%s\noldCMethod=\n%snewCMethod=\n%s' %(key,self.cMethods[key],cMethod) 00587 else: 00588 assert key > 0,'sid=%s cMethod=\n%s' %(key,cMethod) 00589 self.cMethods[key] = cMethod 00590 ### 00591 00592 def addMKAero(self,mkaero): 00593 self.mkaeros.append(mkaero)