5 votos

Secuencia de comandos de Python para implementar un lote de importación de archivos CAD en la Geodatabase?

¿Alguien sabe donde puedo conseguir un script de python que se puede hacer un lote de importación de archivos CAD en una Geodatabase.

Yo tengo uno que escribí aquí, pero sólo es capaz de importar un archivo CAD en un momento. Importa los archivos de CAD y se dividió en clases de entidad y la almacena en la geodatabase a través de la función de conjunto de datos. Funciona perfectamente pero necesito bucle de la secuencia de comandos para buscar a través de una carpeta determinada para todos los cardfiles en ella y de importación bajo diferentes característica de los conjuntos de datos y poner todos los conjuntos de datos en una geodatabase.

# Name: CadtoGeodatabase.py
# Description: Create a feature dataset
# Author: Irene
# Import system modules
import arcpy
from arcpy import env

# Set workspace
env.workspace = "C:/data1"

# Set local variables
input_cad_dataset = C:\Users\iegbulefu\Documents\info\91036c01.dwg" output_gdb_path = "c:/data/cadfile.gdb"
output_dataset_name = "cadresults"
reference_scale = "1500"
spatial_reference = "Nad_1983_10TM"

# Create a FileGDB for the fds
arcpy.CreateFileGDB_management("C:/data1", "cadfile.gdb")

# Execute CreateFeaturedataset 
arcpy.CreateFileGDB_management("C:/data", "cadfile.gdb")
arcpy.CADToGeodatabase_conversion(input_cad_dataset, output_gdb_path, output_dataset_name, reference_scale)

7voto

Randy Puntos 3196

Usted sólo tendrá que utilizar un bucle for y si la instrucción para encontrar todos los archivos que necesita. Yo no he probado el código de abajo con los archivos CAD, pero debe ser lo que usted está después (o al menos proporcionar la estructura para hacerlo).

# Import system modules
import arcpy, os
from arcpy import env

# Set local variables
input_cad_folder = "C:\Users\iegbulefu\Documents\info"

output_gdb_folder = "C:\data"
output_gdb = "cadfile.gdb"
output_gdb_path = os.path.join(output_gdb_folder, output_gdb)

reference_scale = "1500"
spatial_reference = "Nad_1983_10TM"

# Create a FileGDB for the fds
try:
    arcpy.CreateFileGDB_management(output_gdb_folder, output_gdb)
except:
    pass

# For loop iterates through every file in input folder
for found_file in os.listdir(input_cad_folder):
    # Searches for .dwg files
    if found_file.endswith(".dwg"):

        print "Converting: "+found_file
        input_cad_dataset = os.path.join(input_cad_folder, found_file)
        try:
            arcpy.CADToGeodatabase_conversion(input_cad_dataset, output_gdb_path, found_file[:-4], reference_scale, spatial_reference)
        except:
            print arcpy.GetMessage()

1voto

Sarah Jamie Lewis Puntos 141

Usted puede utilizar el código siguiente para buscar una carpeta y subcarpetas .los archivos dwg y, a continuación, utilizar esta lista como una entrada a la secuencia de comandos.

# Creates a list of all the files with the given list of extensions and search strings
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could affect all your disk files.


#Licence: Creative Commons
#Created by: George Corea; georgec@atgis.com.au, coreagc@gmail.com

import os, sys, datetime, arcpy

top = os.getcwd() # change to a specific path if required.
# This otherwise starts with the directory the script is in.
RootOutput = top # change if you want output somewhere else
FileTypes=['dwg'] # add filetypes or as required. '' for all files (remember .shp has 4 or 5 other associated files)
SearchStrings=[''] # add strings as required use format ['search1','search2'] etc.

filecount=0
#successcount=0
#errorcount=0

print "Working in: "+os.getcwd()

List =[]

for root, dirs, files in os.walk(top, topdown=False):
    for fl in files:
      currentFile=os.path.join(root, fl)
      for FileType in FileTypes:
          status= str.endswith(currentFile,FileType)
          if str(status) == 'True':
              for SearchString in SearchStrings:
                  if str(SearchString in currentFile) == 'True':
                    #print str(currentFile)+str(status)       
                    List.append(currentFile)
      filecount=filecount+1

print 'File List: ' + str(List) + " with "+ str(len(List)) + " objects."
# Replace following with whatever arcpy. tool you want to run using the list as an input.

a continuación, puede hacer lo siguiente

for item in List
 item=input_cad_dataset
 arcpy.CADToGeodatabase_conversion(input_cad_dataset, output_gdb_path, output_dataset_name, reference_scale)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X