import os, os.path import arcpy import json import pickle import arcgisscripting gp = arcgisscripting.create(9.3) #Coordsys = arcpy.GetParameterAsText(0) infile = arcpy.GetParameterAsText(0) #subfolders=arcpy.GetParameterAsText(2) infile = r"D:\Publish\Geoprocessing\GeoprocessingServices\ToolData\input.dgn" #arcpy.AddMessage(in_path) def createpointjson(inputfile): print (inputfile) arcpy.AddMessage(inputfile) result={'features': []} for row in arcpy.da.SearchCursor(inputfile, ["SHAPE@XY"]): # Print the current multipoint's ID # #print("Feature {0}:".format(row[0])) pnts=[] x,y= row[0] pnts.append({'y' : y,'x': x}) j=json.dumps(pnts) #print pnts result['features'].append(pnts) return result def createlinejson(inputfile): print (inputfile) arcpy.AddMessage(inputfile) result={'features': []} for row in arcpy.da.SearchCursor(inputfile, ["SHAPE@"]): #print("Feature {0}:".format(row[0])) partnum = 0 geom=[] aa=[] for part in row[0]: #print("Part {0}:".format(partnum)) paths=[] for pnt in part: if pnt: paths.append({'y' : pnt.Y,'x': pnt.X}) #print("{0}, {1}".format(pnt.X, pnt.Y)) else: # If pnt is None, this represents an interior ring # print("Interior Ring:") partnum += 1 j=json.dumps(paths) geom.append(paths) #print j aa.append({'paths':geom}) #jj=json.dumps(aa) #print jj result['features'].append(aa) return result def createpolygonjson(inputfile): print (inputfile) arcpy.AddMessage(inputfile) result={'features': []} for row in arcpy.da.SearchCursor(inputfile, ["SHAPE@"]): #print("Feature {0}:".format(row[0])) partnum = 0 #arcpy.AddMessage(result) geom=[] aa=[] for part in row[0]: #print("Part {0}:".format(partnum)) paths=[] for pnt in part: if pnt: #arcpy.AddMessage(pnt.Y) paths.append({'y' : pnt.Y,'x': pnt.X}) #print("{0}, {1}".format(pnt.X, pnt.Y)) else: # If pnt is None, this represents an interior ring # print("Interior Ring:") partnum += 1 j=json.dumps(paths) geom.append(paths) #print j #arcpy.AddMessage(j) #arcpy.AddMessage(geom) aa.append({'rings':geom}) #arcpy.AddMessage(aa) #jj=json.dumps(aa) #print jj result['features'].append(aa) #arcpy.AddMessage(result) return result def export(inputfile): describe = gp.describe(inputfile) spatialReference = describe.spatialReference in_path=describe.path resultpoint="{}" resultline="{}" resultpolygon="{}" fExtension=inputfile[-3:] #arcpy.AddMessage("input file format " + fExtension) #arcpy.AddMessage("input file format " + describe.DataType) #arcpy.AddMessage("input file format " + describe.FeatureType) #arcpy.AddMessage("input file format " + describe.ShapeType) #arcpy.AddMessage("input file format " + describe.WorkspaceType) if fExtension=="shp": if describe.ShapeType=="Point": arcpy.AddMessage("input file shpe type is " + describe.ShapeType) infc=inputfile #print infc resultpoint = createpointjson(infc) json_point = in_path + "\json_point.txt" point_file = open(json_point, "a") point_file.write(str(resultpoint)) point_file.close() #arcpy.SetParameter(1, resultpoint) #del resultpoint del point_file elif describe.ShapeType=="Polyline": arcpy.AddMessage("input file shpe type is " + describe.ShapeType) ## read lines infc=inputfile #print infc resultline = createlinejson(infc) #print resultline json_line= in_path + "\json_line.txt" #print json_line line_file = open(json_line, "w") line_file.write(str(resultline)) line_file.close() #arcpy.SetParameter(2, resultline) #del resultline del line_file elif describe.ShapeType=="Polygon": arcpy.AddMessage("input file shpe type is " + describe.ShapeType) ## read polygons infc=inputfile #print infc resultpolygon = createpolygonjson(infc) #print resultline json_polygon= in_path + "\json_polygon.txt" #print json_line polygon_file = open(json_polygon, "w") polygon_file.write(str(resultpolygon)) polygon_file.close() #arcpy.SetParameter(3, resultpolygon) #del resultpolygon del polygon_file elif (fExtension=="dxf") or (fExtension=="dwg") or (fExtension=="dgn"): ## read points infc=inputfile + "\Point" #print infc resultpoint = createpointjson(infc) json_point = in_path + "\json_point.txt" point_file = open(json_point, "a") point_file.write(str(resultpoint)) point_file.close() #arcpy.SetParameter(1, resultpoint) #del resultpoint del point_file ## read lines infc=inputfile + "\Polyline" #print infc resultline = createlinejson(infc) #print resultline json_line= in_path + "\json_line.txt" #print json_line text_file = open(json_line, "w") text_file.write(str(resultline)) text_file.close() #arcpy.SetParameter(2, resultline) #del resultline del text_file #arcpy.SetParameter(3, "{}") # for polygon else: arcpy.AddMessage("No proper file found!") EPSG=spatialReference.PCSCode if EPSG==0: EPSG=spatialReference.GCSCode arcpy.AddMessage("Input WKID : " + str(EPSG)) #print "---Point Result :" #print str(resultpoint) #print "---Line Result :" #print str(resultline) #print "---Polygon Result :" #print str(resultpolygon) arcpy.SetParameter(1, resultpoint) arcpy.SetParameter(2, resultline) arcpy.SetParameter(3, resultpolygon) arcpy.SetParameter(4, EPSG) # for input Spatial Reference del resultpoint del resultline del resultpolygon try: # infile = in_path + "\input.dxf" # arcpy.AddMessage("1" + infile) # if not os.path.exists(infile): # infile = in_path + "\input.dwg" # arcpy.AddMessage("2" + infile) # if not os.path.exists(infile): # infile = in_path + "\input.dgn" # arcpy.AddMessage("3" + infile) # if not os.path.exists(infile): # infile = in_path + "\input.shp" # arcpy.AddMessage("4" + infile) # if not os.path.exists(infile): # arcpy.AddMessage("There is no available CAD file for processing.") # infile="" if infile != "": print ("1") aa=export(infile) #arcpy.SetParameter(1, infile) #arcpy.AddMessage("input file is " + infile) #print infile except: # If an error occurred print the message to the screen print (arcpy.GetMessages())