Jump to content

Oliver Daus

ComputerWorks GmbH
  • Gesamte Inhalte

    66
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    4

Oliver Daus hat zuletzt am 5. Dezember 2019 gewonnen

Oliver Daus hat die beliebtesten Inhalte erstellt!

Reputation in der Community

33 Exzellent

1 Benutzer folgt diesem Benutzer

Über Oliver Daus

  • Rang
    Power-User

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeigt.

  1. Für Vectorworks ist es nicht so wichtig, das der Treiber brandaktuell ist. Zu alt sollte dieser natürlich auch nicht sein. Im Grunde ist ein Treiber auch nichts anderes als eine Software, die eben auch Fehler haben kann. Es macht also Sinn, immer wieder zu aktualisieren. Sollten Probleme auftreten, kann es aber durchaus auch Sinnvoll sein, wieder eine ältere Version des Treibers zu installieren. Welcher Treiber genau dafür genutzt wird (Studio oder Game Ready) ist im Grunde egal. Im Zweifelsfall aber einfach die "Game Ready" Treiber benutzen, die funktionieren erfahrungsgemäß am besten. Der große Unterschied zwischen Vectorworks und einer 3D-Engine für Spiele ist, das in der Spiele-Engine versucht wird die Anzahl der Objekte bzw. Polygone die gleichzeitig in der Szene sichtbar sind, so gering wie möglich zu halten. Dies geschieht mit vielen Tricks und Techniken und ist in einem Spielen einfacher, da die Darstellung nur einen künstlerischen Aspekt erfüllen muss und vor allem bereits gegeben bzw. sich nicht verändert ist. Vectorworks weiß nicht welches Objekt der Nutzer als nächstes Zeichnet. 😉 In Vectorworks werden schon seit Jahren viele und immer mehr Verbesserungen zum Thema 2D/3D-Darstellung und OpenGL umgesetzt. Vectorworks 2020 beherrscht neu bspw. eine der Techniken die in Spielen schon lange eingesetzt wird und mit dem Begriff "LOD" (bzw. "Level of Detail") identifizierte wird. Hier gibt es ein kurzes Video dazu von Vectorworks Inc. (auf Englisch) https://forum.vectorworks.net/index.php?/topic/65509-2020-teaser-tuesday-vgm-level-of-detail-vectorworks-2020/
  2. Wenn es sich um drei eigenständige Menübefehle handelt, sind das dann auch drei verschiedene VSM-Dateien. Jedoch könne die aus der gleichen Code-Basis entstehen. Bspw. sind das hier drei Menübefehle, die zusammengehören. Im Code, in der main.py könnte das dann so aussehen: [...] def execute(): # Init plugin ... init() # Run main code ... if (requirementsComplied()): _main_() # Clanup ... logging.flush() #END def def execute_copy(): execute() _main_copy() #END def def execute_create(): execute() _main_create() #END def def execute_write(): execute() _main_write() #END def def _main_copy(): # ... code here ... #END def def _main_create(): # ... code here ... #END def def _main_write(): # ... code here ... #END def Das wichtigste ist aber der Code der sich direkt in der jeweiligen VSM-Datei befindet! Der muss natürlich angepasst werden. Dabei bekommt jede VSM-Datei dann einen anderen Coder, der die jeweilige execute_...() Funktion aufruft. In diesem Beispiel sieht das dann so für die ...Copy.vsm so aus: import vs import imp from cw.mytool import main # Make sure the main module ist always up to date and has initial values imp.reload(main) # ---- BEGINN OF SCRIPT ---- main.execute_copy() Du kannst aber auch eigene Module für deine Befehle machen. Anstatt ... ...\main.py Für jeden Befehl eine eigene Datei. ...\refresh.py ...\masterviewport.py ...\delete.py Das einzige was sich ändert, ist der import Befehl bzw. der Aufruf in der jeweiligen VSM-Datei. Hier wäre das dann: from roth.mvp import refresh [...] refresh.execute() Die Sache mit der VpStilesFunctions.py Datei löst sich dann auch von alleine. Diese wird dann einfach Teil von deinem Code. Bspw. kannst du da einfach ein Python-Package machen: cw/mytool/common/vpstyles.py In der main.py kannst du das, dann so verwenden: from cw.mytool.common import vpstyles [...] vpstyles.VpStiles() Du solltes dich unbedingt in das Thema Python Module und Python Packages einlesen: Für dein Masteransichstbereiche Tool (und auch für alle weiteren Tools) solltest du die Packages umbenennen. Anstatt cw.mytool bspw. in roth.mvp (mvp = Master View Port) Die Ordnerstruktur sollte in diesem Fall dann so sein: <Projektordner>\ +- cw\ | +- common\ | ... +- roth\ +- mvp\ +- main.py ... Im erst Post auch schon beschrieben, dann nicht vergessen die VSM-Dateien an zu passen: import vs import imp from roth.mvp import main # Make sure the main module ist always up to date and has initial values imp.reload(main) # ---- BEGINN OF SCRIPT ---- main.execute()
  3. Hab wohl die drei Dateien beim erneuten packen gestern vergessen. 😣 ich lade es gerade neu hoch. Edit: So ist neu hochgeladen. Diesmal mit den drei Dateien.
  4. Oops, da hat sich ein Fehler eingeschlichen! Bitte in der Datei debug.py im Ordner cw/common die Zeile 79 ändern. Die Zeichenfolge "== 1" gehört da nicht hin und muss entfernt werden. Dann sollte es gehen. return vs.GetVersionEx()[3] Den Anhang im ersten Post habe ich bereits korrigiert.
  5. Die *.VWR-Dateien werden von Vectorworks nur einmal, beim starten eingelesen. Wenn also neue hinzugefügt werden oder bestehende geändert werden, muss Vectorworks neu gestartet werden. Das gleiche gilt auch für alle Plug-ins. (Script & SDK)
  6. Der Code solte auf allen Systemen laufen. Hast du die VWR-Datei in den Plug-ins Ordner gelegt und VW neu gestartet?
  7. Für diese Thema gibt es Tatsächlich einen Weg mit einer IDE zu arbeiten, inklusive Debugger. Das Thema ist allerdings etwas umfangreicher. Ich werde dazu eine Anleitung erstellen, die dan in den nächsten Tage hier im Forum zu finden ist.
  8. Die VWR-Datei ist im Anhng von dem Post 😀
  9. Thema VWR VWR-Datei erstellen Die sogennaten VWR-Dateien, sind eigentlich nur ZIP-Archive ohne Kompression, welche mehrer Ressourcen (z.B. Texte) enthält. Text innerhalb einer VWR-Datei werden in mehreren Datein mit dem folgenden Inhalt(/Format) hinterlegt. Jede Textzeile wird im Format Schlüssel = Text definiert. Der Schlüssel und der Text werden jeweils zwischen Gänsefüßchen (") geschrieben und die Zeile muss mit einem Semikolon (;) abgeschlossen werden. Kommentarzeilen können mit vorangestelltem doppeltem Schrägstrich (//) eingefügt werden. "Schlüssel" = "Text"; Die Datei muss zwiengend mit UTF-16 LE kodiert sein bekommt die Dateiendung: .vwstrings Ist die Datei anders kodiert, wird sie von Vectorworks nicht eingelesen und kann somit nicht verwendet werden. Beispiel Datei: DialogXY.vwstrings // A comment "Title" = "Dialog XY"; "SomeButton" = "OK"; "SampleText" = "Beispieltext"; // This file must be encoded with UTF-16 LE Die .vwstrings Dateien werden in einem Ordner mit dem Namen Strings abgelegt. Dieser wird wiederum als ZIP-Archiv gepackt. Der Name des Archivs entspricht i.d.R dem Namen des Plug-ins und bekommt .vwr als Dateienung. Bspw: MyPlugin.vwr Das ZIP-Archiv und alle Datei darin, müssen zwigned ohne Kompression (Store) gepackt sein. Die Struktur in der VWR Datei sollte dann wie folgt aussehen. Die fertige VWR-Datei kommt zusammen mit dem Plug-in (z.B. .vsm Datei) in den Plug-ins Ordner von Vectorworks. Bild 1: VWR erstellen mit 7-Zip Bild 2: Beispiel VWR in 7-Zip Texte in Vectorworks verwenden Einen Texts aus einer VWR-Datei azurufen ist recht einfach und wird mit dem Befehl GetVWRString(...) bewerkstelligt. Dabei wir die VWR-Datei zusammen mit dem relativen Pfad zur vwstrings Datei angeben und ein Schlüssel, der den entsprechenden Text an gibt. Der Pfad wird nach dem Format VWR-Datei/Strings/Text-Datei.vwstrings aufgebaut. MyPlugin/Strings/DialogXY.vwstrings Beispiel: # Define the source vwr = 'MyPlugin/Strings/DialogXY.vwstrings' # Get the text text = vs.GetVWRString(vwr, 'SampleText' ) # Display the text vs.AlrtDialog(text) Bild 3: Beispiel Dialog Die VWR-Datei für den Beispiel-Code ist im Anhang. MyPlugin.vwr
  10. MacOS verwendet intern HSF Pfade nur auf der Oberfläche sind das (Mittlerweile) Posix Pfade. Python kann mit HSF nichts anfangen, daher musst du sicherstellen, das du immer Posix Pfade hast und eben ggf. konvertieren. (Siehe mein vorherigen Post)
  11. Hier mal etwas Licht im dunklen: const_VWPathId_user_plugin = -2 def getFolderPath(id): path = vs.GetFolderPath( id ) if (':' in path): path = vs.ConvertHSF2PosixPath(path)[1] return path #End def path = getFolderPath( const_VWPathId_user_plugin ) vs.Message(str(path)) # Result: .../Vectorworks/20xx/Plug-Ins/ MacOS benutzt intern Pfade mit ":" als Trennzeichen, anders als Linux und Windows. Diese Pfade müssen erst konvertiert werden, damit diese verarbeitet werden könne. Die obige Funktion gibt immer ein Posix Pfad zurück. Wissen sollte man, das die Funktion... vs.GetFolderPath( id ) ... je nach Vectorworks Version HSF (":") oder Posix Pfade zurück gibt. Zum Thema lokalisierung: Die Texte hast du richtig angelegt. Ein automatisches System zur Auswahl der Sprache gibt es jedoch nicht. In diesem Fall wird auch von offizeller Seite aus das PlugIn kopiert und die Texte übersetzt. Es gibt jedoch einen Weg, das die Texte in einer sogennaten VWR Datei ausgelagert werden. Dann muss nur die VWR-Datei ersetzt werden und das Script an sich bleibt wie es ist. Wie das genau funktioniert, muss ich erst zusammenschreibn und folt dann. Oliver
  12. Hier noch eine kurze Info zur Protokoll-Einstellung (SMB oder AFP), die man seit Vectorworks 2018 vornehmen kann: Vectorworks ändert keinerlei Systemeinstellung. Es wird lediglich geprüft über welches Protokoll die aktuelle Verbindung läuft. Stimmt das Protokoll nicht mit der gewählten Einstellung überein, dann zeigt Vectorworks eine Meldung und verhindert weiteres vorgehen mit dem falschen Protokoll.
  13. Hallo Nico, dein System ist tatsächlich gut ausgestattet. Da es sich aber hierbei um ein Laptop/Notebook handelt, ist die Zuweisung der Grafikkarte wichtig. Bei dieser Art von System sind i.d.R zwei Grafikkarten verbaut: Eine von Intel und eine von AMD oder Nvidia. Um Strom zu sparen verwendet der Computer meistens die Intel GPU. Die AMD/Nvidia GPU kommt erst dann zum einsatz, wenn mehr Leistung gebraucht wird. Im Fall von Vectorworks, geliengt dieser Erkennung meisten nicht richtig, da Vectorworks wie ein normales Programm daherkommt.
  14. Hallo Nico, bitten nenne uns auch deine System-Informationen. Am wichtigesten ist in diesem Fall die Grafikkarte.
  15. Ist uns schon länger bekannt, das es nicht mehr Stand der Dinge ist. Ist so besser?
×
×
  • Neu erstellen...