Jump to content

Makro Mehrfach Kopieren

From FreeCAD Documentation
This page is a translated version of the page Macro MultiCopy and the translation is 100% complete.

Mehrfach Kopieren

Beschreibung
Mehrfach Kopieren ermöglicht das Duplizieren (Kopieren und Einfügen) mehrerer FreeCAD-Objekte, die sequenziell und individuell beschriftet werden können.

Versionsmakro : 1.0.1
Datum der letzten Änderung : 2021-03-18
FreeCAD version : 0.17 und neuer
Herunterladen : Werkzeugleisten-Symbol
Autor: Melwyncarlo
Autor
Melwyncarlo
Herunterladen
Werkzeugleisten-Symbol
Links
Macro-Version
1.0.1
Datum der letzten Änderung
2021-03-18
FreeCAD-Version(s)
0.17 und neuer
Standardverknüpfung
None
Siehe auch
None

Beschreibung

'Mehrfach Kopieren' ist ein vom Benutzer erstelltes Makro, das innerhalb der FreeCAD-Anwendung verwendet werden kann. Mehrfach Kopieren ermöglicht das Duplizieren (Kopieren und Einfügen) mehrerer FreeCAD-Objekte, die sequenziell und nach Belieben beschriftet werden können.

   Dies ist das Symbol des Makros Mehrfach Kopieren.

Das Makro Mehrfach Kopieren kann über den integrierten AddonManager innerhalb der FreeCAD-Software heruntergeladen werden.

Schlüsselfunktionen

  • Zwei Eingabemethoden: per Maus oder per Tastatur (Befehle zum Einfügen von Code)
  • Unterstützung für Standardkopieren und einfaches Kopieren
  • Duplizieren über zwei verschiedene Dokumente hinweg
  • Ausgewählte Objekte nach dem Duplizieren löschen
  • Duplizieren mit oder ohne Abhängigkeiten
  • Benutzerdefinierte Trennzeichen für Beschriftungen hinzufügen
  • Beschriftungen mit aufgefüllter Nummerierung versehen
  • Nummerierungsarten: Normale Ziffern, römische Ziffern in Groß-/Kleinbuchstaben und alphabetische Zeichen in Groß-/Kleinbuchstaben
  • Einzigartige 'Paste Code Commands', die eine mehrfache Duplizierung sowohl prozedural als auch in verschachtelten Schleifen ermöglichen
  • Sowohl CUI- als auch GUI-Methoden verfügbar

Makro Mehrfach-Kopie Hauptdialog

Installation

Linux

Mehrfach Kopieren kann manuell installiert werden, ähnlich wie bei einer Windows-Installation, oder mithilfe des Befehlsterminals und den entsprechenden Befehlen, wie in der Datei INSTALL.

Standardmäßig kann das Linux-Befehlsterminal durch gleichzeitiges Drücken der folgenden Tasten gestartet werden:

Control + Alt + T

Windows

Mehrfach Kopieren kann mit Hilfe der folgenden zwei Schritte installiert werden :-

  1. Die Datei MultiCopy.zip herunterladen.
  2. Entpacke den Inhalt der ZIP-Datei in das Verzeichnis für FreeCAD-Benutzermakros.

Standardmäßig sollte sich das FreeCAD-Benutzer-Makroverzeichnis unter folgendem Pfad befinden:

C:/Users/User_Name/AppData/Roaming/FreeCAD/Macro

Anwendung - Methode Grafische Benutzeroberfläche

Mehrfach-Kopie kann durch Ausführen der folgenden Schritte geladen werden: -

  1. Die FreeCAD-Applikation starten.
  2. Gehe zu Makro → Makros ....
  3. Auf den Reiter Benutzermakros im erscheinenden Dialog klicken.
  4. Wähle MultiCopy.FCMacro.
  5. Auf Ausführen klicken.

Bevor das Mehrfach Kopieren-Makro geladen wird, zunächst ein oder mehrere Objekte aus dem aktiven FreeCAD-Dokument auswählen und dann das Makro laden. Anschließend die Anweisungen im Dialogfeld befolgen, die erforderlichen Eingaben eingeben und auf die Schaltfläche Einfügen klicken. Im Falle eines Fehlers oder einer Warnung wird man automatisch benachrichtigt. Sollte ein unerwarteter Fehler auftreten, uns diesen bitte mitteilen, indem die FreeCAD-Version angegeben wird, die durchgeführten Schritte beschrieben werden und angeben wird, ob (und in welchem Umfang) eine Ausgabe erzeugt wurde.

Anwendung - CUI-Methode (Python-Konsole)

Bevor der Mehrfach Kopieren-Vorgang ausführt wird, zunächst ein oder mehrere Objekte aus dem aktiven FreeCAD-Dokument auswählen.

Um den Dialog der grafischen Benutzeroberfläche zu starten:

import MultiCopy

MultiCopy.Launch()

Um den terminal-basierten Vorgang auszuführen:

Der Befehl Mehrfach Kopieren lautet wie folgt:

Run (paste_code, copy_type=True, delete_selection=False, paste_document_label=None)

Die Befehlsparameter für Mehrfach Kopieren sind die folgenden:

1. Name              : paste_code
   Type              : String
   Is Optional       : False
   Description       : The paste code commands string.
                       For indentations, use \'\\t\'.
                       For line breaks, use \'\\n\'.

2. Name              : copy_type
   Type              : Boolean or String or Integer
   Is Optional       : True
   Description       : The copy operation mode.
   Acceptable Values : 'Standard', 'Simple', 
                       True, False, 
                       1, 2
   Default Value     : True

3. Name              : delete_selection
   Type              : Boolean
   Is Optional       : True
   Description       : If true, the selected objects are 
                       deleted after the MultiCopy operation.
   Default Value     : False

4. Name              : paste_document_label
   Type              : String or FreeCAD.Document
   Is Optional       : True
   Description       : The label of the document to paste to, 
                       or the document object itself.
   Default Value     : FreeCAD.ActiveDocument

Beispiel 1:

Die ausgewählten Objekte als Standardkopie in das aktuell aktive Dokument einfügen und die Auswahl nach dem Vorgang nicht löschen.

import MultiCopy

some_paste_code_commands = 'from 1 to 2 :\n\t[1] = SomeName_{n#}'
MultiCopy.Run(some_paste_code_commands)

Beispiel 2:

Die ausgewählten Objekte als einfache Kopie in ein anderes Dokument einfügen und die Auswahl nach dem Vorgang löschen.

import MultiCopy

some_paste_code_commands = 'from 1 to 2 :\n\t[1] = SomeName_{n#}'
MultiCopy.Run(some_paste_code_commands, True, True, 'SomeDocumentLabel')

Code-Befehle einfügen

Makro Mehrfach-Kopie 'Code einfügen-Befehls'-Liste

Die beiden wiederkehrenden Befehle in ihrer generischen Form lauten wie folgt:

  1. from ... to ... :
  2. [...] = ...

Bei der Eingabe der Befehle zum Einfügen von Code in das entsprechende Eingabefeld gibt es drei Signale in Form von farbigen Streifen am unteren Rand des Textfeldes:

  1. Schwarz bedeutet, dass das Textfeld fokussiert ist und dass der Benutzer gerade die Befehle zum Einfügen von Code darin eingibt.
  2. Rot bedeutet, dass der Fokus aus dem Textfeld entfernt wurde und dass die vom Benutzer eingegebenen Befehle SYNTAKTISCH FALSCH sind.
  3. Grün bedeutet, dass der Fokus aus dem Textfeld entfernt wurde und dass die vom Benutzer eingegebenen Befehle SYNTAKTISCH KORREKT sind.

Beispiel 1

from 1 to 3 :
     [1] = {1}-Something_{n#}

Die 1 und 3 Werte stellen den Duplikationsbereich dar, wobei beide Werte INKLUSIVE sind. Der erste Wert (von) muss immer KLEINER ODER GLEICH dem zweiten Wert (bis) sein. Die Werte (zusammen) können eine der fünf Nummerierungsarten annehmen. (prüfe 'Key Features').

[1] repräsentiert das erste Objekt aus einer angenommenen Liste von benutzerdefinierten Objekten.
{1} repräsentiert die Namensbeschriftung des ersten Objekts.
{n#} repräsentiert die Nummerierungsbeschriftung vom Typ 'Gewöhnliche Zahlen'. (mehr dazu später)

HINWEIS die korrekten Tab-Einrückungen sind für die Befehle sehr wichtig; sie können nicht durch Leerzeichen ersetzt werden.

Klammern werden nur für Befehle des zweiten generischen Typs verwendet. Die eckigen Klammern [ und ] stehen immer auf der linken Seite des Befehls, während die geschweiften Klammern { und } immer auf der rechten Seite des Befehls stehen.

Nehmen wir an, der ursprüngliche Name des ersten Objekts lautet Body. Dann würden die oben genannten Befehle eine Reihe von duplizierten Objekten (des ersten Objekts) ausgeben, die jeweils wie folgt benannt sind:

Body-Something_1
Body-Something_2
Body-Something_3

Objektdarstellung

Sei i ein beliebiges i-tes Objekt aus einer angenommenen Liste von vom Benutzer ausgewählten Objekten.
[i] steht für das i-te Objekt ohne Abhängigkeiten (Standard)
[i|0] steht für das i-te Objekt ohne Abhängigkeiten (eine andere Form)
[i|1] steht für das i-te Objekt MIT Abhängigkeiten

Beschriftungen nummerieren

{n#} oder {N#} gehören zum Typ „Gewöhnliche Ziffern“
{R#} oder {ru#} oder {RU#} gehören zum Typ „Großbuchstaben-Römische Ziffern”
{r#} oder {rl#} oder {RL#} gehören zum Typ „Kleinbuchstaben-Römische Ziffern”
{A#} oder {au#} oder {AU#} gehören zum Typ „Großbuchstaben”
{a#} oder {al#} oder {AL#} gehören zum Typ „Kleinbuchstaben”

Eine Nummerierungsbeschriftung kann zwei zusätzliche Optionen haben:

  1. {n#X} Auffüllen (mit 'X' Stellen)
  2. {n#X|i1} Verschachtelte Schleifen-Ebenen-Zuweisung (zu einer Schleife mit dem Tag „i1”)

Im Fall einer verschachtelten Schleifenebenenzuweisung OHNE Einrückung, mache:

  1. {n#0|i1} ODER
  2. {n#|i1}

Beispiel 2

from 1 to 2 : i1 :
     from a to b : i2 :
          [1|1] = Pasted-{1}-{n#3|i1}-{AU#0|i2}

Hier werden die Objekte zusammen mit den Abhängigkeiten eingefügt. Die Beschriftung 'Ordinary Numeral' hat einen Abstand von '3' und die Beschriftung 'Upper-case Alphabet' hat einen Abstand von '0'.

HINWEIS wie die 'von-bis'-Schleife Kleinbuchstaben verwendet; die Beschriftung wird jedoch in Großbuchstaben ausgegeben.
Die obigen Befehle würden eine Reihe doppelter Objekte (des ersten Objekts) ausgeben, die jeweils wie folgt beschriftet sind:

Pasted-Body-001-A
Pasted-Body-001-B
Pasted-Body-002-A
Pasted-Body-002-B

'Code einfügen-Befehle' des Makros Mehrfach Kopieren
EINGABE-Signal

'Code einfügen-Befehle' des Makros Mehrfach Kopieren
FEHLERHAFTES-Signal

'Code einfügen-Befehle' des Makros Mehrfach Kopieren
KORREKTES-Signal

Hinweise

(1) Es gibt einige unvermeidbare Namenskonflikte zwischen römischen Ziffern und Buchstaben.
Beispiele: c, v, i, x usw.
(2) Von ihrer Konzeption her haben römische Ziffern Vorrang vor alphabetischen Zeichen.
(3) Abhängigkeiten gelten nur für 'Standardkopie'; ihre Anwendung auf 'Einfache Kopie' wird automatisch ignoriert.

Skript

__Title__         = "MultiCopy"
__Author__        = "Melwyncarlo"
__Version__       = "1.0.1"
__Date__          = "2021-03-18"
__Comment__       = "MultiCopy allows the duplication (copy and paste) of "\
                    "multiple FreeCAD objects that can be labelled sequentially "\
                    "and in a custom manner."
__Web__           = "https://github.com/melwyncarlo/MultiCopy"
__Wiki__          = "https://wiki.freecad.org/index.php?title=Macro_MultiCopy"
__Icon__          = "MultiCopy_UI_Files/MultiCopy.svg"
__Help__          = "Select one or more FreeCAD objects, then click on the "\
                    "MultiCopy button/macro, and follow the instructions in the dialog box."
__Status__        = "stable"
__Requires__      = "Freecad >= v0.17"
__Communication__ = "https://github.com/melwyncarlo/MultiCopy/issues"
__Files__         = "MultiCopy_UI_Files/MultiCopy_Main_Dialog.ui, "\
                    "MultiCopy_UI_Files/MultiCopy_Commands_Dialog.ui, "\
                    "MultiCopy_UI_Files/mc_d_imgs.gif, "\
                    "MultiCopy_UI_Files/MultiCopy.svg"

#  OS: Ubuntu 18.04.5 LTS
#  Word size of OS: 64-bit
#  Word size of FreeCAD: 64-bit
#  Version: 0.18.4.
#  Build type: Release
#  Python version: 3.6.8
#  Qt version: 5.9.5
#  Coin version: 4.0.0a
#  OCC version: 7.3.0
#  Locale: English/UnitedKingdom (en_GB)

#  OS: Ubuntu 18.04.5 LTS (LXDE/Lubuntu)
#  Word size of OS	: 64-bit
#  Word size of FreeCAD: 64-bit
#  Version: 0.19
#  Build type: Release
#  Branch: unknown
#  Hash: 32200b604d421c4dad527fe587a7d047cf953b4f
#  Python version: 3.6.9
#  Qt version: 5.9.5
#  Coin versio: 4.0.0a
#  OCC version: 7.3.0
#  Locale: English/UnitedKingdom (en_GB)

Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro


# This code is copied instead of the original macro code
# to guide the user to the online download page.
# Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki
# or if the RAW code URL is somewhere else in the wiki.

from PySide import QtGui, QtCore

diag = QtGui.QMessageBox(QtGui.QMessageBox.Information,
    "Information",
    "This macro must be downloaded from this link\n"
    "\n"
    "https://raw.githubusercontent.com/melwyncarlo/MultiCopy/main/MultiCopy.FCMacro" + "\n"
    "\n"
    "Quit this window to access the download page")

diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
diag.setWindowModality(QtCore.Qt.ApplicationModal)
diag.exec_()

import webbrowser 
webbrowser.open("https://raw.githubusercontent.com/melwyncarlo/MultiCopy/main/MultiCopy.FCMacro")

Verweise

[1] MultiCopy GitHub-Verzeichnis
[2] FreeCAD Macros GitHub-Verzeichnis - MultiCopy
[3] FreeCAD-Forum Disksussionsseite - MultiCopy