Salve, ho organizzato un script pe riportare nelle piante le dimensioni di porte e finestre rilevate.
Ho il problema che in alcuni casi di riportare nel disegno solo la parte intera della misura del segmento che indico ma ottengo un numero con molti decimali.
Quale è il metodo per ottenere solo l’intero?
Allego lo script di seguito
Call MisureFinestre()
Sub MisureFinestre ()
Dim NF, LCBase
NF = Rhino.GetInteger("Quante finestre nella stanza?", 1, 1)
LCBase = "00-muri"
' Si crea il layer per le misure delle finestre
Layer044 = "044-misure finestre"
If Rhino.IsLayer(Layer044) Then
Layer04 = "04-testi"
If Not Rhino.IsLayer(Layer04) Then
Rhino.Command "-_Loadscript 1_FileSetting_rh6"
Rhino.Command "-_Runscript 1_FileSetting_rh6"
End If
Rhino.ParentLayer Layer044, "04-testi"
Rhino.LayerPrintWidth Layer044, 0.1
Rhino.LayerPrintColor Layer044, RGB(0, 0, 0)
Rhino.Print "Il layer 044-misure finestre esiste"
Else
Rhino.AddLayer Layer044, RGB(0, 255, 255),,, "04-testi"
Rhino.LayerPrintWidth Layer044, 0.1
Rhino.LayerPrintColor Layer044, RGB(0, 0, 0)
Rhino.Print "Creato il layer 044-misure finestre"
End If
Rhino.CurrentLayer(Layer044)
Larredi = "05-arredi e infissi"
If Rhino.IsLayer(Larredi) Then
Rhino.LayerVisible Larredi, False
End If
'Inizio della routine per inserire i dati finestra
For NumFin = 1 To NF
DE = Rhino.GetObject("davanzale esterno ", 4)
DI = Rhino.GetObject("davanzale interno ", 4)
If Rhino.IsCurve(DE) Then
If Rhino.IsCurve(DI) Then
Rhino.Print "Davanzali selezionati"
End If
Else
Rhino.Print "Manca uno dei due ripetere il comando!"
Exit Sub
End If
Mde = Rhino.CurveMidPoint(DE)
Mdi = Rhino.CurveMidPoint(DI)
Ia = Array((Mde(0) - 0.1), (Mde(1)), (Mde(2)))
Ea = Array((Mde(0) + 0.5), (Mde(1)), (Mde(2)))
Asse = Rhino.AddLine(Ia, Ea)
' queste linee inseriscono i dati finestra
hfont = 0.12
Font = "Arial"
' prima la larghezza
Luce = Rhino.CurveLength(DI) * 100
InsLuce = Array((Mde(0) + 0.15), (Mde(1) + 0.02), (Mde(2)))
Larg = Rhino.AddText(Luce, InsLuce, hfont, Font)
' poi l'altezza
Alt = Rhino.GetString("Inserisci l'altezza in centimetri")
InsAlt = Array((Mde(0) + 0.15), (Mde(1) - 0.14), (Mde(2)))
Altz = Rhino.AddText(Alt, InsAlt, hfont, Font)
'Gli oggetti creati vengono orientati correttamente
DistRif = Rhino.Distance(Mde, Mdi)
RifOr = Array(Mde(0) - DistRif, Mde(1), Mde(2))
arrRif = Array(RifOr, Mde)
arrTar = Array(Mdi, Mde)
Rhino.OrientObject Asse, arrRif, arrTar
Rhino.OrientObject Larg, arrRif, arrTar
Rhino.OrientObject Altz, arrRif, arrTar
Next
Rhino.CurrentLayer(LCBase)
Rhino.LayerVisible Larredi, True
End Sub