Diese Funktion funktioniert perfekt in Excel. Aus den Attributen @612@, @613@, @163@, @164@ und @221@ soll es die Ausrichtung (Azimut) einer Wandscheibe ergeben VBScriptTester erkennt unverständliche Fehler.
Function Orientacion(ByVal CDGx As Single, ByVal CDGy As Single, ByVal P1x As Single, ByVal P1y As Single, ByVal Gruix As Single, ByVal AngProj As Single) As String
' Devuelve el ángulo de un muro respecto al norte, según el CTE
' Allplan le pasa los atributos a la Function Orientacion. hace los calculos y devuelve el resultado.
' Angulo del punto de medición: angulo del sistema de orientación de Allplan. Atributo 18268
' CDG (x,y,z) coordenadas del CDG del muro (Primera hoja). Son los atributos, respectivamente (612,613,614)
' P1(x,y,z) coordenadas del 1r punto de la primera hoja, idem (163,164,165)
' Las coordenadas Z no se utilizan
' Gruix: Grueso del muro total. Atributo 221
Dim P2x, P2y As Single
'Vectores posición
Dim Argumento(1 To 3), Zeta(1 To 3), Angle As Double
Dim Orient_CTE As String
Pi = 3.14159265358979
'Cambio a coordenadas relativas, centradas en el CDG de cada muro
P2x = P1x - CDGx
P2y = P1y - CDGy
' calculamos los argumentos y angulos de los vectores
Argumento(2) = Gruix / 2
Argumento(1) = Sqr(P2x * P2x + P2y * P2y)
Zeta(1) = Atn(P2x / P2y)
Argumento(3) = Sqr(Argumento(1) * Argumento(1) - Argumento(2) * Argumento(2))
Zeta(2) = Atn(Argumento(2) / Argumento(3))
Zeta(3) = Zeta(1) + Zeta(2)
' las siguientes fórmulas devuelven en radianes el ángulo medido desde el NORTE. Norte = 2pi
If (P2x > 0 And P2y > 0) Or (P2x < 0 And P2y > 0) Then
Zeta(3) = Pi * 3 / 2 + Zeta(3)
End If
If (P2x < 0 And P2y < 0) Or (P2x > 0 And P2y < 0) Then
Zeta(3) = Pi / 2 + Zeta(3)
End If
'Convierto a grados sexagesimales
Angle = Round(Zeta(3) * 180 / Pi, 2)
' corrección por orientación de la parcela
Angle = Angle - AngProj
If Angle < 22.5 Or Angle >= 337.5 Then Orient_CTE = "Norte"
If Angle >= 22.5 And Angle < 60 Then Orient_CTE = "Noreste"
If Angle >= 60 And Angle < 110 Then Orient_CTE = "Este"
If Angle >= 110 And Angle < 162 Then Orient_CTE = "Sureste"
If Angle >= 162 And Angle < 198 Then Orient_CTE = "Sur"
If Angle >= 198 And Angle < 249 Then Orient_CTE = "Suroeste"
If Angle >= 249 And Angle < 300 Then Orient_CTE = "Oeste"
If Angle >= 300 And Angle < 337.5 Then Orient_CTE = "Noroeste"
Orientacion = Orient_CTE
End Function