Macro MultiCopy/de

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

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)

The MultiCopy command's parameters are as follows :

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

<div lang="en" dir="ltr" class="mw-content-ltr">
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
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
3. Name              : delete_selection
   Type              : Boolean
   Is Optional       : True
   Description       : If true, the selected objects are 
                       deleted after the MultiCopy operation.
   Default Value     : False
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
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. [...] = ...

While inputting the Paste Code Commands in the relevant input text box, there are three signals in the form of coloured strips located at the bottom of the text box:

  1. Black denotes that the text box is focussed on, and that the user is currently entering the Paste Code Commands into it.
  2. Red denotes that the text box is focussed out of, and that the user-entered commands are SYNTACTICALLY INCORRECT.
  3. Green denotes that the text box is focussed out of, and that the user-entered commands are SYNTACTICALLY CORRECT.

Beispiel 1

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

The 1 and 3 values represent the duplication range where both the values are INCLUSIVE. The first (from) value must always be LESS THAN OR EQUAL TO the second (to) value. The values (together) can take the form of one of the five numbering types (check 'Key Features').

[1] represents the first object from an assumed list of user-selected objects.
{1} represents the label name of the first object.
{n#} represents a numbering label of the type 'Ordinary Numerals'. (more on that, later)

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

Brackets are only used for commands of the second generic type. The square brackets [ and ] always lie on the left-hand side of the command; whereas, the curly brackets { and } always lie on the right-hand side of the command.

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

Let i be an arbitrary i-th object from an assumed list of user-selected objects.
[i] represents the i-th object without dependencies (by default)
[i|0] represents the i-th object without dependencies (another form)
[i|1] represents the i-th object WITH dependencies included

Beschriftungen nummerieren

{n#} or {N#} are of the type 'Ordinary Numerals'
{R#} or {ru#} or {RU#} are of the type 'Upper-case Roman Numerals'
{r#} or {rl#} or {RL#} are of the type 'Lower-case Roman Numerals'
{A#} or {au#} or {AU#} are of the type 'Upper-case Alphabet'
{a#} or {al#} or {AL#} are of the type 'Lower-case Alphabet'

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

MultiCopy Macro 'Paste Code Commands'
INPUT Signal

MultiCopy Macro 'Paste Code Commands'
INCORRECT Signal

MultiCopy Macro 'Paste Code Commands'
CORRECT Signal

Hinweise

(1) There are a few inevitable from-to naming clashes between roman numerals and alphabetic characters.
E.g.: c, v, i, x, etc.
(2) By design, roman numerals take precedence over alphabetic characters.
(3) Dependencies only apply to 'Standard Copy'; its application on 'Simple Copy' will automatically be ignored.

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")
<class="rawcodeurl"><a href="https://raw.githubusercontent.com/melwyncarlo/MultiCopy/main/MultiCopy.FCMacro">raw code</a>


Verweise

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