Description
Paramétrer les attributs de section pour les objets VisualArq et Rhino à partir de leur calque.
Le script suivant fonctionne sur :
- Rhino pour Windows ;
- Il requiert l’installation du plugin VisualArq.
Objectif
Ce script automatise le processus de paramétrage des attributs de section aux objets et aux définitions d’instance dans un modèle Rhino et VisualArq, sur la base des configurations spécifiées dans un fichier .csv
. Il permet de sélectionner une échelle et d’appliquer des motifs de section, des couleurs et d’autres attributs aux objets par nom de calque.
Prérequis
- Un fichier
.csv
(section_properties.csv
) contenant les détails de configuration nécessaires pour les échelles, les matériaux et les attributs (un exemple est disponible ci-dessous). - Rhino 7 et VisualArq 2 (testé rapidement sur Rhino 8 et VisualArq 3, aucun bug majeur n’a été identifié).
Processus
-
Chargement de la configuration
- Le script lit le fichier
.csv
pour récupérer les configurations des motifs de section, des couleurs et d’autres attributs. - Les échelles et les configurations des matériaux associés sont stockées dans un dictionnaire en vue d’une utilisation ultérieure.
- Le script lit le fichier
-
Sélection de l’échelle par l’utilisateur·ice
- Le script dresse une liste dynamique de toutes les échelles trouvées dans le fichier
.csv
. - L’utilisateur·ice sélectionne une échelle via une boîte de dialogue dans Rhino.
- Le script dresse une liste dynamique de toutes les échelles trouvées dans le fichier
-
Génération d’un dictionnaire de motifs de hachures
- Le script génère un dictionnaire qui associe les noms des motifs de hachures à leurs indices pour une recherche rapide.
-
Paramétrage des attributs de section
- Pour chaque matériau dans l’échelle sélectionnée :
- Les objets et les définitions d’instance correspondant au nom du matériau dans leur nom de calque sont identifiés.
- Les motifs de section, les couleurs, les épaisseurs de ligne sont appliqués à ces objets.
- Pour chaque matériau dans l’échelle sélectionnée :
-
Enregistrement de l’échelle dans le document user text
- L’échelle sélectionnée est enregistrée dans le document user text (elle est utilisée dans le script Print2 pour informer l’utilisateur·ice de l’échelle de section appliquée avant l’impression).
Format du fichier .csv
Le fichier .csv
doit comporter les colonnes suivantes·:
- Scale : La catégorie d’échelle (par exemple, 1:50).
- Material : Le nom du matériau.
- Pattern Name : Le nom du hatch de section à appliquer.
- Pattern Scale : L’échelle du hatch.
- Pattern Angle : L’angle de rotation du hatch (en radians ou sous forme d’expressions
pi
). - Epaisseur de la ligne : L’épaisseur de la ligne à appliquer à la section.
- Color Source : Spécifie la source de la couleur du hatch (
object
,parent
,layer
, oudisplay
). - Color : Les valeurs de couleur RVB (par exemple,
[255, 0, 0]
).
Attention
Le script lit le fichier
.csv
ligne après ligne, et essaie de faire correspondre le nom du calque de l’objet avec la string de la colonneMaterial
. Cela signifie que si vous avez deux entrées commeNaturalStone
etStone
dans le CSV, pour lesquelles vous souhaitez appliquer des attributs de section différents, vous devez placer l’entréeStone
avant l’entréeNaturalStone
.La meilleure pratique consiste à toujours placer les noms de matériaux plus génériques (comme
Stone
) avant les noms plus spécifiques (commeNaturalStone
) dans le fichier CSV. Cela permet de s’assurer que les matériaux spécifiques sont remplacés après que les matériaux génériques ont été appliqués.Pour plus d’informations sur le mot-clé
in
, utilisé pour comparer les noms de couches et les noms de matériaux : voir la documentation du mot-cléin
.
Comment exécuter le script
- Placez le script dans un fichier Python, stocké à l’endroit qui vous convient le mieux.
- Assurez-vous que
section_properties.csv
est dans le même répertoire ou spécifiez son chemin dans la fonctionset_print_info
. - Exécutez le script dans Rhino via la commande
RunPythonScript
, ou un alias dédié.
Notes
- Le script intègre une gestion des erreurs pour les angles, les sources de couleur et les valeurs de couleur invalides.
- Le script applique les attributs de section pour les objets dans les blocs imbriqués dans d’autres blocs.
- Les objets avec des conventions de nommage spécifiques (par exemple,
*Plan view
,*Section view
) sont exclus du traitement pour une exécution plus rapide. - Des valeurs par défaut sont fournies pour les attributs de couleur et de motif en cas d’erreurs d’analyse.
Limites
- Le script suppose que les conventions de nommage des couches sont cohérentes et incluent les noms des matériaux (voir la logique décrite dans Hiérarchie de modélisation).
- Seuls les objets et les définitions d’instances sont traités.
Voir aussi le script Print2 et la logique de Hiérarchie de modélisation.
Script par MLAV.LAND, sous licence GNU GPL 3.
Code
import rhinoscriptsyntax as rs
import scriptcontext as sc
import math
import clr
import csv
clr.AddReference("VisualARQ.Script")
import VisualARQ.Script as va
pi = math.pi # init pi value
# Define the section pattern color source dictionary
section_pattern_color_source = {
"object": 0,
"parent": 1,
"layer": 2,
"display": 3
}
# Function to interpret pattern angles (e.g., pi/4 -> radians)
def parse_pattern_angle(angle_str):
try:
if "pi" in angle_str:
return eval(angle_str.replace("pi", str(pi)))
return float(angle_str)
except Exception as e:
print("Error parsing pattern angle '{}': {}".format(angle_str, e))
return 0.0
# Function to parse the color source from the CSV
def parse_color_source(color_source_str):
try:
return section_pattern_color_source[color_source_str]
except Exception as e:
print("Error parsing color source '{}': {}".format(color_source_str, e))
return 3
# Function to parse color value
def parse_color_value(color_str):
try:
# Remove any extra quotes around the color string
color_str = color_str.strip('"')
return eval(color_str) # Convert the string representation of the list into an actual list
except Exception as e:
print("Error parsing color value '{}': {}".format(color_str, e))
return [255, 255, 255] # Default to white on failure
def read_scale_configs(csv_file):
scale_configs = {}
with open(csv_file, 'r') as file:
reader = csv.DictReader(file)
for row in reader:
scale = row['Scale']
if scale not in scale_configs:
scale_configs[scale] = []
scale_configs[scale].append({
'Scale': row['Scale'],
'Material': row['Material'],
'Pattern Name': row['Pattern Name'],
'Pattern Scale': float(row['Pattern Scale']),
'Pattern Angle': parse_pattern_angle(row['Pattern Angle']),
'Line Weight': float(row['Line Weight']),
'Color Source': parse_color_source(row['Color Source']),
'Color': parse_color_value(row['Color'])
})
return scale_configs
# Function to gather all unique scale values from the CSV
def get_scales_from_csv(csv_file):
scales = set() # Use a set to avoid duplicates
with open(csv_file, 'r') as file:
reader = csv.DictReader(file)
for row in reader:
scales.add(row['Scale']) # Add each scale value to the set
return sorted(scales) # Return sorted scales for consistent display
# Function to apply section attributes based on the scale and material
def apply_section_attributes_by_layer_name(material_name, pattern_name, pattern_scale, pattern_angle, line_weight, section_pattern_color_source, color, hatch_dict):
rs.EnableRedraw(False)
selected_objs = []
all_objs = rs.AllObjects()
if all_objs:
for obj in all_objs:
obj_layer = rs.ObjectLayer(obj)
if material_name in obj_layer:
selected_objs.append(obj)
if selected_objs:
for obj in selected_objs:
pattern_index = hatch_dict.get(pattern_name, -1) # Default to -1 if pattern not found
va.SetObjectSectionPattern(obj, pattern_index, pattern_angle, pattern_scale)
va.SetObjectSectionPlotWeight(obj, line_weight)
# Handle Section Pattern Color Source
try:
if rs.ObjectPrintColorSource(obj) != 1:
va.SetObjectSectionPatternColorSource(
obj, va.SectionPatternColorSource(section_pattern_color_source)
)
else:
va.SetObjectSectionPatternColorSource(obj, va.SectionPatternColorSource(3))
except Exception as e:
print("Error setting SectionPatternColorSource for object: {}".format(e))
# Handle color assignment
if section_pattern_color_source != 3 and rs.ObjectPrintColorSource(obj) != 1:
section_color = rs.CreateColor(color)
va.SetObjectSectionPatternColor(obj, section_color)
# Process instance definitions
idefs = sc.doc.InstanceDefinitions
for idef in idefs:
if idef.Name:
if (
"*Plan view" not in idef.Name
and "*Section view" not in idef.Name
and "*Space" not in idef.Name
and "*Section" not in idef.Name
and "*Table" not in idef.Name
):
idef_objects = idef.GetObjects()
for obj in idef_objects:
obj_id = obj.Id
obj_layer = rs.ObjectLayer(obj)
if material_name in obj_layer:
pattern_index = hatch_dict.get(pattern_name, -1) # Default to -1 if pattern not found
va.SetObjectSectionPattern(obj_id, pattern_index, pattern_angle, pattern_scale)
va.SetObjectSectionPlotWeight(obj_id, line_weight)
# Handle Section Pattern Color Source for instance definitions
try:
if rs.ObjectPrintColorSource(obj) != 1:
va.SetObjectSectionPatternColorSource(
obj_id, va.SectionPatternColorSource(section_pattern_color_source)
)
else:
va.SetObjectSectionPatternColorSource(obj_id, va.SectionPatternColorSource(3))
except Exception as e:
print("Error setting SectionPatternColorSource for instance object: {}".format(e))
# Handle color assignment for instance definitions
if section_pattern_color_source != 3 and rs.ObjectPrintColorSource(obj) != 1:
section_color = rs.CreateColor(color)
va.SetObjectSectionPatternColor(obj_id, section_color)
print(material_name)
def set_user_text(scale): # save scale in document user text
rs.SetDocumentUserText("printscale", scale)
print("Scale '{}' saved in document user text".format(scale))
def end_message():
print("All section attributes applied :)")
def set_print_info(csv_file):
scale_configs = read_scale_configs(csv_file) # Read and group rows by scale
scales = sorted(scale_configs.keys())
selected_scale = rs.ListBox(scales, "Pick a scale") # Prompt user to select a scale
if selected_scale:
hatch_dict = generate_hatch_patterns_dict()
# Process rows for the selected scale in CSV order
for config in scale_configs[selected_scale]:
apply_section_attributes_by_layer_name(
config['Material'],
config['Pattern Name'],
config['Pattern Scale'],
config['Pattern Angle'],
config['Line Weight'],
config['Color Source'],
config['Color'],
hatch_dict
)
set_user_text(selected_scale)
end_message()
def generate_hatch_patterns_dict():
hatch_patterns = rs.HatchPatternNames()
hatch_dict = {name: index for index, name in enumerate(hatch_patterns)}
return hatch_dict
if __name__ == "__main__":
set_print_info("section_properties.csv")
Exemple de fichier de propriétés de section
Le fichier d'exemple suivant fonctionne avec la logique décrite dans Hiérarchie de modélisation. Il est ici à titre de référence et peut être mis à jour en fonction de la logique des calques propre à votre pratique.
Scale,Material,Pattern Name,Pattern Scale,Pattern Angle,Line Weight,Color Source,Color
Patterned:1/20,Beton,HatchDash,14.00,pi/4,0.360,display,[]
Patterned:1/20,Isolant,Grid,14.00,pi/4,0.135,display,[]
Patterned:1/20,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Patterned:1/20,IsolantPaille,Plus,3.50,pi/4,0.135,display,[]
Patterned:1/20,Acoustique,Grid,7.00,pi/4,0.135,display,[]
Patterned:1/20,Dallage,HatchDash,7.00,pi/4,0.150,display,[]
Patterned:1/20,Chape,HatchDash,7.00,pi/4,0.150,display,[]
Patterned:1/20,Lino,Solid,1.00,0,0.135,display,[]
Patterned:1/20,SolSouple,Solid,1.00,0,0.135,display,[]
Patterned:1/20,Carrelage,Solid,1.00,0,0.135,display,[]
Patterned:1/20,Acier,Solid,1.00,0,0.075,display,[]
Patterned:1/20,Bois,Single,0.50,-pi/4,0.135,display,[]
Patterned:1/20,Brique,HatchDash,14.00,pi/4,0.360,display,[]
Patterned:1/20,Structure-brique,HatchDash,7.00,-pi/4,0.360,display,[]
Patterned:1/20,Pierre-moellons,HatchDash,14.00,pi/4,0.360,display,[]
Patterned:1/20,Pierre-taille,HatchDash,7.00,-pi/4,0.225,display,[]
Patterned:1/20,Pierre,HatchDash,7.00,-pi/4,0.225,display,[]
Patterned:1/20,Enduit-blanc,Single,0.70,pi/4,0.225,display,[]
Patterned:1/20,Enduit,Single,0.70,pi/4,0.225,display,[]
Patterned:1/20,Fermacell,Single,1.40,pi/4,0.075,display,[]
Patterned:1/20,Placoplatre,Single,1.40,pi/4,0.075,display,[]
Patterned:1/20,Tuile,Solid,1.00,0,0.150,object,"[150,150,150]"
Patterned:1/20,Zinc,Solid,1.00,0,0.135,display,[]
Patterned:1/20,Serrurerie,Solid,1.00,0,0.135,object,"[100,100,100]"
Patterned:1/20,Fenetre::Bois,Solid,1.00,0,0.215,object,"[100,100,100]"
Patterned:1/20,Fenetre::Alu,Solid,1.00,0,0.215,object,"[100,100,100]"
Patterned:1/20,Fenetre::Metal,Solid,1.00,0,0.215,object,"[100,100,100]"
Patterned:1/20,Porte::Bois,Solid,1.00,0,0.215,object,"[100,100,100]"
Patterned:1/20,Porte::Alu,Solid,1.00,0,0.215,object,"[100,100,100]"
Patterned:1/20,Verre,Solid,1.00,0,0.075,display,[]
Patterned:1/20,Murs::Verre,Solid,1.00,0,0.075,object,"[200,200,200]"
Patterned:1/20,BardageAcierIsole,Grid,14.00,pi/4,0.135,display,[]
Patterned:1/20,Toile,Solid,1.00,0,0.075,display,[]
Patterned:1/50,Beton,HatchDash,20.00,pi/4,0.225,display,[]
Patterned:1/50,Isolant,Grid,15.00,pi/4,0.135,display,[]
Patterned:1/50,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Patterned:1/50,IsolantPaille,Plus,3.00,pi/4,0.135,display,[]
Patterned:1/50,Acoustique,Grid,10.00,pi/4,0.135,display,[]
Patterned:1/50,Dallage,HatchDash,10.00,pi/4,0.150,display,[]
Patterned:1/50,Chape,HatchDash,10.00,pi/4,0.150,display,[]
Patterned:1/50,Lino,Solid,1.00,0,0.135,display,[]
Patterned:1/50,SolSouple,Solid,1.00,0,0.135,display,[]
Patterned:1/50,Carrelage,Solid,1.00,0,0.135,display,[]
Patterned:1/50,Acier,Solid,1.00,0,0.075,display,[]
Patterned:1/50,Bois,Single,2.00,-pi/4,0.135,display,[]
Patterned:1/50,Brique,HatchDash,20.00,pi/4,0.225,display,[]
Patterned:1/50,Structure-brique,HatchDash,10.00,-pi/4,0.225,display,[]
Patterned:1/50,Pierre-moellons,HatchDash,20.00,pi/4,0.225,display,[]
Patterned:1/50,Pierre-taille,HatchDash,10.00,-pi/4,0.225,display,[]
Patterned:1/50,Pierre,HatchDash,10.00,-pi/4,0.225,display,[]
Patterned:1/50,Enduit-blanc,Single,1.00,pi/4,0.135,object,"[180,180,180]"
Patterned:1/50,Enduit,Single,1.00,pi/4,0.135,object,"[180,180,180]"
Patterned:1/50,Fermacell,Single,2.00,pi/4,0.075,display,[]
Patterned:1/50,Placoplatre,Single,2.00,pi/4,0.075,display,[]
Patterned:1/50,Tuile,Solid,1.00,0,0.150,object,"[150,150,150]"
Patterned:1/50,Zinc,Solid,1.00,0,0.135,display,[]
Patterned:1/50,Serrurerie,Solid,1.00,0,0.075,object,"[200,200,200]"
Patterned:1/50,Fenetre::Bois,Solid,1.00,0,0.135,object,"[200,200,200]"
Patterned:1/50,Fenetre::Alu,Solid,1.00,0,0.135,object,"[200,200,200]"
Patterned:1/50,Fenetre::Metal,Solid,1.00,0,0.135,object,"[200,200,200]"
Patterned:1/50,Porte::Bois,Solid,1.00,0,0.135,object,"[200,200,200]"
Patterned:1/50,Porte::Alu,Solid,1.00,0,0.135,object,"[200,200,200]"
Patterned:1/50,Verre,Solid,1.00,0,0.075,display,[]
Patterned:1/50,Murs::Verre,Solid,1.00,0,0.075,object,"[250,250,250]"
Patterned:1/50,BardageAcierIsole,Grid,15.00,pi/4,0.135,display,[]
Patterned:1/50,Toile,Solid,1.00,0,0.075,display,[]
Patterned:1/100,Beton,HatchDash,40.00,pi/4,0.225,display,[]
Patterned:1/100,Isolant,Grid,30.00,pi/4,0.075,display,[]
Patterned:1/100,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Patterned:1/100,IsolantPaille,Plus,6.00,pi/4,0.075,display,[]
Patterned:1/100,Acoustique,Grid,20.00,pi/4,0.075,display,[]
Patterned:1/100,Dallage,HatchDash,20.00,pi/4,0.150,display,[]
Patterned:1/100,Chape,HatchDash,20.00,pi/4,0.150,display,[]
Patterned:1/100,Lino,Solid,1.00,0,0.015,display,[]
Patterned:1/100,SolSouple,Solid,1.00,0,0.015,display,[]
Patterned:1/100,Carrelage,Solid,1.00,0,0.015,display,[]
Patterned:1/100,Acier,Solid,1.00,0,0.015,display,[]
Patterned:1/100,Bois,Single,4.00,-pi/4,0.135,display,[]
Patterned:1/100,Brique,HatchDash,40.00,pi/4,0.225,display,[]
Patterned:1/100,Structure-brique,HatchDash,20.00,-pi/4,0.225,display,[]
Patterned:1/100,Pierre-moellons,HatchDash,40.00,pi/4,0.225,display,[]
Patterned:1/100,Pierre-taille,HatchDash,20.00,-pi/4,0.225,display,[]
Patterned:1/100,Pierre,HatchDash,20.00,-pi/4,0.225,display,[]
Patterned:1/100,Enduit-blanc,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Enduit,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Fermacell,Single,4.00,pi/4,0.075,display,[]
Patterned:1/100,Placoplatre,Single,4.00,pi/4,0.075,display,[]
Patterned:1/100,Tuile,Solid,1.00,0,0.135,object,"[150,150,150]"
Patterned:1/100,Zinc,Solid,1.00,0,0.075,display,[]
Patterned:1/100,Serrurerie,Solid,1.00,0,0.015,object,"[255,255,255]"
Patterned:1/100,Fenetre::Bois,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Fenetre::Alu,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Fenetre::Metal,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Porte::Bois,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Porte::Alu,Solid,1.00,0,0.135,object,"[255,255,255]"
Patterned:1/100,Verre,Solid,1.00,0,0.015,display,[]
Patterned:1/100,Murs::Verre,Solid,1.00,0,0.015,object,"[250,250,250]"
Patterned:1/100,BardageAcierIsole,Grid,30.00,pi/4,0.075,display,[]
Patterned:1/100,Toile,Solid,1.00,0,0.015,display,[]
Patterned:1/200,Beton,HatchDash,80.00,pi/4,0.300,display,[]
Patterned:1/200,Isolant,Grid,40.00,pi/4,0.100,display,[]
Patterned:1/200,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Patterned:1/200,IsolantPaille,Plus,12.00,pi/4,0.100,display,[]
Patterned:1/200,Acoustique,Grid,60.00,pi/4,0.100,display,[]
Patterned:1/200,Dallage,HatchDash,40.00,pi/4,0.200,display,[]
Patterned:1/200,Chape,HatchDash,40.00,pi/4,0.200,display,[]
Patterned:1/200,Lino,Solid,1.00,0,0.020,display,[]
Patterned:1/200,SolSouple,Solid,1.00,0,0.020,display,[]
Patterned:1/200,Carrelage,Solid,1.00,0,0.020,display,[]
Patterned:1/200,Acier,Solid,1.00,0,0.020,display,[]
Patterned:1/200,Bois,Single,6.00,-pi/4,0.180,display,[]
Patterned:1/200,Brique,HatchDash,80.00,pi/4,0.300,display,[]
Patterned:1/200,Structure-brique,HatchDash,40.00,-pi/4,0.300,display,[]
Patterned:1/200,Pierre-moellons,HatchDash,80.00,pi/4,0.300,display,[]
Patterned:1/200,Pierre-taille,HatchDash,40.00,-pi/4,0.300,display,[]
Patterned:1/200,Pierre,HatchDash,40.00,-pi/4,0.300,display,[]
Patterned:1/200,Enduit-blanc,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Enduit,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Fermacell,Single,8.00,pi/4,0.100,display,[]
Patterned:1/200,Placoplatre,Single,8.00,pi/4,0.100,display,[]
Patterned:1/200,Tuile,Solid,1.00,0,0.180,object,"[150,150,150]"
Patterned:1/200,Zinc,Solid,1.00,0,0.100,display,[]
Patterned:1/200,Serrurerie,Solid,1.00,0,0.020,object,"[255,255,255]"
Patterned:1/200,Fenetre::Bois,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Fenetre::Alu,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Fenetre::Metal,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Porte::Bois,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Porte::Alu,Solid,1.00,0,0.180,object,"[255,255,255]"
Patterned:1/200,Verre,Solid,1.00,0,0.020,display,[]
Patterned:1/200,Murs::Verre,Solid,1.00,0,0.020,object,"[250,250,250]"
Patterned:1/200,BardageAcierIsole,Grid,40.00,pi/4,0.100,display,[]
Patterned:1/200,Toile,Solid,1.00,0,0.020,display,[]
Solid:1/20,Beton,Solid,1.00,0,0.360,object,"[150,150,150]"
Solid:1/20,Isolant,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Solid:1/20,IsolantPaille,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Acoustique,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Dallage,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/20,Chape,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/20,Lino,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,SolSouple,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Carrelage,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Acier,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/20,Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Brique,Solid,1.00,0,0.360,object,"[150,150,150]"
Solid:1/20,Structure-brique,Solid,1.00,0,0.360,object,"[150,150,150]"
Solid:1/20,Pierre-moellons,Solid,1.00,0,0.360,object,"[150,150,150]"
Solid:1/20,Pierre-taille,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/20,Pierre,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/20,Enduit-blanc,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/20,Enduit,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/20,Fermacell,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/20,Placoplatre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/20,Tuile,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/20,Zinc,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Serrurerie,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Fenetre::Bois,Solid,1.00,0,0.215,object,"[150,150,150]"
Solid:1/20,Fenetre::Alu,Solid,1.00,0,0.215,object,"[150,150,150]"
Solid:1/20,Fenetre::Metal,Solid,1.00,0,0.215,object,"[150,150,150]"
Solid:1/20,Porte::Bois,Solid,1.00,0,0.215,object,"[150,150,150]"
Solid:1/20,Porte::Alu,Solid,1.00,0,0.215,object,"[150,150,150]"
Solid:1/20,Verre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/20,Murs::Verre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/20,BardageAcierIsole,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/20,Toile,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,Beton,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/50,Isolant,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Solid:1/50,IsolantPaille,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Acoustique,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Dallage,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/50,Chape,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/50,Lino,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,SolSouple,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Carrelage,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Acier,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Brique,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/50,Structure-brique,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/50,Pierre-moellons,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/50,Pierre-taille,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/50,Pierre,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/50,Enduit-blanc,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Enduit,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Fermacell,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,Placoplatre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,Tuile,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/50,Zinc,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Serrurerie,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,Fenetre::Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Fenetre::Alu,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Fenetre::Metal,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Porte::Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Porte::Alu,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Verre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,Murs::Verre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/50,BardageAcierIsole,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/50,Toile,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Beton,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/100,Isolant,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Solid:1/100,IsolantPaille,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Acoustique,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Dallage,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/100,Chape,Solid,1.00,0,0.150,object,"[150,150,150]"
Solid:1/100,Lino,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,SolSouple,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,Carrelage,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,Acier,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Brique,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/100,Structure-brique,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/100,Pierre-moellons,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/100,Pierre-taille,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/100,Pierre,Solid,1.00,0,0.225,object,"[150,150,150]"
Solid:1/100,Enduit-blanc,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Enduit,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Fermacell,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Placoplatre,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Tuile,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Zinc,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Serrurerie,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,Fenetre::Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Fenetre::Alu,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Fenetre::Metal,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Porte::Bois,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Porte::Alu,Solid,1.00,0,0.135,object,"[150,150,150]"
Solid:1/100,Verre,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,Murs::Verre,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/100,BardageAcierIsole,Solid,1.00,0,0.075,object,"[150,150,150]"
Solid:1/100,Toile,Solid,1.00,0,0.015,object,"[150,150,150]"
Solid:1/200,Beton,Solid,1.00,0,0.300,object,"[150,150,150]"
Solid:1/200,Isolant,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Air,Solid,1.00,0,0.000,object,"[255,255,255]"
Solid:1/200,IsolantPaille,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Acoustique,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Dallage,Solid,1.00,0,0.200,object,"[150,150,150]"
Solid:1/200,Chape,Solid,1.00,0,0.200,object,"[150,150,150]"
Solid:1/200,Lino,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,SolSouple,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,Carrelage,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,Acier,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,Bois,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Brique,Solid,1.00,0,0.300,object,"[150,150,150]"
Solid:1/200,Structure-brique,Solid,1.00,0,0.300,object,"[150,150,150]"
Solid:1/200,Pierre-moellons,Solid,1.00,0,0.300,object,"[150,150,150]"
Solid:1/200,Pierre-taille,Solid,1.00,0,0.300,object,"[150,150,150]"
Solid:1/200,Pierre,Solid,1.00,0,0.300,object,"[150,150,150]"
Solid:1/200,Enduit-blanc,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Enduit,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Fermacell,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Placoplatre,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Tuile,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Zinc,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Serrurerie,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,Fenetre::Bois,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Fenetre::Alu,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Fenetre::Metal,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Porte::Bois,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Porte::Alu,Solid,1.00,0,0.180,object,"[150,150,150]"
Solid:1/200,Verre,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,Murs::Verre,Solid,1.00,0,0.020,object,"[150,150,150]"
Solid:1/200,BardageAcierIsole,Solid,1.00,0,0.100,object,"[150,150,150]"
Solid:1/200,Toile,Solid,1.00,0,0.020,object,"[150,150,150]"