Macros en Excel - Conversor de esfuerzos CYPE a IDEA

Ignasi Latorre

Esmeralda
Buenas tardes.
Me estoy peleando con una macro de Excel para tratar los datos de esfuerzos de salida de CYPE 3D y, a pesar de tener toda la macro lista y funcionando, me encuentro con un problema cuando trato los datos de entrada.
Intento explicarlo para que se entienda.

1.- Copio la tabla de esfuerzos por combinaciones desde la exportación de CYPE.
2.- Dado que CYPE usa "." como separador de decimales lo tengo que substituir por una ",".
En Excel veo esto:



y donde dice #¡CAMPO! hay el siguiente texto:



Previo a intentar solucionar el problema yo ya he cambiado el formato de todas las celdas a número sin separador de miles.

Aplico el siguiente código:

Dim m As Integer

For m = 4 To intMivalor

Cells(m, 3).Select

Selection.Replace What:=".", Replacement:=",", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="=", Replacement:=" ", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Next m

Donde m es un contador desde la fila 4 hasta la última fila (se entra a mano).

Con cells(m,3).select selecciono una celda.
sustituyo el punto por la coma
borro el igual
y avanzo

Me funciona perfecto hasta que, llegada la fila 52



No sé a qué se debe que de golpe y porrazo, dentro del mismo for, deje de hacer la sustitución.

¡Gracias por vuestra ayuda!
 

pnc

Titanio
Desde mi ignorancia: no trabajo con Excel, sólo Calc de LibreOffice.
Mi solución con las comas y los puntos pasa por decirle a Calc que ahora soy británico y me apetece que el separador decimal sea el punto.
Pegas lo que exporta CYPE, lo guardas desde Calc y vuelves, si quieres, a configurar la coma como separador decimal.
 
¡Hola @Ignasi Latorre!
¿Has conseguido solucionar lo de la Excel? En el nuevo curso que va a impartir Construsoft de Cálculo de uniones metálicas con IDEA, hablan de una nueva posibilidad de enlace con CYPE. Enseguida me he puesto en contacto con ellos, porque no encontraba información en ninguno de los dos softwares que me indicase que esta interoperabilidad se había hecho. Y, efectivamente, no es así. En Construsoft parece que han trabajado en una hoja Excel con una serie de funciones que permiten enviar todas las combinaciones de CYPE a IDEA.
Deseo como usuario de ambos programas que en el futuro se haga una conexión real... pero creo que no están por la labor.
Saludos.
 

Ignasi Latorre

Esmeralda
Habrá que informarse pues... la mía es muy, muy, muy rudimentaria y aún tiene mucho recorrido por hacer... si el trabajo está hecho quizá habrá que darles un toque :p
 

kaaden

Esmeralda
Pues les voy a pedir la XLSM, exportarlo no es excesivamente complicado, tomar bien los signos de los esfuerzos sí es bastante laborioso.
 

kaaden

Esmeralda


Private Sub CommandButton1_Click()

Dim nodo As Integer
nodo = ListBox1.ListIndex + 1

'Columna en la que se inserta la matriz transpuesta
c = 5
Do While IsEmpty(Cells(4, c)) = False
c = c + 1
Loop
c = c + 4

ActiveSheet.Cells(3, c) = "CASO"

'Transponer la matriz
For i = 0 To 5

ActiveSheet.Cells(3, c + 1 + i) = ActiveSheet.Cells(4 + i, 4)

j = 0
Do While IsEmpty(Cells(4 + 6 * j, 3)) = False

ActiveSheet.Cells(4 + j, c) = ActiveSheet.Cells(4 + 6 * j, 3)
If i < 3 Then
ActiveSheet.Cells(4 + j, c + 1 + i) = ActiveSheet.Cells(4 + 6 * j + i, 4 + nodo)
Else
'Cambia el signo de los momentos
ActiveSheet.Cells(4 + j, c + 1 + i) = -ActiveSheet.Cells(4 + 6 * j + i, 4 + nodo)
End If

j = j + 1
Loop

Next i
End Sub



Private Sub UserForm_Initialize()

'Inicializar los valores de los nodos
k = 0
Do While IsEmpty(Cells(3, 5 + k)) = False
ListBox1.AddItem ActiveSheet.Cells(3, 5 + k).Value
k = k + 1
Loop

End Sub
 

kaaden

Esmeralda
En soporte no me han pasado la hoja, habrá que continuar trabajando en la propia, o que un "colega" haga el curso y nos cuente, yo el curso lo hice en la primera edición y por la XLSM y las conexiones BIM con programas que no tengo no me vale la pena.
 

kaaden

Esmeralda
También podrían enrollarse desde CYPE y hacer un exportador esfuerzos por barra en formato CSV/XLS... que IDEA pueda leer directamente, así, a pesar de que ellos no se han puesto de acuerdo, sus clientes tienen ese servicio, para IDEA y para otras cosas si la exportación es configurable.
 

Ignasi Latorre

Esmeralda
De hecho, el programa ya saca los esfuerzos críticos para las comprobaciones que hace cuando se calculan uniones dentro del propio CYPE... una exportación a Excel y después nosotros ya nos apañamos para ajustar los signos...

Algo tipo:
Nudo A
Combinación 1:
Barra1 N, Vy, Vz, Mx, My, Mz
Barra2 N, Vy, Vz, Mx, My, Mz
Barra3 N, Vy, Vz, Mx, My, Mz
Combinación 2:
Barra1 N, Vy, Vz, Mx, My, Mz
Barra2 N, Vy, Vz, Mx, My, Mz
Barra3 N, Vy, Vz, Mx, My, Mz
[...]
Combinación n:
Barra1 N, Vy, Vz, Mx, My, Mz
Barra2 N, Vy, Vz, Mx, My, Mz
Barra3 N, Vy, Vz, Mx, My, Mz

Donde n es, como máximo, el número de barras multiplicado por 6... por 5 si hay la opción de desmarcar Mx (que es menos habitual)... 3 si solo se marca N, Vz y My.

En este caso nos plantaríamos con 18 combinaciones que, a pesar de requerir un tiempo de cálculo importante en IDEA, no permiten poder optimizar muchísimo las uniones.
 

Ignasi Latorre

Esmeralda
Que tengas que hacer el curso, con lo que vale el software... no sé yo...
 
Asigna esta macro a un botón para alternar con facilidad entre separador decimal punto y coma con facilidad. Igual con eso te basta sin necesidad de modificar nada. Los cambios inadvertidos los carga el diablo...

Sub CAMBIAR_SEPARADOR_DECIMAL()

If Application.UseSystemSeparators = False Then Application.UseSystemSeparators = True Else Application.UseSystemSeparators = False

End Sub
 

wenner

Bronce
Me estoy peleando con una macro de Excel para tratar los datos de esfuerzos de salida de CYPE 3D y, a pesar de tener toda la macro lista y funcionando, me encuentro con un problema cuando trato los datos de entrada
Puedes hacer la macro más eficiente de la siguiente forma:

Sub SustituirComaPorPunto()
Dim RngDatos As Range
Dim UltFila As Long

'Detecto la última fila (columna C)
UltFila = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row

'Rango de dato (comiendo en la fila 4, columna c)
Set RngDatos = ActiveSheet.Range("C4:C" & UltFila)

With RngDatos
.Replace What:=".", Replacement:=","
.Replace What:="=", Replacement:=""
.HorizontalAlignment = xlRight
End With
End Sub
 
También podrían enrollarse desde CYPE y hacer un exportador esfuerzos por barra en formato CSV/XLS... que IDEA pueda leer directamente, así, a pesar de que ellos no se han puesto de acuerdo, sus clientes tienen ese servicio, para IDEA y para otras cosas si la exportación es configurable
Si estás en contacto con IDEA, diles que ya nos pusimos en contacto con ellos hace más de un año y seguimos esperando que nos contacten, parece ser que iban muy liados en aquel momento, y que cuando pudiesen nos contactarían, ya que si se hace, hay que hacerlo trabajando en ambas empresas, de forma unilateral acabaría no funcionando.
 

Ignasi Latorre

Esmeralda
Cómo clientes, por mucho que pidamos no tenemos fuerza (no todas las empresas escuchan como CYPE).
El distribuidor de IDEA en España, para los que hagan el curso del software con ellos, da un Excel para pasar de la tabla de esfuerzos del informe de CYPE en Word a un Excel que puedes seleccionar y copiar-pegar directamente en IDEA los esfuerzos en el formato que el programa pide (una tabla con una fila para cada extremo de barra en la unión y una columna par N, Vy, Vz, Mx, My, Mz).
No veo por qué no puede funcionar que CYPE tenga la opción de exportar una tabla en formato Excel con esas características.
 

kaaden

Esmeralda
@castelar, recuerda que yo os puse en contacto, si tú dices que ellos no quieren... como usuario de los dos programas lo intenté y sería un motivo determinante para actualizar las 4 licencias de CYPE, el XLSM que ofertan ahora con su curso de IDEA ya lo tengo "home made" y no voy a volver a hacer el curso para que me faciliten su versión, creo que como usuario con mantenimiento de 2 licencias de Idea y 2 de ConSteel me lo deberían regalar, que me he gastado XX k € y gasto bastantes X k € al año.

De todas formas, tenéis la salida de resultados demasiado encorsetada, con una salida de reacciones y de esfuerzos por fila a elección del punto de la barra, agrupadas en hipótesis/combinación nos facilitaría bastante el trabajo:
- Para calcular con IDEA.
- Para comprobar secciones reforzadas.
- Para secciones de barras genéricas, por ejemplo perfiles de fibra de vidrio: http://www.nioglas.com/perfiles-estructurales-ng.php
...
Y eso no os cuesta tanto, ya estaba antes de los actuales listados, se podrían mantener los listados actuales y una salida de resultados en bruto CSV, XLS para seguir calculando cosas que no hace el programa.
Si además la salida se hace con el orden de columnas para que se pueda copiar y pegar en IDEA les fastidiaría la XLSM, una pequeña venganza, internamente probarlo, no creo que un programador vuestro dedique mucho tiempo en hacer algo más refinado que lo suyo sin copiar/pegar vuestro listado.
 

Ignasi Latorre

Esmeralda
como usuario de los dos programas lo intenté
Yo también lo pedí, un par de veces (en 2017 en uno de sus webinars y en mayo de este año en un wishlist que les mandé).

De todas formas, tenéis la salida de resultados demasiado encorsetada, con una salida de reacciones y de esfuerzos por fila a elección del punto de la barra, agrupadas en hipótesis/combinación nos facilitaría bastante el trabajo
Amén, sería un puntazo para la 2020.b.
 
Arriba