# 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]" ```