46 |
return "%s(%s)"%(self.__class__.__name__,self.getID()) |
return "%s(%s)"%(self.__class__.__name__,self.getID()) |
47 |
def __cmp__(self,other): |
def __cmp__(self,other): |
48 |
return cmp(self.getID(),other.getID()) |
return cmp(self.getID(),other.getID()) |
|
def getGmshCommand(self): |
|
|
raise NotImplementedError("getGmshCommand is not implemented for this class %s."%self.__class__.__name__) |
|
49 |
def isPoint(self): |
def isPoint(self): |
50 |
return False |
return False |
51 |
def isCurve(self): |
def isCurve(self): |
58 |
return False |
return False |
59 |
def __neg__(self): |
def __neg__(self): |
60 |
return ReversedPrimitive(self) |
return ReversedPrimitive(self) |
61 |
|
def __pos__(self): |
62 |
|
return self.copy() |
63 |
|
def __add__(self,other): |
64 |
|
out=self.copy() |
65 |
|
out+=other |
66 |
|
return out |
67 |
|
def __iadd__(self,other): |
68 |
|
self.shift() |
69 |
|
def setLocalLength(self,factor=1.): |
70 |
|
for p in self.getPoints(): p.setLocalLength(factor) |
71 |
|
def shift(self,shift): |
72 |
|
for p in self.getPoints(): p+=shift |
73 |
|
def copy(self): |
74 |
|
return Primitive() |
75 |
|
def getGmshCommand(self): |
76 |
|
raise NotImplementedError("getGmshCommand is not implemented for this class %s."%self.__class__.__name__) |
77 |
|
def getHistory(self): |
78 |
|
return set() |
79 |
|
def getPoints(self): |
80 |
|
return set() |
81 |
|
def translate(self,shift): |
82 |
|
raise NotImplementedError("translate is not implemented for this class %s."%self.__class__.__name__) |
83 |
|
|
84 |
class ReversedPrimitive(object): |
class ReversedPrimitive(object): |
85 |
def __init__(self,prim): |
def __init__(self,prim): |
106 |
self._x=numarray.array([x,y,z],numarray.Float64) |
self._x=numarray.array([x,y,z],numarray.Float64) |
107 |
self.setLocalScale(local_scale) |
self.setLocalScale(local_scale) |
108 |
def setLocalScale(self,factor=1.): |
def setLocalScale(self,factor=1.): |
109 |
|
""" |
110 |
|
sets the local relative length scale |
111 |
|
""" |
112 |
self.__local_scale=factor |
self.__local_scale=factor |
|
def isPoint(self): |
|
|
return True |
|
113 |
def getLocalScale(self): |
def getLocalScale(self): |
114 |
return self.__local_scale |
return self.__local_scale |
115 |
|
def copy(self): |
116 |
|
c=self.getCoordinates() |
117 |
|
return Point(c[0],c[1],c[2],local_scale=self.getLocalScale()) |
118 |
|
def isPoint(self): |
119 |
|
return True |
120 |
def getCoordinates(self): |
def getCoordinates(self): |
121 |
return self._x |
return self._x |
|
def __add__(self,other): |
|
|
c=self.getCoordinates()+numarray.array(other,numarray.Float64) |
|
|
return Point(x=c[0],y=c[1],z=c[2],local_scale=self.getLocalScale()) |
|
122 |
def getGmshCommand(self): |
def getGmshCommand(self): |
123 |
c=self.getCoordinates() |
c=self.getCoordinates() |
124 |
return "Point(%s) = {%e , %e, %e , %e * scale};"%(self.getID(),c[0],c[1],c[2], self.getLocalScale()) |
return "Point(%s) = {%e , %e, %e , %e * scale};"%(self.getID(),c[0],c[1],c[2], self.getLocalScale()) |
125 |
def getHistory(self): |
def getHistory(self): |
126 |
return set([self]) |
return set([self]) |
127 |
|
def getPoints(self): |
128 |
|
return set([self]) |
129 |
|
def shift(self,shift): |
130 |
|
""" |
131 |
|
shifts the point by a given shift |
132 |
|
""" |
133 |
|
self._x+=numarray.array(shift,numarray.Float64) |
134 |
|
def translate(self,shift): |
135 |
|
""" |
136 |
|
returns the point shifted by shift |
137 |
|
""" |
138 |
|
out=self.copy() |
139 |
|
out+=other |
140 |
|
return out |
141 |
|
|
142 |
|
|
143 |
class Curve(Primitive): |
class Curve(Primitive): |
144 |
""" |
""" |
158 |
return len(self.__nodes) |
return len(self.__nodes) |
159 |
def isCurve(self): |
def isCurve(self): |
160 |
return True |
return True |
|
def getHistory(self): |
|
|
out=set([self]) |
|
|
for i in self.getNodes(): out|=i.getHistory() |
|
|
return out |
|
|
|
|
161 |
def getStart(self): |
def getStart(self): |
162 |
""" |
""" |
163 |
returns start point |
returns start point |
175 |
returns a list of the nodes |
returns a list of the nodes |
176 |
""" |
""" |
177 |
return self.__nodes |
return self.__nodes |
|
def __add__(self,other): |
|
|
return Curve([p+other for p in self.getNodes()]) |
|
178 |
def getGmshCommand(self): |
def getGmshCommand(self): |
179 |
out="" |
out="" |
180 |
for i in self.getNodes(): |
for i in self.getNodes(): |
183 |
else: |
else: |
184 |
out="%s"%i.getID() |
out="%s"%i.getID() |
185 |
return "Spline(%s) = {%s};"%(self.getID(),out) |
return "Spline(%s) = {%s};"%(self.getID(),out) |
186 |
|
def getHistory(self): |
187 |
|
out=set([self]) |
188 |
|
for i in self.getNodes(): out|=i.getHistory() |
189 |
|
return out |
190 |
|
def getPoints(self): |
191 |
|
out=set() |
192 |
|
for i in self.getNodes(): out|=i.getPoints() |
193 |
|
return out |
194 |
|
|
195 |
|
|
196 |
class BezierCurve(Curve): |
class BezierCurve(Curve): |
197 |
""" |
""" |
275 |
out|=self.getCenter().getHistory() |
out|=self.getCenter().getHistory() |
276 |
for i in self.getNodes(): out|=i.getHistory() |
for i in self.getNodes(): out|=i.getHistory() |
277 |
return out |
return out |
278 |
|
def getPoints(self): |
279 |
|
out=self.getCenter().getPoints() |
280 |
|
for i in self.getNodes(): out|=i.getPoints() |
281 |
|
return out |
282 |
def getGmshCommand(self): |
def getGmshCommand(self): |
283 |
return "Circle(%s) = {%s, %s, %s};"%(self.getID(),self.getStart().getID(),self.getCenter().getID(),self.getEnd().getID()) |
return "Circle(%s) = {%s, %s, %s};"%(self.getID(),self.getStart().getID(),self.getCenter().getID(),self.getEnd().getID()) |
284 |
|
|
313 |
out=set([self]) |
out=set([self]) |
314 |
for i in self.getCurves(): out|=i.getHistory() |
for i in self.getCurves(): out|=i.getHistory() |
315 |
return out |
return out |
316 |
|
def getPoints(self): |
317 |
|
out=set() |
318 |
|
for i in self.getCurves(): out|=i.getPoints() |
319 |
|
return out |
320 |
def getGmshCommand(self): |
def getGmshCommand(self): |
321 |
out="" |
out="" |
322 |
for i in self.getCurves(): |
for i in self.getCurves(): |
349 |
def getHistory(self): |
def getHistory(self): |
350 |
out=set([self]) | self.getBoundaryLoop().getHistory() |
out=set([self]) | self.getBoundaryLoop().getHistory() |
351 |
return out |
return out |
352 |
|
def getPoints(self): |
353 |
|
return self.getBoundaryLoop().getPoints() |
354 |
def getGmshCommand(self): |
def getGmshCommand(self): |
355 |
return "Ruled Surface(%s) = {%s};"%(self.getID(),self.getBoundaryLoop().getID()) |
return "Ruled Surface(%s) = {%s};"%(self.getID(),self.getBoundaryLoop().getID()) |
356 |
|
|
380 |
out=set([self]) | self.getBoundaryLoop().getHistory() |
out=set([self]) | self.getBoundaryLoop().getHistory() |
381 |
for i in self.getHoles(): out|=i.getHistory() |
for i in self.getHoles(): out|=i.getHistory() |
382 |
return out |
return out |
383 |
|
def getPoints(self): |
384 |
|
out=self.getBoundaryLoop().getPoints() |
385 |
|
for i in self.getHoles(): out|=i.getPoints() |
386 |
|
return out |
387 |
def getGmshCommand(self): |
def getGmshCommand(self): |
388 |
out="" |
out="" |
389 |
for i in self.getHoles(): |
for i in self.getHoles(): |
447 |
out=set([self]) |
out=set([self]) |
448 |
for i in self.getSurfaces(): out|=i.getHistory() |
for i in self.getSurfaces(): out|=i.getHistory() |
449 |
return out |
return out |
450 |
|
def getPoints(self): |
451 |
|
out=set() |
452 |
|
for i in self.getSurfaces(): out|=i.getPoints() |
453 |
|
return out |
454 |
def getGmshCommand(self): |
def getGmshCommand(self): |
455 |
out="" |
out="" |
456 |
for i in self.getSurfaces(): |
for i in self.getSurfaces(): |
491 |
out=set([self]) | self.getSurfaceLoop().getHistory() |
out=set([self]) | self.getSurfaceLoop().getHistory() |
492 |
for i in self.getHoles(): out|=i.getHistory() |
for i in self.getHoles(): out|=i.getHistory() |
493 |
return out |
return out |
494 |
|
def getPoints(self): |
495 |
|
out=self.getSurfaceLoop().getPoints() |
496 |
|
for i in self.getHoles(): out|=i.Points() |
497 |
|
return out |
498 |
def getGmshCommand(self): |
def getGmshCommand(self): |
499 |
out="" |
out="" |
500 |
for i in self.getHoles(): |
for i in self.getHoles(): |
533 |
for i in self.__prims: |
for i in self.__prims: |
534 |
out+=i.getGmshCommand()+"\n" |
out+=i.getGmshCommand()+"\n" |
535 |
return out |
return out |
|
|
|
|
def getPycadCommands(self,name="TMP_"): |
|
|
out="" |
|
|
for i in self.__prims: |
|
|
out+=i.getPycadCommand(name)+"\n" |
|