/[escript]/trunk/pycad/py_src/primitives.py
ViewVC logotype

Diff of /trunk/pycad/py_src/primitives.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 932 by gross, Fri Jan 19 09:27:15 2007 UTC revision 944 by gross, Tue Jan 30 08:57:37 2007 UTC
# Line 1346  class Volume(Manifold3D, Primitive): Line 1346  class Volume(Manifold3D, Primitive):
1346          for h in self.getHoles(): out+=h.getSurfaces()          for h in self.getHoles(): out+=h.getSurfaces()
1347          return out          return out
1348    
1349  class PropertySet(PrimitiveBase):  class PropertySet(Primitive, PrimitiveBase):
1350      """      """
1351      defines a group L{PrimitiveBase} objects.      defines a group L{Primitive} which can be accessed through a name
1352      """      """
1353      def __init__(self,tag=None,*items):      def __init__(self,name,*items):
1354         super(PropertySet, self).__init__()         Primitive.__init__(self)
1355         self.__items=items         if len(items)==0:
1356         self.__tag=tag            raise ValueError("at least one item must be give.")
1357           if isinstance(items[0] ,Manifold1D):
1358                dim=1
1359           elif isinstance(items[0] ,Manifold2D):
1360                dim=2
1361           elif isinstance(items[0] ,Manifold3D):
1362               dim=3
1363           else:
1364               dim=0
1365           self.__dim=dim
1366           self.clearItems()
1367           self.addItem(*items)
1368           self.setName(name)
1369        def __repr__(self):
1370           """
1371           returns a string representation
1372           """
1373           return "%s(%s)"%(self.getName(),self.getID())
1374        def getManifoldClass(self):
1375            """
1376            returns the manifold class expected from items
1377            """
1378            d=self.getDim()
1379            if d==0:
1380               return Point
1381            elif d==1:
1382               return Manifold1D
1383            elif d==2:
1384               return Manifold2D
1385            else:
1386               return Manifold3D
1387        def getDim(self):
1388            """
1389            returns the dimension of the
1390            """
1391            return self.__dim
1392        def getName(self):
1393            """
1394            returns the name of the set
1395            """
1396            return self.__name
1397        def setName(self,name=None):
1398            """
1399            sets the name. If no name is given the id is used.
1400            """
1401            self.__name=str(name)
1402        def addItem(self,*items):
1403            """
1404            adds items. An item my be any L{Primitive} but no L{PropertySet}
1405            """
1406            m=self.getManifoldClass()
1407            for i in items:
1408                if not i in self.__items:
1409                   if not isinstance(i, m):
1410                      raise TypeError("argument %s is not a %s class object."%(i, m.__name__))
1411                   self.__items.append(i)
1412        def getItems(self):
1413            """
1414            returns the list of items
1415            """
1416            return self.__items
1417    
1418        def clearItems(self):
1419            """
1420            clears the list of items
1421            """
1422            self.__items=[]
1423      def collectPrimitiveBases(self):      def collectPrimitiveBases(self):
1424          out=[self]+self.getBoundaryLoop().collectPrimitiveBases()          """
1425          for i in self.getHoles(): out+=i.collectPrimitiveBases()          returns primitives used to construct the PropertySet
1426            """
1427            out=[self]
1428            for i in self.getItems(): out+=i.collectPrimitiveBases()
1429            return out
1430    
1431        def getGmshCommand(self,scaling_factor=1.):
1432            """
1433            returns the Gmsh command(s) to create the primitive
1434            """
1435            k=self.getDim()
1436            out="Physical "
1437            if k==0:
1438                out+="Point"
1439            elif k==1:
1440                out+="Line"
1441            elif k==2:
1442                out+="Surface"
1443            else:
1444                out+="Volume"
1445            out2=""
1446            for i in self.getItems():
1447                if len(out2)>0:
1448                    out2+=", %s"%i.getDirectedID()
1449                else:
1450                    out2="%s"%i.getDirectedID()
1451            out+="(" + str(self.getID()) + ") = {"+out2+"};"
1452          return out          return out
1453    
1454        def getTag(self):
1455             """
1456             returns the tag used for this
1457             """
1458             return self.getID()

Legend:
Removed from v.932  
changed lines
  Added in v.944

  ViewVC Help
Powered by ViewVC 1.1.26