Zum Inhalt springen

Marionette Dialog


Manuel Roth

Empfohlene Beiträge

Hallo zusammen

 

Ich möchte gerne einen einfachen Dialog ohne Ausrufezeichen oder sonst so etwas darstellen. Ist das möglich?

Am schönsten wäre es natürlich, wenn oben im Dialg ein benutzerdefinierter Titel gesetzt werden könnte. Dies ist allerdings nicht zwingen. Nur ein Nice-to-have.

 

Das der Dialog auf Knopfdruck erscheint, bringe ich hin.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Und dann funktioiert es trotzdem nicht.

 

Der Dialog erscheint zwar bei einem Klick auf den Button. Allerdings bricht das Script ab, sobald ich es ausführe wenn ein Dialog-Node im Netzwerk verbaut ist.

Wie rufe ich def scripf(self) korrekt auf? Nur die Zeile pass durch script zu ersetzen funktioiert trotzdem nicht so wie gewollt.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Ich denke der Ansatz ist der richtige. Denn wenn anstelle der Parameter 1 und 2 einfach self hineingegeben wird kommt keine Fehlermeldung mehr. Allerdings erscheint das Dialogfeld jedesmal, wenn das Netzwerk ausgeführt wird und nicht nur beim drücken des Buttons.

Zitat

This is where you define your custom script for when the button is pressed

 

Klar könnte der Dialog im Normalfall mit einem vorhergehenden Valve-Node geblockt werden. Aber in meinem Fall möchte ich eine Beschreibung des PIOs anzeigen, wenn der Button gedrückt wird. Wenn nun das PIO geändert wird, erscheint jedes mal der Dialog. Nicht nur, wenn der Buton geklickt wird.

 

Hast du eventuell noch eine Idee, wie das geblockt werden könnte?

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Hallo Manuel,

 

mir ist nach dem Lesen deiner Beiträge leider noch nicht ganz klar, was du machen möchtest.

Kannst du die Datei hier hochladen oder mir per Nachricht schicken?

 

Vielleicht hilft dir ein Blick auf die "Get Symbol from Folder" Node weiter, die einen Knopf in der Informationenpalette benutzt.

Wichtig ist in diesem Fall, dass im Bereich "def script(self):" die Zeile "self.Params.out.blocked = True" steht, wobei "out" der Ausgang der Node darstellt.

Bearbeitet von Antonio Landsberger
  • Like 1

Gruß


Antonio Landsberger

ComputerWorks GmbH

http://www.computerworks.de

Link zu diesem Kommentar

Der Inhalt eines Nodes das ich benutze um Dateien auszuwählen. Es tut vom Prinzip her etwas ähnliches, was Du haben willst:

1. Wird der Button "Pick File" gedrückt, dann kann man eine Datei auswählen. Das Script wird aber nicht weiter ausgeführt (blocked = True). Es wird aber der Pfad in ein Feld geschrieben.

2. Wenn man dann das Script ausführt (ohne Button) wird der Pfad aus dem Feld gelesen.

Im Prinzip könnte man die Zeile mit vs.GetFile... auswechseln Durch ein Dialogfenster, in welchem man einen Wert einstellt, welcher dann in das Feld geschrieben wird und dann später wenn man das Script normal ausführt von dort gelesen wird. Das selbe Prinzip wie das Beispiel von Antonio.

#DomC 2019
@Marionette.NodeDefinition
class Params(metaclass = Marionette.OrderedClass):

	By = 'DomC';import datetime; now = datetime.datetime.now(); y80f5 = now.year;m80f5 = now.month; d80f5 = now.day; h180f5 = now.hour; mi180f5 = now.minute; s180f5 = now.second; ms180f5 = now.microsecond; h2 = now.hour-12 if now.hour >=13 else now.hour; VersionChange1 = str(y80f5)+' '+str(m80f5)+' '+str(d80f5); VersionChange2 = str(y80f5)+'-'+str(m80f5)+'-'+str(d80f5)+'-'+str(h2)+'-'+str(mi180f5); 
	TextStatic = Marionette.OIPControl( By +' v'+VersionChange2, Marionette.WidgetType.TextStatic, "")
#APPEARANCE
	#Name
	this = Marionette.Node( 'Pick File' )
	this.SetDescription( 'Returns a File Path' )
	
	#Input Ports
	
	#OIP Controls
	path = Marionette.OIPControl( 'FilePath', Marionette.WidgetType.Text, '')
	path.SetDescription('Write Path or click the Button below')
	
	Int = Marionette.OIPControl( 'Pick File', Marionette.WidgetType.Button, 'script', 'description')
	Int.SetDescription('Shows Criteria dialog') 
	
	#Output Ports
	s_path = Marionette.PortOut('h')
	s_path.SetDescription('Return the path string for further operations')
#BEHAVIOR

def RunNode(self):
	
	#inputs
	path = self.Params.path.value
	#script
	

	#out
	self.Params.s_path.value = path
	
def script(self):
	import os
	dir  = os.path.dirname(vs.GetFPathName())
	bool, path = (vs.GetFileN('Select File', dir, ''))
	self.Params.path.SetValue(path)
	#if bool:
	#	self.Params.s_path.value = path
	#else:	
	self.Params.s_path.blocked = True

 

  • Like 1

Macbook m3 Max 48 GB | Ryzen 3950x 64GB NVIDIA rtx3090

Link zu diesem Kommentar

Vielen Dank für die Hilfe. Der Button funktioiert nun so, wie er sollte.

 

Nun kommt noch das Layout des Dialogfensters. Ist es möglich, das i bei einem Alert (Inform) Dialog zu entfernen?

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Das denke ich mir.

 

Aufgrund der grossen Anzahl von Dialog Befehlen im DevelopperWiki (und den verschieden aussehenden Dialogfenstern im VW) denke ich mir aber auch, dass es möglich ist, eigene Dialoge zu basteln. Ich komme einfach nicht dahinter wie.

 

So wie ich es verstehe wird im Beispiel von @Dominique Corpataux auch gar kein benutzerdefinierter Dialog gezeigt, sondern "nur" mit GetFileN der Auswahldialog für Dateien angezeigt. Beim Beispiel von @Antonio Landsberger habe ich noch keine Chance es zu verstehen. Ich denke aber, dass dieses Beispiel sehr interessant wäre.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
vor 1 Stunde schrieb Manuel Roth:

Aufgrund der grossen Anzahl von Dialog Befehlen im DevelopperWiki (und den verschieden aussehenden Dialogfenstern im VW) denke ich mir aber auch, dass es möglich ist, eigene Dialoge zu basteln. Ich komme einfach nicht dahinter wie.

 

Es gibt eine Seite, die versucht zu erklären, wie man die benutzerdefinierten Dialogrn in VS nutzt: http://developer.vectorworks.net/index.php/VS:Creating_a_Custom_Dialog_Box

  • Like 1

Software-Entwickler

extragroup GmbH

https://www.extragroup.de

Link zu diesem Kommentar

Hallo zusammen

 

Dank euch habe ich nun einen Node, welcher einfache Dialoge anzeigt. Danke.

 

Einfacher Dialog.vwx

 

 

 

Doch kaum steht der Node kommt die nächste Frage. Ist es möglich, nur den Button ausserhalb des PIOs anzuzeigen und die Beschriftungsfelder nicht?  Wäre manchmal auch bei anderen Nodes praktisch.

 

Und wenn wir schon beim Thema sind. Ist es möglich eine Variable von einem Wrapper auserhalb eines PIOs (oder zweiten Warppers) darzustellen?

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
  • 2 Wochen später...

Hallo zusammen

 

Ich habe eine weitere Frage zu einem Dialog. Dieses Mal soll er eine CheckBox anzeigen und den Wert dieser CheckBox ausgeben.

 

Die Anzeige in einem Dialog funktioiert. Allerdings bringe ich es nicht hin, dass das sie auch etwas anderes als True ausgibt. Kann mir da jemand helfen?

 

Boolean Dialog.vwx

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Hallo zusammen

 

Ist es möglich, ein Dialog, welcher fest in VW verbaut ist, anzuzeigen?

 

In meinem Fall, möchte ich das Dialogfeld unter Text>Textformatierung anzeigen. Ich dachte (in diesem Spezialfall), könnte vs.FormatTextDialog() dieses Dialogfeld anzeigen, allerdings passiert bei mir nicht.

 

 

Und weil das noch nicht genug ist, noch eine zweite Frage. Wie ist es möglich, GroupBoxes eine feste Breite zuzuweisen?

Als Beispiel könnte wieder der Dialog oben hinhalten. Dort haben die Gruppen rechts eine grössere Breite, als das breiteste Inhaltselement. Wie ist das möglich? Hängt das mit dem ResizableLayout zusammen?

 

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Hallo Manuel,

 

dein Gedanke war schon richtig und du hast es wahrscheinlich auch richtig eingesetzt. Meine Versuche, diesen Dialog in einer Marionette Node zum Laufen zu bringen waren auch nicht erfolgreich. Als VectorScript funktioniert es - laut einem der Entwickler.

 

Ich werde dich auf dem Laufenden halten.

Bearbeitet von Antonio Landsberger
  • Like 1

Gruß


Antonio Landsberger

ComputerWorks GmbH

http://www.computerworks.de

Link zu diesem Kommentar

@Manuel Roth

 

Es war kein Fehler mit dem Befehl. Im Wiki war das Beispiel nicht komplett.

Der Befehl muss in Marionette folgendermaßen geschrieben werden:

vs.FormatTextDialog(font, style, size, spacing, leading, hAlign, vAlign, disable)

Angehängt ist eine funktionierende Datei.

 

FormatTextDialog-ALandsberger.vwx

  • Lieben 1

Gruß


Antonio Landsberger

ComputerWorks GmbH

http://www.computerworks.de

Link zu diesem Kommentar

Vielen Dank, ohne dich wäre ich nun wohl für eine Zeit lang am Textformatierungsdialoge programmieren.

 

Das grössere Fragezeichen ist geklärt.

Nun wäre noch der zweite Teil der Frage. Ist das möglich, oder übersehe ich etwas?

 

Am 8.7.2019 um 09:45 schrieb Manuel Roth:

Wie ist es möglich, GroupBoxes eine feste Breite zuzuweisen?

Als Beispiel könnte wieder der Dialog oben hinhalten. Dort haben die Gruppen rechts eine grössere Breite, als das breiteste Inhaltselement. Wie ist das möglich? Hängt das mit dem ResizableLayout zusammen?

 

 

PS: Scheint auch in einem nicht ResizableLayout zu funktionieren. Siehe Extras>Aufräumen...

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
  • 1 Jahr später...

Hallo, ich versuche derzeit auch eine Checkbox in den Multidialog (unter Titel 2) einzubauen. aber alle versuche es richtig zu integrieren scheitern. derzeit gibt er nur "ja" aus egal ob das kreuz gesetzt ist oder nicht. und die anderen Boolian-dialoge hier auf der Seite helfen mir auch nicht wirklich weiter, da diese bei mir nichts ausgeben. Vielleicht hat je jemand eine Idee wie ich den Code anpassen kann.

 

#CW 2
@Marionette.NodeDefinition
class Params(metaclass = Marionette.OrderedClass):
#APPEARANCE
    #Name
    this = Marionette.Node( "Custom Pulldown" )
    this.SetDescription( 'A Dialog with 3 Popups')
    #Input Ports
    sDialog = Marionette.PortIn('Dialog Name')
    sTitle1 = Marionette.PortIn('Title 1:')
    sTitle2 = Marionette.PortIn('Title 2:')
    sTitle3 = Marionette.PortIn('Title 3:')
    sTitle4 = Marionette.PortIn('Title 4:')
    lPopup4 = Marionette.PortIn([],'choice4')
    iWidth = Marionette.PortIn(40)
    
    #OIP Controls
    text = Marionette.OIPControl( 'Text', Marionette.WidgetType.Text, '')
    text.SetDescription( 'Dialog user prompt string' )
    
    #Output Ports
    sPopup1 = Marionette.PortOut()
    sPopup2 = Marionette.PortOut()
    sPopup3 = Marionette.PortOut()
    sPopup4 = Marionette.PortOut()
    sPopup1.SetDescription( 'The Result of the Popups' )
    

    
#BEHAVIOR
    this.SetListAbsorb()

def RunNode(self):
    #inputs
    DialogName = self.Params.sDialog.value[0]
    title1 = self.Params.sTitle1.value[0]
    title2 = self.Params.sTitle2.value[0]
    title3 = self.Params.sTitle3.value[0]
    title4 = self.Params.sTitle4.value[0]
    
    pop4 = self.Params.lPopup4.value
    width = self.Params.iWidth.value[0]

    numPopups = 4
    EnterDialog = 12255

    #script

    def Dialog_Handler(item, data):
        
        self.v1 = vs.GetItemText( self.dialog, 11 )
        self.v2 = vs.GetItemText( self.dialog, 12 )
        self.v3 = vs.GetItemText( self.dialog, 13 )
        self.v4 = vs.GetItemText( self.dialog, 14 )
        
        if item == EnterDialog:
                for i in range(len(pop4)):
                        vs.AddChoice( self.dialog, 14, pop4, i+1 )
            
                            


    def CreateMyDialog():        
        self.dialog = vs.CreateLayout( DialogName, 0, 'OK', 'Abbrechen' )
        dialog = self.dialog
        
        vs.CreateStaticText(dialog, 1, title1, width)
        vs.CreateStaticText(dialog, 2, title2, width)
        vs.CreateStaticText(dialog, 3, title3, width)
        vs.CreateStaticText(dialog, 4, title4, width)
        

        vs.CreateEditText( dialog, 11,'',width)
        vs.CreateCheckBox( dialog, 12,'ja')
        vs.CreateEditReal( dialog, 13,1,8, width,125,20)
        vs.CreatePullDownMenu( dialog, 14, width)

        vs.SetFirstLayoutItem( dialog, 1 )
        vs.SetBelowItem( dialog, 1, 11, 0, 0 )
        vs.SetBelowItem( dialog, 11, 2, 0, 0 )
        vs.SetBelowItem( dialog, 2, 12, 0, 0 )
        vs.SetBelowItem( dialog, 12, 3, 0, 0 )
        vs.SetBelowItem( dialog, 3, 13, 0, 0 )
        vs.SetBelowItem( dialog, 13, 4, 0, 0 )
        vs.SetBelowItem( dialog, 4, 14, 0, 0 )

        vs.RunLayoutDialog(dialog, Dialog_Handler )


    CreateMyDialog()

    #outputs
    self.Params.sPopup1.value = self.v1
    self.Params.sPopup2.value = self.v2
    self.Params.sPopup3.value = self.v3
    self.Params.sPopup4.value = self.v4

 

 

Multidialog mit checkbox.vwx

Link zu diesem Kommentar

Hallo

 

Am 7.7.2021 um 08:16 schrieb Chritian W.:

self.v4 = vs.GetItemText( self.dialog, 14 )

Das Problem ist diese Zeile hier. Wenn du stattdessen GetBooleanItem verwendest, sollte es funktionieren.

 

Vielleicht einmal ein paar grundsätzliche Worte zu Dialogen. Das Zeug ist furchtbar komplex, ich habe nicht die Wahrheit gepachtet und schildere hier nur so wie ich sie verstehe.

 

Du rufst ziemlich unten in deinem Code die Funktion CreateMyDialog()  auf. Darin wird der Dialog erstellt und mit Elementen gefüllt.

 

Dies funktioniert indem du zuerst ein Dialoglayout kreierst, dieses anschliessend mit Elementen füllst, welche zum Schluss noch entsprechend angeordnet werden. Ich persönlich verwende jeweils gerne anstelle der relativ nichtssagenden und schwierig zu lesenden Parameter 11 usw. eine Variable. Zum Beispiel

text_name = 11

vs.CreateEditText( dialog, text_name,'',width)

vs.SetFirstLayoutItem( dialog, text_name )

Je nachdem wo du Zeile 1 schreibst, kannst du diese Variable auch im Handler verwenden.

 

 

Mit vs.RunLayoutDialog() wird der Dialog anschliessen auf dem Bildschrim angezeigt. Dieser Fuktion gibst du nebst dem Parameter, welcher Dialog ausgeführt werden soll den Namen einer weiteren Python-Funktion auf den Weg.

 

Dieser Dialoghandler wird jedes mal ausgeführt, wenn im Dialog irgendetwas passiert. Dies kann eine Eingabe sein, aber auch das Schliessen, Starten und klicken auf Ok oder Abbrechen lösen diesen Aufruf aus.

 

Beim Aufruf dieser Funktion wird automatisch auch der Parameter Item mitgegeben. Dieser definiert, mit welchem Element gerade interagiert wird. Wenn in meinem Pseudobeispiel oben ein neuer Name eingegeben wird, gibt es einen Aufruf des Handlers mit dem Parameter Item = 11 (= text_name). Nach diesem kannst du anschliessend mit einer If-Funktion suchen und entsprechend etwas unternehmen. In deinem Beispiel ist das Item EnterDialog (=12255). Das bedeutet, dass der Codeblock unter dem if nur ausgeführt wird, wenn der Dialog gestartet wird, was ja auch Sinn ergibt, da darin das Popup mit Werten gefüllt wird.

 

Es gibt auch einen Item-Code für das Schliessen des Dialoges, für das Klicken auf Ok und einen für Abbrechen. (Ich finde sie gerade nicht, müsstest ein wenig suchen. Meinte die Codes auch schon bei Beispielfunktionen in der Function Reference Kapitel Dialogs - Modern in Verwendung gesehn zu haben.)

 

 

Ich hoffe, dass meine Erklärung nicht alzu wirr war und du etwas daraus lernen konntest. Ansonsten meldest du dich gerne wieder und ich werde schauen, was ich noch präzisieren kann. Aber wie gesagt, ist einfach eigene Erfahrung durch Trial und Error und es gibt sicher noch viel mehr dazu. (Wozu zum Teufel ist der Parameter data beim Handler??? Keine Ahnung, nie gebraucht und sollte er einmal trotzdem nützlich sein, werde ich es zu diesem Zeitpunkt herausfinden. ? Ausser jemand, der diesen ganzen Text gelesen hat, wüsste es per Zufall, wäre ich um eine kleine Erläuterung dankbar.)

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
vor 2 Stunden schrieb Manuel Roth:

Das Problem ist diese Zeile hier. Wenn du stattdessen GetBooleanItem verwendest, sollte es funktionieren.

Hallo Manuel, vielen Dank für deine Ausführungen, an der gleichen Zeile hatte ich es mit Vs.getBooleanItem schon mal probiert, aber auch jetzt bekomme ich es nicht hin. Vielleicht würde es mir helfen, wenn ich den Zusammenhang mit 

dialogID   LONGINT   der dialogionliche Bezeichner von CreateLayout oder CreateResizableLayout
Componentid   LONGINT  

Die Kennung für die Optionskomponente des Radios oder des Kontrollkästchens

 

Verstehen würde.

Und wie VS CreateCheckbox und VS BooleanItem zusammenpassen

und für was bei einigen zwischen VectorScript und Python unterschieden wird und bei anderen wieder nicht.

 

Das sorgt dafür, dass ich an vielen Stellen einfach nur herumprobiere, bis ich zum gewünschten Ergebnis komme.

Was eigentlich meinen Grundprinzipien wiederspricht.. Mein Ziel wäre in diesem Fall einen Dialogpopup zu kreieren, welchen ich individuell zusammenstellen kann, damit bei vielen unterschiedlichen Abfragen es eben nur einen Popup beim Menübefehl gibt.

 

Link zu diesem Kommentar

Ziel erreicht, nach dem ich nun alles auf die Checkbox reduziert hatte, funktioniert es - nun auch im großen Popup. Vielleicht ein Schreibfehler drin gewesen?.

Eigentlich muss beim Handler nur folgende Zeile rein:         self.v1 = vs.GetBooleanItem( self.dialog, 11 )

und unter create Mythen Dialog:  vs.CreateCheckBox( dialog, 11,'ja')

Für alle die es interessiert: hier der Code in der Kurzfassung für die Checkbox:

 

#CW 3
@Marionette.NodeDefinition
class Params(metaclass = Marionette.OrderedClass):
#APPEARANCE
    #Name
    this = Marionette.Node( "Checkbox für individual Popup" )
    #Input Ports
    sDialog = Marionette.PortIn('Dialog Name')
    sTitle1 = Marionette.PortIn('Title 1:')
    iWidth = Marionette.PortIn(40)
    
    #OIP Controls
    text = Marionette.OIPControl( 'Text', Marionette.WidgetType.Text, '')
    text.SetDescription( 'Dialog user prompt string' )
    
    #Output Ports
    sPopup1 = Marionette.PortOut()
    sPopup1.SetDescription( 'The Result of the Popups' )
    

    
#BEHAVIOR
    this.SetListAbsorb()

def RunNode(self):
    #inputs
    DialogName = self.Params.sDialog.value[0]
    title1 = self.Params.sTitle1.value[0]
    width = self.Params.iWidth.value[0]


    #script

    def Dialog_Handler(item, data):
        
        self.v1 = vs.GetBooleanItem( self.dialog, 11 )
                            


    def CreateMyDialog():        
        self.dialog = vs.CreateLayout( DialogName, 0, 'OK', 'Abbrechen' )
        dialog = self.dialog
        
        vs.CreateStaticText(dialog, 1, title1, width)
        

        vs.CreateCheckBox( dialog, 11,'ja')

        vs.SetFirstLayoutItem( dialog, 1 )
        vs.SetBelowItem( dialog, 1, 11, 0, 0 )


        vs.RunLayoutDialog(dialog, Dialog_Handler )


    CreateMyDialog()

    #outputs
    self.Params.sPopup1.value = self.v1

 

 

 

Für was das data beim Handler steht weiß ich auch nicht - ohne funktioniert es jedenfalls nicht.

Bearbeitet von Chritian W.
Link zu diesem Kommentar

DialogID ist eine ID, die von CreateLayout dem Dialog zugewiesen wird. Sie ist für jeden (offenen?) Dialog einmalig. Damit kann sichergestellt werden, dass du deine Objekte in den korrekten Dialog einfügst usw...

 

Die ComponentID wird von dir beim Erstellen von jedem Element mitgegeben. vs.CreateCheckBox( dialog, 11, 'ja')

Auch sie dient der eindeutigen Identifikation von einem Element, damit du es platzieren, mit Inhalten füllen usw. kannst. Bei all diesen Aktionen gibts du ja auch wider die selbe Zahl an (oder so wie ich oben beschrieben habe der Übersichtlicchkeit halber eine Variable) Auch im Handler taucht diese Zahl unter dem Parameter Item wieder auf.

 

 

vs.CreateCheckbox und vs.GetBooleanItem passen zusammen, weil die Checkbox die du kreierst zwei Zustände hat. Entweder ist sie aktiviert oder nicht. True oder False. Vom demher brauchst du auch den entsprechenden Befehl zum Auslesen der Werte. Wenn du versuchst mit vs.GetItemText (der Funktion für Text) einen Boolean auszulesen, kommt nichts schlaues heraus. Das selbe gilt auch umgekehrt.

 

 

Python und Vectorscript sind halt zwei unterschiedliche Programmiersprachen. VS wurde für VW entwickelt, Python ist halt universell. Grundsätzlich sind mit all den vs.blabla Befehlen alle VS-Befehle auch in Python verfügbar. Umgekehrt ist es nicht der Fall.

 

 

Aber ja Dialoge sind schreklich kompliziert und oftmals bin ich auch am herumprobieren.

  • Like 1

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      23,5Tsd
    • Beiträge insgesamt
      120,8Tsd
×
×
  • Neu erstellen...