Hola,
Estoy a poco de terminar de ver todos los videos del curso “API ETABS y Sap2000 con C#”, y hay algo que no he podido encontrar en este, ni tampoco buscando en la API de etabs/SAP2000 (o googleando). Es respecto a los colores, por ejemplo si quiero agregar un material, elemento, etc, cómo puedo predefinir el color que tendrá dentro del modelo. Si me fijo por ejemplo en la función “cPropArea.SetWall Method “, las variables de entrada son las siguientes:
int SetWall(
string Name,
eWallPropType WallPropType,
eShellType ShellType,
string MatProp,
double Thickness,
int color = -1,
string notes = “”,
string GUID = “”
)
Si nos fijamos, existe una variable de tipo “int” para asignar color, en este caso le asigna -1. Sin embargo, si quiero asignar cualquier otro color, por ejemplo un rojo, verde, o lo que sea (por ejemplo un color no base), cómo se que número entero debo ingresar?.
1 Respuesta
Cada color tiene un valor RGB designado. El valor entero puede calcularse para el parámetro de color y luego especificarse en la función mediante la siguiente fórmula:
color = R + G * 256 + B * 256²
donde R, G y B pueden ser 0-255
Por ejemplo, el azul tiene un valor RGB de (0, 0, 255),
por lo tanto, color = 0 + 0 * 256 + 255 * 256^2 = 16711680.
int R = 0; int G = 0; int B = 255; int color = R + G * 256 + B * 256 ^ 2; //Resultado 16711680 ret = SapModel.PropMaterial.SetMaterial("Hormigon", eMatType.Concrete, color);
Puede encontrar el valor RGB correspondiente al color (Entero) utilizando la operación de módulo de la siguiente manera:
R = color módulo 256
G = (color / 256) módulo 256
B = color / 256²
donde / es el operador de división de enteros .

Muchas gracias Elmer por la respuesta rápida, es justamente lo que estaba buscando!