Zum Inhalt springen

Marionette paged based mm


L00S

Empfohlene Beiträge

Guten Abend,

habe ein Datenstempel mit Marionette für den Wandaufbau. Der ganze Datenstempel stammt aus diesem Forum, aber ich finde das Thema nicht.

Dort ist ein Node enthalten PageBased_mm, der wohl nicht original von VW ist. Dieser Node liest den Maßstab der aktuellen Ebene aus und rechnet damit die Abstände um, um dann die Zeilenhöhe zu steuern oder auch den Abstand der Spalten.

 

Das funktioniert auch wunderbar in der Konstruktionsebene. In der Layoutebene schaut es erstmal auch gut aus, nur wenn man ausdruckt wird die Marionette wohl neu berechnet und die Werte werden nicht auf den Maßstab der Konstruktionsbene umgerechnet, sondern auf die Layout-Ebene - also 1:1. Das führt dazu, dass die Abstände alle mickrig sind.

Kann man da was tun? Der Script schaut so aus:

#Dom C 2016-10
@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, "")
	this = Marionette.Node( 'PageBased_mm' )
	this.SetDescription('A Real value defined in the OIP in document units')	 
	r = Marionette.PortOut()
	r.SetDescription('The value')
	Real = Marionette.OIPControl( 'real', Marionette.WidgetType.Real, 0.0)
	Real.SetDescription('A value in document units')
	
def RunNode(self):	
	units = vs.GetPrefReal(150)	
	s = vs.GetLScale(vs.ActLayer())
	self.Params.r.value = self.Params.Real.value/units*s

Irgendwo in der vorletzten Zeile passiert es, aber was genau ?

Vielleicht ist DomC @Dominique Corpataux??

 

Bearbeitet von L00S

MacOS 10.15.7 - VWX2022 SP6

Link zu diesem Kommentar

In der vorletzen Zeile wird der Massstab der momentan aktiven Ebene ausgelesen. Von demher wird deine Vermutung wohl stimmen.

 

Theoretisch sollte so etwas funktionieren.

s = vs.GetLScale(vs.GetLayer(self.Handle))

Liest den Masstab von der Ebene aus, auf dem der Node plaziert ist. Ist aber gerade nicht zu testen, ohne das ganze Netzwerk zur Hand zu haben und könnte je nach dem unvorhergesehene Nebenwirkungen in Symbolen, Ergänzungen usw. haben.

 

 

Das Thema ist übrigens hier. (Mit der Forumssuche ist es aber nicht auffindbar. ? Zum Glück gibts Google)

 

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
      24,1Tsd
    • Beiträge insgesamt
      124,7Tsd
×
×
  • Neu erstellen...