Macro ArrayCopy/it: Difference between revisions

From FreeCAD Documentation
No edit summary
(Updating to match new version of source page)
Line 1: Line 1:
{{Macro/it|Icon=Text-x-python|Name=ArrayCopy|Name/it=ArrayCopy|Description=Questa macro copia più volte gli oggetti selezionati in una griglia (matrice) rettangolare|Author=Yorik}}
{{Macro|Icon=Text-x-python|Name=ArrayCopy|Description=This macro copies the selected object several times, on an array grid|Author=Yorik|Version=1.0}}




Line 5: Line 5:




{{Code|code=
<syntaxhighlight>


import FreeCAD, FreeCADGui, Part
import FreeCAD, FreeCADGui, Part
Line 65: Line 65:
dialog.show()
dialog.show()


}}
</syntaxhighlight>
<languages/>
<languages/>

Revision as of 10:26, 23 September 2016

File:Text-x-python ArrayCopy

Description
This macro copies the selected object several times, on an array grid

Macro version: 1.0
Author: Yorik
Author
Yorik
Download
None
Links
Macro Version
1.0
Date last modified
None
FreeCAD Version(s)
None
Default shortcut
None
See also
None


Questa macro copia più volte gli oggetti selezionati in una griglia (matrice). È possibile definire il numero di righe e di colonne e la distanza tra di loro. È necessario che PyQt sia installato.


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