Example #1
0
    def __init__(self, dir):
        """Constructor."""

        self.directory = dir

        # setup user interface
        self.widget = QtGui.QWidget()
        self.ui = Ui_VectorDXF()
        self.ui.setupUi(self.widget)
        
# module VectorDXF

        self.callbackOpenVectorInput = functools.partial(uih.getOpenFileName, "Open 2D T3 Vector Mesh", "2D T3 Vector Mesh (ASCIISingleFrame) (*.t3v)", self.ui.lineEditInput, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInput, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackOpenVectorInput)
        
        self.callbackScalarVector = functools.partial(uih.getSaveFileName, "Save DXF-file As", "Drawing Interchange File (*.dxf)", self.ui.lineEditOutput, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonOutput, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackScalarVector)    
        
        QtCore.QObject.connect(self.ui.pushButtonCreate, QtCore.SIGNAL("clicked()"), self.create)
Example #2
0
class WrapVectorDXF():
    """Wrapper for module VectorDXF"""

    def __init__(self, dir):
        """Constructor."""

        self.directory = dir

        # setup user interface
        self.widget = QtGui.QWidget()
        self.ui = Ui_VectorDXF()
        self.ui.setupUi(self.widget)
        
# module VectorDXF

        self.callbackOpenVectorInput = functools.partial(uih.getOpenFileName, "Open 2D T3 Vector Mesh", "2D T3 Vector Mesh (ASCIISingleFrame) (*.t3v)", self.ui.lineEditInput, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonInput, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackOpenVectorInput)
        
        self.callbackScalarVector = functools.partial(uih.getSaveFileName, "Save DXF-file As", "Drawing Interchange File (*.dxf)", self.ui.lineEditOutput, self.directory, self.widget)
        QtCore.QObject.connect(self.ui.pushButtonOutput, QtCore.SIGNAL(_fromUtf8("clicked()")), self.callbackScalarVector)    
        
        QtCore.QObject.connect(self.ui.pushButtonCreate, QtCore.SIGNAL("clicked()"), self.create)

    def setDir(self, directory):
        self.directory = directory
        print "set", self.directory
    
    def initialize(self):
        
        import os
        abs_path = os.path.abspath('.')
        dir = os.path.join(abs_path, 'examples/').replace('\\', '/')
  
        ###   ~   module VectorDXF   ~   ###
        
        self.ui.lineEditInput.setText(dir + "example_06/VELOCITY UV_S161_Case_A.t3v")
        self.ui.doubleSpinBoxDX.setValue(25.0)
        self.ui.doubleSpinBoxDY.setValue(25.0)
        self.ui.doubleSpinBoxScale.setValue(40)
        
        self.ui.lineEditOutput.setText(dir + "example_06/output/velocity.dxf")         

    def create(self):

        info = ""
        
        dx = self.ui.doubleSpinBoxDX.value()
        dy = self.ui.doubleSpinBoxDY.value()
        
        VMin = self.ui.doubleSpinBoxVMin.value()
        VMax = self.ui.doubleSpinBoxVMax.value()
        
        scale = self.ui.doubleSpinBoxScale.value()
        
        eps = self.ui.doubleSpinBoxLessThan.value()
        
        # read input meshes
        try:
            x, y, u, v, triangles = fh.readT3VTriangulation(self.ui.lineEditInput.text())
        except:
            QMessageBox.critical(self.widget, "Error", "Not able to load mesh file!\nCheck filename or content!")
            return
        
        vectorNodes = {}
        sCounter = 0
        
        xMin = min(x)
        xMax = max(x)
        yMin = min(y)
        yMax = max(y)       
        
        triang = tri.Triangulation(x, y, triangles)
        
        # Interpolate to regularly-spaced quad grid.

        # origin of scalar
        x0 = floor(xMin/dx)*dx
        y0 = floor(yMin/dy)*dy

        # number of nodes in x- and y-direction
        nx = int(ceil(xMax/dx) - floor(xMin/dx))
        ny = int(ceil(yMax/dy) - floor(yMin/dy))

        xGrid, yGrid = np.meshgrid(np.linspace(x0, x0+nx*dx, nx+1), np.linspace(y0, y0+ny*dy, ny+1))
        info += " - Grid created with {0} x {1} points:\n\t- dx = {2}\n\t- dy = {3}\n\t- x(min) = {4}\n\t- y(min) = {5}\n\t- x(max) = {6}\n\t- y(max) = {7}\n".format(nx, ny, dx, dy, x0, y0, x0+nx*dx, y0+ny*dy)

        interpLinU = tri.LinearTriInterpolator(triang, u)
        zGridU = interpLinU(xGrid, yGrid)

        interpLinV = tri.LinearTriInterpolator(triang, v)
        zGridV = interpLinV(xGrid, yGrid)

        for iy in range(len(xGrid)):
            for ix in range(len(xGrid[0])):
                vectorNodes[sCounter] = [xGrid[iy][ix], yGrid[iy][ix], zGridU[iy][ix], zGridV[iy][ix]]
                sCounter += 1
   
        try:
            fname = self.ui.lineEditOutput.text()
            info += "\n - Number of interpolated values: {0}".format(len(vectorNodes))
            nOfVectors= fh.writeVectorDXF(vectorNodes, VMin, VMax, eps, scale, fname)
            info += "\n - {0} values written to {1}".format(nOfVectors, fname)
        except:
            QMessageBox.critical(self.widget, "Error", "Not able to write DXF file!")
            return   
        
        QMessageBox.information(self.widget, "Module VectorDXF", info)