diff --git a/examples/DisplayImage/doc/README.md b/examples/DisplayImage/doc/README.md
deleted file mode 100644
index ef9a4a0..0000000
--- a/examples/DisplayImage/doc/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Display measurement image from project
-
-This example demonstrates how to read a measurement image from a project and display it in PNG format in a user defined script dialog.
-
-## Example
-
-![](images/dialog.png)
-
-## Preliminaries
-
-* For the sake of simplicity it is assumed that the measurement list from which the image is read has a fixed name ('Scan 1').
-* You have to install [OpenCV python](https://pypi.org/project/opencv-python/) for the example to run.
-* The example code must be part of an add-on, so that this python wheel can be added to that add-on's environment.
-
-![](images/wheel1.png)
-
-![](images/wheel2.png)
-
-![](images/wheel3.png)
diff --git a/examples/DisplayImage/doc/images/dialog.png b/examples/DisplayImage/doc/images/dialog.png
deleted file mode 100644
index 8c5f5a3..0000000
Binary files a/examples/DisplayImage/doc/images/dialog.png and /dev/null differ
diff --git a/examples/DisplayImage/doc/images/wheel1.png b/examples/DisplayImage/doc/images/wheel1.png
deleted file mode 100644
index 403f1d4..0000000
Binary files a/examples/DisplayImage/doc/images/wheel1.png and /dev/null differ
diff --git a/examples/DisplayImage/doc/images/wheel2.png b/examples/DisplayImage/doc/images/wheel2.png
deleted file mode 100644
index e9bb8d7..0000000
Binary files a/examples/DisplayImage/doc/images/wheel2.png and /dev/null differ
diff --git a/examples/DisplayImage/doc/images/wheel3.png b/examples/DisplayImage/doc/images/wheel3.png
deleted file mode 100644
index 68c0208..0000000
Binary files a/examples/DisplayImage/doc/images/wheel3.png and /dev/null differ
diff --git a/examples/DisplayImage/icon.png b/examples/DisplayImage/icon.png
deleted file mode 100644
index 42dbd76..0000000
Binary files a/examples/DisplayImage/icon.png and /dev/null differ
diff --git a/examples/DisplayImage/license/license.txt b/examples/DisplayImage/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/DisplayImage/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/DisplayImage/metainfo.json b/examples/DisplayImage/metainfo.json
deleted file mode 100644
index 0e53933..0000000
--- a/examples/DisplayImage/metainfo.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "author": "Carl Zeiss GOM Metrology GmbH",
- "description": "Display single image",
- "labels": [
- ],
- "licensing": {
- "licenses": [
- ],
- "product-codes": [
- ]
- },
- "software-revision": "55",
- "software-version": "ZEISS INSPECT 2024 Alpha1",
- "tags": [
- ],
- "title": "Display Image",
- "uuid": "74edeeeb-126b-4033-814f-66272bc7ba1f",
- "version": "1.0.0"
-}
diff --git a/examples/DisplayImage/scripts/dialog.gdlg b/examples/DisplayImage/scripts/dialog.gdlg
deleted file mode 100644
index 3ba66e0..0000000
--- a/examples/DisplayImage/scripts/dialog.gdlg
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "content": [
- [
- {
- "columns": 3,
- "data": "AAAAAA==",
- "file_name": "",
- "height": 0,
- "keep_aspect": true,
- "keep_original_size": true,
- "name": "image",
- "rows": 1,
- "system_image": "system_message_warning",
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "image",
- "use_system_image": false,
- "width": 0
- },
- {
- },
- {
- }
- ]
- ],
- "control": {
- "id": "Close"
- },
- "embedding": "always_toplevel",
- "position": "automatic",
- "size": {
- "height": 88,
- "width": 134
- },
- "sizemode": "automatic",
- "style": "",
- "title": {
- "id": "",
- "text": "Text detection",
- "translatable": true
- }
-}
diff --git a/examples/DisplayImage/scripts/display_image.metainfo b/examples/DisplayImage/scripts/display_image.metainfo
deleted file mode 100644
index 7aa4ad6..0000000
--- a/examples/DisplayImage/scripts/display_image.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "display_image",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.display_image",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "c269d2dc-b6c2-471d-ace9-c2d58d5fa767"
-}
diff --git a/examples/DisplayImage/scripts/display_image.py b/examples/DisplayImage/scripts/display_image.py
deleted file mode 100644
index 0916b79..0000000
--- a/examples/DisplayImage/scripts/display_image.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import cv2
-import numpy as np
-
-#
-# Read image from project
-#
-def get_image ():
-
- #
- # It is assumed that the measurement series 'Scan 1' contains images
- #
- measurement = gom.app.project.measurement_series['Scan 1'].measurements[0]
- image = np.array (measurement.images['left camera'].data.rgb )[0]
- return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
-
-def image_to_png (image):
- _, data = cv2.imencode(".png", image)
- return data.tobytes()
-
-image = get_image ()
-
-DIALOG=gom.script.sys.create_user_defined_dialog (file='dialog.gdlg')
-
-DIALOG.image.data = image_to_png (cv2.resize (image, (640, 480)))
-
-gom.script.sys.show_user_defined_dialog (dialog=DIALOG)
-
-
diff --git a/examples/FileSelectionAndFiltering/doc/README.md b/examples/FileSelectionAndFiltering/doc/README.md
deleted file mode 100644
index 25c940c..0000000
--- a/examples/FileSelectionAndFiltering/doc/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# File Selection and Filtering Examples
-
-Examples for selecting and filtering files in ZEISS INSPECT Python scripts.
\ No newline at end of file
diff --git a/examples/FileSelectionAndFiltering/license/license.txt b/examples/FileSelectionAndFiltering/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/FileSelectionAndFiltering/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/FileSelectionAndFiltering/scripts/listdir_categories.py b/examples/FileSelectionAndFiltering/scripts/listdir_categories.py
deleted file mode 100644
index 3c69e33..0000000
--- a/examples/FileSelectionAndFiltering/scripts/listdir_categories.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import os
-
-
-RESULT=gom.script.sys.execute_user_defined_dialog (dialog={
- "content": [
- [
- {
- "columns": 1,
- "default": "",
- "file_types": [
- ],
- "file_types_default": "",
- "limited": False,
- "name": "directory",
- "rows": 1,
- "selection_type": "directory",
- "title": {
- "id": "",
- "text": "Choose Folder",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "Click to select a folder",
- "translatable": True
- },
- "type": "input::file"
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 112,
- "width": 271
- },
- "sizemode": "",
- "style": "Standard",
- "title": {
- "id": "",
- "text": "List files in a folder",
- "translatable": True
- }
-})
-
-dir = RESULT.directory
-# change working directory to the selected directory
-os.chdir(dir)
-print('Files in directory', dir + ':')
-for filename in os.listdir(dir):
- if os.path.isdir(filename):
- print(' Folder:', filename)
- elif os.path.isfile(filename):
- print(' File:', filename)
- else:
- print(' Other:', filename)
diff --git a/examples/FileSelectionAndFiltering/scripts/listdir_dialog.py b/examples/FileSelectionAndFiltering/scripts/listdir_dialog.py
deleted file mode 100644
index 5b19bae..0000000
--- a/examples/FileSelectionAndFiltering/scripts/listdir_dialog.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import os
-
-
-RESULT=gom.script.sys.execute_user_defined_dialog (dialog={
- "content": [
- [
- {
- "columns": 1,
- "default": "",
- "file_types": [
- ],
- "file_types_default": "",
- "limited": False,
- "name": "directory",
- "rows": 1,
- "selection_type": "directory",
- "title": {
- "id": "",
- "text": "Choose Folder",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "Click to select a folder",
- "translatable": True
- },
- "type": "input::file"
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 112,
- "width": 271
- },
- "sizemode": "",
- "style": "Standard",
- "title": {
- "id": "",
- "text": "List files in a folder",
- "translatable": True
- }
-})
-
-dir = RESULT.directory
-print('Files in directory', dir + ':')
-for filename in os.listdir(dir):
- print(' File:', filename)
diff --git a/examples/FileSelectionAndFiltering/scripts/listdir_ext.py b/examples/FileSelectionAndFiltering/scripts/listdir_ext.py
deleted file mode 100644
index ce15455..0000000
--- a/examples/FileSelectionAndFiltering/scripts/listdir_ext.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import os
-
-
-RESULT=gom.script.sys.execute_user_defined_dialog (dialog={
- "content": [
- [
- {
- "columns": 1,
- "default": "",
- "file_types": [
- ],
- "file_types_default": "",
- "limited": False,
- "name": "directory",
- "rows": 1,
- "selection_type": "directory",
- "title": {
- "id": "",
- "text": "Choose Folder",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "Click to select a folder",
- "translatable": True
- },
- "type": "input::file"
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 112,
- "width": 271
- },
- "sizemode": "",
- "style": "Standard",
- "title": {
- "id": "",
- "text": "List files in a folder",
- "translatable": True
- }
-})
-
-dir = RESULT.directory
-# change working directory to the selected directory
-os.chdir(dir)
-print('Files in directory', dir + ':')
-for filename in os.listdir(dir):
- if os.path.isdir(filename):
- print(' Folder:', filename)
- elif os.path.isfile(filename):
- base, ext = os.path.splitext(filename)
- print(' File:', filename, ' Base:', base, ' Extension:', ext)
- else:
- print(' Other:', filename)
diff --git a/examples/FileSelectionAndFiltering/scripts/walkdir_ext.py b/examples/FileSelectionAndFiltering/scripts/walkdir_ext.py
deleted file mode 100644
index 29c3981..0000000
--- a/examples/FileSelectionAndFiltering/scripts/walkdir_ext.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import os
-
-
-RESULT=gom.script.sys.execute_user_defined_dialog (dialog={
- "content": [
- [
- {
- "columns": 1,
- "default": "",
- "file_types": [
- ],
- "file_types_default": "",
- "limited": False,
- "name": "directory",
- "rows": 1,
- "selection_type": "directory",
- "title": {
- "id": "",
- "text": "Choose Folder",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "Click to select a folder",
- "translatable": True
- },
- "type": "input::file"
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 112,
- "width": 271
- },
- "sizemode": "",
- "style": "Standard",
- "title": {
- "id": "",
- "text": "List files in a folder",
- "translatable": True
- }
-})
-
-dir = RESULT.directory
-print('Files in directory tree below', dir + ':')
-for (basepath, subfolders, filenames) in os.walk(dir):
- print(' Files in directory', basepath + ':')
- for filename in filenames:
- base, ext = os.path.splitext(filename)
- print(' File:', filename, ' Base:', base, ' Extension:', ext)
- print(' -> Full path:', os.path.join(basepath, filename))
diff --git a/examples/FileSelectionAndFiltering/scripts/walkdir_import_scripts.py b/examples/FileSelectionAndFiltering/scripts/walkdir_import_scripts.py
deleted file mode 100644
index ea6aa82..0000000
--- a/examples/FileSelectionAndFiltering/scripts/walkdir_import_scripts.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import os
-
-
-RESULT=gom.script.sys.execute_user_defined_dialog (dialog={
- "content": [
- [
- {
- "columns": 1,
- "default": "",
- "file_types": [
- ],
- "file_types_default": "",
- "limited": False,
- "name": "directory",
- "rows": 1,
- "selection_type": "directory",
- "title": {
- "id": "",
- "text": "Choose Folder",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "Klick to select a folder",
- "translatable": True
- },
- "type": "input::file"
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 112,
- "width": 271
- },
- "sizemode": "",
- "style": "Standard",
- "title": {
- "id": "",
- "text": "List files in a folder",
- "translatable": True
- }
-})
-
-dir = RESULT.directory
-for (basepath, subfolders, filenames) in os.walk(dir):
- for filename in filenames:
- base, ext = os.path.splitext(filename)
- if ext == '.py':
- scriptfile = os.path.join(basepath, filename)
- basename, _ = os.path.splitext(filename)
- gom.script.sys.import_script (
- config_level='user',
- display_names=[basename],
- files=[scriptfile],
- names=['test.' + basename],
- replace_existing_scripts=True)
diff --git a/examples/FileSelectionAndFiltering/scripts/walkdir_import_stl_pol.py b/examples/FileSelectionAndFiltering/scripts/walkdir_import_stl_pol.py
deleted file mode 100644
index 338df93..0000000
--- a/examples/FileSelectionAndFiltering/scripts/walkdir_import_stl_pol.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import os
-
-
-RESULT=gom.script.sys.execute_user_defined_dialog (dialog={
- "content": [
- [
- {
- "columns": 1,
- "default": "",
- "file_types": [
- ],
- "file_types_default": "",
- "limited": False,
- "name": "directory",
- "rows": 1,
- "selection_type": "directory",
- "title": {
- "id": "",
- "text": "Choose Folder",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "Klick to select a folder",
- "translatable": True
- },
- "type": "input::file"
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 112,
- "width": 271
- },
- "sizemode": "",
- "style": "Standard",
- "title": {
- "id": "",
- "text": "List files in a folder",
- "translatable": True
- }
-})
-
-dir = RESULT.directory
-for (basepath, subfolders, filenames) in os.walk(dir):
- for filename in filenames:
- base, ext = os.path.splitext(filename)
- if ext == '.stl':
- stlfile = os.path.join(basepath, filename)
- gom.script.sys.import_stl (
- bgr_coding=True,
- files=[stlfile],
- import_mode='new_elements',
- length_unit='mm',
- stl_color_bit_set=False,
- target_type='mesh')
- if ext == '.pol':
- polfile = os.path.join(basepath, filename)
- gom.script.sys.import_pol (
- files=[polfile],
- import_mode='new_elements')
diff --git a/examples/MeasurementSystemAnalysis/README.md b/examples/MeasurementSystemAnalysis/README.md
deleted file mode 100644
index 7567ac4..0000000
--- a/examples/MeasurementSystemAnalysis/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Measurement System Analysis
-
-## General
-
-* MSA / Gauge R&R conformal measurement system analysis.
-* It will compute statistical values based of repetitive measurements to generate values describing the system quality in means of repeatability and reliability.
-* The generated data can be output via an excel sheet.
-* Please see the sparse documentation here: [README.pdf](doc/README.pdf)
-
-## Add-on development
-
-* The add-on is meant to be as an example for your own project.
diff --git a/examples/MeasurementSystemAnalysis/doc/README.md b/examples/MeasurementSystemAnalysis/doc/README.md
deleted file mode 100644
index d6eb794..0000000
--- a/examples/MeasurementSystemAnalysis/doc/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-MSA / Gauge R&R conform measurment system analysis. It will compute statistical values based of repetitive measurements to generate values describing the system quality in means of repeatabillity and reliability.
-
-See PDF for detailed description: [PDF](README.pdf)
diff --git a/examples/MeasurementSystemAnalysis/doc/README.pdf b/examples/MeasurementSystemAnalysis/doc/README.pdf
deleted file mode 100644
index edfe7eb..0000000
Binary files a/examples/MeasurementSystemAnalysis/doc/README.pdf and /dev/null differ
diff --git a/examples/MeasurementSystemAnalysis/icon.png b/examples/MeasurementSystemAnalysis/icon.png
deleted file mode 100644
index 4d0811c..0000000
Binary files a/examples/MeasurementSystemAnalysis/icon.png and /dev/null differ
diff --git a/examples/MeasurementSystemAnalysis/license/license.txt b/examples/MeasurementSystemAnalysis/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/MeasurementSystemAnalysis/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/MeasurementSystemAnalysis/metainfo.json b/examples/MeasurementSystemAnalysis/metainfo.json
deleted file mode 100644
index fc65eea..0000000
--- a/examples/MeasurementSystemAnalysis/metainfo.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "author": "Carl Zeiss GOM Metrology GmbH",
- "description": "MSA conform measurement system analysis (ANOVA, ARM)",
- "domain": "Metrology",
- "labels": [],
- "licensing": {},
- "software-revision": "200823",
- "software-version": "2023-Beta2",
- "sort_index": -1,
- "tags": [],
- "title": "Measurement System Analysis",
- "uuid": "14560e9c-4113-4f95-a23c-fd19397e3b40",
- "version": "1.0.5"
-}
\ No newline at end of file
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_2.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_2.metainfo
deleted file mode 100644
index b174186..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_2.metainfo
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "display_name": "Generate MSA ANOVA-2 setup",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "reports",
- "submenu": [
- "operations"
- ],
- "type": "submenu"
- },
- "script": "userscript.newenv__Tools__MeasurementSystemAnalysis__msa_anova_2",
- "submenu": [
- "System analysis"
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "3633fc5a-e66e-4b44-bfdb-7ce63e82c38e"
-}
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_2.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_2.py
deleted file mode 100644
index 156b6bb..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_2.py
+++ /dev/null
@@ -1,281 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# msa_anova_2 - Script for generating a ANOVA-2 MSA setup
-#
-# This script generates table templates displaying the ARM values needed for
-# MSA / Gauge R&R evaluations. The generated template contains an entry for each
-# inspection element type present at script evaluation time.
-#
-# The table cells will contain a parametric computation for the values in question.
-# This means the values will adapt whenever preconditions are changing *except* the
-# number or names of the appraisers, parts and trials. So the script must be executed
-# again if, e.g., stages are added or an appraiser is renamed. It does not need to
-# be executed again if the checks or stages are edited in any other way.
-#
-
-import gom
-import xml.etree
-import xml.etree.ElementTree as ET
-import xml.dom.minidom
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-import Tools.MeasurementSystemAnalysis.msa_lib as msa
-import Tools.MeasurementSystemAnalysis.msa_gui as gui
-
-
-# ----------------------------------------------------------------------------------
-# Configuration
-# ----------------------------------------------------------------------------------
-
-#
-# Display name of the table template for ANOVA Type-2 evaluations
-#
-TABLE_TEMPLATE_NAME_ANOVA_2 = 'MSA (ANOVA type 2)'
-
-
-# ---------------------------------------------------------------------------------------
-# Functions needed for ANOVA Type-2 expression and template building
-# ---------------------------------------------------------------------------------------
-
-#
-# Build stage ranges matching the project setup
-#
-def create_anova_2_stage_ranges(config):
-
- for appraiser in config.appraisers:
- for part in config.parts:
- msa.create_stage_range(appraiser, part, None)
-
- for appraiser in config.appraisers:
- msa.create_stage_range(appraiser, None, None)
-
- for part in config.parts:
- msa.create_stage_range(None, part, None)
-
-
-#
-# Create ANOVA 2 expression variable name
-#
-def create_anova_2_rr_expression(type, data):
- text = """
-byappraiser = {{}}
-bypart = {{}}
-bytrial = {{}}
-byAandP = {{}}
-
-app_element = gom.app.project.actual_elements['{appraiser}']
-par_element = gom.app.project.actual_elements['{part}']
-tri_element = gom.app.project.actual_elements['{trial}']
-sigma_element = gom.app.project.inspection['{sigma}']
-all_stages = gom.app.project.stage_markers['All stages']
-
-for stage in all_stages.used_stages:
- appraiser = with_context (stage=stage, app_element.value)
- if appraiser not in byappraiser:
- t = []
- else:
- t = byappraiser[appraiser]
- t.append (stage)
- byappraiser[appraiser] = t
-
- part = with_context (stage=stage, par_element.value)
- if part not in bypart:
- t = []
- else:
- t = bypart[part]
- t.append (stage)
- bypart[part] = t
-
- trial = with_context (stage=stage, tri_element.value)
- if trial not in bytrial:
- t = []
- else:
- t = bytrial[trial]
- t.append (stage)
- bytrial[trial] = t
-
- if appraiser not in byAandP:
- byAandP.insert (appraiser,{{}})
- submap = byAandP[appraiser]
- if part not in submap:
- t = []
- else:
- t = submap[part]
- t.append (stage)
- submap[part] = t
- byAandP[appraiser] = submap
-
-p = len(byappraiser)
-t = len(bypart)
-w = len(bytrial)
-sigma_factor = sigma_element.value
-
-total_avg = avg({result}, index=all_stages)
-
-P = 0
-for _appraiser in byappraiser:
- term = avg ({result}, index = byappraiser[_appraiser]) - total_avg
- P = P + (term * term)
-P = t * w * P
-
-T = 0
-for _part in bypart:
- term = avg ({result}, index = bypart[_part]) - total_avg
- T = T + (term * term)
-T = p * w * T
-
-PT = 0
-for _appraiser in byappraiser:
- for _part in bypart:
- term = avg ({result}, index = byAandP[_appraiser][_part]) - avg ({result}, index = byappraiser[_appraiser]) - avg({result}, index = bypart[_part]) + total_avg
- PT = PT + (term * term)
-PT = w * PT
-
-E = 0
-for _stage in gom.app.project.stage_markers['All stages'].used_stages:
- appraiser = with_context (stage=_stage, app_element.value)
- part = with_context (stage=_stage, par_element.value)
- term = with_context (stage=_stage, {result}) - avg ({result}, index = byAandP[appraiser][part])
- E = E + (term * term)
-
-f1 = p * t * (w - 1)
-f2 = (p - 1) * (t - 1)
-f3 = t - 1
-f4 = p - 1
-
-s2p = P / f4
-s2t = T / f3
-s2pt = PT / f2
-s2e = E / f1
-s2add = (E + PT) / (f1 + f2)
-
-f_limit = f_table_value(f1,f2,0.05)
-interaction = s2pt / s2e > f_limit
-
-VE = not interaction ? s2add : s2e
-VW = max ((s2pt - s2e) / w, 0)
-VP = max (not interaction ? (s2p - s2add) / (t * w) : (s2p - s2pt) / (t * w), 0)
-VT = max (not interaction ? (s2t - s2add) / (p * w) : (s2t - s2pt) / (p * w), 0)
-
-EV = sigma_factor * sqr (VE)
-AV = sigma_factor * sqr (VP)
-IA = sigma_factor * sqr (VW)
-PV = sigma_factor * sqr (VT)
-
-RR = not interaction ? sqr (EV * EV + AV * AV) : sqr (EV * EV + AV * AV + IA * IA)
-"""
- return text.format(
- result=msa.get_result_token(type),
- sigma=cfg.sigma_tag,
- appraiser=cfg.appraiser_tag,
- part=cfg.part_tag,
- trial=cfg.trial_tag)
-
-#
-# Generate table template matching the current element setup
-#
-
-
-def create_anova_2_table_template(template_name, config):
-
- #
- # Generate root node
- #
- root = ET.Element('tabletemplates')
- root.attrib['dynamic_stage_support'] = 'none'
- root.attrib['view_mode'] = 'report_template'
- root.attrib['expanding_column'] = '0'
- root.attrib['name'] = template_name
- root.attrib['dynamic_column_for_stages'] = '-1'
- root.attrib['version'] = '2'
-
- #
- # Generate table headers
- #
- # The number of headers must match the number of columns. So if cells are added below, the
- # header texts must be expanded appropriately.
- #
- header_texts = ['Element', 'PV', 'EV', 'AV', 'IA', 'RR', 'Sigma',
- 'PV [%]', 'EV [%]', 'AV [%]', 'IA [%]', 'RR [%]', 'Tol.']
- root.attrib['columns'] = str(len(header_texts))
-
- headers = ET.SubElement(root, 'headers')
-
- count = 0
- for text in header_texts:
- msa.create_column_header(headers, count, text)
- count += 1
-
- #
- # Generate one entry for each element type
- #
- for type in config.types:
- template = ET.SubElement(root, 'template')
- template.attrib['dynamic_row_for_stages'] = '-1'
- template.attrib['rows'] = '1'
- template.attrib['element_type'] = type
-
- row = ET.SubElement(template, 'row')
- row.attrib['index'] = '0'
-
- #
- # Fill entry colums. The number of cells here must match the number of header texts above.
- #
- gauge_rr_expression = create_anova_2_rr_expression(type, config)
-
- col_index = 0
- col_index = msa.create_cell_raw(row, col_index, '$icon (explorer_type_and_state)$ $name$', 1)
- col_index = msa.create_cell(row, col_index, 'PV', gauge_rr_expression + "return sqr (VT)\n", 1)
- col_index = msa.create_cell(row, col_index, 'EV', gauge_rr_expression + "return sqr (VE)\n", 1)
- col_index = msa.create_cell(row, col_index, 'AV', gauge_rr_expression + "return sqr (VP)\n", 1)
- col_index = msa.create_cell(row, col_index, 'IA', gauge_rr_expression +
- "return not interaction ? 'pooled' : sqr (VW)\n", 1)
- col_index = msa.create_cell(row, col_index, 'RR', gauge_rr_expression +
- "return not interaction ? sqr (VE + VT) : sqr (VE * VT + VW)\n", 1)
- col_index = msa.create_cell(row, col_index, 'Sigma',
- 'gom.app.project.inspection[\'{element}\'].value'.format(element=cfg.sigma_tag), 1)
- col_index = msa.create_cell(
- row, col_index, 'PV [%]', gauge_rr_expression + msa.create_percent_expression(type, "sqr (VT)"), 1)
- col_index = msa.create_cell(row, col_index, 'EV [%)', gauge_rr_expression +
- msa.create_percent_expression(type, "sqr (VE)"), 1)
- col_index = msa.create_cell(
- row, col_index, 'AV [%]', gauge_rr_expression + msa.create_percent_expression(type, "sqr (VP)"), 1)
- col_index = msa.create_cell(row, col_index, 'IA [%]', gauge_rr_expression +
- msa.create_percent_expression(type, "sqr (VW)", "not interaction ? '' :"), 1)
- col_index = msa.create_cell(
- row, col_index, 'GRR [%]', gauge_rr_expression + msa.create_percent_expression(type, "RR"), 1)
- col_index = msa.create_cell(row, col_index, 'Tol.', msa.get_tolerance_expression(type), 1)
-
- return xml.dom.minidom.parseString(ET.tostring(root)).toprettyxml()
-
-
-# ----------------------------------------------------------------------------------
-# MAIN
-# ----------------------------------------------------------------------------------
-
-msa.check_project_setup()
-
-#
-# Hiding the table widget will speed the script up dramatically
-#
-gom.script.view.set_tab_visible(view='table', visible=False)
-
-try:
- gom.script.sys.close_stage_range()
-except:
- pass
-
-#
-# Setup configuration
-#
-config = gui.Configuration(cfg.EvaluationType.Anova_2)
-config.edit(show_sigma_input=True)
-
-msa.create_common_stage_ranges(config)
-create_anova_2_stage_ranges(config)
-
-template_content = create_anova_2_table_template(TABLE_TEMPLATE_NAME_ANOVA_2, config)
-msa.import_table_template(template_content, 'd2e09184-3bd0-4cf2-abdb-e935464593cb')
-
-gom.script.view.set_tab_visible(view='table', visible=True)
-
-gom.script.table.switch_template(name=TABLE_TEMPLATE_NAME_ANOVA_2)
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_3.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_3.metainfo
deleted file mode 100644
index 1b79518..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_3.metainfo
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "display_name": "Generate MSA ANOVA-3 setup",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "reports",
- "submenu": [
- "operations"
- ],
- "type": "submenu"
- },
- "script": "userscript.newenv__Tools__MeasurementSystemAnalysis__msa_anova_3",
- "submenu": [
- "System analysis"
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "ece719a7-666b-4468-b077-424b35b7c653"
-}
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_3.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_3.py
deleted file mode 100644
index 3b7c757..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_anova_3.py
+++ /dev/null
@@ -1,256 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# msa_anova_3 - Script for generating an MSA ANOVA-3 evaluation
-#
-# This script generates a table template the ANOVA Type-3 values needed for MSA / Gauge R&R
-# evaluations.
-#
-# The table cells will contain a parametric computation for the values in question.
-# This means the values will adapt whenever preconditions are changing *except* the
-# number or names of the appraisers, parts and trials. So the script must be executed
-# again if, e.g., stages are added or an appraiser is renamed. It does not need to
-# be executed again if the checks or stages are edited in any other way.
-#
-
-import gom
-import xml.etree
-import xml.etree.ElementTree as ET
-import xml.dom.minidom
-import Tools.MeasurementSystemAnalysis.msa_lib as msa
-import Tools.MeasurementSystemAnalysis.msa_gui as gui
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-
-
-# ----------------------------------------------------------------------------------
-# Configuration
-# ----------------------------------------------------------------------------------
-
-#
-# Display name of the table template for ARM evaluations
-#
-TABLE_TEMPLATE_NAME_ANOVA_3 = 'MSA (ANOVA type 3)'
-
-
-# ---------------------------------------------------------------------------------------
-# Functions needed for ANOVA Type-3 expression and template building
-# ---------------------------------------------------------------------------------------
-
-#
-# Build stage ranges matching the project setup
-#
-def create_anova_3_stage_ranges(config):
-
- for part in config.parts:
- msa.create_stage_range(None, part, None)
- for trial in config.trials:
- msa.create_stage_range(None, part, trial)
-
-#
-# Create ANOVA 3 expression variable name
-#
-
-
-def create_anova_3_var_name(appraiser, part, trial):
- return 'X_{0}_{1}'.format(part + 1 if part != None else 'x',
- trial + 1 if trial != None else 'x')
-
-#
-# Create expression to compute sum (E)
-#
-
-
-def create_anova_3_sum_e_expression(config, type):
-
- text = ''
- text += 'E = 0\n'
-
- count_p = 0
- for part in config.parts:
-
- Xxpx = create_anova_3_var_name(None, count_p, None)
- text += '{0} = {1}\n'.format(Xxpx, msa.create_restricted_avg_expression(config, None, part, None, type))
-
- count_t = 0
- for trial in config.trials:
-
- Xxpt = create_anova_3_var_name(None, count_p, count_t)
- text += '{0} = {1}\n'.format(Xxpt, msa.create_restricted_avg_expression(config, None, part, trial, type))
-
- term = '({0} - {1})'.format(Xxpt, Xxpx)
- text += 'E = E + {0} * {0}\n'.format(term, term)
-
- count_t += 1
-
- count_p += 1
-
- return text
-
-#
-# Create expression to compute ANOVA Type-3 R&R value
-#
-# This function generates the complete expression for a table cell necessary to
-# compute the final R&R value
-#
-
-
-def create_anova_3_rr_expression(type, config):
- text = """
-bypart = {{}}
-bytrial = {{}}
-byPandT = {{}}
-
-par_element = gom.app.project.actual_elements['{part}']
-tri_element = gom.app.project.actual_elements['{trial}']
-sigma_element = gom.app.project.inspection['{sigma}']
-
-for stage in gom.app.project.stage_markers['All stages'].used_stages:
-
- part = with_context (stage=stage, par_element.value)
- trial = with_context (stage=stage, tri_element.value)
-
- if part not in bypart:
- t = []
- else:
- t = bypart[part]
- t.append (stage)
- bypart[part] = t
-
- if trial not in bytrial:
- t = []
- else:
- t = bytrial[trial]
- t.append (stage)
- bytrial[trial] = t
-
- if part not in byPandT:
- byPandT.insert (part,{{}})
- submap = byPandT[part]
- if trial not in submap:
- t = []
- else:
- t = submap[trial]
- t.append (stage)
- submap[trial] = t
- byPandT[part] = submap
-
-t = len (bypart)
-w = len (bytrial)
-sigma_factor = sigma_element.value
-
-E = 0
-for _part in bypart:
- part_avg = avg ({result}, index = bypart[_part])
- for _trial in bytrial:
- pt_avg = avg ({result}, index = byPandT[_part][_trial])
- term = pt_avg - part_avg
- E = E + (term * term)
-
-f = t * (w - 1)
-
-s2e = E / f
-EV = sigma_factor * sqr (s2e)
-RR = EV
-"""
- return text.format(
- result=msa.get_result_token(type),
- sigma=cfg.sigma_tag,
- appraiser=cfg.appraiser_tag,
- part=cfg.part_tag,
- trial=cfg.trial_tag)
-
-
-#
-# Generate table template matching the current element setup
-#
-def create_anova_3_table_template(template_name, config):
-
- #
- # Generate root node
- #
- root = ET.Element('tabletemplates')
- root.attrib['dynamic_stage_support'] = 'none'
- root.attrib['view_mode'] = 'report_template'
- root.attrib['expanding_column'] = '0'
- root.attrib['name'] = template_name
- root.attrib['dynamic_column_for_stages'] = '-1'
- root.attrib['version'] = '2'
-
- #
- # Generate table headers
- #
- # The number of headers must match the number of columns. So if cells are added below, the
- # header texts must be expanded appropriately.
- #
- header_texts = ['Element', 'EV', 'RR', 'Sigma', 'EV [%]', 'RR [%]', 'Tol.']
- root.attrib['columns'] = str(len(header_texts))
-
- headers = ET.SubElement(root, 'headers')
-
- count = 0
- for text in header_texts:
- msa.create_column_header(headers, count, text)
- count += 1
-
- #
- # Generate one entry for each element type
- #
- for type in config.types:
-
- template = ET.SubElement(root, 'template')
- template.attrib['dynamic_row_for_stages'] = '-1'
- template.attrib['rows'] = '1'
- template.attrib['element_type'] = type
-
- row = ET.SubElement(template, 'row')
- row.attrib['index'] = '0'
-
- #
- # Fill entry colums. The number of cells here must match the number of header texts above.
- #
- gauge_rr_expression = create_anova_3_rr_expression(type, config)
-
- col_index = 0
- col_index = msa.create_cell_raw(row, col_index, '$icon (explorer_type_and_state)$ $name$', 1)
- col_index = msa.create_cell(row, col_index, 'EV', gauge_rr_expression + "return sqr (s2e)\n", 1)
- col_index = msa.create_cell(row, col_index, 'RR', gauge_rr_expression, 1)
- col_index = msa.create_cell(row, col_index, 'Sigma',
- 'gom.app.project.inspection[\'{element}\'].value'.format(element=cfg.sigma_tag), 1)
- col_index = msa.create_cell(
- row, col_index, 'EV [%]', gauge_rr_expression + msa.create_percent_expression(type, 'sqr (s2e)'), 1)
- col_index = msa.create_cell(
- row, col_index, 'RR [%]', gauge_rr_expression + msa.create_percent_expression(type, 'RR'), 1)
- col_index = msa.create_cell(row, col_index, 'Tol.', msa.get_tolerance_expression(type), 1)
-
- return xml.dom.minidom.parseString(ET.tostring(root)).toprettyxml()
-
-
-# ----------------------------------------------------------------------------------
-# MAIN
-# ----------------------------------------------------------------------------------
-
-msa.check_project_setup()
-
-#
-# Hiding the table widget will speed the script up dramatically
-#
-gom.script.view.set_tab_visible(view='table', visible=False)
-
-try:
- gom.script.sys.close_stage_range()
-except:
- pass
-
-#
-# Setup configuration
-#
-config = gui.Configuration(cfg.EvaluationType.Anova_3)
-config.edit(show_sigma_input=True)
-
-msa.create_common_stage_ranges(config, use_appraiser=False)
-create_anova_3_stage_ranges(config)
-template_content = create_anova_3_table_template(TABLE_TEMPLATE_NAME_ANOVA_3, config)
-msa.import_table_template(template_content, 'e95e1e2d-075b-4b9d-bc00-6abddd13af89')
-
-gom.script.view.set_tab_visible(view='table', visible=True)
-
-gom.script.table.switch_template(name=TABLE_TEMPLATE_NAME_ANOVA_3)
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_arm.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_arm.metainfo
deleted file mode 100644
index 6196647..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_arm.metainfo
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "display_name": "Generate MSA ARM setup",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "reports",
- "submenu": [
- "operations"
- ],
- "type": "submenu"
- },
- "script": "userscript.newenv__Tools__MeasurementSystemAnalysis__msa_arm",
- "submenu": [
- "System analysis"
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "67dc6830-f4c9-450d-9446-60356c3416ca"
-}
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_arm.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_arm.py
deleted file mode 100644
index 84e861e..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_arm.py
+++ /dev/null
@@ -1,307 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# msa_arm - Script for generating an MSA (ARM) evaluation
-#
-# This script generates table templates displaying the ARM values needed for
-# MSA / Gauge R&R evaluations. The generated template contains an entry for each
-# inspection element type present at script evaluation time.
-#
-# The table cells will contain a parametric computation for the values in question.
-# This means the values will adapt whenever preconditions are changing *except* the
-# number or names of the appraisers, parts and trials. So the script must be executed
-# again if, e.g., stages are added or an appraiser is renamed. It does not need to
-# be executed again if the checks or stages are edited in any other way.
-#
-
-import gom
-import xml.etree
-import xml.etree.ElementTree as ET
-import xml.dom.minidom
-
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-import Tools.MeasurementSystemAnalysis.msa_lib as msa
-import Tools.MeasurementSystemAnalysis.msa_gui as gui
-
-
-# ----------------------------------------------------------------------------------
-# Configuration
-# ----------------------------------------------------------------------------------
-
-#
-# Display name of the table template for ARM evaluations
-#
-TABLE_TEMPLATE_NAME_ARM = 'MSA (ARM)'
-
-#
-# UTF-8 symbol for a black circle
-#
-EMPTY_SYMBOL = '●'
-
-# ---------------------------------------------------------------------------------------
-# Functions needed for ARM expression and template building
-# ---------------------------------------------------------------------------------------
-
-#
-# Build stage ranges matching the project setup
-#
-
-
-def create_arm_stage_ranges(config):
-
- #
- # Stage range set 1: Stage ranges for appraiser/part combinations
- #
- for appraiser in config.appraisers:
- for part in config.parts:
- msa.create_stage_range(appraiser, part, None)
-
- #
- # Stage range set 2: Stage ranges for appraiser/trial combinations
- #
- for appraiser in config.appraisers:
- for trial in config.trials:
- msa.create_stage_range(appraiser, None, trial)
-
- #
- # Stage range set 3: Stage range covering all stages associated with a single appraiser
- #
- for appraiser in config.appraisers:
- msa.create_stage_range(appraiser, None, None)
-
- #
- # Stage range set 4: Stage ranges covering all stages associated with a single part
- #
- for part in config.parts:
- msa.create_stage_range(None, part, None)
-
-
-#
-# Generate table template matching the current element setup
-#
-def create_arm_table_template(template_name, config):
-
- #
- # Root node
- #
- root = ET.Element('tabletemplates')
- root.attrib['dynamic_stage_support'] = 'none'
- root.attrib['view_mode'] = 'report_template'
- root.attrib['expanding_column'] = '0'
- root.attrib['name'] = template_name
- root.attrib['dynamic_column_for_stages'] = '-1'
- root.attrib['version'] = '2'
-
- #
- # Table headers
- #
- header_texts = ['Appraiser', 'Trial']
- header_texts.extend(map(lambda part: 'Part {0}'.format(part), config.parts))
- header_texts.append('Avg.')
- root.attrib['columns'] = str(len(header_texts))
-
- headers = ET.SubElement(root, 'headers')
-
- count = 0
- for text in header_texts:
- msa.create_column_header(headers, count, text)
- count += 1
-
- #
- # Entries for the single element types
- #
- for type in config.types:
- template = ET.SubElement(root, 'template')
- template.attrib['dynamic_row_for_stages'] = '-1'
- template.attrib['rows'] = str(1 + len(config.appraisers) * (len(config.trials) + 2) + 1 + 1 + 1)
- template.attrib['element_type'] = type
-
- row_index = 0
-
- #
- # Header row
- #
- element_header = ET.SubElement(template, 'row')
- element_header.attrib['index'] = str(row_index)
- row_index += 1
-
- msa.create_cell_raw(element_header, 0, '$icon (explorer_type_and_state)$ $name$',
- str(3 + len(config.parts)))
-
- #
- # One block per appraiser
- #
- appraiser_avg_exp = []
- appraiser_range_exp = []
-
- for appraiser in config.appraisers:
-
- #
- # One row per trail
- #
- for trial in config.trials:
- row = ET.SubElement(template, 'row')
- row.attrib['index'] = str(row_index)
- row_index += 1
-
- #
- # First columns containing appraiser/trial information
- #
- col_index = 0
- col_index = msa.create_cell_raw(row, col_index, appraiser, 1)
- col_index = msa.create_cell_raw(row, col_index, trial, 1)
-
- #
- # Inner part matrix
- #
- for part in config.parts:
- col_index = msa.create_cell(row, col_index, 'Stage value', msa.create_stage_access_expression(
- config, appraiser, part, trial, type), 1)
-
- #
- # Last column containing the average sums
- #
- col_index = msa.create_cell(row, col_index, 'Avg.', msa.create_restricted_avg_expression(
- config, appraiser, None, trial, type), 1)
-
- avg_summary = ET.SubElement(template, 'row')
- avg_summary.attrib['index'] = str(row_index)
- row_index += 1
-
- col_index = 0
- col_index = msa.create_cell_raw(avg_summary, col_index, msa.italic('Average'), 1)
- col_index = msa.create_cell_raw(avg_summary, col_index, '', 1)
-
- exp = []
- for part in config.parts:
- exp.append(msa.create_restricted_avg_expression(config, appraiser, part, None, type))
- col_index = msa.create_cell_raw(avg_summary, col_index,
- msa.italic(msa.overlined_var_name('X', '{0}.{1}.{2}'.format(appraiser, part, EMPTY_SYMBOL)) +
- msa.quote(exp[-1])), 1)
-
- col_index = msa.create_cell_raw(avg_summary, col_index,
- msa.italic(msa.overlined_var_name('X', '{0}.{1}.{2}'.format(appraiser, EMPTY_SYMBOL, EMPTY_SYMBOL)) +
- msa.quote(msa.create_average_expression(exp))), 1)
-
- appraiser_avg_exp.append(exp)
-
- range_summary = ET.SubElement(template, 'row')
- range_summary.attrib['index'] = str(row_index)
- row_index += 1
-
- col_index = 0
- col_index = msa.create_cell_raw(range_summary, col_index, msa.italic('Range'), 1)
- col_index = msa.create_cell_raw(range_summary, col_index, '', 1)
-
- exp = []
- for part in config.parts:
- exp.append(msa.create_restricted_range_expression(config, appraiser, part, None, type))
- col_index = msa.create_cell_raw(range_summary, col_index,
- msa.italic(msa.overlined_var_name('R', '{0}.{1}.{2}'.format(appraiser, part, EMPTY_SYMBOL)) +
- msa.quote(exp[-1])), 1)
-
- col_index = msa.create_cell_raw(range_summary, col_index,
- msa.italic(msa.overlined_var_name('R', '{0}.{1}.{2}'.format(appraiser, EMPTY_SYMBOL, EMPTY_SYMBOL)) +
- msa.quote(msa.create_range_expression(exp))), 1)
-
- appraiser_range_exp.append(exp)
-
- part_summary = ET.SubElement(template, 'row')
- part_summary.attrib['index'] = str(row_index)
- row_index += 1
-
- col_index = 0
- col_index = msa.create_cell_raw(part_summary, col_index, msa.italic('Part avg.'), 1)
- col_index = msa.create_cell_raw(part_summary, col_index, '', 1)
-
- exp = []
-
- for part in config.parts:
- exp.append(msa.create_restricted_avg_expression(config, None, part, None, type))
- col_index = msa.create_cell_raw(part_summary, col_index,
- msa.italic(msa.overlined_var_name('X', '{0}.{1}.{2}'.format(EMPTY_SYMBOL, part, EMPTY_SYMBOL)) +
- msa.quote(exp[-1])), 1)
-
- col_index = msa.create_cell_raw(part_summary, col_index,
- msa.italic(msa.overlined_var_name('X', '{0}.{1}.{2}'.format(EMPTY_SYMBOL, EMPTY_SYMBOL, EMPTY_SYMBOL)) +
- msa.quote(msa.create_average_expression(exp))), 1)
-
- #
- # Compute overall average value
- #
- summary_x = ET.SubElement(template, 'row')
- summary_x.attrib['index'] = str(row_index)
- row_index += 1
-
- col_index = 0
- col_index = msa.create_cell_raw(summary_x, col_index, msa.italic('Summary'), 1)
- col_index = msa.create_cell_raw(summary_x, col_index, '', 1)
-
- for part in config.parts:
- col_index = msa.create_cell_raw(summary_x, col_index, '', 1)
-
- x_avg_exp = ''
- separator = ''
- for exp in appraiser_avg_exp:
- x_avg_exp = x_avg_exp + separator + msa.create_average_expression(exp)
- separator = ', '
-
- x_avg_exp = 'max ({0}) - min ({1})'.format(x_avg_exp, x_avg_exp)
-
- col_index = msa.create_cell_raw(summary_x, col_index,
- msa.italic(msa.overlined_var_name('X', 'diff')) +
- msa.quote(x_avg_exp), 1)
-
- #
- # Compute overall range value
- #
- summary_r = ET.SubElement(template, 'row')
- summary_r.attrib['index'] = str(row_index)
- row_index += 1
-
- col_index = 0
- col_index = msa.create_cell_raw(summary_r, col_index, '', 1)
- col_index = msa.create_cell_raw(summary_r, col_index, '', 1)
-
- for part in config.parts:
- col_index = msa.create_cell_raw(summary_r, col_index, '', 1)
-
- r_sum_exp = ''
- separator = ''
- for exp in appraiser_range_exp:
- r_sum_exp = r_sum_exp + separator + msa.create_range_expression(exp)
- separator = ' + '
-
- r_sum_exp = '({0}) / {1}'.format(r_sum_exp, len(appraiser_range_exp))
-
- col_index = msa.create_cell_raw(summary_r, col_index,
- msa.italic(msa.overlined_var_name('R', 'all')) +
- msa.quote(r_sum_exp), 1)
-
- return xml.dom.minidom.parseString(ET.tostring(root)).toprettyxml()
-
-
-# ----------------------------------------------------------------------------------
-# MAIN
-# ----------------------------------------------------------------------------------
-
-msa.check_project_setup()
-
-#
-# Hiding the table widget will speed the script up dramatically
-#
-gom.script.view.set_tab_visible(view='table', visible=False)
-
-#
-# Setup configuration
-#
-config = gui.Configuration(cfg.EvaluationType.Arm)
-config.edit(show_sigma_input=False)
-
-msa.create_common_stage_ranges(config)
-create_arm_stage_ranges(config)
-template_content = create_arm_table_template(TABLE_TEMPLATE_NAME_ARM, config)
-msa.import_table_template(template_content, '01a35fd4-1a98-4752-b1be-d21a3e6446ef')
-
-gom.script.view.set_tab_visible(view='table', visible=True)
-
-gom.script.table.switch_template(name=TABLE_TEMPLATE_NAME_ARM)
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_config.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_config.metainfo
deleted file mode 100644
index f549187..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_config.metainfo
+++ /dev/null
@@ -1 +0,0 @@
-{"breakpoints":[],"display_name":"msa_config","folded_blocks":[],"icon":"","main_menu_path":"","script_element_type":"none","show_in_menu":false,"uuid":"e85ed25b-4642-4de5-91cf-943926c19319"}
\ No newline at end of file
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_config.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_config.py
deleted file mode 100644
index 4d43aed..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_config.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-
-from enum import Enum
-
-
-# ----------------------------------------------------------------------------------
-# Constants
-# ----------------------------------------------------------------------------------
-
-#
-# Type of evaluation
-#
-class EvaluationType(Enum):
- Anova_2 = "ANOVA-2"
- Anova_3 = "ANOVA-3"
- Arm = "ARM"
- Export = "Export"
-
-
-#
-# Id addressing the element object families to be able to access the right tokens. These
-# ids are used during table template import as some kind of jokers for whole element groups.
-#
-Type_Inspection = '!scalar_checks'
-Type_GDAT = '!gdt'
-Type_Picker = '!picker'
-Type_TwoPointInspection = 'inspection_dimension_two_point'
-
-#
-# Element keyword set for each automatically created element
-#
-automatically_created_tag = 'msa_automatically_created'
-
-#
-# Value elements used to tag appraiser, part and trial in each stage and the global sigma value
-#
-appraiser_tag = 'msa_appraiser'
-part_tag = 'msa_part'
-trial_tag = 'msa_trial'
-sigma_tag = 'msa_sigma'
-
-#
-# Name of the stage range representing all stages
-#
-all_stages_range_name = 'All stages'
-
-#
-# Default sigma factor
-#
-default_sigma_factor = 6.0
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_excel.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_excel.metainfo
deleted file mode 100644
index b364671..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_excel.metainfo
+++ /dev/null
@@ -1 +0,0 @@
-{"breakpoints":[294],"display_name":"MSA ANOVA-2 Excel Sheet Generation","folded_blocks":[],"icon":"","main_menu_path":"","script_element_type":"none","show_in_menu":true,"uuid":"81348b5e-3370-4efc-87c2-424578c221d9"}
\ No newline at end of file
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_excel.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_excel.py
deleted file mode 100644
index d8318bc..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_excel.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# msa_excel - Script for generating excel table sheets for Gauge R&R values
-#
-
-import gom
-
-import copy
-import os
-import os.path
-import re
-import shutil
-import sys
-import tempfile
-import zipfile
-
-import xml.etree.ElementTree as ET
-from xml.dom import minidom
-
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-import Tools.MeasurementSystemAnalysis.msa_gui as gui
-import Tools.MeasurementSystemAnalysis.msa_lib as msa
-
-
-TEMPLATE_FILE_NAME = os.path.join(gom.app.software_directory, 'config', 'msa', 'msa_template.xlsx')
-DATA_SHEET_FILE_NAME = 'xl/worksheets/sheet1.xml'
-CALCULATION_SHEET_FILE_NAME = 'xl/worksheets/sheet2.xml'
-IMPORT_SHEET_FILE_NAME = 'xl/worksheets/sheet3.xml'
-STRINGS_FILE_NAME = 'xl/sharedStrings.xml'
-
-#
-# Maximum number of cells reserved for the appraiser/part/trial properties (must match the template)
-#
-NUMBER_OF_APPRAISERS = 3
-NUMBER_OF_TRIALS = 3
-NUMBER_OF_PARTS = 25
-
-#
-# Value used in empty table cells
-#
-NONE = '#NV'
-
-#
-# Build configuration for the ANOVA-2 setup
-#
-config = gui.Configuration(cfg.EvaluationType.Anova_2)
-
-
-########################################################################################
-# CLASS SheetAccess
-#
-# Access class for manipulation of a single excel sheet. This class will access the
-# sheet with (row, column) indexing counting from 1.
-#
-class SheetAccess:
-
- COLUMN_IDS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-
- #
- # Constructor
- #
- # @param sheet DOM of the sheet to modify
- # @param strings DOM of the string reference list
- #
- def __init__(self, sheet, strings):
- self.sheet = sheet
- self.strings = strings
-
- self.row = 1
- self.column = 1
-
- self.cells = {}
- self.texts = []
-
- for s in strings.iter('si'):
- self.texts.append(s.find('t'))
-
- for cell in sheet.iter('c'):
- self.cells[cell.get('r')] = cell
-
- #
- # Get value of single cell
- #
- def __getitem__(self, key):
-
- cell = self.cells[key]
-
- #
- # Cells with string content are not containing the string itself but a
- # reference id into the string database.
- #
- if 't' in cell.attrib and cell.get('t') == 's':
- return self.texts[int(cell.find('v').text) + 1].text
-
- return cell.find('v').text
-
- #
- # Set value of single cell
- #
-
- def __setitem__(self, key, value):
-
- cell = self.cells[key]
-
- #
- # Setting a string value results in a new entry in the string database. The sheet
- # cell will reference this entry instead of keeping the string itself. This way old string
- # database entries will still be kept while being deprecated, but a cleanup is not simple here.
- # EXCEL might care for this when loading/saving the document again.
- #
- # The exact purpose of the ids (37, 43) is unknown.
- #
- if isinstance(value, str):
- cell.attrib['t'] = 's'
- cell.attrib['s'] = str(43)
-
- si = ET.SubElement(self.strings, 'si')
- t = ET.SubElement(si, 't')
- t.text = value
-
- self.texts.append(si)
-
- cell.find('v').text = str(len(self.texts) - 1)
-
- else:
- cell.attrib.pop('t', None)
- cell.attrib['s'] = str(37)
- cell.find('v').text = str(value)
-
- #
- # Initialize sequential write at a given cell
- #
- def init(self, id):
- self.row = int(id[1])
- self.column = SheetAccess.COLUMN_IDS.index(id[0]) + 1
-
- #
- # Write at current cell in sequential write setup
- #
- def write(self, value):
- self[self.getCellId(self.row, self.column)] = value
- self.column += 1
-
- #
- # Advance sequential write to next row
- #
- def next_row(self):
- self.column = 1
- self.row += 1
-
- #
- # Return string id of a row/column addressed cell (like 'D23')
- #
- def getCellId(self, row, column):
-
- assert column >= 1 and column <= len(SheetAccess.COLUMN_IDS)
- assert row >= 1
-
- return '{column_id}{row_id}'.format(column_id=SheetAccess.COLUMN_IDS[column - 1], row_id=row)
-
-
-#
-# Fill import sheet with the data from a single element
-#
-def fill_import_sheet(access, element):
-
- def get_project_keyword(keyword):
- try:
- return str(gom.app.project.get(keyword))
- except:
- pass
- return ''
-
- #
- # Fill appraiser / trial / part lists up to the maximum number of supported items
- #
- appraisers = copy.copy(config.appraisers)
- appraisers.extend(max(0, (NUMBER_OF_APPRAISERS - len(appraisers))) * [NONE])
-
- trials = copy.copy(config.trials)
- trials.extend(max(0, (NUMBER_OF_TRIALS - len(trials))) * [NONE])
-
- parts = copy.copy(config.parts)
- parts.extend(max(0, (NUMBER_OF_PARTS - len(parts))) * [NONE])
-
- #
- # Row 1: General element information
- #
- type = msa.get_element_type(element)
-
- # Nominal value. This is always '0.0' because we are computing with deviations.
- access['B1'] = 0.0
- access['D1'] = element.get(msa.get_tolerance_tokens(type)[1]) # Upper tolerance limit
- access['E1'] = element.get(msa.get_tolerance_tokens(type)[0]) # Lower tolerance limit
-
- unit = element.get('format ({token}, "", show_unit=true)'.format(token=msa.get_result_token(type))).split(' ')
- access['G1'] = unit[-1] if len(unit) > 1 else ''
-
- access['J1'] = gom.app.project.inspection[cfg.sigma_tag].value
-
- #
- # Row 3: Appraiser names
- #
- access.init('B3')
-
- for appraiser in appraisers:
- for _ in trials:
- access.write(appraiser)
-
- #
- # Row 4: Trial names
- #
- access.init('A4')
- access.write(element.name)
-
- for _ in appraisers:
- for trial in trials:
- access.write(trial)
-
- #
- # Row 5...n: Part data
- #
- access.init('A5')
-
- for part in parts:
-
- access.write(part)
-
- for appraiser in appraisers:
- for trial in trials:
- if appraiser != NONE and trial != NONE and part != NONE:
- access.write(element.get(msa.create_stage_access_expression(
- config, appraiser, part, trial, msa.get_element_type(element))))
- else:
- access.write(NONE)
-
- access.next_row()
-
- #
- # Project keywords
- #
-
- access['B31'] = get_project_keyword('user_system')
- access['B32'] = get_project_keyword('user_location')
- access['B33'] = '' # Description
- access['B34'] = '' # Number
- access['B35'] = get_project_keyword('user_date')
- access['B36'] = get_project_keyword('user_inspector')
- access['B37'] = '' # Comment
-
-
-#
-# Scan through document and remove the value entries in fields which use formulas.
-# Only this way, the sheet will be recomputed after loading if in EXCEL.
-#
-def remove_precomputed_values(root):
-
- for cell in root.iter('c'):
- if cell.find('f') is not None:
-
- value = cell.find('v')
-
- if value is not None:
- cell.remove(value)
-
-#
-# Extract the namespace defining 'worksheet' header from sheet document
-#
-
-
-def extract_worksheet_header(text):
- worksheet_header = re.search(']*>', text).group(0)
- text = re.sub(']*>', '', text)
- text = re.sub('(\w):(\w)', r'\1__NS__\2', text)
-
- return (worksheet_header, text)
-
-#
-# Re-insert the namespace defining 'worksheet' header into the sheet document
-#
-
-
-def insert_worksheet_header(text, worksheet_header):
- text = re.sub('(\w)__NS__(\w)', r'\1:\2', text)
- text = re.sub('', worksheet_header, text)
-
- return text
-
-
-########################################################################
-# MAIN
-#
-#
-# Show configuration dialog
-#
-elements = None
-
-CONFIGURATION_DIALOG = gom.script.sys.create_user_defined_dialog(content='')
-
-CONFIGURATION_DIALOG.template.value = TEMPLATE_FILE_NAME
-CONFIGURATION_DIALOG.file.value = os.path.join(
- gom.app.default_directory, os.path.split(TEMPLATE_FILE_NAME.replace('_template', ''))[1])
-
-
-def update_dialog(widget):
- global elements
-
- elements = [element for element in gom.ElementSelection({'category': ['key', 'elements', 'explorer_category', 'inspection']})
- if element.is_selected]
-
- CONFIGURATION_DIALOG.message.text = '{number} element(s) will be exported'.format(number=len(elements))
- CONFIGURATION_DIALOG.control.status = 'No elements selected' if len(elements) == 0 else ''
-
- CONFIGURATION_DIALOG.template.enabled = CONFIGURATION_DIALOG.use_custom_template.value
-
-
-CONFIGURATION_DIALOG.handler = update_dialog
-
-update_dialog(None)
-
-CONFIGURATION = gom.script.sys.show_user_defined_dialog(dialog=CONFIGURATION_DIALOG)
-
-tempdir_gom_template = tempfile.mkdtemp()
-assert tempdir_gom_template is not None
-
-# In packages, the System Resources (like data/msa_template.xlsx) are only available in memory.
-# If the user decided to use the builtin template, we copy it in a temp folder,
-# making the rest of the script compatible.
-templatefilename = ""
-if not CONFIGURATION.use_custom_template:
- templatefilename = tempdir_gom_template + "/msa_template.xlsx"
- newFile = open(templatefilename, "wb")
- newFile.write(gom.app.resource["data/msa_template.xlsx"])
- newFile.close()
-else:
- templatefilename = CONFIGURATION.template
-
-#
-# For each element a separate EXCEL sheet is created. If more than one element is present, a postfix is added.
-#
-for element in elements:
-
- tempdir = tempfile.mkdtemp()
- assert tempdir is not None
-
- filename = CONFIGURATION.file
-
- if len(elements) > 1:
- filename, ext = os.path.splitext(filename)
- filename = '{name}_{postfix}{extension}'.format(name=filename, postfix=element.name, extension=ext)
-
- try:
- #
- # Unzip XSLX file into the temp directory
- #
- with zipfile.ZipFile(templatefilename, 'r') as zip_file:
- zip_file.extractall(tempdir)
-
- #
- # Read import sheet XML representation.
- #
- # Because xml.etree does not get along well with namespaces, the namespace attributes
- # are removed manually and the original worksheet header is kept for adding it again
- # later.
- #
- with open(os.path.join(tempdir, IMPORT_SHEET_FILE_NAME), 'r') as file:
- worksheet_header, text = extract_worksheet_header(file.read())
- import_root = ET.fromstring(text)
-
- #
- # Read string reference XML represenration.
- #
- # The namespace problem is handled here, too, as described above. This file contains some
- # kind of string database which entries are referenced from the sheets cells.
- #
- with open(os.path.join(tempdir, STRINGS_FILE_NAME), 'r') as file:
- text = file.read()
- strings_header = re.search(']*>', text).group(0)
- text = re.sub(']*>', '', text)
- text = re.sub('(\w):(\w)', r'\1__NS__\2', text)
-
- strings_root = ET.fromstring(text)
-
- #
- # Fill import sheet with the element data
- #
- access = SheetAccess(import_root, strings_root)
- fill_import_sheet(access, element)
-
- #
- # Convert back into string representation and add the original worksheet header
- # containig the namespace definitions again.
- #
- with open(os.path.join(tempdir, IMPORT_SHEET_FILE_NAME), 'w') as file:
- file.write(insert_worksheet_header(str(ET.tostring(import_root), 'utf-8'), worksheet_header))
-
- #
- # Adapt data sheet
- #
- # The pre computed values have to be removed from the cells here to trigger a recomputation
- # when the generated document is imported into EXCEL.
- #
- with open(os.path.join(tempdir, DATA_SHEET_FILE_NAME), 'r') as file:
- worksheet_header, text = extract_worksheet_header(file.read())
- data_root = ET.fromstring(text)
-
- remove_precomputed_values(data_root)
-
- with open(os.path.join(tempdir, DATA_SHEET_FILE_NAME), 'w') as file:
- file.write(insert_worksheet_header(str(ET.tostring(data_root), 'utf-8'), worksheet_header))
-
- #
- # Adapt calculation sheet
- #
- with open(os.path.join(tempdir, CALCULATION_SHEET_FILE_NAME), 'r') as file:
- worksheet_header, text = extract_worksheet_header(file.read())
- calculation_root = ET.fromstring(text)
-
- remove_precomputed_values(calculation_root)
-
- with open(os.path.join(tempdir, CALCULATION_SHEET_FILE_NAME), 'w') as file:
- file.write(insert_worksheet_header(str(ET.tostring(calculation_root), 'utf-8'), worksheet_header))
-
- #
- # When writing the string reference, the headers attributes have to be adapted
- #
- with open(os.path.join(tempdir, STRINGS_FILE_NAME), 'w') as file:
- text = str(ET.tostring(strings_root), 'utf-8')
- text = re.sub('(\w)__NS__(\w)', r'\1:\2', text)
-
- strings_header = re.sub('count="\d*"', 'count="{size}"'.format(size=len(access.texts) + 5), strings_header)
- strings_header = re.sub('uniqueCount="\d*"',
- 'uniqueCount="{size}"'.format(size=len(access.texts) + 5), strings_header)
-
- text = re.sub('', strings_header, text)
-
- #print (minidom.parseString (text).toprettyxml (indent=' '))
-
- file.write(text)
-
- #
- # Pack everything into a XSLX ZIP file again
- #
- if not filename.endswith('.xlsx'):
- filename += '.xlsx'
-
- if os.path.exists(filename):
- os.remove(filename)
-
- shutil.make_archive(filename, 'zip', tempdir)
- shutil.move(filename + '.zip', filename)
-
- finally:
- shutil.rmtree(tempdir)
-
-shutil.rmtree(tempdir_gom_template)
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_export.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_export.metainfo
deleted file mode 100644
index 5f8960c..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_export.metainfo
+++ /dev/null
@@ -1 +0,0 @@
-{"breakpoints":[],"display_name":"Generate MSA export setup","folded_blocks":[],"icon":"","main_menu_path":"","script_element_type":"none","show_in_menu":true,"uuid":"02dd5b25-98eb-46c0-acdd-7106e7a4abba"}
\ No newline at end of file
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_export.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_export.py
deleted file mode 100644
index edbd8cb..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_export.py
+++ /dev/null
@@ -1,149 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# msa_solara_mp - Script for generating an MSA setup for exports
-#
-# This script generates table templates displaying the MSA relevant values in a way that
-# the content can be copy/pasted easily into third party statistics tools for further evaluations.
-#
-# The table cells will contain a parametric computation for the values in question.
-# This means the values will adapt whenever preconditions are changing *except* the
-# number or names of the appraisers, parts and trials. So the script must be executed
-# again if, e.g., stages are added or an appraiser is renamed. It does not need to
-# be executed again if the checks or stages are edited in any other way.
-#
-
-import gom
-import os
-import os.path
-import re
-import xml.etree
-import xml.etree.ElementTree as ET
-import xml.dom.minidom
-
-import Tools.MeasurementSystemAnalysis.msa_lib as msa
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-import Tools.MeasurementSystemAnalysis.msa_gui as gui
-
-
-# ----------------------------------------------------------------------------------
-# Configuration
-# ----------------------------------------------------------------------------------
-
-#
-# Display name of the table template for exports
-#
-TABLE_TEMPLATE_NAME_EXPORT = 'MSA (export)'
-
-
-# ----------------------------------------------------------------------------------
-# Functions needed to generate an export template
-# ----------------------------------------------------------------------------------
-
-#
-# Generate table template matching the current element setup
-#
-def create_export_table_template(template_name, config):
-
- #
- # Generate root node
- #
- root = ET.Element('tabletemplates')
- root.attrib['dynamic_stage_support'] = 'none'
- root.attrib['view_mode'] = 'report_template'
- root.attrib['expanding_column'] = '0'
- root.attrib['name'] = template_name
- root.attrib['dynamic_column_for_stages'] = '-1'
- root.attrib['version'] = '2'
-
- #
- # Generate table headers
- #
- # The number of headers must match the number of columns. So if cells are added below, the
- # header texts must be expanded appropriately.
- #
- header_texts = ['Part']
- for appraiser in config.appraisers:
- for trial in config.trials:
- header_texts.append('Appraiser / Trial')
-
- root.attrib['columns'] = str(len(header_texts))
-
- headers = ET.SubElement(root, 'headers')
-
- count = 0
- for text in header_texts:
- msa.create_column_header(headers, count, text)
- count += 1
-
- #
- # Generate one entry for each element type
- #
- for type in config.types:
- template = ET.SubElement(root, 'template')
- template.attrib['dynamic_row_for_stages'] = '-1'
- template.attrib['rows'] = str(1 + len(config.parts))
- template.attrib['element_type'] = type
-
- #
- # Top row: Element name and entry description
- #
- row_index = 0
- row = ET.SubElement(template, 'row')
- row.attrib['index'] = str(row_index)
-
- col_index = msa.create_cell_raw(row, 0, '$icon (explorer_type_and_state)$ $name$', 1)
-
- for appraiser in config.appraisers:
- for trial in config.trials:
- col_index = msa.create_cell_raw(row, col_index, '{0} / {1}'.format(appraiser, trial), 1)
-
- row_index += 1
-
- #
- # One row per part
- #
- for part in config.parts:
-
- row = ET.SubElement(template, 'row')
- row.attrib['index'] = str(row_index)
-
- #
- # Every appraiser / trial combination leads to a cell
- #
- col_index = msa.create_cell(row, 0, 'Part', 'return "{0}"\n'.format(part), 1)
-
- for appraiser in config.appraisers:
- for trial in config.trials:
- description = '{0}.{1}.{2}'.format(appraiser, part, trial)
- col_index = msa.create_cell(row, col_index, description, msa.create_stage_access_expression(
- config, appraiser, part, trial, type), 1)
-
- row_index += 1
-
- return xml.dom.minidom.parseString(ET.tostring(root)).toprettyxml()
-
-
-# ----------------------------------------------------------------------------------
-# MAIN
-# ----------------------------------------------------------------------------------
-
-msa.check_project_setup()
-
-#
-# Hiding the table widget will speed the script up dramatically
-#
-gom.script.view.set_tab_visible(view='table', visible=False)
-
-#
-# Setup configuration
-#
-config = gui.Configuration(cfg.EvaluationType.Export
- )
-config.edit(show_sigma_input=False)
-
-template_content = create_export_table_template(TABLE_TEMPLATE_NAME_EXPORT, config)
-msa.import_table_template(template_content, '5d7198c6-31a0-4118-9110-e6eafb084501')
-
-gom.script.view.set_tab_visible(view='table', visible=True)
-
-gom.script.table.switch_template(name=TABLE_TEMPLATE_NAME_EXPORT)
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_gui.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_gui.metainfo
deleted file mode 100644
index f3b19a8..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_gui.metainfo
+++ /dev/null
@@ -1 +0,0 @@
-{"breakpoints":[],"display_name":"msa_gui","folded_blocks":[],"icon":"","main_menu_path":"","script_element_type":"none","show_in_menu":false,"uuid":"27a5c451-0a1c-4699-abf8-b878551be26b"}
\ No newline at end of file
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_gui.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_gui.py
deleted file mode 100644
index 426f04c..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_gui.py
+++ /dev/null
@@ -1,729 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-
-# -*- coding: utf-8 -*-
-#
-# msa_lib - Common library functions for generating MSA / Gauge R&R setups
-#
-
-import gom
-import os
-import os.path
-import re
-import xml.etree
-import xml.etree.ElementTree as ET
-import xml.dom.minidom
-import stringprep
-
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-
-# ----------------------------------------------------------------------------------
-# Local functions
-# ----------------------------------------------------------------------------------
-
-#
-# Make container content unique and sort it (if possible)
-#
-
-
-def make_unique_and_sort(container):
- def convert(x): return int(x) if x.isdigit() else x.lower()
- return sorted(list(set(container)), key=lambda key: [convert(c) for c in re.split('([0-9]+)', key)])
-
-
-# ----------------------------------------------------------------------------------
-# Pre checking
-# ----------------------------------------------------------------------------------
-
-#
-# Check various project properties to guarantee a smooth run
-#
-def check_project_setup():
- #
- # Temporal directory has to exists for table template writing/import
- #
- if not os.path.exists(gom.app.temp_directory):
- raise RuntimeError('Temporary directory "{0}" does not exist.'.format(gom.app.temp_directory))
-
- #
- # Project must be loaded
- #
- project_loaded = False
-
- try:
- gom.app.project.name
- project_loaded = True
- except:
- pass
-
- if not project_loaded:
- raise RuntimeError('No project found.')
-
- #
- # We need at least some stages
- #
- if len(gom.app.project.stages) == 0:
- raise RuntimeError('No stages are present at all.')
-
-
-# ----------------------------------------------------------------------------------
-# CLASS Configuration
-# ----------------------------------------------------------------------------------
-
-#
-# Class keeping / editing the configuration
-#
-class Configuration:
-
- def __init__(self, type):
-
- self.type = type
-
- self.types = [cfg.Type_Inspection, cfg.Type_GDAT]
-
- self.appraisers = set()
- self.parts = set()
- self.trials = set()
- self.stages = {}
-
- self.appraiser_element = Configuration.get_actual_value_element(cfg.appraiser_tag)
- self.trial_element = Configuration.get_actual_value_element(cfg.trial_tag)
- self.part_element = Configuration.get_actual_value_element(cfg.part_tag)
- self.sigma_element = Configuration.get_nominal_value_element(cfg.sigma_tag)
-
- self.collect_data()
-
- @staticmethod
- def get_actual_value_element(name):
-
- element = None
-
- try:
- element = gom.app.project.actual_elements[name]
- except:
- element = gom.script.inspection.create_value_element(name=name, type='string', stage_values={})
- gom.script.cad.hide_element(elements=[element])
-
- return element
-
- @staticmethod
- def get_nominal_value_element(name):
-
- element = None
-
- try:
- element = gom.app.project.inspection[name]
- except:
- element = gom.script.inspection.create_constant_value_element(
- description=name,
- name=name,
- type='float',
- unit='UNIT_NONE',
- value=0.0)
- gom.script.inspection.measure_by_no_measuring_principle(elements=[element])
- gom.script.cad.hide_element(elements=[element])
-
- return element
-
- #
- # Build appraisers/parts/trials sets
- #
-
- def collect_data(self):
-
- def sanitize(string):
- if string and len(string) > 0:
- return string
- return None
-
- self.appraisers = set()
- self.parts = set()
- self.trials = set()
-
- for stage in gom.app.project.stages:
-
- if stage.is_active:
- stage_item = 'gom.app.project.stages[\'{name}\']'.format(name=stage.name)
-
- appraiser = sanitize(self.appraiser_element.get(
- 'with_context (stage={stage}, value)'.format(stage=stage_item)))
- if appraiser:
- self.appraisers.add(appraiser)
-
- part = sanitize(self.part_element.get('with_context (stage={stage}, value)'.format(stage=stage_item)))
- if part:
- self.parts.add(part)
-
- trial = sanitize(self.trial_element.get('with_context (stage={stage}, value)'.format(stage=stage_item)))
- if trial:
- self.trials.add(trial)
-
- self.stages[stage.name] = (appraiser, part, trial)
-
- self.appraisers = make_unique_and_sort(self.appraisers)
- self.parts = make_unique_and_sort(self.parts)
- self.trials = make_unique_and_sort(self.trials)
-
- #
- # Edit configuration via dialog
- #
-
- def edit(self, show_sigma_input):
- MAIN_DIALOG = gom.script.sys.create_user_defined_dialog(content='')
-
- has_appraisers = self.type != cfg.EvaluationType.Anova_3
-
- if not has_appraisers:
- MAIN_DIALOG.appraisers.visible = False
- MAIN_DIALOG.appraisers_label.visible = False
-
- MAIN_DIALOG.appraisers.value = ', '.join(self.appraisers)
- MAIN_DIALOG.parts.value = ', '.join(self.parts)
- MAIN_DIALOG.trials.value = ', '.join(self.trials)
- MAIN_DIALOG.sigma_value.value = cfg.default_sigma_factor
-
- MAIN_DIALOG.sigma_value.visible = show_sigma_input
- MAIN_DIALOG.sigma_value_label.visible = show_sigma_input
- MAIN_DIALOG.sigma_value.focus = show_sigma_input
-
- def adapt_main_dialog_status():
-
- number_of_stages = 0
- for stage in gom.app.project.stages:
- if stage.is_active:
- number_of_stages += 1
-
- if len(self.parts) == 0 or len(self.trials) == 0:
- MAIN_DIALOG.control.status = 'Stages must be tagged appropriately.'
- MAIN_DIALOG.control.ok.enabled = False
-
- elif has_appraisers and len(self.appraisers) * len(self.parts) * len(self.trials) != number_of_stages:
- MAIN_DIALOG.control.status = 'Number of appraisers ({0}), parts ({1}) and trials ({2}) does not match number of stages ({3}).' \
- .format(len(self.appraisers), len(self.parts), len(self.trials), number_of_stages)
- MAIN_DIALOG.control.ok.enabled = False
-
- elif not has_appraisers and len(self.parts) * len(self.trials) != number_of_stages:
- MAIN_DIALOG.control.status = 'Number of parts ({0}) and trials ({1}) does not match number of stages ({2}).' \
- .format(len(self.parts), len(self.trials), number_of_stages)
- MAIN_DIALOG.control.ok.enabled = False
-
- elif has_appraisers and len(self.appraisers) > 0 and number_of_stages % len(self.appraisers) != 0:
- MAIN_DIALOG.control.status = 'Number of stages ({0}) / number of appraisers ({1}) does have a remainder.' \
- .format(len(gom.app.project.stages), len(self.appraisers))
-
- elif len(self.parts) > 0 and number_of_stages % len(self.parts) != 0:
- MAIN_DIALOG.control.status = 'Number of stages ({0}) / number of parts ({1}) does have a remainder.' \
- .format(len(gom.app.project.stages), len(self.parts))
-
- elif len(self.trials) > 0 and number_of_stages % len(self.trials) != 0:
- MAIN_DIALOG.control.status = 'Number of stages ({0}) / number of trials ({1}) does have a remainder.' \
- .format(len(gom.app.project.stages), len(self.trials))
-
- else:
- MAIN_DIALOG.control.status = ''
-
- MAIN_DIALOG.control.ok.enabled = MAIN_DIALOG.control.status == ''
-
- def main_dialog_handler(widget):
-
- if widget == MAIN_DIALOG.edit_stages:
- self.edit_stages()
- self.collect_data()
- adapt_main_dialog_status()
-
- MAIN_DIALOG.appraisers.value = ', '.join(self.appraisers)
- MAIN_DIALOG.parts.value = ', '.join(self.parts)
- MAIN_DIALOG.trials.value = ', '.join(self.trials)
-
- MAIN_DIALOG.handler = main_dialog_handler
- adapt_main_dialog_status()
-
- gom.script.sys.show_user_defined_dialog(dialog=MAIN_DIALOG)
-
- gom.script.sys.edit_creation_parameters(
- auto_apply=True,
- element=self.sigma_element,
- value=MAIN_DIALOG.sigma_value.value)
-
- def filter_map(self, n):
- for key, tuple in self.stages.items():
- yield key, tuple[n]
-
- def write_back_values(self):
-
- gom.script.sys.edit_creation_parameters(
- element=self.appraiser_element,
- type='string',
- stage_values=dict(self.filter_map(0)),
- auto_apply=True
- )
-
- gom.script.sys.edit_creation_parameters(
- element=self.part_element,
- type='string',
- stage_values=dict(self.filter_map(1)),
- auto_apply=True
- )
-
- gom.script.sys.edit_creation_parameters(
- element=self.trial_element,
- type='string',
- stage_values=dict(self.filter_map(2)),
- auto_apply=True
- )
-
- #
- # For some strange reason we need a recalc here
- #
- gom.script.sys.recalculate_visible_elements_in_all_stages(enable=True)
- gom.script.sys.recalculate_project(with_reports=False)
-
- #
- # Assign appraiser/part/trial tags from the stage name pattern
- #
-
- def assign_from_stage_name_pattern(self, pattern):
-
- split_pattern = '[._\-/]+'
- template_parts = re.split(split_pattern, pattern)
- error = None
-
- if len(template_parts) == 3:
- current_stage = gom.app.project.stages[gom.app.project.stage]
-
- appraiser_index = template_parts.index('appraiser')
- part_index = template_parts.index('part')
- trial_index = template_parts.index('trial')
-
- if appraiser_index >= 0 and part_index >= 0 and trial_index >= 0:
-
- for stage in gom.app.project.stages:
- if stage.is_active:
- gom.script.sys.show_stage(stage=stage)
-
- stage_name = gom.app.project.stage
-
- parts = re.split(split_pattern, stage_name)
- if len(parts) != 3:
- error = 'Name of stage {0} does not match pattern'.format(stage_name)
- break
-
- self.stages[stage_name] = (
- parts[appraiser_index].strip(),
- parts[part_index].strip(),
- parts[trial_index].strip()
- )
-
- if current_stage != None:
- gom.script.sys.show_stage(stage=current_stage)
- else:
- error = 'Wrong pattern format {0}'.format(pattern)
- else:
- error = 'Error parsing the pattern definition'
-
- if not error:
- self.write_back_values()
-
- #
- # Open dialog for letting the user check/edit the appraiser/part/trial keywords of each stage
- #
-
- def edit_stages(self):
-
- EDIT_DIALOG = gom.script.sys.create_user_defined_dialog(content='')
-
- has_appraisers = self.type != cfg.EvaluationType.Anova_3
-
- if not has_appraisers:
- EDIT_DIALOG.appraiser.visible = False
- EDIT_DIALOG.appraiser_label.visible = False
-
- def update_edit_stages_dialog():
- stage_name = gom.app.project.get('stage.name')
-
- EDIT_DIALOG.stage.value = stage_name
- (appraiser, part, trial) = self.stages[stage_name]
-
- EDIT_DIALOG.appraiser = appraiser if appraiser != None else ''
- EDIT_DIALOG.part = part if part != None else ''
- EDIT_DIALOG.trial = trial if trial != None else ''
-
- def apply_changes():
- self.stages[EDIT_DIALOG.stage.value] = (
- EDIT_DIALOG.appraiser.value.strip(),
- EDIT_DIALOG.part.value.strip(),
- EDIT_DIALOG.trial.value.strip()
- )
-
- def handler(widget):
-
- if widget == EDIT_DIALOG.next_stage:
- apply_changes()
- gom.script.sys.show_next_stage()
- update_edit_stages_dialog()
-
- if has_appraisers:
- EDIT_DIALOG.appraiser.focus = True
- else:
- EDIT_DIALOG.part.focus = True
-
- elif widget == EDIT_DIALOG.prev_stage:
- apply_changes()
- gom.script.sys.show_previous_stage()
- update_edit_stages_dialog()
-
- elif widget == EDIT_DIALOG.appraiser or widget == EDIT_DIALOG.part or widget == EDIT_DIALOG.trial:
- apply_changes()
-
- elif widget == 'system':
- update_edit_stages_dialog()
-
- EDIT_DIALOG.next_stage.enabled = gom.app.project.get("stage.name") != gom.app.project.stages[-1].name
- EDIT_DIALOG.prev_stage.enabled = gom.app.project.get("stage.name") != gom.app.project.stages[0].name
-
- update_edit_stages_dialog()
- EDIT_DIALOG.handler = handler
-
- gom.script.sys.show_user_defined_dialog(dialog=EDIT_DIALOG)
- apply_changes()
- self.write_back_values()
-
-
-# --------------------------------------------------------------------------------------------------
-# CLASS CheckboxConfiguration
-#
-# Display checkbox grid dialog for assigning appraiser/part/trial configuration to stages
-#
-class CheckboxConfiguration (Configuration):
-
- def __init__(self, type):
-
- Configuration.__init__(self, type)
-
- header_code = '''
- '
-
- def edit(self):
-
- DIALOG = gom.script.sys.create_user_defined_dialog(content=self.content)
- RESULT = gom.script.sys.show_user_defined_dialog(dialog=DIALOG)
-
-
-# --------------------------------------------------------------------------------------------------
-# MAIN
-#
-if __name__ == '__main__':
- config = CheckboxConfiguration(cfg.EvaluationType.Anova_2)
- config.edit()
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_lib.metainfo b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_lib.metainfo
deleted file mode 100644
index 2731046..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_lib.metainfo
+++ /dev/null
@@ -1 +0,0 @@
-{"breakpoints":[],"display_name":"msa_lib","folded_blocks":[],"icon":"","main_menu_path":"","script_element_type":"none","show_in_menu":false,"uuid":"ab37d5d4-7dc5-4fe4-b0e3-54b80ceafff8"}
\ No newline at end of file
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_lib.py b/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_lib.py
deleted file mode 100644
index c0c9999..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/Tools/MeasurementSystemAnalysis/msa_lib.py
+++ /dev/null
@@ -1,494 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# msa_lib - Common library functions for generating MSA / Gauge R&R setups
-#
-
-import gom
-import os
-import os.path
-import re
-import xml.etree
-import xml.etree.ElementTree as ET
-import xml.dom.minidom
-import stringprep
-
-import Tools.MeasurementSystemAnalysis.msa_config as cfg
-
-# ----------------------------------------------------------------------------------
-# Pre checking
-# ----------------------------------------------------------------------------------
-
-#
-# Check various project properties to guarantee a smooth run
-#
-
-
-def check_project_setup():
- #
- # Temporal directory has to exists for table template writing/import
- #
- if not os.path.exists(gom.app.temp_directory):
- raise RuntimeError('Temporary directory "{0}" does not exist.'.format(gom.app.temp_directory))
-
- #
- # Project must be loaded
- #
- project_loaded = False
-
- try:
- gom.app.project.name
- project_loaded = True
- except:
- pass
-
- if not project_loaded:
- raise RuntimeError('No project found.')
-
- #
- # We need at least some stages
- #
- if len(gom.app.project.stages) == 0:
- raise RuntimeError('No stages are present at all.')
-
-
-# ----------------------------------------------------------------------------------
-# General auxillary functions
-# ----------------------------------------------------------------------------------
-
-#
-# Check if an element has the 'automatically created' flag set
-#
-def is_automatically_created(element):
- result = False
-
- try:
- result = int(element.__getattr__('user_{0}'.format(cfg.automatically_created_tag))) == 1
- except:
- pass
-
- return result
-
-#
-# Tag element with 'automatically created' flag
-#
-
-
-def tag_as_automatically_created(element):
- gom.script.cad.edit_element_keywords(
- add_keys=[cfg.automatically_created_tag],
- description={cfg.automatically_created_tag: 'Automatically created by Gauge R&R script'},
- elements=[element],
- set_value={cfg.automatically_created_tag: '1'})
-
-#
-# Check if a stage range already exists
-#
-
-
-def stage_range_exists(name):
- exists = True
-
- try:
- gom.app.project.stage_markers[name]
- except:
- exists = False
-
- return exists
-
-
-#
-# Create stage range for a set matching an appraiser/part/trial triple and mark it as automatically created
-#
-# @param appraiser Name of the appraiser or 'None' if the range should cover all appraisers
-# @param part Name of the part or 'None' if the range should cover all parts
-# @param trial Name of the trial or 'None' if the range should cover all trials
-# @return Created stage range
-#
-def create_stage_range(appraiser, part, trial):
- checks = []
-
- inputs = {}
-
- if appraiser != None:
- checks.append('APPRAISER.actual.value == "{0}"'.format(appraiser))
- inputs['APPRAISER'] = gom.app.project.actual_elements[cfg.appraiser_tag]
- if part != None:
- checks.append('PART.actual.value == "{0}"'.format(part))
- inputs['PART'] = gom.app.project.actual_elements[cfg.part_tag]
- if trial != None:
- checks.append('TRIAL.actual.value == "{0}"'.format(trial))
- inputs['TRIAL'] = gom.app.project.actual_elements[cfg.trial_tag]
-
- stage_range = None
- name = get_stage_range_name(appraiser, part, trial)
- expression = ' and '.join(checks)
-
- if not stage_range_exists(name):
- stage_range = gom.script.sys.create_stage_range_by_expression(
- expression=expression,
- inputs=inputs,
- is_visible_in_diagram=True,
- name=name)
-
- gom.script.cad.hide_element(elements=[stage_range])
-
- tag_as_automatically_created(stage_range)
-
- elif gom.app.project.stage_markers[name].expression.strip() != expression:
- raise RuntimeError('Stage range "{0}" already exists but has different expression'.format(name))
-
- return stage_range
-
-
-#
-# Create stage ranges common for all evaluations
-#
-def create_common_stage_ranges(data, use_appraiser=True):
-
- def make_string_list(list):
- return ','.join("'{0}'".format(x) for x in list)
-
- #
- # Create stage range covering all stages
- #
- inputs = {}
- if use_appraiser:
- inputs['APPRAISER'] = gom.app.project.actual_elements[cfg.appraiser_tag]
- inputs['PART'] = gom.app.project.actual_elements[cfg.part_tag]
- inputs['TRIAL'] = gom.app.project.actual_elements[cfg.trial_tag]
-
- all_stages_range_expression = ''
- if use_appraiser:
- all_stages_range_expression += "APPRAISER.actual.value in [{appraiser_list}] and "
-
- all_stages_range_expression += "PART.actual.value in [{part_list}] and TRIAL.actual.value in [{trial_list}]"
- if use_appraiser:
- all_stages_range_expression = all_stages_range_expression.format(appraiser_list=make_string_list(data.appraisers),
- part_list=make_string_list(data.parts),
- trial_list=make_string_list(data.trials))
- else:
- all_stages_range_expression = all_stages_range_expression.format(part_list=make_string_list(data.parts),
- trial_list=make_string_list(data.trials))
-
- try:
- if (is_automatically_created(gom.app.project.stage_markers[cfg.all_stages_range_name])):
- gom.script.cad.delete_element(elements=[gom.app.project.stage_markers[cfg.all_stages_range_name]])
- except:
- pass
-
- if not stage_range_exists(cfg.all_stages_range_name):
-
- range = gom.script.sys.create_stage_range_by_expression(
- expression=all_stages_range_expression,
- inputs=inputs,
- is_visible_in_diagram=False,
- name=cfg.all_stages_range_name)
-
- gom.script.cad.hide_element(elements=[range])
-
- tag_as_automatically_created(range)
-
- else:
- range = gom.app.project.stage_markers[cfg.all_stages_range_name]
-
- if range.expression.strip() != all_stages_range_expression.strip():
- gom.script.sys.edit_creation_parameters(
- auto_apply=True,
- element=range,
- expression=all_stages_range_expression)
-
-#
-# Quote expression so that it can be used in a table template cell
-#
-
-
-def quote(expression):
- return '$' + expression + '$'
-
-#
-# Add token replacement comment to expression
-#
-
-
-def create_comment(text, expression):
- return '#@ {0}\n{1}'.format(text, expression)
-
-
-#
-# Add table template via XML import
-#
-# @param content Table content in XML format
-#
-def import_table_template(content, uuid_template):
-
- template_file_name = os.path.join(gom.app.temp_directory, 'msa_table_template.xml')
-
- with open(template_file_name, 'wb') as file:
- file.write(content.encode('UTF-8'))
- file.close()
-
- gom.script.table.import_table_template(file=template_file_name,
- uuid=uuid_template)
-
-#
-# Construct stage name from a appraiser/part/trial triple
-#
-
-
-def get_stage_name(data, appraiser, part, trial):
-
- assert appraiser != None
- assert part != None
- assert trial != None
-
- return data.stages[(appraiser, part, trial)].name
-
-#
-# Construct name for stage range addressing an appraiser/part/trail combination
-#
-
-
-def get_stage_range_name(appraiser, part, trial):
- if appraiser != None and part == None and trial == None:
- return 'Appraiser {0}'.format(appraiser)
- if appraiser == None and part != None and trial == None:
- return 'Part {0}'.format(part)
- if appraiser == None and part == None and trial != None:
- return 'Trial {0}'.format(trial)
- if appraiser == None and part != None and trial != None:
- return 'Part {0} / Trial {1}'.format(part, trial)
- if appraiser != None and part == None and trial != None:
- return 'Appraiser {0} / Trial {1}'.format(appraiser, trial)
- if appraiser != None and part != None and trial == None:
- return 'Appraiser {0} / Part {1}'.format(appraiser, part)
-
- return '{0}.{1}.{2}'.format(appraiser if appraiser != None else 'x',
- part if part != None else 'x',
- trial if trial != None else 'x')
-
-
-def create_item_filter(keyword_name, value):
- return 'gom.app.project.actual_elements["{0}"].input_value == "{1}"'.format(keyword_name, value)
-
-
-def create_stage_filter(appraiser, part, trial):
- parts = []
- if appraiser:
- parts.append(create_item_filter(cfg.appraiser_tag, appraiser))
- if part:
- parts.append(create_item_filter(cfg.part_tag, part))
- if trial:
- parts.append(create_item_filter(cfg.trial_tag, trial))
- return " and ".join(parts)
-
-
-# -------------------------------------------------------------------------
-# Table template creation functions
-# -------------------------------------------------------------------------
-
-#
-# Create single cell table template entry
-#
-# @param parent Parent XML element
-# @param index Column index in the current row
-# @param text Cell text in a quoted format
-# @param span Column span
-# @return Index of the next column in the current row
-#
-def create_cell_raw(parent, index, text, span):
- cell = ET.SubElement(parent, 'cell')
- cell.attrib['index'] = str(index)
- cell.attrib['background_mode'] = 'none'
- cell.attrib['row_span'] = '1'
- cell.attrib['column_span'] = str(span)
-
- content = ET.SubElement(cell, 'content')
- content.attrib['alignment'] = 'left'
- content.text = text
-
- return index + 1
-
-#
-# Create single cell table template entry containing an expression
-#
-
-
-def create_cell(parent, index, comment, text, span):
- return create_cell_raw(parent, index, quote(create_comment(comment, text)), span)
-
-#
-# Add column header to XML table definition
-#
-# @param parent Parent XML element
-# @param index Index of the cell in the current column
-# @param text Header text / cell content in a quoted format
-#
-
-
-def create_column_header(parent, index, text):
- header = ET.SubElement(parent, 'column_header')
- header.attrib['index'] = str(index)
-
- content = ET.SubElement(header, 'content')
- content.attrib['alignment'] = 'left'
- content.text = text
-
-#
-# Create HTML format string representing a subscript name
-#
-# @param name Variable name
-# @param index Variable index
-#
-
-
-def var_name(name, index):
- return '{0}{1}'.format(name, index) if index != None else name
-
-
-def italic(text):
- return '{0}'.format(text)
-
-#
-# Create HTML format string representing an overlined name
-#
-# @param name Variable name
-# @param index Variable index
-#
-
-
-def overlined_var_name(name, index):
- text = '{0}'.format(name)
- if index != None:
- text += '{0} = '.format(index)
- else:
- text += ' = '
- return text
-
-
-# -------------------------------------------------------------------------
-# Expression creation functions
-# -------------------------------------------------------------------------
-
-#
-# Return element type classification
-#
-def get_element_type(element):
-
- if element.object_family == 'gdat':
- return cfg.Type_GDAT
-
- return cfg.Type_Inspection
-
-
-#
-# Generate result token access matching the given type
-#
-def get_result_token(type):
- if type == cfg.Type_Inspection:
- return 'result_dimension.deviation'
- elif type == cfg.Type_GDAT:
- return 'result_gdat_size.deviation'
-
- raise AssertionError('Unknown element family type')
-
-
-def get_tolerance_tokens(type):
- if type == cfg.Type_GDAT:
- return ('result_gdat_size.lower_tolerance_limit', 'result_gdat_size.upper_tolerance_limit')
-
- return ('result_dimension.lower_tolerance_limit', 'result_dimension.upper_tolerance_limit')
-
-#
-# Generate tolerance accessing expression
-#
-
-
-def get_tolerance_expression(type):
- if type == cfg.Type_Inspection:
- return 'abs (result_dimension.upper_tolerance_limit - result_dimension.lower_tolerance_limit)'
- elif type == cfg.Type_GDAT:
- return 'abs (result_gdat_size.upper_tolerance_limit - result_gdat_size.lower_tolerance_limit)'
-
- raise AssertionError('Unknown element family type')
-
-#
-# Generate tolerance checking token
-#
-
-
-def get_tolerance_used_token(type):
- if type == cfg.Type_Inspection:
- return 'result_dimension.is_tolerance_used'
- elif type == cfg.Type_GDAT:
- return 'result_gdat_size.is_tolerance_used'
-
- raise AssertionError('Unknown element family type')
-
-#
-# Create expression for accessing the value of a single stage
-#
-
-
-def create_stage_access_expression(config, appraiser, part, trial, type):
- return 'avg ({0}, index=gom.app.project.stage_markers["{1}"], condition={2})'.format(get_result_token(type), cfg.all_stages_range_name, create_stage_filter(appraiser, part, trial))
-
-#
-# Create average over multiple expressions
-#
-
-
-def create_average_expression(params):
-
- return 'avg ({0})'.format(', '.join(params))
-
-#
-# Create range over multiple expressions
-#
-
-
-def create_range_expression(params):
-
- return 'max ({0}) - min ({0})'.format(', '.join(params))
-
-#
-# Create expression for computing the average value restricted to a single stage range
-#
-
-
-def create_restricted_avg_expression(config, appraiser, part, trial, type):
- token = get_result_token(type)
-
- #
- # Case 1: Stage range covering all stages. Using 'index="stages"' here instead does not work because
- # in that case the content would be dependent of the currently activated stage range.
- #
- if appraiser == None and part == None and trial == None:
- return 'avg ({0}, index=gom.app.project.stage_markers["{1}"])'.format(token, cfg.all_stages_range_name)
-
- #
- # Case 2: A dedicated set of stages
- #
- else:
- return 'avg ({0}, index=gom.app.project.stage_markers["{1}"], condition={2})'.format(get_result_token(type), cfg.all_stages_range_name, create_stage_filter(appraiser, part, trial))
-
-#
-# Create expression for computing the range (max - min) value restricted to a single stage range
-#
-
-
-def create_restricted_range_expression(data, appraiser, part, trial, type):
- return 'max ({0}, index=gom.app.project.stage_markers["{1}"], condition={2}) - min ({0}, index=gom.app.project.stage_markers["{1}"], condition={2})' \
- .format(get_result_token(type), cfg.all_stages_range_name, create_stage_filter(appraiser, part, trial))
-
-
-#
-# Create expression for computing the value in percent of the tolerance
-#
-def create_percent_expression(type, variable, prefix_function=None):
- expression = '{0} ? 100.0 * {1} / {2} : "No tol."'.format(
- get_tolerance_used_token(type), variable, get_tolerance_expression(type))
-
- if prefix_function:
- expression = prefix_function + ' (' + expression + ')'
-
- return 'return ' + expression + '\n'
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/data/msa_template.xlsx b/examples/MeasurementSystemAnalysis/scripts/MSA/data/msa_template.xlsx
deleted file mode 100644
index f809f66..0000000
Binary files a/examples/MeasurementSystemAnalysis/scripts/MSA/data/msa_template.xlsx and /dev/null differ
diff --git a/examples/MeasurementSystemAnalysis/scripts/MSA/modules/README.txt b/examples/MeasurementSystemAnalysis/scripts/MSA/modules/README.txt
deleted file mode 100644
index 7e07690..0000000
--- a/examples/MeasurementSystemAnalysis/scripts/MSA/modules/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Placeholder folder because git cannot handle empty directories
\ No newline at end of file
diff --git a/examples/ResourceAccess/README.md b/examples/ResourceAccess/README.md
deleted file mode 100644
index a71aefd..0000000
--- a/examples/ResourceAccess/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Demonstration for accessing add-on based resources via scripts.
\ No newline at end of file
diff --git a/examples/ResourceAccess/icon.png b/examples/ResourceAccess/icon.png
deleted file mode 100644
index a269eeb..0000000
Binary files a/examples/ResourceAccess/icon.png and /dev/null differ
diff --git a/examples/ResourceAccess/license/license.txt b/examples/ResourceAccess/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/ResourceAccess/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/ResourceAccess/metainfo.json b/examples/ResourceAccess/metainfo.json
deleted file mode 100644
index 020890d..0000000
--- a/examples/ResourceAccess/metainfo.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "author": "Carl Zeiss GOM Metrology GmbH",
- "description": "Examples for accessing add-on based resources",
- "licensing": {
- "licenses": [
- ],
- "product-codes": [
- ]
- },
- "software-revision": "157350",
- "software-version": "GOM Software 2022 Service Pack 2",
- "title": "Resource access example",
- "uuid": "040e602d-40d6-47a1-9fb4-e558b231ada9",
- "version": "1.0.0"
-}
diff --git a/examples/ResourceAccess/scripts/Resources/assets/zeiss_logo.png b/examples/ResourceAccess/scripts/Resources/assets/zeiss_logo.png
deleted file mode 100644
index c850a79..0000000
Binary files a/examples/ResourceAccess/scripts/Resources/assets/zeiss_logo.png and /dev/null differ
diff --git a/examples/ResourceAccess/scripts/Resources/dialog.gdlg b/examples/ResourceAccess/scripts/Resources/dialog.gdlg
deleted file mode 100644
index 258aced..0000000
--- a/examples/ResourceAccess/scripts/Resources/dialog.gdlg
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "content": [
- [
- {
- "columns": 1,
- "data": "AAAAAA==",
- "file_name": "",
- "height": 0,
- "keep_aspect": true,
- "keep_original_size": true,
- "name": "image",
- "rows": 1,
- "system_image": "system_message_warning",
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "image",
- "use_system_image": false,
- "width": 0
- }
- ]
- ],
- "control": {
- "id": "Close"
- },
- "embedding": "",
- "position": "",
- "size": {
- "height": 140,
- "width": 213
- },
- "sizemode": "",
- "style": "",
- "title": {
- "id": "",
- "text": "Display image",
- "translatable": true
- }
-}
diff --git a/examples/ResourceAccess/scripts/Resources/modules/modules.json b/examples/ResourceAccess/scripts/Resources/modules/modules.json
deleted file mode 100644
index 9a9bf88..0000000
--- a/examples/ResourceAccess/scripts/Resources/modules/modules.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "modules": [
- ],
- "uuid": "47f9a632-8410-4143-8608-2d5908309e84",
- "wheelsfrom": "local"
-}
diff --git a/examples/ResourceAccess/scripts/Resources/resource.metainfo b/examples/ResourceAccess/scripts/Resources/resource.metainfo
deleted file mode 100644
index 4b865a0..0000000
--- a/examples/ResourceAccess/scripts/Resources/resource.metainfo
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "display_name": "resource",
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "multicreation_script": false,
- "name": "resource",
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "6035f426-b00d-4b6d-bd89-4fc3689f451b"
-}
diff --git a/examples/ResourceAccess/scripts/Resources/resource.py b/examples/ResourceAccess/scripts/Resources/resource.py
deleted file mode 100644
index 7e52aab..0000000
--- a/examples/ResourceAccess/scripts/Resources/resource.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This script demonstrates reading asset or resource data from a package
-#
-
-import gom
-
-#
-# Resources are addressed with a relative or absolute file system path
-#
-data = gom.app.resource["assets/zeiss_logo.png"]
-
-print ('Type:', type (data))
-print ('Size:', len (data))
-
-#
-# Use script dialog to display the resource as an image. The 'data' field of
-# the image widget expects a displayable byte object and will render it.
-#
-DIALOG=gom.script.sys.create_user_defined_dialog (file='dialog.gdlg')
-
-DIALOG.image.data = data
-
-#
-# After dialog setup, it can be displayed.
-#
-gom.script.sys.show_user_defined_dialog (dialog=DIALOG)
-
-
diff --git a/examples/SettingsAPI/doc/README.md b/examples/SettingsAPI/doc/README.md
deleted file mode 100644
index 05de75d..0000000
--- a/examples/SettingsAPI/doc/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Settings API example
-
-Example of how to use the settings API.
\ No newline at end of file
diff --git a/examples/SettingsAPI/icon.png b/examples/SettingsAPI/icon.png
deleted file mode 100644
index 6847b81..0000000
Binary files a/examples/SettingsAPI/icon.png and /dev/null differ
diff --git a/examples/SettingsAPI/license/license.txt b/examples/SettingsAPI/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/SettingsAPI/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/SettingsAPI/metainfo.json b/examples/SettingsAPI/metainfo.json
deleted file mode 100644
index 49af83d..0000000
--- a/examples/SettingsAPI/metainfo.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "author": "Carl Zeiss GOM Metrology GmbH",
- "description": "Example add-on demonstrating usage of the settings API",
- "licensing": {
- "licenses": [
- ],
- "product-codes": [
- ]
- },
- "settings": [
- {
- "description": "Dialog configuration",
- "name": "dialog"
- },
- {
- "description": "Size of the dialog",
- "name": "dialog.size"
- },
- {
- "description": "Dialog width",
- "digits": 0,
- "name": "dialog.size.width",
- "value": 640
- },
- {
- "description": "Dialog height",
- "digits": 0,
- "name": "dialog.size.height",
- "value": 480
- },
- {
- "description": "Threshold",
- "digits": 2,
- "maximum": 10,
- "minimum": 0,
- "name": "dialog.threshold",
- "step": 0.01,
- "value": 1
- },
- {
- "description": "Magic Key",
- "name": "dialog.magic",
- "value": "Default text",
- "visible": false
- }
- ],
- "software-revision": "2127",
- "software-version": "2023-RC",
- "title": "Settings API example",
- "uuid": "3b515488-aa7b-4035-85e1-b9509db8af4f",
- "version": "1.0.4"
-}
diff --git a/examples/SettingsAPI/scripts/settings.metainfo b/examples/SettingsAPI/scripts/settings.metainfo
deleted file mode 100644
index a1bb25a..0000000
--- a/examples/SettingsAPI/scripts/settings.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "settings",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.settings",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "8b857af8-cfdf-4a0c-96c9-90795cd4f9c3"
-}
diff --git a/examples/SettingsAPI/scripts/settings.py b/examples/SettingsAPI/scripts/settings.py
deleted file mode 100644
index 3f53b71..0000000
--- a/examples/SettingsAPI/scripts/settings.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/python
-#
-# settings.py - Example for saving and restoring settings permanently
-# in the application preferences
-#
-
-import gom
-
-DIALOG = gom.script.sys.create_user_defined_dialog(dialog={
- "content": [
- [
- {
- "columns": 1,
- "name": "text_label",
- "rows": 1,
- "text": {
- "id": "",
- "text": "Text",
- "translatable": True
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": True
- },
- "type": "label",
- "word_wrap": False
- },
- {
- "columns": 1,
- "name": "text",
- "password": False,
- "read_only": False,
- "rows": 1,
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": True
- },
- "type": "input::string",
- "value": ""
- }
- ],
- [
- {
- "columns": 2,
- "maximum_size": -1,
- "minimum_size": 0,
- "name": "spacer",
- "rows": 1,
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": True
- },
- "type": "spacer::horizontal"
- },
- {
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "",
- "position": "automatic",
- "size": {
- "height": 224,
- "width": 351
- },
- "sizemode": "automatic",
- "style": "",
- "title": {
- "id": "",
- "text": "Size remembering dialog",
- "translatable": True
- }
-})
-
-DIALOG.width = gom.api.settings.get('dialog.size.width')
-DIALOG.height = gom.api.settings.get('dialog.size.height')
-DIALOG.text.value = gom.api.settings.get('dialog.magic')
-
-gom.script.sys.show_user_defined_dialog(dialog=DIALOG)
-
-gom.api.settings.set('dialog.size.width', DIALOG.width)
-gom.api.settings.set('dialog.size.height', DIALOG.height)
-gom.api.settings.set('dialog.magic', DIALOG.text.value)
diff --git a/examples/TemplateUnittestCoverage/doc/README.md b/examples/TemplateUnittestCoverage/doc/README.md
deleted file mode 100644
index 5d8569c..0000000
--- a/examples/TemplateUnittestCoverage/doc/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Template for unit testing and generating a test coverage report
-
-Based on `unitest` (https://docs.python.org/3/library/unittest.html) and `Coverage.py` (https://coverage.readthedocs.io/)
-
-## Notes
-
-**Note 1:** The Python package `coverage` must be installed via the Add-on Explorer.
-
-**Note 2:** The Add-on must be in editing mode to run the tests.
-
-
-## File contents
-- `uut_project_keywords.py` - Example Unit Under Test (UUT)
-- `tests/` - Test case folder
- - `test_blackbox.py` - Example test case which treats the UUT as black box. It executes the UUT as script and checks the ZEISS INSPECT project for the expected changes of state afterwards (in this example: set project keywords).
- - ` test_fail.py` - Dummy testcase which always fails.
- - `test_pass.py` - Dummy testcase which always passes.
- - `test_whitebox.py` - Example testcase which calls the UUT function `get_project_keywords()` and checks its return value
-- `run_tests.py` - Script for running all unit tests and generating the coverage report.
-
-## See also
-See https://zeissiqs.github.io/zeiss-inspect-addon-api/2023/howtos/testing_addons/testing_addons.html for more information.
-
-
diff --git a/examples/TemplateUnittestCoverage/icon.png b/examples/TemplateUnittestCoverage/icon.png
deleted file mode 100644
index 42dbd76..0000000
Binary files a/examples/TemplateUnittestCoverage/icon.png and /dev/null differ
diff --git a/examples/TemplateUnittestCoverage/license/license.txt b/examples/TemplateUnittestCoverage/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/TemplateUnittestCoverage/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/TemplateUnittestCoverage/metainfo.json b/examples/TemplateUnittestCoverage/metainfo.json
deleted file mode 100644
index c8b7687..0000000
--- a/examples/TemplateUnittestCoverage/metainfo.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "author": "Carl Zeiss GOM Metrology GmbH",
- "description": "Add-on template for running unit testing and generating a test coverage report",
- "labels": [
- ],
- "licensing": {
- "licenses": [
- ],
- "product-codes": [
- ]
- },
- "software-revision": "64",
- "software-version": "2023-Service-Pack-2",
- "tags": [
- ],
- "title": "TemplateUnittestCoverage",
- "uuid": "d569d88b-a493-4298-ad4a-0875f5173ce1",
- "version": "1.0.0"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/run_tests.metainfo b/examples/TemplateUnittestCoverage/scripts/run_tests.metainfo
deleted file mode 100644
index 924796e..0000000
--- a/examples/TemplateUnittestCoverage/scripts/run_tests.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "run_tests",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.run_tests",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "597f1fa8-b9d9-4e19-b40d-836b4460d036"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/run_tests.py b/examples/TemplateUnittestCoverage/scripts/run_tests.py
deleted file mode 100644
index 3a0d641..0000000
--- a/examples/TemplateUnittestCoverage/scripts/run_tests.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# run_tests.py
-#
-# Test framwork using
-# unitest (https://docs.python.org/3/library/unittest.html)
-# and
-# Coverage.py (https://coverage.readthedocs.io/)
-#
-# Runs all test cases in the Add-on's scripts/tests/ folder and its subfolders.
-# Test cases must be named test_*.py or *_test.py.
-#
-# Carl Zeiss GOM Metrology GmbH, 2024
-#
-# ---
-
-import gom
-import sys
-import os
-import unittest
-import coverage
-import tempfile
-import zipfile
-import inspect
-import glob
-import importlib
-
-####################################################################################
-# User defined options
-####################################################################################
-
-# Analyze coverage
-COVERAGE = True
-
-# Generate HTML coverage report
-HTML = True
-
-####################################################################################
-
-def collect_tests(path):
- """Collect and add test cases to the test suite
-
- Parameters:
- path (string): absolute path of test case folder
-
- Returns:
- test suite
- """
- # Get a list of all Python files in the folder
- python_files = glob.glob(os.path.join(path, "test_*.py"))
- python_files += glob.glob(os.path.join(path, "*_test.py"))
-
- suite = unittest.TestSuite()
-
- # Loop through the list of files, import each one as a module and
- # add each function with the same name as the module to the test suite
- for file in python_files:
- file_name = os.path.splitext(os.path.basename(file))[0]
- module_name = 'tests.' + file_name
- module = importlib.import_module(module_name)
- test_function = getattr(module, file_name)
- suite.addTest(unittest.FunctionTestCase(test_function))
-
- return suite
-
-
-def main():
- '''Run tests and generate coverage report'''
-
- # Get test case folder
- addon_path = gom.api.addons.get_current_addon().get_file()
- tests_path = os.path.join(addon_path, 'scripts', 'tests')
- print(f'Test case folder: {tests_path}')
-
- if COVERAGE:
- # Init coverage
- cov = coverage.Coverage(data_file=os.path.join(tests_path, '.coverage'))
- cov.erase()
- cov.start()
-
- # Run unittest with test folder
- suite = collect_tests(tests_path)
- unittest.TextTestRunner().run(suite)
-
- if COVERAGE:
- # Finalize coverage
- cov.stop()
- cov.save()
-
- # Create coverage report (text)
- cov.report(
- file=sys.stdout,
- omit=['*/gom_script_server/*', '*/gom_python_wheel_cache/*'],
- ignore_errors=True
- )
-
-
- if HTML:
- # Create coverage report (HTML)
- html_path = os.path.join(tests_path, 'coverage_html')
- try:
- cov.html_report(
- directory=html_path,
- omit=['*/gom_script_server/*', '*/gom_python_wheel_cache/*'],
- ignore_errors=True
- )
- except:
- pass
-
- print('\nHTML coverage report:')
- print(f'{os.path.join(html_path, "index.html")}')
-
-
-
-if __name__ == "__main__":
- '''Check if the Add-on is in editing mode as required'''
- if sys.argv[0][0] == ':':
- # Inside a packed Add-on
- print("ERROR: Add-on must be in editing mode!")
- sys.exit(0)
- else:
- main()
-
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_blackbox.metainfo b/examples/TemplateUnittestCoverage/scripts/tests/test_blackbox.metainfo
deleted file mode 100644
index 54ad9ec..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_blackbox.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "test_blackbox",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.tests__test_blackbox",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "3c2b51c0-c5c9-4739-a192-ae896a21228f"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_blackbox.py b/examples/TemplateUnittestCoverage/scripts/tests/test_blackbox.py
deleted file mode 100644
index e47e383..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_blackbox.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# test_blackbox.py
-#
-# This test runs the Unit Under Test (UUT) as script and treats it as opaque. After running it, the ZEISS INSPECT project
-# is checked for the expected changes of state (in this example: project keywords).
-#
-# Carl Zeiss GOM Metrology GmbH, 2024
-#
-# ---
-
-import gom
-import os
-
-def test_blackbox():
- '''Executing the UUT as the entire script'''
-
- # Add-on relative path to UUT
- UUT_PATH = 'scripts/uut_project_keywords.py'
-
- # Get path of UUT
- addon = gom.api.addons.get_current_addon()
- uut_path = os.path.join(addon.get_file(), UUT_PATH)
-
- # Run the UUT
- gom.script.sys.execute_script(file=uut_path)
-
- # Check project state
- assert gom.app.project.get('user_inspector') == 'Clouseau'
- assert gom.app.project.get('user_project') == 'Test Projet' # intended to fail
-
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_fail.metainfo b/examples/TemplateUnittestCoverage/scripts/tests/test_fail.metainfo
deleted file mode 100644
index d4be08f..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_fail.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "test_fail",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.tests__test_fail",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "b7242bf1-c462-4e4b-a263-120b9249a063"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_fail.py b/examples/TemplateUnittestCoverage/scripts/tests/test_fail.py
deleted file mode 100644
index a5b127d..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_fail.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# test_pass.py
-#
-# Dummy test which always fails
-#
-# Carl Zeiss GOM Metrology GmbH, 2024
-#
-# ---
-
-import gom
-
-def test_fail():
- assert False
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_pass.metainfo b/examples/TemplateUnittestCoverage/scripts/tests/test_pass.metainfo
deleted file mode 100644
index 9da8de7..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_pass.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "test_pass",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.tests__test_pass",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "581dd310-b984-4fb9-9781-7cb04603d1eb"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_pass.py b/examples/TemplateUnittestCoverage/scripts/tests/test_pass.py
deleted file mode 100644
index 9a631df..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_pass.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# test_pass.py
-#
-# Dummy test which always passes
-#
-# Carl Zeiss GOM Metrology GmbH, 2024
-#
-# ---
-
-import gom
-
-def test_pass():
- assert True
-
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_whitebox.metainfo b/examples/TemplateUnittestCoverage/scripts/tests/test_whitebox.metainfo
deleted file mode 100644
index 16d9801..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_whitebox.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "test_whitebox",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.tests__test_whitebox",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "16674162-a8b7-41bb-aac0-4bc188c4098a"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/tests/test_whitebox.py b/examples/TemplateUnittestCoverage/scripts/tests/test_whitebox.py
deleted file mode 100644
index 799c420..0000000
--- a/examples/TemplateUnittestCoverage/scripts/tests/test_whitebox.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# test_blackbox.py
-#
-# The test calls the function get_project_keywords() from the script (UUT) and checks the return value (actual) agains the expected result (EXPECTED)
-#
-# Carl Zeiss GOM Metrology GmbH, 2024
-#
-# ---
-
-import gom
-
-# Name of the UUT script
-import uut_project_keywords
-
-def test_whitebox():
- '''Executing a UUT function'''
- EXPECTED = {'user_inspector': {'description': 'Inspector', 'value': 'Clouseau'}, 'user_project': {'description': 'Project Name', 'value': 'Test Project'}}
-
- actual = uut_project_keywords.get_project_keywords()
- assert actual == EXPECTED
diff --git a/examples/TemplateUnittestCoverage/scripts/uut_project_keywords.metainfo b/examples/TemplateUnittestCoverage/scripts/uut_project_keywords.metainfo
deleted file mode 100644
index d59d7b8..0000000
--- a/examples/TemplateUnittestCoverage/scripts/uut_project_keywords.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "uut_project_keywords",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.uut_project_keywords",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "79f1d3fd-a1bb-40c4-aeee-8c346e104f02"
-}
diff --git a/examples/TemplateUnittestCoverage/scripts/uut_project_keywords.py b/examples/TemplateUnittestCoverage/scripts/uut_project_keywords.py
deleted file mode 100644
index 58a7b2f..0000000
--- a/examples/TemplateUnittestCoverage/scripts/uut_project_keywords.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# uut_project_keywords.py
-#
-# Unit Under Test (UUT) Example
-#
-# Carl Zeiss GOM Metrology GmbH, 2024
-#
-# ---
-
-import gom
-
-
-####################################################################################
-# Note: This entire script is run by test_blackbox
-####################################################################################
-
-# Create a new project. This will rais an exception if a project is already open - which is fine.
-try:
- gom.script.sys.create_project ()
-except:
- pass
-
-def not_covered_by_test():
- '''This is not covered by any test'''
- print("Hello")
-
-def excluded_from_coverage(): # pragma: no cover
- '''This is not covered by any test, too, but won't contribute to the coverage'''
- print("Nothing to say")
-
-def get_project_keywords():
- '''This is called by test_whitebox'''
- keywords = {}
- for k in gom.app.project.project_keywords:
- keywords[k] = {
- 'description': gom.app.project.get(f'description({k})'),
- 'value': gom.app.project.get(k)
- }
- print(keywords)
- return keywords
-
-PROJECT_KEYWORDS = {
- 'project': {'description': 'Project Name', 'value': 'Test Project'},
- 'inspector': {'description': 'Inspector', 'value': 'Clouseau'}
-}
-
-for k, v in PROJECT_KEYWORDS.items():
- gom.script.sys.set_project_keywords(
- keywords={k:v['value']},
- keywords_description={k:v['description']}
- )
-
-print("-- Project keywords --")
-for k in gom.app.project.project_keywords:
- print(f"{k}='{gom.app.project.get(k)}'")
-
diff --git a/examples/TextDetection/README.md b/examples/TextDetection/README.md
deleted file mode 100644
index c11c8e4..0000000
--- a/examples/TextDetection/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Text detection in images
-
-This example demonstrates how external libraries can be used to detect and extract text fragments in images. It uses the Tesseract library for that purpose. The resulting element will be a "scripted element" which integrates neatly into a ZEISS INSPECT project and can be edited, recalculated or checked.
-
-## Preliminaries
-
-The following python wheels must be added to the add-on and are not included due to copyright reasons:
-
-* numpy
-* opencv_python
-* pytesseract
-
-In addition, the tesseract executable must be installed and the path to that executable must be adapted in the script.
-
-![Software](doc/text_detection.png)
diff --git a/examples/TextDetection/doc/README.md b/examples/TextDetection/doc/README.md
deleted file mode 100644
index c155cfc..0000000
--- a/examples/TextDetection/doc/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Text detection in images
-
-This example demonstrates how external libraries can be used to detect and extract text fragments in images. It uses the Tesseract library for that purpose. The resulting element will be a "scripted element" which
-integrated nealty into a ZEISS inspect project and can be edited, recalculated or checked.
-
-## Preliminaries
-
-The following python wheels must be added to the add-on and are not included due to copyright reasons:
-
-* numpy
-* opencv_python
-* pytesseract
-
-In addition, the tesseract executable must be installed and the path to that executable must be adapted in the script.
-
-## Example
-
-![Software](text_detection.png)
\ No newline at end of file
diff --git a/examples/TextDetection/doc/text_detection.png b/examples/TextDetection/doc/text_detection.png
deleted file mode 100644
index 3909cf6..0000000
Binary files a/examples/TextDetection/doc/text_detection.png and /dev/null differ
diff --git a/examples/TextDetection/icon.png b/examples/TextDetection/icon.png
deleted file mode 100644
index 42dbd76..0000000
Binary files a/examples/TextDetection/icon.png and /dev/null differ
diff --git a/examples/TextDetection/labels/Part Id/Part Id.json b/examples/TextDetection/labels/Part Id/Part Id.json
deleted file mode 100644
index 94db8f8..0000000
--- a/examples/TextDetection/labels/Part Id/Part Id.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "content": {
- "value_element": {
- "iso_3d_label_show_results": "False",
- "iso_3d_label_show_tendency_markers": "False",
- "iso_3d_label_use": "False",
- "label_background": "gom.Color (0, 0, 0, 0)",
- "label_border_color": "gom.Color (0, 0, 0, 255)",
- "label_border_mode": "'none'",
- "label_connector_line_width": "'small'",
- "label_font": "gom.Font ('gom_system_label_font', 0.0, 0)",
- "label_grouping_enabled": "True",
- "label_grouping_skipped_header_lines": "0",
- "label_text": "'\\n\\n
'",
- "label_version": "1"
- }
- },
- "name": "Part Id",
- "overwrites": "00000000-0000-0000-0000-000000000000",
- "sort_index": 2147483647,
- "uuid": "16e4c736-f2a8-44aa-9e56-538e689b1738"
-}
diff --git a/examples/TextDetection/license/license.txt b/examples/TextDetection/license/license.txt
deleted file mode 100644
index bb42913..0000000
--- a/examples/TextDetection/license/license.txt
+++ /dev/null
@@ -1,296 +0,0 @@
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-English version. See below for German version.
-Englische Version. Siehe unten für die Deutsche Version.
-
-1. Introduction
-
-1.1 General information
-
-This End User License Agreement for Add-Ons / Apps ("EULA Add-Ons / Apps") is a legal agreement between "you" (either an individual or a legal entity, hereinafter referred to as "licensee" or "customer") and ZEISS ("ZEISS" or "licensor") (each individually a "party" and collectively the "parties") for your use of ZEISS software products. The agreement sets forth all rights and obligations for both licensee and ZEISS and governs your use of all Software Products installed or provided by ZEISS. Any amendment to this agreement must be in writing and in accordance with the terms and conditions contained herein. By paying the applicable license fee(s) and by downloading, installing or using the software, you agree that this agreement shall be enforceable against you in the same manner as a written, negotiated contract signed by you. If you do not agree to the terms of this agreement, you are not authorized and may not download, install or use any ZEISS software products.
-
-In order to use the ZEISS software products and services, the licensee must have the following:
-
-(a) a so-called valid subscription agreement or
-
-(b) a valid license from ZEISS.
-
-Furthermore, individual software products
-
-(a) which are based on a subscription agreement and / or
-
-(b) with a server-based licensing solution
-
-require and use a secure connection of the application computer to the ZEISS infrastructure and/or the "Cloud Services".
-
-1.2 The licensor is ZEISS, the licensee is the end customer. The licensor grants the licensee a non-exclusive, non-transferable right to use the "software product", which includes the specific software program and the subsequent extensions, updates, patches and associated documentation for internal company operation, as well as the associated manuals and software documentation.
-
-1.3 The software product may contain codes, objects and other intellectual property developed and licensed by licensors or third parties and integrated into the software product ("embedded third party software"). Any embedded third party software or open source code and open source licenses used shall not limit or impair the rights of use granted to licensee and may be accessed at any time within the respective software used. In individual cases, the respective license conditions can be made available by the licensor upon request at any time.
-
-1.4 Any terms and conditions of purchase of the licensee that conflict with or deviate from this agreement shall not become part of the agreement, even if the licensor does not expressly object to them. Amendments to the EULA must be expressly agreed in writing by both parties.
-
-
-2. Term and termination / license fees
-
-2.1 The license agreement begins with license activation and ends with the period of use of the Pro Version or with the end of the payment period.
-
-2.2 The Licensor shall be entitled to terminate this license agreement and the corresponding rights of use with immediate effect if the licensee violates any provision of this license agreement or tacitly tolerates a violation of this license agreement by third parties or fails to fulfill its obligations under this license agreement or if the licensee files for insolvency or a change of control occurs at the licensee.
-
-2.3 Notwithstanding the foregoing, and unless otherwise agreed in this license agreement, this license agreement shall terminate automatically upon licensee's breach of any of its provisions.
-
-2.4 Under no circumstances shall license fees be fully or partially refundable upon termination or mutually agreed termination of this agreement, unless ZEISS is responsible for the early termination of this agreement.
-
-
-3. Reproduction rights
-
-3.1 The licensee may reproduce the delivered software to the extent that the reproduction is necessary to use the software. Necessary reproductions of the software include, but are not limited to, the installation of the software product on the mass storage of the device in accordance with this license agreement and the loading of the software into the main memory of the computer.
-
-3.2 In addition, licensee shall be entitled to make copies for data backup purposes. This backup copy of the licensed software product must be marked as such.
-
-3.3 If, for reasons of data security or backup, a quick reactivation of the computer system, including the subject matter of the agreement, and the backup of the entire data stock, including the installed software product, are required after a total failure, licensee may create the maximum required number of backup copies. The data media concerned shall be appropriately marked. The backup copies may only be used for archiving purposes.
-
-3.4 The licensee is not entitled to make further copies or to instruct third parties to make further copies, in particular the licensee is not entitled to print out the program code with a printer or to make photocopies of the manual.
-
-
-4. Resale and transfer
-
-4.1 The licensee is not entitled to rent, lease, lend or make the software product available to third parties within the scope of hosting or download options, unless the Licensor has expressly indicated or permitted this in writing.
-
-4.2 However, it is permitted to grant a right of use to third parties if they have to use the software product to the licensee’s specifications (like own employees). Independent third parties are excluded from use in any case.
-
-4.3 Transfer within legal entities or global groups of licensee: Provided that the transferring licensee and the receiving party are part of one legal entity or part of affiliated companies, the transfer is permitted provided that the receiving party agrees to these license terms. "Affiliate" means any legal entity that is directly or indirectly controlled by a Legal Entity or its parent company. "Control" for purposes of this license agreement means direct or indirect ownership of more than fifty percent (50%) of the stock of such entity or more than fifty percent (50%) direct or indirect participation in the decision-making body of such entity.
-
-
-5. Back translation and program changes
-
-5.1 As a matter of principle, the licensee may not make any changes to the software product unless this is necessary to correct errors. The prerequisite is that this is done solely for the purpose of correcting errors that impair the functioning of the software.
-In the latter case and if important program functions and working methods could be disclosed during the repair process, licensee may commission a commercially active third party to carry out the repair if this third party is not a potential competitor of licensor.
-Insofar as the licensee makes changes to the software product in order to rectify errors, the licensor shall not assume any liability for the resulting consequences, in particular not through this authorization.
-
-5.2 The reverse translation of the licensed program code into other code forms (decompilation) and other types of reverse engineering of various different phases of software creation are permitted only to the extent that they serve to correct errors that impair the functioning of the software (in accordance with section 5.1). However, licensee may perform such decompilation only to the extent necessary for correction and, if applicable, in compliance with the terms and conditions contractually agreed with the owner of the copyright in this program.
-Further, decompilation is permitted in cases to obtain information necessary for interoperability with an independently created computer program and only if such information cannot be obtained otherwise.
-
-5.3 A further prerequisite for the permission to reverse engineer is the performance of reverse engineering or program observation exclusively by means of procedures which the licensee is authorized to perform in accordance with this license agreement. In particular, the program code may in no case be printed out.
-
-5.4 All property rights and copyrights relating to the software product, the printed accompanying materials and all copies of the software product shall remain with the licensor or its suppliers. This software product is protected under German copyright law, U.S. copyright law and the provisions of international treaties. The licensee is not entitled to reproduce the printed materials accompanying the software.
-
-
-5.5 The licensee shall not be entitled to remove, modify or add to any copyright notices or trademark notices placed by licensor. This includes, without limitation, all references in physical and/or electronic media or documents, in "setup wizards" or in "about..." dialog boxes, and/or in other references displayed on or activated via the Internet, in program code or other embodiments originally included in the software or otherwise created by licensor.
-
-6. Warranty and right of termination
-
-6.1 The licensor warrants with respect to the software product licensed to the licensee the performance set forth in the description, provided that the software product is installed in the intended system in compliance with the licensor's guidelines.
-
-6.2 The licensor shall correct errors in the software product, and in all manuals and other documents, within a reasonable period of time after receiving from the licensee the corresponding information on the error necessary to correct the error. Errors shall be remedied by rectification, which shall not be invoiced, or by replacement of the delivery, at the option of the licensor.
-
-6.3 The licensee's right of termination due to the non-executability of the software product may only be exercised after rectifications or replacements have been made twice without success.
-
-6.4 The licensor neither warrants nor guarantees the functionality of the programs created by third parties or the licensee / customer, nor the error-free execution of the programs with the software or on the licensor's systems.
-
-
-7. Liability
-
-7.1 If the licensee is unable to use the software product in the manner specified in the agreement and the licensee is responsible for this due to the failure to implement or the incorrect implementation of suggestions and advice before or after signing the agreement or due to the breach of other contractual obligations, the provisions set forth in this agreement shall apply mutatis mutandis to the exclusion of any further claims by the licensee.
-
-For damages that do not occur to the software product, respectively not to the hardware and the connected device, the liability obligation of the licensor applies exclusively in the following cases, regardless of the respective legal ground:
-
-- willful misconduct,
-
-- gross negligence of its executive bodies or officers,
-
-- culpable damage to life, limb and health, in the event of errors, which the lLicensor has fraudulently concealed or which it has excluded under warranty,
-
-- software errors within the scope of liability for personal injury and property damage due to personally implemented objects, as set out in the product liability regulations applicable to them
-
-7.2 In the event of culpable breach of material contractual obligations, the licensor shall also be liable for gross negligence on the part of non-executive employees and for slight negligence. In the latter case, liability shall be limited to damages that are foreseeable and typical for this type of contract.
-
-7.3 In addition, the licensor, its employees and its vicarious agents shall be liable for data loss or changes due to program errors, limited to the extent that this would have been unavoidable if the licensee had complied with its obligation to make back-up copies regularly and at least once a day.
-
-7.4 In the event of claims based on copyright infringement, the licensor shall grant the licensee the right to continue using the software product or to make modifications to the software product so that copyright protection is ensured. If this is not commercially reasonable, the licensor shall take back the subject matter of the agreement and refund the license fee paid, less an amount corresponding to the duration of the previous use. This shall apply provided that the licensee notifies the licensor of this type of claim in writing without delay and allows licensor all legal remedies and out-of-court settlements.
-
-7.5 The licensee or its IT provider shall be liable for server interruptions, interruption of license allocation and other support cases that are not clearly attributable to an incorrectly created license.
-
-The licensee or its IT provider is responsible for maintaining the necessary number of licenses to provide its services. The licensor is not liable for interruptions in use and subsequent work / production stoppages.
-
-
-7.6 Further liability claims of the licensee are expressly excluded.
-7.7 The licensee is responsible for all problems arising from the use of the software product that are not directly caused by the licensor. Therefore, licensee is responsible for all data generated and produced during the use of the software product. Accordingly, licensee is obligated and responsible for compliance with the terms and conditions set forth in this license agreement.
-
-
-8. Security measures
-
-The licensee shall take suitable measures to secure the software and, if applicable, the access data for online access against access by unauthorized third parties. In particular, all copies of the software as well as the access data shall be kept in a protected place.
-
-
-9. Industrial property rights and copyrights
-
-9.1 If a third party asserts claims for infringement of an industrial property right or a copyright against the customer because the customer uses a software version, firmware supplement or associated documentation supplied by ZEISS, ZEISS shall be obligated to pay any cost and damage compensation amounts awarded to the owner of the property right by a court or awarded with the prior consent of ZEISS. This is subject to the condition that the customer informs ZEISS immediately in writing of such claims and that ZEISS reserves the right to all defensive measures and out-of-court settlements. The customer is obligated to support ZEISS in the defense to the best of its ability. Under these conditions, ZEISS shall generally procure for the customer the right to continue using the software version, firmware supplement or documentation. If this should not be possible under economically reasonable conditions, ZEISS shall be obligated, at its own discretion and at its own expense, either to modify or replace the relevant item in such a way that the property right is not infringed, or to take back the item and refund the remuneration paid for it less an amount taking into account the benefits derived.
-
-9.2 ZEISS shall have no obligations if property right infringements are caused by the fact that software versions , firmware supplements or documentation supplied by ZEISS are not used in the intended manner or are not used on the specific systems.
-
-
-10. Export Control
-
-Licensee assumes responsibility for compliance with all applicable rules and regulations, including but not limited to the export control and sanctions regulations of the Federal Republic of Germany, the European Union and the United States of America. In particular, licensee agrees not to provide the software or any related technology or documentation or any part thereof, directly or indirectly, to any sanctioned country or to any sanctioned person or entity in violation of the foregoing.
-
-Licensee represents and guarantees that it will not use the software or any related technology or documentation or any portion thereof in violation of any applicable law or regulation. The licensee further agrees to indemnify and hold harmless licensor from and against any and all claims resulting from licensee's failure to comply with any of the foregoing applicable provisions.
-
-
-11. Miscellaneous
-
-11.1 All verbal agreements, amendments, extensions or concretizations of these license conditions as well as the special characteristics of the assurances or agreements or arrangements made must be in writing to be legally effective. If these are drafted by representatives or vicarious agents of the Licensor, they shall only become legally binding upon approval by the Licensor.
-
-11.2 Should parts of this contract become invalid, this shall not affect the validity of the remaining parts of this contract. The ineffective part of this contract shall be replaced by its parties with legally permissible provisions that come as close as possible to the intention of the ineffective provisions.
-
-11.3 The laws of the Federal Republic of Germany shall apply to this contract, excluding the law on the international sale of goods and the rules of conflict of laws.
-
-Version from October 2023
-
------------------------------------------------------------------------------
-
-ZEISS Add-Ons / Apps End User License Agreement (EULA)
-======================================================
-
-German version. See above for English version.
-Deutsche Version. Siehe oben für die Englische Version.
-
-1. Einführung
-
-1.1 Allgemeine Informationen
-
-Diese Endbenutzer-Lizenzvereinbarung für Add-Ons / Apps (End User License Agreement, „EULA Add-Ons / Apps“) ist eine rechtsgültige Vereinbarung zwischen „Ihnen“ (entweder eine natürliche oder juristische Person, im Folgenden als „Lizenznehmer“ oder „Kunde“ bezeichnet) und ZEISS („ZEISS“ oder „Lizenzgeber“) (jeweils einzeln eine „Partei“ und zusammen die „Parteien“) für Ihre Nutzung von ZEISS Softwareprodukten. Die Vereinbarung legt alle Rechte und Pflichten sowohl für den Lizenznehmer als auch für ZEISS fest und regelt Ihre Nutzung aller Softwareprodukte, die von ZEISS installiert oder zur Verfügung gestellt werden. Jede Änderung dieser Vereinbarung muss schriftlich erfolgen und mit den hierin enthaltenen Bestimmungen und Bedingungen übereinstimmen. Durch die Zahlung der geltenden Lizenzgebühr(en) und durch das Herunterladen, die Installation oder die Nutzung der Software erklären Sie sich damit einverstanden, dass diese Vereinbarung Ihnen gegenüber gleichermaßen durchsetzbar ist wie ein schriftlicher, ausgehandelter und von Ihnen unterzeichneter Vertrag. Wenn Sie den Bedingungen dieser Vereinbarung nicht zustimmen, sind Sie nicht berechtigt und dürfen keine ZEISS Softwareprodukte herunterladen, installieren oder verwenden.
-
-Für die Nutzung der ZEISS Softwareprodukte und Leistungen muss der Lizenznehmer über Folgendes verfügen:
-
-(a) einen sog. gültigen Subscriptionvertrag oder
-
-(b) eine gültige Lizenz von ZEISS.
-
-Ferner erfordern und verwenden einzelne Softwareprodukte
-
-(a) die auf einem Subscriptionvertrag basieren und / oder
-
-(b) mit einer serverbasierten Lizenzlösung
-
-eine sichere Verbindung des Applikationsrechners mit der ZEISS Infrastruktur und / oder den „Cloud Services“.
-
-1.2 Lizenzgeber ist ZEISS Lizenznehmer ist der Endkunde. Der Lizenzgeber gewährt dem Lizenznehmer ein nicht ausschließliches, nicht übertragbares Nutzungsrecht für das „Softwareprodukt“, welches das spezielle Softwareprogramm und die damit nachfolgenden Erweiterungen, Updates, Patches und zugehörige Dokumentation für den unternehmensinternen Betrieb, wie auch die dazugehörigen Handbücher und Softwaredokumentation, einschließt.
-
-1.3 Das Softwareprodukt kann Codes, Objekte und anderes geistiges Eigentum enthalten, das von Lizenzgebern oder Dritter entwickelt und von diesen lizenziert und in das Softwareprodukt integriert wurde („Embedded Third Party Software“). Etwaig verwendete Embedded Third Party Software oder Open Source-Code und Open Source-Lizenzen beschränken oder beeinträchtigen die gewährten Nutzungsrechte des Lizenznehmers nicht und können jederzeit innerhalb der jeweils genutzten Software abgerufen werden. Im Einzelfall können die jeweiligen Lizenzbedingungen vom Lizenzgeber auf Anforderung jederzeit zur Verfügung gestellt werden.
-
-1.4 Entgegenstehende oder von dieser Vereinbarung abweichende Kaufbedingungen des Lizenznehmers werden nicht Vereinbarungsbestandteil, auch wenn der Lizenzgeber diesen nicht ausdrücklich widerspricht. Änderungen der EULA müssen schriftlich und ausdrücklich durch beide Parteien vereinbart werden.
-
-
-2. Laufzeit und Kündigung / Lizenzgebühren
-
-2.1 Die Lizenzvereinbarung beginnt mit Lizenzaktivierung und endet mit der Nutzungsdauer der Pro Version oder mit dem Ende der Bezahldauer.
-
-2.2 Der Lizenzgeber ist berechtigt, diese Lizenzvereinbarung und die entsprechenden Nutzungsrechte mit sofortiger Wirkung zu kündigen, falls der Lizenznehmer eine Bestimmung dieser Lizenzvereinbarung verletzt oder eine Verletzung dieser Lizenzvereinbarung durch Dritte stillschweigend duldet oder seine Verpflichtungen aus dieser Lizenzvereinbarung nicht erfüllt oder falls der Lizenznehmer Insolvenz anmeldet oder bei dem Lizenznehmer ein Kontrollwechsel stattfindet.
-
-2.3 Ungeachtet der vorstehenden Bestimmungen und sofern in dieser Lizenzvereinbarung nicht anderweitig vereinbart, endet diese Lizenzvereinbarung automatisch bei Verletzung einer seiner Bestimmungen durch den Lizenznehmer.
-
-2.4 Unter keinen Umständen sind bei Kündigung oder einvernehmlicher Beendigung dieses Vertrages Lizenzgebühren vollständig oder teilweise erstattungsfähig, es sei denn ZEISS hat die vorzeitige Beendigung dieses Vertrages zu vertreten.
-
-
-3. Vervielfältigungsrechte
-
-3.1 Der Lizenznehmer darf die gelieferte Software in dem Umfang vervielfältigen, in dem die Vervielfältigung zur Nutzung der Software erforderlich ist. Erforderliche Vervielfältigungen der Software sind unter anderem die Installation des Softwareprodukts auf dem Massenspeicher des Geräts gemäß diesem Lizenzvertrag und das Laden der Software in den Hauptspeicher des Computers.
-
-3.2 Außerdem ist der Lizenznehmer zur Anfertigung von Kopien zur Datensicherung berechtigt. Diese Sicherungskopie des lizenzierten Softwareprodukts muss als solche gekennzeichnet sein.
-
-3.3 Sind aus Gründen der Datensicherheit oder -sicherung nach einem Totalausfall eine schnelle Reaktivierung des Computersystems, des Vertragsgegenstands eingeschlossen, sowie die Sicherung des gesamten Datenbestands, des installierten Softwareprodukts eingeschlossen, erforderlich, so kann der Lizenznehmer die maximal erforderliche Anzahl an Sicherungskopien erstellen. Die betreffenden Datenmedien sind angemessen zu kennzeichnen. Die Sicherungskopien dürfen ausschließlich zu Archivierungszwecken genutzt werden.
-
-3.4 Der Lizenznehmer ist nicht berechtigt, weitere Kopien zu erstellen oder Dritte anzuweisen, weitere Kopien zu erstellen, insbesondere ist er nicht berechtigt, den Programmcode mit einem Drucker auszudrucken oder Fotokopien des Handbuchs zu erstellen.
-
-
-4. Weiterverkauf und Übertragung
-
-4.1 Der Lizenznehmer ist nicht berechtigt, das Softwareprodukt Dritten im Rahmen von Hosting- oder Downloadoptionen zu vermieten, verleasen, verleihen oder zur Verfügung zu stellen, es sei denn, der Lizenzgeber hat dies ausdrücklich schriftlich angegeben oder erlaubt.
-
-4.2 Es ist jedoch gestattet, Dritten ein Nutzungsrecht einzuräumen, wenn diese das Softwareprodukt nach Maßgabe des Lizenznehmers (wie eigene Mitarbeiter) nutzen müssen. Von der Nutzung auf jeden Fall ausgeschlossen sind unabhängige Dritte.
-
-4.3 Übertragung innerhalb von Rechtspersonen oder globalen Konzernen des Lizenznehmers: Sofern der übertragende Lizenznehmer und die empfangende Partei Teil einer Rechtsperson oder Teil verbundener Unternehmen sind, ist die Übertragung gestattet, sofern die empfangende Partei diesen Lizenzbedingungen zustimmt. „Verbundene Unternehmen“ bedeutet jede Rechtsperson, die direkt oder indirekt von einer Rechtsperson oder deren Muttergesellschaft kontrolliert wird. „Kontrolle“ im Sinne dieses Lizenzvertrags bedeutet direkter oder indirekter Besitz von mehr als fünfzig Prozent (50 %) der Anteile an diesem Unternehmen oder mehr als fünfzig Prozent (50 %) direkter oder indirekter Beteiligung am Entscheidungsorgan dieses Unternehmens.
-
-
-5. Rückübersetzung und Programmänderungen
-
-5.1 Der Lizenznehmer darf grundsätzlich keine Änderungen am Softwareprodukt vornehmen, außer wenn dies zur Behebung von Fehlern erforderlich ist. Voraussetzung ist, dass dies ausschließlich zum Zweck der Korrektur von Fehlern geschieht, die das Funktionieren der Software beeinträchtigen.
-Im letzteren Fall und wenn beim Reparaturvorgang wichtige Programmfunktionen und Arbeitsmethoden offengelegt werden könnten, kann der Lizenznehmer einen gewerblich tätigen Dritten mit der Reparatur beauftragen, wenn dieser Dritte nicht ein potenzieller Wettbewerber des Lizenzgebers ist.
-Soweit der Lizenznehmer zur Behebung von Fehlern Änderungen am Softwareprodukt vornimmt, übernimmt der Lizenzgeber, insb. auch nicht durch diese Freigabe, für die daraus resultierende Folgen keine Haftung.
-
-5.2 Die Rückübersetzung des lizenzierten Programmcodes in andere Codeformen (Dekompilierung) und andere Arten des Reverse Engineering verschiedener unterschiedlicher Phasen der Software-Erstellung sind nur insoweit zulässig, wie sie dazu dienen, Fehler zu korrigieren, die das Funktionieren der Software beeinträchtigen (entsprechend Ziffer 5.1). Der Lizenznehmer darf eine solche Dekompilierung jedoch nur in dem für die Berichtigung erforderlichen Ausmaß und gegebenenfalls unter Einhaltung der mit dem Inhaber des Urheberrechts an diesem Programm vertraglich festgelegten Bedingungen vornehmen.
-Weiter ist eine Dekompilierung in Fällen zulässig, um Informationen zu gewinnen, die zur Interoperabilität mit einem unabhängig geschaffenen Computerprogramm erforderlich sind, und nur falls diese Informationen nicht anderweitig beschafft werden können.
-
-5.3 Weitere Voraussetzung für die Genehmigung zur Rückübersetzung ist die Durchführung des Reverse Engineering oder der Programmbeobachtung ausschließlich durch Verfahren, zu deren Ausführung der Lizenznehmer gemäß diesem Lizenzvertrag berechtigt ist. Insbesondere darf der Programmcode in keinem Fall ausgedruckt werden. 5.4 Alle Eigentums- und Urheberrechte in Bezug auf das Softwareprodukt, die gedruckten Begleitmaterialien und sämtliche Kopien des Softwareprodukts verbleiben beim Lizenzgeber oder seinen Lieferanten. Das vorliegende Softwareprodukt ist nach deutschem Urheberrecht, US-amerikanischem Urheberrecht und den Bestimmungen internationaler Verträge geschützt. Der Lizenznehmer ist nicht berechtigt, die der Software beiliegenden gedruckten Materialien zu vervielfältigen.
-
-5.5 Der Lizenznehmer ist nicht berechtigt, Hinweise zum Urheberrecht oder Markennennungen, die der Lizenzgeber angebracht hat, zu entfernen, zu ändern oder zu ergänzen. Dies beinhaltet ohne Einschränkungen alle Verweise in physischen und / oder elektronischen Medien oder Dokumenten, in „Setup-Assistenten" oder in den Dialogfeldern „Über...“ und / oder in anderen Verweisen, die im Internet dargestellt oder über das Internet aktiviert werden, im Programmcode oder anderen Ausführungsformen, die ursprünglich in der Software enthalten waren oder anderweitig vom Lizenzgeber erstellt wurden.
-
-
-6. Gewährleistung und Kündigungsrecht
-
-6.1 Der Lizenzgeber gewährleistet in Bezug auf das für den Lizenznehmer lizenzierte Softwareprodukt die in der Beschreibung festgelegte Leistung, insofern das Softwareprodukt in dem vorgesehenen System unter Einhaltung der Richtlinien des Lizenzgebers installiert wird.
-
-6.2 Der Lizenzgeber beseitigt Fehler an dem Softwareprodukt, und in allen Handbüchern sowie anderen Dokumenten, innerhalb einer angemessenen Frist nach Erhalt der zur Fehlerbeseitigung notwendigen entsprechender Angaben vom zum Fehler Lizenznehmer. Fehler werden durch Nachbesserungen, die nicht in Rechnung gestellt werden, oder durch Ersatz der Lieferung, nach Wahl des Lizenzgebers, behoben.
-
-6.3 Das Kündigungsrecht des Lizenznehmers aufgrund der Nichtausführbarkeit des Softwareprodukts kann erst ausgeübt werden, wenn Nachbesserungen bzw. Ersatz zweimal erfolglos erfolgt sind.
-
-6.4 Der Lizenzgeber gibt weder eine Garantie noch eine Gewährleistung für die Funktionalität der von Drittanbietern oder dem Lizenznehmer / Kunden erstellten Programme, ebenso wenig wie auf das fehlerfreie Ausführen der Programme mit der Software oder auf den Systemen des Lizenzgebers.
-
-
-7. Haftung
-
-7.1 Falls der Lizenznehmer das Softwareprodukt nicht auf die vertraglich festgelegte Weise nutzen kann und der Lizenznehmer dies aufgrund der unterlassenen oder falschen Umsetzung von Vorschlägen und Ratschlägen vor oder nach der Unterzeichnung des Vertrages oder aufgrund der Verletzung sonstiger vertraglicher Pflichten zu vertreten hat, so gelten unter Ausschluss weiterer Ansprüche des Lizenznehmers entsprechend die in diesem Vertrag dargelegten Regelungen.
-
-Für Schäden, die nicht am Softwareprodukt, beziehungsweise nicht an der Hardware und dem angeschlossenen Gerät entstehen, gilt die Haftungsverpflichtung des Lizenzgebers ausschließlich in den folgenden Fällen, unabhängig vom jeweiligen Rechtsgrund:
-
-- vorsätzliches Fehlverhalten,
-
-- grobe Fahrlässigkeit seiner ausführenden Organe oder leitenden Angestellten,
-
-- schuldhaft herbeigeführter Schaden des Lebens, des Körpers und der Gesundheit, bei Fehlern, die der Lizenzgeber arglistig verschwiegen, oder die er unter Gewährleistung ausgeschlossen hat,
-
-- Softwarefehler im Rahmen der Haftung bei Personen- und Sachschäden aufgrund persönlich implementierter Objekte, wie in den dafür zutreffenden Produkthaftungsregelungen dargelegt
-
-7.2 Bei schuldhafter Verletzung wesentlicher Vertragspflichten haftet der Lizenzgeber auch bei grober Fahrlässigkeit seitens nichtleitender Angestellter und bei leichter Fahrlässigkeit. Im letzteren Fall ist die Haftung auf Schäden begrenzt, die vorhersehbar und typisch für diese Art von Vertrag sind.
-
-7.3 Außerdem haften der Lizenzgeber, seine Mitarbeiter und seine Erfüllungsgehilfen für Datenverlust oder -änderungen aufgrund von Programmfehlern, beschränkt auf den Umfang, in dem dies unvermeidbar gewesen wäre, wenn der Lizenznehmer seiner Verpflichtung, regelmäßig und mindestens einmal täglich Sicherungskopien zu erstellen, nachgekommen wäre.
-
-7.4 Bei Ansprüchen aufgrund von Urheberrechtsverletzungen gewährt der Lizenzgeber dem Lizenznehmer das Recht zur weiteren Nutzung des Softwareprodukts oder zur Vornahme von Änderungen am Softwareprodukt, so dass der Schutz der Urheberrechte gewährleistet ist. Wenn dies nicht wirtschaftlich sinnvoll ist, so nimmt der Lizenzgeber den Vertragsgegenstand zurück und erstattet die gezahlte Lizenzgebühr, abzüglich eines der Dauer der vorherigen Nutzung entsprechenden Betrags. Dies gilt unter der Voraussetzung, dass der Lizenznehmer dem Lizenzgeber diese Art der Ansprüche unverzüglich schriftlich mitteilt und dem Lizenzgeber alle Rechtsmittel und außergerichtlichen Regelungen gestattet.
-
-7.5 Für Serverunterbrechungen, Unterbrechung der Lizenzzuteilung und sonstige Support-Fälle, die nicht eindeutig auf eine fehlerhaft erstellte Lizenz zurückzuführen sind, haftet der Lizenznehmer bzw. dessen IT-Provider..
-Der Lizenznehmer oder dessen IT-Provider ist verantwortlich für die Vorhaltung der notwendigen Anzahl an Lizenzen zur Erbringung seiner Leistungen. Der Lizenzgeber haftet nicht für Nutzungsunterbrechungen und nachfolgende Arbeits- / Produktionsausfälle.
-
-7.6 Weitergehende Haftungsansprüche des Lizenznehmers sind ausdrücklich ausgeschlossen.
-
-7.7 Der Lizenznehmer ist für alle aus der Nutzung des Softwareprodukts entstehenden Probleme verantwortlich, die nicht direkt durch den Lizenzgeber verursacht werden. Daher ist der Lizenznehmer für alle Daten verantwortlich, die bei der Nutzung des Softwareprodukts erzeugt und hergestellt werden. Der Lizenznehmer ist demnach zur beziehungsweise für die Einhaltung der in dieser Lizenzvereinbarung genannten Bedingungen verpflichtet und verantwortlich.
-
-
-8. Sicherungsmaßnahmen
-
-Der Lizenznehmer wird die Software sowie gegebenenfalls die Zugangsdaten für den Onlinezugriff durch geeignete Maßnahmen vor dem Zugriff durch unbefugte Dritte sichern. Insbesondere sind sämtliche Kopien der Software sowie die Zugangsdaten an einem geschützten Ort zu verwahren.
-
-
-9. Gewerbliche Schutzrechte und Urheberrechte
-
-9.1 Macht ein Dritter Ansprüche aus Verletzung eines gewerblichen Schutzrechtes oder eines Urheberrechts gegen den Kunden geltend, weil dieser eine von ZEISS gelieferte Softwareversion, Firmwareergänzung oder dazugehörige Dokumentation benutzt, ist ZEISS verpflichtet, etwaige dem Schutzrechtsinhaber gerichtlich zugesprochene oder mit vorheriger Zustimmung von ZEISS zugestandene Kosten- und Schadenersatzbeträge zu bezahlen. Vorausgesetzt ist dabei, dass der Kunde ZEISS unverzüglich schriftlich über derartige Ansprüche unterrichtet und ZEISS alle Abwehrmaßnahmen und außergerichtlichen Regelungen vorbehalten bleiben. Der Kunde ist verpflichtet, ZEISS bei der Abwehr nach besten Kräften zu unterstützen. Unter diesen Voraussetzungen wird ZEISS dem Kunden grundsätzlich das Recht zum weiteren Gebrauch der Softwareversion, Firmwareergänzung oder Dokumentation verschaffen. Falls dies zu wirtschaftlich angemessenen Bedingungen nicht möglich sein sollte, ist ZEISS verpflichtet, nach eigener Wahl und auf eigene Kosten den entsprechenden Gegenstand entweder derart abzuändern oder zu ersetzen, dass das Schutzrecht nicht verletzt wird, oder den Gegenstand zurückzunehmen und das dafür bezahlte Entgelt abzüglich eines die gezogenen Nutzungen berücksichtigenden Betrages zu erstatten.
-
-9.2 ZEISS hat keine Verpflichtungen, falls Schutzrechtsverletzungen dadurch hervorgerufen werden, dass von ZEISS gelieferte Softwareversionen, Firmwareergänzungen oder Dokumentation nicht in der vorgesehenen Weise verwendet oder nicht auf den bestimmten Systemen eingesetzt wird.
-
-
-10. Exportkontrolle
-
-Der Lizenznehmer übernimmt die Verantwortung für die Einhaltung aller anwendbaren Bestimmungen und Vorschriften, einschließlich, aber nicht beschränkt auf die Exportkontroll- und Sanktionsbestimmungen der Bundesrepublik Deutschland, der Europäischen Union sowie der Vereinigten Staaten von Amerika. Insbesondere bestätigt der Lizenznehmer, die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon weder direkt noch indirekt unter Nichtbefolgung der vorgenannten Bestimmungen in sanktionierte Länder oder an sanktionierte natürliche oder juristische Personen bereitzustellen.
-
-Der Lizenznehmer sichert dem Lizenzgeber zu, dass er die Software sowie jedwede damit verbundene Technologie oder Dokumentation oder Teile davon nicht unter Verletzung vorgenannter anwendbarer Gesetze oder Vorschriften verwenden wird. Weiterhin verpflichtet sich der Lizenznehmer den Lizenzgeber von allen Ansprüchen freizustellen und schadlos zu halten, welche aus der Nichteinhaltung vorgenannter anwendbarer Bestimmungen resultiert.
-
-
-11. Sonstiges
-
-11.1 Sämtliche mündliche Vereinbarungen, Änderungen, Erweiterungen oder Konkretisierungen dieser Lizenzbedingungen sowie die besonderen Eigenschaften der getroffenen Zusicherungen oder Vereinbarungen oder Absprachen bedürfen zu ihrer Rechtswirksamkeit der Schriftform. Falls diese von Vertretern oder Erfüllungsgehilfen des Lizenzgebers abgefasst sind, so werden sie erst mit der Genehmigung des Lizenzgebers rechtlich bindend.
-
-11.2 Sollten Teile dieses Vertrags unwirksam werden, so berührt dies nicht die Wirksamkeit der übrigen Teile dieses Vertrags. Der unwirksame Teil dieses Vertrags soll durch seine Parteien durch gesetzlich zulässige Bestimmungen ersetzt werden, die der Absicht der unwirksamen Bestimmungen am nächsten kommt.
-
-11.3 Auf diesen Vertrag sind die Gesetze der Bundesrepublik Deutschland anwendbar, unter Ausschluss des Gesetzes über den internationalen Warenkauf und der Regeln des Kollisionsrechts.
-
-Stand Oktober 2023
diff --git a/examples/TextDetection/metainfo.json b/examples/TextDetection/metainfo.json
deleted file mode 100644
index 51b2e49..0000000
--- a/examples/TextDetection/metainfo.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "author": "Carl Zeiss GOM Metrology GmbH",
- "description": "Text detection examples",
- "labels": [
- ],
- "licensing": {
- "licenses": [
- ],
- "product-codes": [
- ]
- },
- "software-revision": "871",
- "software-version": "ZEISS INSPECT 2023",
- "tags": [
- ],
- "title": "Text Detection",
- "uuid": "ebf221f1-d3db-4677-96ff-d86f423cb70e",
- "version": "1.0.3"
-}
diff --git a/examples/TextDetection/scripts/display_image.gdlg b/examples/TextDetection/scripts/display_image.gdlg
deleted file mode 100644
index 8982a3b..0000000
--- a/examples/TextDetection/scripts/display_image.gdlg
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "content": [
- [
- {
- "columns": 2,
- "data": "AAAAAA==",
- "file_name": "",
- "height": 0,
- "keep_aspect": true,
- "keep_original_size": true,
- "name": "image",
- "rows": 1,
- "system_image": "system_message_warning",
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "image",
- "use_system_image": false,
- "width": 0
- },
- {
- }
- ]
- ],
- "control": {
- "id": "Close"
- },
- "embedding": "always_toplevel",
- "position": "automatic",
- "size": {
- "height": 113,
- "width": 178
- },
- "sizemode": "automatic",
- "style": "",
- "title": {
- "id": "",
- "text": "Text detection",
- "translatable": true
- }
-}
diff --git a/examples/TextDetection/scripts/display_image.metainfo b/examples/TextDetection/scripts/display_image.metainfo
deleted file mode 100644
index 2f94418..0000000
--- a/examples/TextDetection/scripts/display_image.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "display_image",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.display_image",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "85f89210-3df6-4669-922d-f54539cc0ef9"
-}
diff --git a/examples/TextDetection/scripts/display_image.py b/examples/TextDetection/scripts/display_image.py
deleted file mode 100644
index 621711c..0000000
--- a/examples/TextDetection/scripts/display_image.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import cv2
-import numpy as np
-
-def get_image ():
- '''
- Query image from project
-
- The image is read from a hardcoded measurement of the associated demo project for
- the sake of simplicity of this example.
-
- \return Image in RGB format as a numpy array of matching shape
- '''
- measurement = gom.app.project.measurement_series['Scan 1'].measurements['M1']
-
- image = np.array (measurement.images['left camera'].data.rgb )[0]
- return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
-
-def image_to_png (image):
- '''
- Convert image into PNG format
-
- \param image Image in numpy RGB format to be converted
- \return Image in PNG format
- '''
- _, data = cv2.imencode(".png", image)
- return data.tobytes()
-
-# Define user defined dialog. The dialog is not displayed yet, but its widgets can be accessed
-DIALOG=gom.script.sys.create_user_defined_dialog (file='display_image.gdlg')
-
-# Display read, converted and rescaled image in the dialogs image viewing widget
-DIALOG.image.data = image_to_png (cv2.resize (get_image (), (1024, 768)))
-
-# Display user defined dialog. The script execution will be stalled here until the dialog is closed again.
-gom.script.sys.show_user_defined_dialog (dialog=DIALOG)
-
-
diff --git a/examples/TextDetection/scripts/text_element.gdlg b/examples/TextDetection/scripts/text_element.gdlg
deleted file mode 100644
index 64cae98..0000000
--- a/examples/TextDetection/scripts/text_element.gdlg
+++ /dev/null
@@ -1,144 +0,0 @@
-{
- "content": [
- [
- {
- "columns": 1,
- "name": "label",
- "rows": 1,
- "text": {
- "id": "",
- "text": "Image",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "label",
- "word_wrap": false
- },
- {
- "columns": 1,
- "fast_filter": false,
- "name": "element",
- "rows": 1,
- "supplier": "custom",
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "input::point3d"
- }
- ],
- [
- {
- "columns": 2,
- "data": "AAAAAA==",
- "file_name": "",
- "height": 0,
- "keep_aspect": true,
- "keep_original_size": true,
- "name": "image",
- "rows": 1,
- "system_image": "system_message_warning",
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "image",
- "use_system_image": false,
- "width": 0
- },
- {
- }
- ],
- [
- {
- "columns": 1,
- "name": "threshold_label",
- "rows": 1,
- "text": {
- "id": "",
- "text": "Threshold (0-100)",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "label",
- "word_wrap": false
- },
- {
- "columns": 1,
- "maximum": 100,
- "minimum": 0,
- "name": "threshold",
- "rows": 1,
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "input::integer",
- "value": 90
- }
- ],
- [
- {
- "columns": 1,
- "name": "result_label",
- "rows": 1,
- "text": {
- "id": "",
- "text": "Result",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "label",
- "word_wrap": false
- },
- {
- "columns": 1,
- "name": "result",
- "rows": 1,
- "text": {
- "id": "",
- "text": "-",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "label",
- "word_wrap": false
- }
- ]
- ],
- "control": {
- "id": "OkCancel"
- },
- "embedding": "always_toplevel",
- "position": "automatic",
- "size": {
- "height": 180,
- "width": 249
- },
- "sizemode": "automatic",
- "style": "",
- "title": {
- "id": "",
- "text": "Text detection",
- "translatable": true
- }
-}
diff --git a/examples/TextDetection/scripts/text_element.metainfo b/examples/TextDetection/scripts/text_element.metainfo
deleted file mode 100644
index a4c2cee..0000000
--- a/examples/TextDetection/scripts/text_element.metainfo
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "display_name": "Part ID detection",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": true,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- "construct",
- "value_elements"
- ],
- "type": "command"
- },
- "script": "ude.text_element",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "value",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "d1f5e5ed-c05d-4a7d-bde2-e0e88fa6ee13"
-}
diff --git a/examples/TextDetection/scripts/text_element.py b/examples/TextDetection/scripts/text_element.py
deleted file mode 100644
index 7542706..0000000
--- a/examples/TextDetection/scripts/text_element.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import pytesseract
-import cv2
-import numpy as np
-
-#
-# Path to the installed terresact executable
-#
-TESSERACT_PATH = 'C:/Users/IQFBLANK/AppData/Local/Programs/Tesseract-OCR/tesseract.exe'
-
-#
-# Return left camera image of the given scan
-#
-def get_image (scan):
- image = np.array (scan.images['left camera'].data.rgb )[0]
- return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
-
-#
-# Convert camera image into PNG format
-#
-def image_to_png (image):
- _, data = cv2.imencode(".png", image)
- return data.tobytes()
-
-#
-# Detect text label in the given image
-#
-def detect_text (image, threshold):
- pytesseract.pytesseract.tesseract_cmd = TESSERACT_PATH
-
- results = pytesseract.image_to_data (image, output_type=pytesseract.Output.DICT, config='--oem 3 --psm 1')
-
- result = []
- for text, confidence in zip (results['text'], results['conf']):
- if confidence > threshold and len (text) > 0:
- result.append (text)
-
- return ' '.join (result)
-
-#
-# Interactive (dialog handling) part of the scripted element
-#
-def dialog(context, params):
-
- DIALOG=gom.script.sys.create_user_defined_dialog (file='text_element.gdlg')
-
- #
- # Dialog handler function, called in case of dialog events
- #
- def dialog_handler (object):
-
- calc = False
-
- if object == 'initialize':
- image = get_image (DIALOG.element.value)
- DIALOG.image.data = image_to_png (cv2.resize (image, (640, 480)))
-
- calc = True
-
- elif object == 'calculated':
- DIALOG.result.text = '-'
- if 'ude_text' in context.data[0]:
- DIALOG.result.text = context.data[0]['ude_text']
-
- elif object == DIALOG.element:
- image = get_image (DIALOG.element.value)
- DIALOG.image.data = image_to_png (cv2.resize (image, (640, 480)))
-
- calc = True
-
- elif object == DIALOG.threshold:
- calc = True
-
- if calc:
- params['scan'] = DIALOG.element.value
- params['threshold'] = DIALOG.threshold.value
-
- context.name = 'Part id'
- DIALOG.control.ok.enabled = False
-
- result = context.calc (params=params, dialog=DIALOG)
-
- DIALOG.control.ok.enabled = True
-
-
- #
- # Filter for the elements which can be selected in the measurement selector
- #
- def element_filter( element ):
- try:
- if element.type == 'scan':
- return True
- except Exception as e:
- pass
-
- return False
-
- DIALOG.element.filter = element_filter
- DIALOG.handler = dialog_handler
-
- gom.script.sys.show_user_defined_dialog (dialog=DIALOG)
-
- return params
-
-#
-# Calculation function for the scripted element
-#
-def calculation(context, params):
-
- ok = False
-
- for stage in context.stages:
- try:
- scan = params['scan']
- threshold = params['threshold']
-
- image = get_image (scan)
- text = detect_text (image, threshold)
-
- ids = [float (s) for s in text.split () if s.isdigit ()]
-
- context.result[stage] = (ids[0] if len (ids) > 0 else -1)
- context.data[stage] = {'ude_text': text}
-
- ok = True
-
- except Exception as error:
- context.error[stage] = str (error)
-
- return ok
-
diff --git a/examples/TextDetection/scripts/text_extraction.gdlg b/examples/TextDetection/scripts/text_extraction.gdlg
deleted file mode 100644
index b8e326c..0000000
--- a/examples/TextDetection/scripts/text_extraction.gdlg
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "content": [
- [
- {
- "columns": 2,
- "data": "AAAAAA==",
- "file_name": "",
- "height": 0,
- "keep_aspect": true,
- "keep_original_size": true,
- "name": "image",
- "rows": 1,
- "system_image": "system_message_warning",
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "image",
- "use_system_image": false,
- "width": 0
- },
- {
- }
- ],
- [
- {
- "columns": 1,
- "name": "threshold_label",
- "rows": 1,
- "text": {
- "id": "",
- "text": "Threshold (0-100)",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "label",
- "word_wrap": false
- },
- {
- "columns": 1,
- "maximum": 100,
- "minimum": 0,
- "name": "threshold",
- "rows": 1,
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "input::integer",
- "value": 90
- }
- ],
- [
- {
- "button_type": "push",
- "columns": 1,
- "icon": "AAAAAA==",
- "icon_file_name": "",
- "icon_size": {
- "value": "icon"
- },
- "icon_system_size": {
- "value": "default"
- },
- "icon_system_type": {
- "value": "ok"
- },
- "icon_type": {
- "value": "none"
- },
- "name": "detect",
- "rows": 1,
- "text": {
- "id": "",
- "text": "Detect",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "button::pushbutton"
- },
- {
- "columns": 1,
- "name": "text",
- "rows": 1,
- "text": {
- "id": "",
- "text": "-",
- "translatable": true
- },
- "tooltip": {
- "id": "",
- "text": "",
- "translatable": true
- },
- "type": "label",
- "word_wrap": false
- }
- ]
- ],
- "control": {
- "id": "Close"
- },
- "embedding": "always_toplevel",
- "position": "automatic",
- "size": {
- "height": 152,
- "width": 178
- },
- "sizemode": "automatic",
- "style": "",
- "title": {
- "id": "",
- "text": "Text detection",
- "translatable": true
- }
-}
diff --git a/examples/TextDetection/scripts/text_extraction.metainfo b/examples/TextDetection/scripts/text_extraction.metainfo
deleted file mode 100644
index 34229eb..0000000
--- a/examples/TextDetection/scripts/text_extraction.metainfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "display_name": "text_extraction",
- "folded_blocks": [
- ],
- "icon": "",
- "iinspect_condition": "",
- "interactive": false,
- "main_menu_path": {
- "anchor": {
- "item": "",
- "submenu": [
- ],
- "type": "command"
- },
- "script": "userscript.text_extraction",
- "submenu": [
- ]
- },
- "multicreation_script": false,
- "script_check_type": "none",
- "script_element_type": "none",
- "show_in_iinspect": false,
- "show_in_menu": true,
- "uuid": "5f3a02f4-23fe-466a-8144-7b828df11090"
-}
diff --git a/examples/TextDetection/scripts/text_extraction.py b/examples/TextDetection/scripts/text_extraction.py
deleted file mode 100644
index 74152ff..0000000
--- a/examples/TextDetection/scripts/text_extraction.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import gom
-import pytesseract
-import cv2
-import numpy as np
-
-#
-# Path to the installed terresact executable
-#
-TESSERACT_PATH = ''
-
-def get_image ():
- measurement = gom.app.project.measurement_series['Scan 1'].measurements['M1']
- acquisition = gom.api.project.get_image_acquisition (measurement, 'left camera',[0])[0]
-
- image = np.array (measurement.images['left camera'].data.rgb )[0]
- return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
-
-def get_preview_image ():
-
- measurement = gom.app.project.measurement_series['Scan 1'].measurements['M1']
- acquisition = gom.api.project.get_image_acquisition (measurement, 'left camera',[0])[0]
-
- image = np.array (measurement.images['left camera'].data.rgb )[0]
- image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
-
- return cv2.resize (image, (640, 480))
-
-def image_to_png (image):
- _, data = cv2.imencode(".png", image)
- return data.tobytes()
-
-image = get_image ()
-
-def detect_text (threshold):
- pytesseract.pytesseract.tesseract_cmd = TESSERACT_PATH
-
- results = pytesseract.image_to_data (image, output_type=pytesseract.Output.DICT, config='--oem 3 --psm 1')
-
- result = []
- for text, confidence in zip (results['text'], results['conf']):
- if confidence > threshold and len (text) > 0:
- result.append (text)
-
- return ' '.join (result)
-
-DIALOG=gom.script.sys.create_user_defined_dialog (file='text_extraction.gdlg')
-
-def dialog_handler (object):
- if object == DIALOG.detect:
- DIALOG.threshold.enabled = False
- DIALOG.detect.enabled = False
-
- text = detect_text (DIALOG.threshold.value)
- if text:
- DIALOG.text.text = text
- else:
- DIALOG.text.text = '-'
-
- DIALOG.threshold.enabled = True
- DIALOG.detect.enabled = True
-
-DIALOG.image.data = image_to_png (cv2.resize (image, (640, 480)))
-
-DIALOG.handler = dialog_handler
-
-gom.script.sys.show_user_defined_dialog (dialog=DIALOG)
-
-