Dieser Artikel enthält ein Beispiel für ein Python-Skript mit Kommentaren, das die Verwendung der Funktionalität der Cintoo Connect CLI zur Importierung von terrestrischen Scandaten ermöglicht.
Ein Beispiel für ein Skript befindet sich im Anhang.
Dieses Skript ist ein Beispiel dafür, wie der Import eines Scans in eine bestimmte Arbeitszone automatisiert werden kann. Es braucht keine URI, aber einige IDs müssen angegeben werden.
Es ruft den Befehl import-static in der Funktion "import_file" auf, offen für alle Modifikationen, falls nötig.
Im Folgenden finden Sie das Skript mit Kommentaren zu jedem Teil.
from pathlib import Path from typing import Final import json import logging import os import sys import subprocess import requests TIMEOUT: Final[int] = 10 TOKEN: Final[str] = "" GLOBAL_HEADERS: Final[dict] = {"Authorization": f"Bearer {TOKEN}"}
Import von Bibliotheken. Abrufen von Token und Headern. Weitere Details: Cintoo Connect CLI API Anleitung.
<WORKZONE_ID>/data
ACCOUNT_ID: Final[str] = ""
PROJECT_ID: Final[str] = ""
WORKZONE_ID: Final[str] = ""
- Konto-ID für das Konto, das das Zielprojekt hostet.
- Projekt-ID, die dem Zielprojekt entspricht, in dem sich die Zielarbeitszone befindet.
- Arbeitszonen-ID entsprechend der Zielarbeitszone.
Sie könnten mit HTTPS-Anfragen oder von der Webanwendungs-URL innerhalb einer Arbeitszone abgerufen werden.
https://aec.cintoo.com/accounts/<ACCOUNT_ID>/projects/<PROJECT_ID>/workzones/
Ausführlichere Anleitung: Cintoo Connect CLI API Anleitung.
DEFAULT_URL: Final[str] = "https://aec.cintoo.com"
Die Standard-URL könnte entweder aec.cintoo.com oder us.cintoo.com oder [company].cintoo.com sein, wenn die Organisation über eine dedizierte Domäne abhängig von der Konfiguration verfügt.
def get_cintoo_cli_exe() -> str:
path = Path(os.environ['LOCALAPPDATA']) / "Programs" / "Cintoo"
if not path.exists():
path = Path(os.environ['ProgramFiles']) / "Cintoo"
if not path.exists():
raise RuntimeError("Konnte die Installation von Cintoo Connect nicht finden."
"\nFalls Sie es nicht im Standardpfad installiert haben,"
" setzen Sie bitte diese Pfadvariable auf den richtigen Pfad")
cli = path / "cintooconnect-cli.exe"
if not cli.exists():
raise RuntimeError("Konnte cintooconnect-cli.exe nicht finden."
" Bitte installieren Sie die neueste Version von Cintoo Connect: "
"https://aec.cintoo.com/download/cintooconnect-setup-latest.exe")
return cli.as_posix()
CINTOO_CLI_EXE: Final[str] = get_cintoo_cli_exe()
Finden und Ausführen der Cintoo Connect CLI ausführbaren Datei. Ausführbare Datei befindet sich an derselben Stelle, an der Cintoo Connect installiert ist. Standardmäßig sollte es sich befinden unter:
- Users/"IhrBenutzername"/AppData/Lokal /Programme/Cintoo
- ProgramFiles/Cintoo, falls mit Administratorrechten installiert.
def post_and_check_request(url: str, headers: dict) -> dict: logging.info(f"Anfrage: url={url}, headers={headers}") try: reply = requests.post(url, headers=headers, timeout=TIMEOUT) reply.raise_for_status() return reply.json() except json.JSONDecodeError as exception: message = f"Ausnahme beim Dekodieren von JSON unter Verwendung des Tokens: {exception}" except requests.exceptions.RequestException as exception: message = f"Ausnahme bei der Validierung des Tokens: {exception}" except Exception as exception: message = f"Ausnahme: {exception}" logging.error(message) raise RuntimeError(message)
Senden von Informationen an einen Server und Verifizierung der Serverantwort.
def validate_login():
url = f"{DEFAULT_URL}/api/isLogged"
response = post_and_check_request(url, GLOBAL_HEADERS)
if not response.get("success"):
raise ValueError("Anmeldung erforderlich: Verifizierung Ihres Anmeldestatus nicht möglich.\n"
f"Details: {response}.\n"
"Bitte loggen Sie sich ein, indem Sie die Anweisungen hier befolgen:\n"
"https://aec.cintoo.com/api/#section/API-Specification/Authentication")
Log-in-Validierung.
def get_cintoo_uri(account_id: str,
project_id: str,
workzone_id: str):
url =
'{DEFAULT_URL}/api/accounts/{account_id}/projects/{project_id}/workzones/{workzone_id}/imports'
response = post_and_check_request(url, GLOBAL_HEADERS)
cintoo_uri = response.get("url")
if not cintoo_uri:
raise KeyError(f"Konnte URL in der Antwort nicht finden: {response}")
return cintoo_uri
Abfrage der Cintoo URI basierend auf den zuvor definierten Konten-, Projekt- und Arbeitszonenkomponenten.
def import_file(cintoo_uri: str,
file_path: str):
return subprocess.call([CINTOO_CLI_EXE, "import-static",
f"--cintoo-uri={cintoo_uri}",
f"--file-ref={file_path}"])
Ausführung des Importprozesses mit dem Cintoo Connect CLI ausführbaren Programm.
def import_files_in_dir(cintoo_uri: str,
root_dir_path: str):
for (dirpath, _, filenames) in os.walk(root_dir_path):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
import_file(cintoo_uri, file_path)
Importieren aller Dateien im definierten Verzeichnis.
def main(path: str):
assert TOKEN, "Token muss angegeben werden"
assert ACCOUNT_ID and PROJECT_ID and WORKZONE_ID, "IDs müssen angegeben werden"
validate_login()
cintoo_uri = get_cintoo_uri(ACCOUNT_ID, PROJECT_ID, WORKZONE_ID)
if os.path.isfile(path):
import_file(cintoo_uri, path)
elif os.path.isdir(path):
import_files_in_dir(cintoo_uri, path)
if __name__ == "__main__":
arguments = sys.argv
if len(arguments) != 2:
raise RuntimeError("Sie müssen den Pfad zu einem Verzeichnis oder einer Datei zum Importieren übergeben")
main(arguments[1])
Ausführung der Hauptfunktion.
War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren