आनुपातिक रूप से स्केल मैप तत्वों को पृष्ठ आकार में परिवर्तन के लिए अक्षम करने के लिए पायथन का उपयोग करना?


11

मैं विभिन्न कार्यालयों में एमएक्सडी पर स्रोतों को परिवर्तित कर रहा हूं जिसमें आर्कपी और आर्कजीआईएस 10.0 का उपयोग किया गया है। जैसा कि यहां देखा गया है , अनुदेश mxd.save () भेजे जाने पर प्रिंटर सेटिंग्स डिफ़ॉल्ट प्रिंटर पर वापस आ जाती हैं।

प्रिंटर खोना मेरे मामले में एक छोटी सी समस्या है, लेकिन यह प्रमुख हो जाता है यदि प्रिंट विकल्प "स्केल मैप तत्वों को आनुपातिक रूप से पृष्ठ आकार में परिवर्तन करने के लिए" टिक किया जाता है, जबकि "प्रिंटर पेपर सेटिंग्स का उपयोग करें" चुना जाता है। नीचे दिया गया स्क्रीनशॉट मेरा सबसे खराब स्थिति है, सबसे अच्छा मामला दोनों टिक-बॉक्स को अनचेक करना होगा।

यहाँ छवि विवरण दर्ज करें

  • मैं एमएक्सडी को बचाने से पहले उस विकल्प के मूल्य की जांच करने और इसे गलत (अछूता) पर सेट करने के लिए कॉम्टेप्स का उपयोग करना चाहूंगा - विचार यह है कि इसे एक मौजूदा आर्कपी स्क्रिप्ट से एक फ़ंक्शन के रूप में कॉल किया जाए। (प्राथमिक लक्ष्य)

  • आगे प्रिंट सेटिंग्स को सुरक्षित करने के लिए, मैं आदर्श रूप से "प्रिंटर सेटिंग का उपयोग करें" बॉक्स को अनचेक करना चाहूंगा, अगर यह टिक है। (द्वितीयक लक्ष्य)

क्या कोई मदद कर सकता है?

जवाबों:


13

मुझे लगता है कि आपने निम्न एसई क्यू / ए के अनुसार सफलतापूर्वक कॉम्पटियों को स्थापित किया है:

स्निपेट:

import arcpy
from snippets102 import *
from comtypes.client import GetModule, CreateObject

import comtypes.gen.esriFramework as esriFramework
import comtypes.gen.esriArcMapUI as esriArcMapUI
import comtypes.gen.esriCarto as esriCarto

pMapDoc = CreateObject(esriCarto.MapDocument, interface=esriCarto.IMapDocument)
path = r'D:\my.mxd'
pMapDoc.Open(path)
pageLayoutActiveView = CType(pMapDoc.PageLayout,esriCarto.IActiveView)


p = pMapDoc.PageLayout.Page

#unchecking "Scale map elements proportionally to changes in page size"
p.StretchGraphicsWithPage = False

#setting the size manually suppresses the default behaviour of "Use Printer Paper Settings"
(width,height)=p.QuerySize()
p.Units=1 #1 is for Inches
p.PutCustomSize(width,height) #sizez of a4

pMapDoc.Save()

इस कोड को एक सक्रिय आर्कप्स सत्र में एक खुले mxd के गुणों को अपडेट करने के लिए अनुकूलित किया जा सकता है।


धन्यवाद फरीद! यह वास्तव में बहुत आशाजनक लग रहा है !! मैं कार्यालय से दूर हूं, और शुक्रवार दोपहर अपने कोड का परीक्षण करने में सक्षम हो जाऊंगा - मैं आपको पाठ्यक्रम के बारे में बताता रहूंगा। मेरा फिर से धन्यवाद !!
Hélène

बस पुष्टि करने के लिए, यह महान काम करता है! क्या आप जानते हैं कि क्या यह संभव है कि वर्तमान पृष्ठ का आकार पढ़ा जाए? इसे पढ़ने के बारे में सोचने के बाद इसे p.PutCustomSize () के रूप में लागू करें, इसलिए मैं प्रत्येक एमएक्सडी के लिए मूल पृष्ठ का आकार रखता हूं।
Hélène

1
ज़रूर, बस (width,height)=p.QuerySize()कोड में जोड़ें और p.PutCustomSize(width,height)तदनुसार बदलें । अद्यतन कोड स्निपेट देखें!
फरीद चराघी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.