Macro ArrayCopy/it: Difference between revisions

From FreeCAD Documentation
mNo edit summary
No edit summary
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|Version=1.0}}
{{Macro/it|Icon=Text-x-python|Name=ArrayCopy|Name/it=Serie di copie|Description=Questa macro copia più volte gli oggetti selezionati in una griglia (matrice) rettangolare|Author=Yorik|Version=1.0}}





Revision as of 22:00, 20 January 2017

File:Text-x-python ArrayCopy

Descrizione
Questa macro copia più volte gli oggetti selezionati in una griglia (matrice) rettangolare

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


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