CGA Rule CityEngine_Essential_Skills_Training

278
0
01-21-2022 01:20 PM
JéssicaDalCol
New Contributor

Parece que há erros no projeto City Engine Essential Skills Training/Essential_street.cga. Ao importar o arquivo envReports. O código que está sendo importado (Environmental Reporting.cga) contém erros. Alguem pode me ajudar?

/**
* Arquivo: Environmental Reporting.cga
* Criado: 23 de abril de 2013 20:13:09 GMT
* Autor: Esri
*/

versão "2014.0"


import envSettings: "3D_City_Design_Rules/User Settings/Environment Settings.cga"


# Constantes para diferentes tipos de materiais usados ​​em relatórios/exibição de superfícies permeáveis.
const materialUnderTrees = "Bosques"
const materialLawn = "Pasto, Grama,
Fazenda" const materialPerviousPavement = "Pavimento Permeável"
const materialPavementAndRooftops = "Telhados, Pavimento"

 


# Cálculo de vazão de pico (Q):
# Q = C * i * A / 100 (/100 é para obter a conversão de unidade correta para m3)
#
# Q = vazão de pico (escoamento) em pés cúbicos por segundo (m3/h) #
# C = coeficiente de escoamento (sem unidades)
# i = intensidade média de chuva em polegadas por hora (cm/h)
# A = área da bacia em metros^2 (m2)


colorByPerviousMaterial(materialType) =
caso materialType == materialUnderTrees: envSettings.perviousThematicWoodlands
caso materialType == materialLawn: envSettings.perviousThematicPastureGrassFarmland
caso materialType == materialPavementAndRooftops: envSettings.perviousThematicRooftopsAndPavement
caso materialType == materialPerviousPavement:
envSettings.perviousThematicPerviousPavement


@Inclinação do atributo oculto
= 0

# Importe esta regra para a regra que requer relatório,
# e então envie uma cópia da geometria para esta regra.
# Se várias geometrias vierem aqui da mesma forma inicial, então
# ainda funcionará - todas essas geometrias reportam cumulativamente à mesma forma inicial.

ReportPeakDischarge(materialType) -->
# Alinha o escopo do objeto ao sistema de coordenadas mundiais yUp.
alignScopeToAxes(y)
# Salva a inclinação da geometria antes de projetar no plano xz para cálculo da área de chuva.
# Nota: Não tenho certeza se maxSlope é a melhor maneira de obter inclinação. Precisamos de inclinação média, mas provavelmente não é aplicável, pois a maioria das formas em CE são planares ou próximas a ela.
set(slope, geometry.angle(maxSlope))
# Projete a geometria no plano xz, escalando para zero na direção y.
s('1,0,'1)
ReportPeakDischargePart2(materialType)

ReportPeakDischargePart2(materialType) -->
case errors(materialType) :
# Remover texturas, colori-las de vermelho, mover para cima para que apareça visivelmente, imprimir aviso no painel CGA, caso estejam abertos.
deleteUV(0)
color(1,0,0)
t(0,1,0)
print("AVISO: Erro no relatório de descarga de pico (Environmental Reporting.cga)")
else :
# As operações de relatório anexarão esses relatórios à forma que chamou essa regra.
report("Site Conditions, Stormwater Runoff (m3/hr)", peakDischarge(geometry.area, slope, materialType, envSettings.Soil_Group))
# Perde a geometria em questão, pois não faz parte do modelo final.
NADA

# Funções de suporte ----------------------


peakDischarge(area, slopeInDegrees, materialType, soloGroup) =
runoffCoeficiente(slopeInDegrees / 90, materialType, soloGroup) * envSettings.Design_Storm_Rainfall * area


# Nota: Este mecanismo de erro pode ser desenvolvido para verificar as outras entradas,
# mas estamos colocando este agora, pois será a única entrada especificada pelo usuário.
errors(materialType) = !materialTypeMatch(materialType)

# Nota: Pode ser necessário criar uma função para mapear nomes mais fáceis de usar nessas quatro categorias.
materialTypeMatch(materialType) =
materialType == materialUnderTrees ||
materialType == materialLawn ||
materialType == materialPavementAndRooftops ||
materialType == materialPerviousPavement

# Nota: Isso resultará em um número negativo muito grande se o grupo de solo não for especificado corretamente,
# para sinalizar o erro desviando os resultados da estimativa.
runoffCoeficiente(slope, materialType, soloGroup) =
caso inclinação < 0,02 :
caso materialType == materialUnderTrees :
caso soloGroup == "A" : 0,1
caso soloGroup == "B" : 0,15
caso soloGroup == "C" : 0,15
caso soloGroup = = "D" : 0.2
else : -100000000
case materialType == materialLawn :
case soloGroup == "A" : 0,15
case soloGroup == "B" : 0,2
case soloGroup == "C" : 0,2
case soloGroup == "D" : 0,25
mais:

case materialType == materialPerviousPavement :
case soloGroup == "A" : 0,75
case soloGroup == "B" : 0,95
case soloGroup == "C" : 0,9
case soloGroup == "D" : 0,95
else: -100000000
else: -100000000
case slope >= 0,02 && slope < 0,07 :
case materialType == materialUnderTrees :
case soloGroup == "A" : 0,15
case soloGroup == "B" : 0,2
case soloGroup == "C" : 0,2
case soloGroup == "D" : 0,25
else : -100000000
case materialType == materialLawn :
case soloGroup == "A" : 0,2
case soloGroup == "B" : 0,25
case soloGroup == "C" : 0.25
case soloGroup == "D" : 0.3
else : -100000000
case materialType == materialPavementAndRooftops : 0,95
case materialType == materialPerviousPavement :
case soloGroup == "A" : 0,8
case soloGroup == "B" : 0,95
case soloGroup == "C" : 0,9
case soloGroup == "D" : 0,95
else : -100000000
else : -100000000
else :
case materialType == materialUnderTrees :
case soloGroup == "A" : 0,2
case soloGroup == "B" : 0,25
case soloGroup == "C" : 0,25
case soloGroup == "D" : 0.3
else : -100000000
case materialType == materialLawn :
case soloGroup == "A" : 0,25
case soloGroup == "B" : 0,35
case soloGroup == "C" :0,3
case soloGroup == "D" : 0,4
else : -100000000
case materialType == materialPavementAndRooftops : 0,95
case materialType == materialPerviousPavement :
case soloGroup == "A" : 0,85
case soloGroup == "B" : 0,95
case soloGroup == "C" : 0,9
case soloGroup == "D" : 0,95
else : -100000000
else : -100000000


########################################### ###################
# Cortar e Preencher

 

calcularCutAndFillCost(cutVolume, fillVolume) =
(cutVolume * envSettings.Grading_Cut_Cost__m3) + (fillVolume * envSettings.Grading_Fill_Cost__m3) + calcularCutAndFillMaterialCost(cutVolume, fillVolume)

calcularCutAndFillMaterialCost(cutVolume, fillVolume) = caso
cutVolume == 0 && fillVolume == 0
== 0 && fillVolume > 0:
# Se estiver enchendo, mas não cortando.
fillVolume * (envSettings.Fill_Material_Input_Cost__m3)
case cutVolume > 0 && fillVolume == 0:
# Se cortando, mas não preenchendo.
cutVolume * envSettings.Cut_Material_Disposal_Cost__m3
case cutVolume > fillVolume:
# Se cortar mais que encher.
(fillVolume * envSettings.Cut_Material_Repurpose_Cost__m3) + ((cutVolume - fillVolume) * envSettings.Cut_Material_Disposal_Cost__m3)
case cutVolume < fillVolume:
# Se cortar menos que encher.
(cutVolume * envSettings.Cut_Material_Repurpose_Cost__m3) + ((fillVolume - cutVolume) * envSettings.Fill_Material_Input_Cost__m3)
else: 0

 

 

 

#------------------------------------------
# Código não funciona:

Disable sejam CGAWarning -->
# Esta regra existe apenas para impedir que CGAs não utilizadas" de "regras não utilizadas" de avisos exibidos; caso contrário, não tem uso.
# As linhas abaixo estão todas identificadas como não utilizadas.
ReportPeakDischarge("")

 

 
 
0 Kudos
0 Replies