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 below). - Rhino 7 and VisualArq 2 (quickly tested on VisualArq 3 and no major break identified).
Process Overview
-
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.
-
User Scale Selection
- The script dynamically lists all scales found in the CSV file.
- Users select a scale via a dialog box in Rhino.
-
Generate Hatch Pattern Dictionary
- The script generates a dictionary mapping hatch pattern names to their indices for quick lookup.
-
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.
- For each material in the selected scale configuration:
-
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
piexpressions). - Line Weight: The line weight to apply to the section.
- Color Source: Specifies the source for the pattern color (
object,parent,layer, ordisplay). - Color: The RGB color values (e.g.,
[255, 0, 0]).
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
NaturalStoneandStonein the CSV, for which you would like to apply different section attributes, you should place theStoneentry before theNaturalStoneentry.Best practice is to always place more generic material names (like
Stone) before more specific ones (likeNaturalStone) in the CSV file. This ensures that specific materials are overriden after generic materials were applied.For more info about the
inkeyword, used to compare layer names and material names: see the documentation of theinkeyword.
How to Run the Script
- Place the script in a Python file, stored wherever fits the best for you.
- Ensure
section_properties.csvis in the same directory or specify its path in theset_print_infofunction. - 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.
See also
Layer tree logic. Print2 script.
Author and license
Script by MLAV.LAND, licensed under the GNU GPL 3 License.
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")Example of section properties file
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.
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]"