Macro Serie di copie

From FreeCAD Documentation
Revision as of 21:03, 1 January 2014 by Renatorivo (talk | contribs) (Created page with "{{Macro/it|Icon=Text-x-python|Name=ArrayCopy|Name/it=ArrayCopy|Description=Esta macro copia el objeto seleccionado varias veces, a lo largo de una matriz rectangular|Author=Yo...")

File:Text-x-python ArrayCopy

Descrizione
Esta macro copia el objeto seleccionado varias veces, a lo largo de una matriz rectangular

Autore: Yorik
Autore
Yorik
Download
None
Link
Versione macro
1.0
Data ultima modifica
None
Versioni di FreeCAD
None
Scorciatoia
Nessuna
Vedere anche
Nessuno

This macro copies the selected object several times, on an array grid. You can define the number of rows and columns and the distance between them. You need pyqt installed.


 import FreeCAD, FreeCADGui, Part
 from PyQt4 import QtGui,QtCore
 
 def proceed():
     try:
         u = (int(l1.text()),float(l2.text()))   
         v = (int(l3.text()),float(l4.text()))
     except:
         FreeCAD.Console.PrintError("Wrong input! Only numbers allowed...\n")
     sel = FreeCADGui.Selection.getSelection()
     if sel:
         sel = sel[0]
         name = sel.Name   
         shape = sel.Shape
         for column in range(u[0]):
             for row in range(v[0]):
                 if (column != 0) or (row != 0):
                     delta = FreeCAD.Vector(column*u[1],row*v[1],0)   
                     newshape = sel.Shape.copy()
                     newshape.translate(delta)
                     newobject = FreeCAD.ActiveDocument.addObject("Part::Feature",name)
                     newobject.Shape = newshape
     else:
         FreeCAD.Console.PrintError("Error: One object must be selected")
     hide()
 
 def hide():
     dialog.hide()
 
 dialog = QtGui.QDialog()
 dialog.resize(200,300)
 dialog.setWindowTitle("Array")
 la = QtGui.QVBoxLayout(dialog)
 t1 = QtGui.QLabel("number of columns")
 la.addWidget(t1)
 l1 = QtGui.QLineEdit()
 la.addWidget(l1)
 t2 = QtGui.QLabel("distance between columns")
 la.addWidget(t2)
 l2 = QtGui.QLineEdit()
 la.addWidget(l2)
 t3 = QtGui.QLabel("number of rows")
 la.addWidget(t3)
 l3 = QtGui.QLineEdit()
 la.addWidget(l3)
 t4 = QtGui.QLabel("distance between rows")   
 la.addWidget(t4)
 l4 = QtGui.QLineEdit()
 la.addWidget(l4)
 okbox = QtGui.QDialogButtonBox(dialog)
 okbox.setOrientation(QtCore.Qt.Horizontal)
 okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
 la.addWidget(okbox)
 QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed)
 QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide)
 QtCore.QMetaObject.connectSlotsByName(dialog)
 dialog.show()