AutoCAD using Python¶
Libraries¶
In [ ]:
Copied!
%load_ext autoreload
%autoreload 2
import sys
# Directory of the python library
sys.path.append('c:\\Users\\Lab\\Dropbox\\Projects\\UniOfCam_digital_twin\\ucam-digital-twin')
from utils.constants import INPUT_DIR, OUTPUT_DIR, LAYERS_TO_KEEP, PROJECT_CRS
from floor import Floor
import logging
from pyautocad import Autocad
from pyproj import CRS
%load_ext autoreload
%autoreload 2
import sys
# Directory of the python library
sys.path.append('c:\\Users\\Lab\\Dropbox\\Projects\\UniOfCam_digital_twin\\ucam-digital-twin')
from utils.constants import INPUT_DIR, OUTPUT_DIR, LAYERS_TO_KEEP, PROJECT_CRS
from floor import Floor
import logging
from pyautocad import Autocad
from pyproj import CRS
Working Directory¶
In [ ]:
Copied!
site_name = "S-Sidgwick Site"
in_site_dir = INPUT_DIR / site_name
out_site_dir = OUTPUT_DIR / site_name
building_id = "S013"
building_name = "Raised Faculty Building"
floor_id = "00"
floor_name = "Ground Floor"
building_path = f"{building_id}-{building_name}"
floor_path = f"{building_id}-{floor_id}-MiCAD-{floor_name}"
in_building_dir = in_site_dir / building_path / "AsBuilt" / "MiCAD"
in_floor_path = in_building_dir / f"{floor_path}.dwg"
out_building_dir = out_site_dir / building_path
out_floor_path = out_building_dir / f"{building_id}-{floor_id}_geo.dwg"
out_building_dir.mkdir(parents=True, exist_ok=True)
site_name = "S-Sidgwick Site"
in_site_dir = INPUT_DIR / site_name
out_site_dir = OUTPUT_DIR / site_name
building_id = "S013"
building_name = "Raised Faculty Building"
floor_id = "00"
floor_name = "Ground Floor"
building_path = f"{building_id}-{building_name}"
floor_path = f"{building_id}-{floor_id}-MiCAD-{floor_name}"
in_building_dir = in_site_dir / building_path / "AsBuilt" / "MiCAD"
in_floor_path = in_building_dir / f"{floor_path}.dwg"
out_building_dir = out_site_dir / building_path
out_floor_path = out_building_dir / f"{building_id}-{floor_id}_geo.dwg"
out_building_dir.mkdir(parents=True, exist_ok=True)
In [3]:
Copied!
acad = Autocad(create_if_not_exists=True)
acad = Autocad(create_if_not_exists=True)
In [29]:
Copied!
example = Floor(in_floor_path, floor_id, floor_name, out_floor_path)
example = Floor(in_floor_path, floor_id, floor_name, out_floor_path)
In [14]:
Copied!
example.open_file(acad)
example.open_file(acad)
In [171]:
Copied!
layers = example.get_layer_names(acad)
layers
layers = example.get_layer_names(acad)
layers
Out[171]:
{'base_layers': ['0', 'AR-M-Area_Net_Assignable', 'AR-M-Area_Gross_Internal', 'ATT-AREA', 'ATT-NAME'], 'feature_layers': ['S013-01-AR-First Floor$0$AR-M-Wall', 'S013-01-AR-First Floor$0$AR-M-Window', 'S013-01-AR-First Floor$0$AR-M-Stairs', 'S013-01-AR-First Floor$0$AR-M-Doors', 'S013-01-AR-First Floor$0$AR-M-Lift', 'S013-01-AR-First Floor$0$AR-M-Wall_Partition'], 'delete_layers': ['DEFPOINTS', 'ATT-AUX', 'ZZ-T-Border_Text', 'ZZ-A-North_Point', 'ZZ-P-Viewport', 'S013-01-AR-First Floor$0$AR-M-Cladding', 'S013-01-AR-First Floor$0$AR-M-Wheelchair_Space', 'S013-01-AR-First Floor$0$GI-M-SVP', 'S013-01-AR-First Floor$0$AR-M-Sanitary_Fixtures', 'S013-01-AR-First Floor$0$GI-M-RWP', 'S013-01-AR-First Floor$0$AR-M-Floor', 'S013-01-AR-First Floor$0$ME-M-Equipment', 'S013-01-AR-First Floor$0$AR-M-Casing', 'S013-01-AR-First Floor$0$ZZ-T-Border_Text', 'S013-01-AR-First Floor$0$ZZ-A-North_Point', 'S013-01-AR-First Floor$0$ZZ-P-Viewport', 'S013-01-AR-First Floor$0$ZZ-T-UoC_Logo', 'S013-01-AR-First Floor$0$ZZ-P-Border', 'S013-01-AR-First Floor$0$ZZ-T-Text_Large', 'S013-01-AR-First Floor$0$ZZ-T-Text_Small', 'S013-01-AR-First Floor$0$AR-M-Structural_Steelwork', 'S013-01-AR-First Floor$0$AR-M-Furniture_Fixed', 'S013-01-AR-First Floor$0$AR-M-Furniture_Loose', 'S013-01-AR-First Floor$0$GI-M-Drainage_Foul_Drain', 'S013-01-AR-First Floor$0$AR-M-Structural_Beams', 'S013-01-AR-First Floor$0$ME-M-General_Services', 'ZZ-P-Border', 'ZZ-T-UoC_Logo']}
In [172]:
Copied!
example.rename_layers(acad, layers['feature_layers'], True)
example.rename_layers(acad, layers['feature_layers'], True)
Out[172]:
'-LAYER\nR\nS013-01-AR-First Floor$0$AR-M-Wall\nAR-M-Wall\n-LAYER\nR\nS013-01-AR-First Floor$0$AR-M-Window\nAR-M-Window\n-LAYER\nR\nS013-01-AR-First Floor$0$AR-M-Stairs\nAR-M-Stairs\n-LAYER\nR\nS013-01-AR-First Floor$0$AR-M-Doors\nAR-M-Doors\n-LAYER\nR\nS013-01-AR-First Floor$0$AR-M-Lift\nAR-M-Lift\n-LAYER\nR\nS013-01-AR-First Floor$0$AR-M-Wall_Partition\nAR-M-Wall_Partition\n\n'
In [173]:
Copied!
example.delete_layers(acad, layers['delete_layers'], True)
example.delete_layers(acad, layers['delete_layers'], True)
Out[173]:
'-LAYDEL\nN\nDEFPOINTS\nN\nATT-AUX\nN\nZZ-T-Border_Text\nN\nZZ-A-North_Point\nN\nZZ-P-Viewport\nN\nS013-01-AR-First Floor$0$AR-M-Cladding\nN\nS013-01-AR-First Floor$0$AR-M-Wheelchair_Space\nN\nS013-01-AR-First Floor$0$GI-M-SVP\nN\nS013-01-AR-First Floor$0$AR-M-Sanitary_Fixtures\nN\nS013-01-AR-First Floor$0$GI-M-RWP\nN\nS013-01-AR-First Floor$0$AR-M-Floor\nN\nS013-01-AR-First Floor$0$ME-M-Equipment\nN\nS013-01-AR-First Floor$0$AR-M-Casing\nN\nS013-01-AR-First Floor$0$ZZ-T-Border_Text\nN\nS013-01-AR-First Floor$0$ZZ-A-North_Point\nN\nS013-01-AR-First Floor$0$ZZ-P-Viewport\nN\nS013-01-AR-First Floor$0$ZZ-T-UoC_Logo\nN\nS013-01-AR-First Floor$0$ZZ-P-Border\nN\nS013-01-AR-First Floor$0$ZZ-T-Text_Large\nN\nS013-01-AR-First Floor$0$ZZ-T-Text_Small\nN\nS013-01-AR-First Floor$0$AR-M-Structural_Steelwork\nN\nS013-01-AR-First Floor$0$AR-M-Furniture_Fixed\nN\nS013-01-AR-First Floor$0$AR-M-Furniture_Loose\nN\nS013-01-AR-First Floor$0$GI-M-Drainage_Foul_Drain\nN\nS013-01-AR-First Floor$0$AR-M-Structural_Beams\nN\nS013-01-AR-First Floor$0$ME-M-General_Services\nN\nZZ-P-Border\nN\nZZ-T-UoC_Logo\n\nY\n'
In [ ]:
Copied!
# example.burst_model(acad, True)
# example.burst_model(acad, True)
Out[ ]:
'\'ZOOM\nA\n-Layer\nOFF\n*\nY\nOn\n"ATT-NAME"\n\n_AI_SELALL\nBURST\n-Layer\nON\n"AR-M-Area_Net_Assignable"\n\n-Purge\nAll\n*\nN\n\n'
In [174]:
Copied!
example.rescale_file(acad, True)
example.rescale_file(acad, True)
Out[174]:
"-DWGUNITS\n6\n2\n2\nYes\nYes\nYes\nYes\n'ZOOM\nA\n"
In [175]:
Copied!
example.assign_crs(acad, PROJECT_CRS, True)
example.assign_crs(acad, PROJECT_CRS, True)
Out[175]:
'-ESRI_COORDINATESYSTEM\nS\n27700\n'
In [21]:
Copied!
example.save_file(acad, close=True)
example.save_file(acad, close=True)
All-in-one¶
In [30]:
Copied!
script = example.process_floor(acad, execute=True, save=False, close=False)
example.save_file(acad, close=True)
script
script = example.process_floor(acad, execute=True, save=False, close=False)
example.save_file(acad, close=True)
script
Out[30]:
"-LAYER\nR\nS044-B0-AR-Basement$0$AR-M-Wall\nAR-M-Wall\n-LAYER\nR\nS044-B0-AR-Basement$0$AR-M-Stairs\nAR-M-Stairs\n-LAYER\nR\nS044-B0-AR-Basement$0$AR-M-Doors\nAR-M-Doors\n\n-LAYDEL\nN\nDEFPOINTS\nN\nZZ-T-Grid_Tag\nN\nZZ-T-Gridline\nN\nATT-AUX\nN\nZZ-P-Viewport\nN\nZZ-T-Border_Text\nN\nZZ-A-North_Point\nN\nZZ-T-UoC_Logo\nN\nZZ-T-Title_General_Text\nN\nZZ-P-Border\nN\nZZ-T-Revision_block\nN\nS044-B0-AR-Basement$0$ME-M-Services\nN\nS044-B0-AR-Basement$0$ZZ-T-Grid_Tag\nN\nS044-B0-AR-Basement$0$ZZ-T-Gridline\nN\nS044-B0-AR-Basement$0$ZZ-D-Dimension\nN\nS044-B0-AR-Basement$0$ZZ-P-Viewport\nN\nS044-B0-AR-Basement$0$ZZ-T-Border_Text\nN\nS044-B0-AR-Basement$0$ZZ-A-North_Point\nN\nS044-B0-AR-Basement$0$ZZ-T-UoC_Logo\nN\nS044-B0-AR-Basement$0$ZZ-T-Title_General_Text\nN\nS044-B0-AR-Basement$0$ZZ-P-Border\nN\nS044-B0-AR-Basement$0$ZZ-T-Revision_block\nN\nS044-B0-AR-Basement$0$AR-M-Structural_Steelwork\nN\nS044-B0-AR-Basement$0$ZZ-T-Text_Small\nN\nS044-B0-AR-Basement$0$ZZ-T-Text_Large\nN\nS044-B0-AR-Basement$0$ZZ-T-Text_Notes\n\nY\nBURST\n-DWGUNITS\n6\n2\n2\nYes\nYes\nYes\nYes\n'ZOOM\nA\n-ESRI_COORDINATESYSTEM\nS\n27700\n"