Jetzt können Sie die Größe der einzelnen Ports ändern, müssen jedoch noch bestimmen, welche Fläche den größten Port aufweist, sodass der Block entsprechend angepasst werden kann. Dies erfordert eine weitere Regel.
Um den größten Port zu bestimmen, prüfen Sie die Werte für die drei Port-Größenparameter und behalten den größten Wert bei. Wie bei block_shape_rule muss das Verhalten für Blöcke im T-Stil sich von demjenigen für Blöcke im Bogenstil unterscheiden.
Für Blöcke im T-Stil werden alle drei Ports verwendet. Daher muss die Größe der drei Ports überprüft werden. Bei Blöcken im Bogenstil muss Port B nicht überprüft werden, da er unterdrückt ist. Verwenden Sie die Funktion MaxOfMany zum Abrufen des größten Werts aus einem Satz von Eingabewerten.
If block = "tee" Then port = MaxOfMany(port_a_size,port_b_size,port_c_size) ElseIf block = "elbow" Then port = MaxOfMany(port_a_size,port_c_size) End If
Eine neue lokale Variable namens port enthält die Größe des größten verfügbaren Ports. Nun müssen Sie angeben, wie das Modell diese Informationen verarbeiten soll. Das Modell ruft die Informationen aus einer eingebetteten Excel-Tabelle ab. Daher müssen Sie diese Tabelle zur Aktualisierung der gesamten Modellgröße verwenden.
i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port)
Die Spalte port_size wird für die Suche und der Wert der zugewiesenen Variable als zu suchender Wert verwendet.
block_depth = GoExcel.CurrentRowValue("block_depth") port_c_depth_from_front = GoExcel.CurrentRowValue("port_c_depth_from_front") block_width = GoExcel.CurrentRowValue("block_width") port_a_hor_offset = GoExcel.CurrentRowValue("hor_offset") port_b_hor_offset = GoExcel.CurrentRowValue("hor_offset") port_c_hor_offset = GoExcel.CurrentRowValue ("hor_offset")
Sie haben festgestellt, welcher Port der größte ist, und passen nun die Größe der Blockoberseite an. Nun bestimmen Sie die Höhe des Blocks, indem Sie das T-Stück und den Bogen untersuchen und feststellen, ob Port A oder Port B größer ist.
If block = "tee" Then porta = MaxOfMany(port_a_size, port_b_size) ElseIf block = "elbow" porta = port_a_size End If
Die Funktion MaxOfMany wird nicht für Blöcke im Bogenstil verwendet, da nur ein Wert berücksichtigt werden muss. Sie können die Variable von diesem Wert aus festlegen.
i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", porta)
port_a_vert_offset = GoExcel.CurrentRowValue("vert_offset") port_b_vert_offset = GoExcel.CurrentRowValue("vert_offset")
Für diesen Wert fügen Sie spezielle Logik zum Einfügen von zusätzlichem Raum über dem vertikalen Versatz für die anderen Ports ein. Diese Informationen werden aus einer anderen Tabellenzelle abgerufen. Dies wird nur für Blöcke im Bogenstil durchgeführt.
If block = "elbow" Then port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") + (GoExcel.CurrentRowValue("port_dia")/4) Else port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") End If block_height = GoExcel.CurrentRowValue("block_height")
Die Regel block_size ist abgeschlossen.