Maintenant que vous pouvez modifier la taille de chaque orifice, vous devez déterminer quelle face a l'orifice le plus grand, de sorte que le bloc puisse être dimensionné de façon appropriée. Cette opération requiert une autre règle.
Pour déterminer le plus grand orifice, examinez les paramètres de taille des trois orifices et conservez la valeur la plus élevée. Comme avec block_shape_rule, le comportement des blocs en T doit être différent de celui des blocs coudés.
Pour les blocs en T, les trois orifices sont utilisés. Vous avez donc besoin de vérifier la taille pour chacun d'eux. Pour les blocs coudés, il est inutile de vérifier l'orifice B, qui est masqué. Utilisez la fonction MaxOfMany pour obtenir la plus grande valeur à partir d'un jeu de valeurs d'entrée.
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
Une nouvelle variable locale nommée orifice conserve la taille de l'orifice disponible le plus grand. Vous devez à présent indiquer au modèle ce qu'il doit faire avec ces informations. Le modèle obtient ses informations d'une feuille de calcul Excel incorporée. Il est donc nécessaire de consulter la feuille de calcul pour mettre à jour les tailles du modèle.
i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port)
Pour la recherche, utilisez la colonne port_size et la valeur de la variable.
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")
Vous avez maintenant déterminé quel est l'orifice le plus grand. La partie supérieure du bloc est dimensionnée en conséquence. A présent, nous allons déterminer la hauteur du bloc en observant le T et le coude pour déterminer quel orifice est le plus grand sur la face des orifices A / B.
If block = "tee" Then porta = MaxOfMany(port_a_size, port_b_size) ElseIf block = "elbow" porta = port_a_size End If
La fonction MaxOfMany n'est pas utilisée pour les blocs coudés, étant donné qu'une seule valeur doit être prise en compte. Vous pouvez définir la variable à partir de cette valeur.
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")
Pour cette valeur, vous ajoutez une logique spéciale pour insérer un espace supplémentaire au-delà du décalage vertical utilisé dans les autres orifices. Ces informations sont obtenues à partir d'une autre cellule de la feuille de calcul. Cette opération sert uniquement pour les blocs coudés.
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")
La règle block_size est terminée.