예제 #1
0
파일: Codes_Gui.py 프로젝트: Agiroq/Survey
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.doc = FreeCAD.activeDocument()
        self.punts = []
        self.linies = self.doc.getObject("Breaklines").Codis
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.add)
        self.ui.pushButton.clicked.connect(self.remove)

        for p in self.linies:

            self.ui.llistaCodisLinia.addItem(p)

        for p in Tools.selectPointsGroup(codes_dict=True):
            if p not in self.linies:
                self.ui.llistaCodis.addItem(unicode(p))
예제 #2
0
파일: Codes_Gui.py 프로젝트: ihipi/Survey
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.doc = FreeCAD.activeDocument()
        self.punts = []
        self.linies = self.doc.getObject("Breaklines").Codis
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.add)
        self.ui.pushButton.clicked.connect(self.remove)

        for p in self.linies:

            self.ui.llistaCodisLinia.addItem(p)

        for p in Tools.selectPointsGroup(codes_dict=True):
            if p not in self.linies:
                self.ui.llistaCodis.addItem(unicode(p))
예제 #3
0
파일: Codes_Gui.py 프로젝트: Agiroq/Survey
def Codes_Gui(parent=None):
    mySW = MainWindow(Tools.getMainWindow())
    mySW.show()
예제 #4
0
파일: Punt.py 프로젝트: ihipi/Survey
 def Activated(self):
     "Do something here"
     from SurveyTools import Tools
     Tools.crearPunt('name', 5, 5, 5, 'Code')
     return
예제 #5
0
    def Activated(self):
        "Do something here"
        import numpy, scipy, FreeCADGui, easygui, Draft
        from SurveyTools import Tools
        from scipy.spatial import Delaunay
        import matplotlib.pyplot as plt

        #aconsegueix la seleccio de freecad

        sel = FreeCADGui.Selection.getSelection(
        )  #comprova si la seleccio es un grup
        if sel[0].InList[0].Tipus == "Punts":
            #grup_llista=[]
            #for i in range(len(sel)-1):
            #    grup_llista.append(sel[i].OutList)    #llista d'objectes del grup
            #print grup_llista
            #comprova que el primer objecte sigui un Punt (Survey)
            if sel[0][0].Tipus == "Punt":
                tri_grp = Tools.creaSuperficie(
                    easygui.enterbox('tria un nom de superficie'))

                llistaPunts_z = []
                llistaPunts = []
                #agrega els punts del grup a la llista
                for p in grup_llista:
                    llistaPunts_z.append([p.X, p.Y, p.Z])
                    llistaPunts.append([p.X, p.Y])
                    print(p.Label, p.Codi, p.X, p.Y, p.Z)
                points = numpy.array(llistaPunts)
                tri = Delaunay(points)
                pointsZ = numpy.array(llistaPunts_z)
                triZ = Delaunay(pointsZ)

                print llistaPunts, llistaPunts_z
                for t in points[tri.simplices]:
                    triangle = []
                    print 't', t
                    for p in t:
                        for pun in llistaPunts_z:
                            if pun[0] == p[0] and pun[1] == p[1]:

                                print 'for t in pointZ(tri.simplices)/forp in t', p
                                x, y, z = pun
                                triangle.append(FreeCAD.Vector(x, y, z))
                        print 'p', p
                    Draft.makeWire(triangle,
                                   closed=True,
                                   face=True,
                                   support=None)  # create the wire open

                    # create the wire open

                return

            else:
                easygui.msgbox('Necessites triar un grup de punts',
                               'Instruccions')

        else:
            easygui.msgbox('Necessites triar un grup de punts', 'Instruccions')

        return
예제 #6
0
파일: Importa.py 프로젝트: Agiroq/Survey
    def Activated(self):
        "Do something here"
        import easygui, Draft
        from SurveyTools import Tools

        fitxer = easygui.fileopenbox(
            'Tria un fitxer de punts (nom, x, y, z, codi)',
            default="/home/albert/.FreeCAD/Mod/Survey/puntos.PUN"
        )  # path and name of file.txt

        grup = easygui.enterbox('tria un nom de grup')
        try:

            grp = FreeCAD.activeDocument().Punts

        except:
            import newProject as np
            np.creaProjecte()
            grp = FreeCAD.activeDocument().Punts

        if grup == '':
            grup = 'New points'
        grp_punts = grp.newObject("App::DocumentObjectGroupPython", grup)

        file = open(fitxer, "r")  # open the file read
        X = Y = Z = 0.0
        codis = {}
        linies = []
        for linia in file:

            if linia[-1] == '\n':
                linia = linia[:-1]
            coordinates = linia.split('\t')
            N, X, Y, Z, C = coordinates
            N = str(N)
            C = str(C).strip()

            p = Tools.crearPunt(str(N), float(X), float(Y), float(Z),
                                C)  # create points (uncomment for use)

            grp_punts.addObject(p)

            codi_l = C.split(' ')

            codi_clean = str(codi_l[0])
            codi_base = codi_clean + '_'
            print '#############################'
            print len(codi_l[0]), codi_clean, len(codi_clean)
            if len(codi_l) > 1:
                if 'I' in codi_l[1]:
                    print 'inici d linia amb "I":\n'

                    if codi_base in codis.keys():
                        print "Ja existeix: ", codi_base
                        codis[codi_base] = codis[codi_base] + 1

                        linies.append([
                            codi_base + str(codis[codi_base]),
                            [FreeCAD.Vector(float(X), float(Y), float(Z))]
                        ])

                    else:
                        print 'linia nova' + codi_clean[0]
                        codis[codi_base] = 0

                        linies.append([
                            codi_base + str(codis[codi_base]),
                            [FreeCAD.Vector(float(X), float(Y), float(Z))]
                        ])
                else:
                    if codi_base in codis.keys():
                        for lin in linies:
                            lin_code = lin[0]
                            print codi_base, lin_code[:len(codi_base)]
                            if codi_base == lin_code[:len(codi_base)]:

                                print 'punt de la linia: ' + lin_code, lin[1]

                                lin[1].append(
                                    FreeCAD.Vector(float(X), float(Y),
                                                   float(Z)))
                            else:
                                print 'punt sense linia', codi_base

            else:

                if codi_base in codis.keys():
                    for lin in linies:
                        lin_code = lin[0]
                        print codi_base, lin_code[:len(codi_base)]
                        if codi_base == lin_code[:len(codi_base)]:

                            print 'punt de la linia: ' + lin_code, lin[1]

                            lin[1].append(
                                FreeCAD.Vector(float(X), float(Y), float(Z)))
                        else:
                            print 'punt sense linia', codi_base

                    # separate the coordinates

        print linies

        if easygui.ynbox("Voleu crear les linies de rotura?"):
            grp_linies = FreeCAD.activeDocument().Breaklines
            for c in codis.keys():
                grp_linies.newObject("App::DocumentObjectGroupPython",
                                     c.split('_')[0])

            for k in linies:
                l = []
                for punt in k[1]:
                    l.append(punt)

                #wire=Draft.makeWire(l,closed=False,face=False,support=None)   # create the wire open
                wire = Part.wire
                wire.Label = k[0]
                for cod in grp_linies.Group:
                    label = cod.Label
                    if label == k[0].split('_')[0]:
                        cod.addObject(wire)
        #print codis, code_list
        file.close()
        FreeCADGui.SendMsgToActiveView("ViewFit")
        return
예제 #7
0
파일: Punt.py 프로젝트: Agiroq/Survey
 def Activated(self):
     "Do something here"
     from SurveyTools import Tools
     Tools.crearPunt('name', 5, 5, 5, 'Code')
     return
예제 #8
0
파일: Triangula.py 프로젝트: ihipi/Survey
    def Activated(self):
        "Do something here"
        import numpy, scipy, FreeCADGui, easygui, Draft
        from SurveyTools import Tools
        from scipy.spatial import Delaunay
        import matplotlib.pyplot as plt
        
        #aconsegueix la seleccio de freecad
        
        
        
        sel = FreeCADGui.Selection.getSelection() #comprova si la seleccio es un grup
        if sel[0].InList[0].Tipus == "Punts":
            #grup_llista=[]
            #for i in range(len(sel)-1):
            #    grup_llista.append(sel[i].OutList)    #llista d'objectes del grup
            #print grup_llista
            #comprova que el primer objecte sigui un Punt (Survey)
            if sel[0][0].Tipus == "Punt" :
                tri_grp  = Tools.creaSuperficie(easygui.enterbox('tria un nom de superficie'))   
 
                llistaPunts_z=[]
                llistaPunts = []
                #agrega els punts del grup a la llista
                for p in grup_llista:
                    llistaPunts_z.append([p.X,p.Y,p.Z])
                    llistaPunts.append([p.X,p.Y])
                    print (p.Label,p.Codi,p.X,p.Y,p.Z)
                points = numpy.array(llistaPunts)
                tri = Delaunay(points)
                pointsZ = numpy.array(llistaPunts_z)
                triZ = Delaunay(pointsZ)

                print llistaPunts,llistaPunts_z
                for t in points[tri.simplices]:
                    triangle =[]
                    print 't',t
                    for p in t:
                        for pun in llistaPunts_z:
                            if pun[0]== p[0] and pun[1]== p[1]:
                                
                                print 'for t in pointZ(tri.simplices)/forp in t', p
                                x,y,z = pun
                                triangle.append(FreeCAD.Vector(x,y,z))
                        print 'p',p
                    Draft.makeWire(triangle,closed=True,face=True,support=None)   # create the wire open
                    
                        
                    # create the wire open
                    
                    
                return
        
            else:   
                easygui.msgbox('Necessites triar un grup de punts', 'Instruccions')

        else:   
            easygui.msgbox('Necessites triar un grup de punts', 'Instruccions')

        
        return
예제 #9
0
파일: Importa.py 프로젝트: ihipi/Survey
    def Activated(self):
        "Do something here"
        import easygui, Draft
        from SurveyTools import Tools

        fitxer = easygui.fileopenbox(
            "Tria un fitxer de punts (nom, x, y, z, codi)", default="/home/albert/.FreeCAD/Mod/Survey/puntos.PUN"
        )  # path and name of file.txt

        grup = easygui.enterbox("tria un nom de grup")
        try:

            grp = FreeCAD.activeDocument().Punts

        except:
            import newProject as np

            np.creaProjecte()
            grp = FreeCAD.activeDocument().Punts

        if grup == "":
            grup = "New points"
        grp_punts = grp.newObject("App::DocumentObjectGroupPython", grup)

        file = open(fitxer, "r")  # open the file read
        X = Y = Z = 0.0
        codis = {}
        linies = []
        for linia in file:

            if linia[-1] == "\n":
                linia = linia[:-1]
            coordinates = linia.split("\t")
            N, X, Y, Z, C = coordinates
            N = str(N)
            C = str(C).strip()

            p = Tools.crearPunt(str(N), float(X), float(Y), float(Z), C)  # create points (uncomment for use)

            grp_punts.addObject(p)

            codi_l = C.split(" ")

            codi_clean = str(codi_l[0])
            codi_base = codi_clean + "_"
            print "#############################"
            print len(codi_l[0]), codi_clean, len(codi_clean)
            if len(codi_l) > 1:
                if "I" in codi_l[1]:
                    print 'inici d linia amb "I":\n'

                    if codi_base in codis.keys():
                        print "Ja existeix: ", codi_base
                        codis[codi_base] = codis[codi_base] + 1

                        linies.append(
                            [codi_base + str(codis[codi_base]), [FreeCAD.Vector(float(X), float(Y), float(Z))]]
                        )

                    else:
                        print "linia nova" + codi_clean[0]
                        codis[codi_base] = 0

                        linies.append(
                            [codi_base + str(codis[codi_base]), [FreeCAD.Vector(float(X), float(Y), float(Z))]]
                        )
                else:
                    if codi_base in codis.keys():
                        for lin in linies:
                            lin_code = lin[0]
                            print codi_base, lin_code[: len(codi_base)]
                            if codi_base == lin_code[: len(codi_base)]:

                                print "punt de la linia: " + lin_code, lin[1]

                                lin[1].append(FreeCAD.Vector(float(X), float(Y), float(Z)))
                            else:
                                print "punt sense linia", codi_base

            else:

                if codi_base in codis.keys():
                    for lin in linies:
                        lin_code = lin[0]
                        print codi_base, lin_code[: len(codi_base)]
                        if codi_base == lin_code[: len(codi_base)]:

                            print "punt de la linia: " + lin_code, lin[1]

                            lin[1].append(FreeCAD.Vector(float(X), float(Y), float(Z)))
                        else:
                            print "punt sense linia", codi_base

                    # separate the coordinates

        print linies

        if easygui.ynbox("Voleu crear les linies de rotura?"):
            grp_linies = FreeCAD.activeDocument().Breaklines
            for c in codis.keys():
                grp_linies.newObject("App::DocumentObjectGroupPython", c.split("_")[0])

            for k in linies:
                l = []
                for punt in k[1]:
                    l.append(punt)

                # wire=Draft.makeWire(l,closed=False,face=False,support=None)   # create the wire open
                wire = Part.wire
                wire.Label = k[0]
                for cod in grp_linies.Group:
                    label = cod.Label
                    if label == k[0].split("_")[0]:
                        cod.addObject(wire)
        # print codis, code_list
        file.close()
        FreeCADGui.SendMsgToActiveView("ViewFit")
        return
예제 #10
0
파일: Codes_Gui.py 프로젝트: ihipi/Survey
def Codes_Gui(parent=None):
    mySW = MainWindow(Tools.getMainWindow())
    mySW.show()