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))
def Codes_Gui(parent=None): mySW = MainWindow(Tools.getMainWindow()) mySW.show()
def Activated(self): "Do something here" from SurveyTools import Tools Tools.crearPunt('name', 5, 5, 5, 'Code') return
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
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
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
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