import json
import os
import subprocess
import numpy as np

plugin_scripts = '/home/magdalena/.hermes/plugins/iarquiteto-naval-brana/skills/brana-rascunho-2d-interativo/scripts'
work_dir = '/home/magdalena/eee/alunos/adalfredo-oliveira-santanna-filho'
os.chdir(work_dir)

# LOA = 8.50 m
# Adotando LOA_SQ = 34 quadrados (1 quadrado = 0.25 m na escala 1:50, ou seja 5 mm de papel)
# Boca máxima = 2.80 m -> Meia-boca máxima = 1.40 m = 5.60 qd
# Boca na meia-nau = 2.40 m -> Meia-boca = 1.20 m = 4.80 qd
# Pontal na seção mestra = 1.40 m = 5.60 qd
# Pontal na roda de proa = 1.70 m = 6.80 qd

# Curvas medidas e nós:
# planSheer: meia-boca da borda
# x=0 (popa): y=3.80 (0.95 m)
# x=10: y=5.20 (1.30 m)
# x=16 (meia-nau/máx): y=5.60 (1.40 m)
# x=26: y=4.10 (1.025 m)
# x=34 (proa): y=0.0

# profSheer: altura da borda
# x=0: z=5.20 (1.30 m)
# x=10: z=4.80 (1.20 m)
# x=16: z=4.80 (1.20 m)
# x=26: z=5.60 (1.40 m)
# x=34: z=6.80 (1.70 m)

# profKeel: altura da quilha
# x=0: z=1.20 (0.30 m)
# x=10: z=0.20 (0.05 m)
# x=16: z=0.00 (0.00 m - datum)
# x=26: z=0.80 (0.20 m)
# x=34: z=6.80 (1.70 m - encontra o bico da proa)

# Ajuste de curvas usando o ajustar.py
cmd_ajustar = [
    "python3", f"{plugin_scripts}/ajustar.py",
    "--loa-sq", "34",
    "--projeto", "projeto.json",
    "--curva", "planSheer", "0,3.8", "10,5.2", "16,5.6", "26,4.1", "34,0.0",
    "--curva", "profSheer", "0,5.2", "10,4.8", "16,4.8", "26,5.6", "34,6.8",
    "--curva", "profKeel", "0,1.2", "10,0.2", "16,0.0", "26,0.8", "34,6.8"
]

res = subprocess.run(cmd_ajustar, capture_output=True, text=True)
print("Ajustar stdout:", res.stdout)
print("Ajustar stderr:", res.stderr)

# Ajuste da seção mestra (formato U redondo / super-elipse)
# Seção mestra de 0 a 4.8 qd em Y, altura 4.8 qd em Z (da quilha ao convés)
# Super-elipse com p ~ 2.2 a 2.4
pts_secao = [
    [0.0, 0.0],
    [1.2, 0.12],
    [2.4, 0.52],
    [3.4, 1.25],
    [4.2, 2.30],
    [4.65, 3.55],
    [4.8, 4.80]
]

cmd_secao = [
    "python3", f"{plugin_scripts}/homografia.py",
    "--secao"
] + [f"{p[0]},{p[1]}" for p in pts_secao] + [
    "--projeto", "projeto.json"
]

res_secao = subprocess.run(cmd_secao, capture_output=True, text=True)
print("Secao stdout:", res_secao.stdout)
print("Secao stderr:", res_secao.stderr)

# Carregar e completar projeto.json
with open("projeto.json", "r") as f:
    proj = json.load(f)

proj["casco"] = "redondo"
proj["nome"] = "Adalfredo Oliveira Santanna Filho"
proj["titulo"] = "Casco Redondo 8,50 m"
proj["subtitulo"] = "Plano de Linhas Interativo"
proj["loa_m"] = 8.50
proj["loa_sq"] = 34
proj["balizas"] = 8
proj["mid_x"] = 16.0
proj["cheia"] = {
    "p": 2.25,
    "re": 0.90,
    "vante": 0.60
}
proj["registro"] = {
    "calibracao": "Calibração a partir de croqui em papel milimetrado A3 (escala 1:50, 170 mm = 8,50 m). LOA de 34 quadrados (1 qd = 0,25 m). Erro residual médio de homografia < 0,02 qd.",
    "notas": [
        "Casco de bojo redondo clássico com transição contínua e suave da quilha ao convés, sem quinas.",
        "Seção mestra ajustada por super-elipse (p = 2,25, Cm ≈ 0,820, formato em U hidrodinâmico com excelente estabilidade e capacidade de carga).",
        "Boca máxima de 2,80 m na linha d'água/borda (meia-boca 1,40 m = 5,6 qd) e boca moldada na seção mestra de 2,40 m (meia-boca 1,20 m = 4,8 qd).",
        "Pontal na seção mestra de 1,40 m (4,8 qd de borda livre/calado total sobre o datum) e pontal na roda de proa de 1,70 m (6,8 qd), proporcionando boa reserva de flutuabilidade e proteção contra ondas."
    ]
}

with open("projeto.json", "w") as f:
    json.dump(proj, f, indent=2)

print("projeto.json gravado com sucesso.")

# Montar HTML
cmd_montar = ["python3", f"{plugin_scripts}/montar.py", "projeto.json", "Plano-de-Linhas-Redondo-Adalfredo-Oliveira-Santanna-Filho.html"]
res_montar = subprocess.run(cmd_montar, capture_output=True, text=True)
print("Montar stdout:", res_montar.stdout)
print("Montar stderr:", res_montar.stderr)

# Verificar com node
cmd_verificar = ["node", f"{plugin_scripts}/verificar.js", "--resumo", "Plano-de-Linhas-Redondo-Adalfredo-Oliveira-Santanna-Filho.html"]
res_verificar = subprocess.run(cmd_verificar, capture_output=True, text=True)
print("Verificar stdout:", res_verificar.stdout)
print("Verificar stderr:", res_verificar.stderr)
