# Description
Set section attributes to VisualArq and Rhino objects.
### Purpose
This script automates the process of assigning section attributes to objects and instance definitions in a Rhino and VisualArq model, based on configurations specified in a CSV file. It allows users to select a scale and apply section patterns, colors, and other attributes to objects by layer name.
### Prerequisites
- A CSV file (`section_properties.csv`) containing the necessary configuration details for scales, materials, and attributes (an example is available [[vaSetSectionAttributes#Example of section properties file|below]]).
- Rhino 7 and VisualArq 2 (quickly tested on VisualArq 3 and no major break identified).
### Process Overview
1. **Load Configuration**
- The script reads the CSV file to retrieve configurations for section patterns, colors, and other attributes.
- Scales and their associated material configurations are stored in a dictionary for later use.
2. **User Scale Selection**
- The script dynamically lists all scales found in the CSV file.
- Users select a scale via a dialog box in Rhino.
3. **Generate Hatch Pattern Dictionary**
- The script generates a dictionary mapping hatch pattern names to their indices for quick lookup.
4. **Apply Section Attributes**
- For each material in the selected scale configuration:
- Objects and instance definitions matching the material’s name in their layer name are identified.
- Section patterns, colors, line weights, and other attributes are applied to these objects.
5. **Save Scale to User Text**
- The selected scale is saved in the document’s user text (this is used in the [[Print2]] script to inform the user of the current section scale applied before printing).
### CSV File Format
The CSV file should have the following columns:
- **Scale**: The scale category (e.g., `1:50`).
- **Material**: The material name.
- **Pattern Name**: The name of the section pattern to apply.
- **Pattern Scale**: The scale of the pattern.
- **Pattern Angle**: The rotation angle of the pattern (in radians or as `pi` expressions).
- **Line Weight**: The line weight to apply to the section.
- **Color Source**: Specifies the source for the pattern color (`object`, `parent`, `layer`, or `display`).
- **Color**: The RGB color values (e.g., `[255, 0, 0]`).
> [!warning] Warning
> Keep in mind that the script reads the csv line after line, and tries to match the object's layer name with the string from the **Material** column. This means that if you have two entries like `NaturalStone` and `Stone` in the CSV, for which you would like to apply different section attributes, you should place the `Stone` entry **before** the `NaturalStone` entry.
>
> Best practice is to always place **more generic material names** (like `Stone`) **before more specific ones** (like `NaturalStone`) in the CSV file. This ensures that specific materials are overriden **after** generic materials were applied.
>
> For more info about the `in` keyword, used to compare layer names and material names: [see the documentation of the `in` keyword](https://www.w3schools.com/python/ref_keyword_in.asp).
### How to Run the Script
1. Place the script in a Python file, stored wherever fits the best for you.
2. Ensure `section_properties.csv` is in the same directory or specify its path in the `set_print_info` function.
3. Execute the script in Rhino via the Python editor or the command line.
### Notes
- The script includes error handling for invalid angles, color sources, and color values.
- The script applies section attributes for objects in nested blocks.
- Objects with specific naming conventions (e.g., `*Plan view`, `*Section view`) are excluded from processing for faster run.
- Default values are provided for color and pattern attributes in case of parsing errors.
### Limitations
- The script assumes consistent layer naming conventions that include material names (see logic described in [[Layer tree]]).
- Only objects and instance definitions are processed.
> [!info] See also
> [[Layer tree]] logic.
> [[Print2]] script.
> [!info] Author and license
> **Script by MLAV.LAND, licensed under the GNU GPL 3 License**.
# Code
```python
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")
```
# Example of section properties file
> [!info] Info
> The following example file works with our french-named [[Layer tree]]. It is here for reference and should be updated according to your preferred layer logic.
```csv
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]"
```