আমি একটি পাইথন অ্যাড-ইন বোতাম তৈরি করেছি যা আমার সহকর্মীদের কর্মপ্রবাহকে আরও একটি বৈশিষ্ট্য শ্রেণীর অ্যাট্রিবিউট অনুলিপি করে গতিতে সহায়তা করে। এটি লক্ষ্য বৈশিষ্ট্য শ্রেণীর একটি সারি আপডেট করার জন্য আরকিপি.অপ্যাটেট কার্সার ফাংশনটি ব্যবহার করে। বর্তমানে এটি বিদ্যমান হিসাবে, এই বোতাম স্ক্রিপ্টটি সম্পাদনা মোড নির্বিশেষে চালানো যেতে পারে। স্পষ্টতই যখন এটি সম্পাদনা অধিবেশনটিতে চলে আসে তখন ব্যবহারকারী সম্পাদনা বন্ধ করতে এবং পরিবর্তনগুলি সংরক্ষণ না করে বেছে নিতে পারে, তবে স্ক্রিপ্টটি সম্পাদনা সেশনের বাইরে চলে গেলে এমনটি হয় না।
স্ক্রিপ্টটিতে আমি কীভাবে এমন একটি চেক যোগ করতে পারি যা স্ক্রিপ্টটি চালানো থেকে আটকাতে পারে যদি আরকম্যাপ বর্তমানে সম্পাদনা সেশনে না থাকে?
এটি আর্কম্যাপ 10 এবং 10.1 নিয়ে উদ্বেগ প্রকাশ করে
আমি অন্যান্য আর্কম্যাপ ব্যবহারকারীদের সাথে এটিও যাচাই করতে চাই যে সাধারণভাবে সম্পাদনা সেশনে না থাকলে টেবিলগুলিতে আপডেটের অনুমতি দেওয়া হয় না।
তাহলে এই স্ক্রিপ্টটি সম্পাদনা সেশনের বাইরে কীভাবে চলছে?
এই স্ক্রিপ্টটি আপাতদৃষ্টিতে নির্মমভাবে নির্বাচন সংক্রান্ত অর্ডার ম্যাপ সম্পর্কে আরও একটি প্রশ্ন উত্থাপন করে, যখন আমি তালিকা থেকে ২ য় বৈশিষ্ট্য শ্রেণীর টেবিলটি আপডেট করি তখন কেবল আমার জন্য কাজ হয়, তবে তা অন্য দিনের জন্য।
স্ক্রিপ্টটি এখন যেমন কাজ করে চলেছে (কোনও 10.1 সম্পাদক বাস্তবায়ন ছাড়াই):
ব্যবহারকারী কোনও সম্পাদনা সেশনে আছেন কিনা তা নিশ্চিত করতে একটি চেক যুক্ত করবেন কীভাবে?
def onClick(self):
#Reference mxd
mxd = arcpy.mapping.MapDocument("CURRENT")
#Reference the main Data frame
mm = arcpy.mapping.ListDataFrames(mxd, "MainMap")[0]
#Reference the Water System Valve feature class
waterValves = arcpy.mapping.ListLayers(mxd, "Water System Valve", mm)[0]
#Reference the fire hydrant feature class
fireHydrants = arcpy.mapping.ListLayers(mxd, "Water Hydrant", mm)[0]
#Use the extent of the main DF to select all valves in the current view
dfAsFeature = arcpy.Polygon(arcpy.Array([mm.extent.lowerLeft, mm.extent.lowerRight, mm.extent.upperRight, mm.extent.upperLeft]), mm.spatialReference)
arcpy.SelectLayerByLocation_management(waterValves, "WITHIN", dfAsFeature,"", "NEW_SELECTION")
arcpy.SelectLayerByAttribute_management(waterValves, "SUBSET_SELECTION", "LOCATIONID IS NULL")
fields = ["LOCATIONID"]
row, rows = None, None
rows = arcpy.UpdateCursor(waterValves,fields)
row = rows.next()
valveList = []
append = valveList.append
#Loop through the valves table to update LocationID
while row:
builder = str(row.QSNO)+"-"+ str(row.VALVESEQNO)
row.setValue("LOCATIONID", builder)
append(builder)
rows.updateRow(row)
row = rows.next()
del row, rows
#New selection for fire hydrants
arcpy.SelectLayerByLocation_management(fireHydrants, "WITHIN", dfAsFeature,"", "NEW_SELECTION")
arcpy.SelectLayerByAttribute_management(fireHydrants, "SUBSET_SELECTION", "LOCATIONID IS NULL")
row, rows = None, None
rows = arcpy.UpdateCursor(fireHydrants,fields)
row = rows.next()
#Loop through fire hydrant table to update LocationID
while row:
for locID in valveList:
construct = str(locID) + "-FH"
#print construct
row.setValue("LOCATIONID", construct)
rows.updateRow(row)
row = rows.next()
del row, rows, valveList, mxd