Me encuentro a mí mismo que lamentablemente carecen de la comprensión de cuándo, por qué y cómo (de qué tipo) para hacer el sorteo de la pantalla/actualizar/parcial de actualización. Por ejemplo, en una secuencia de comandos de Python independiente fuera de la aplicación de los límites, tengo una función que está intentando dibujar los elementos gráficos en la vista de datos. Específicamente, los elementos serán un objeto TextElement en la parte superior de un RectangleElement. La función de las cargas de los dos elementos en una GroupElement, que a su vez se agrega a la ActiveView del GraphicsContainer para dibujar en la pantalla. (Como lo que puedo decir que los elementos gráficos son válidas.) Me alegro mucho de no entender lo que atraen a los/Actualizar/ParitalRefresh métodos para poner donde. Si alguien puede dar a punto para una buena explicación o tutorial acerca de la pantalla de dibujo/refrescante, yo estaría muy agradecido. A continuación es un poco de código seleccionado de mi función. Tengo un PartialRefresh en la última línea, pero no sé si eso es correcto o no.
pGroupElement = NewObj(esriCarto.GroupElement, esriCarto.IGroupElement3)
pTextElement = NewObj(esriCarto.TextElement, esriCarto.ITextElement)
pRectElement = NewObj(esriCarto.RectangleElement, esriCarto.IElement)
.
.
(configure TextElement) [tedious code removed]
.
.
(configure RectElement)
.
.
ptxtElem = CType(pTextElement, esriCarto.IElement)
pGroupElement.AddElement(ptxtElem)
pGroupElement.AddElement(pRectElement)
pContainer = mxDoc.ActiveView.GraphicsContainer
pGrpElem = CType(pGroupElement, esriCarto.IElement)
pContainer.AddElement(pGrpElem, 0)
mxDoc.ActiveView.PartialRefresh(esriCarto.esriViewGraphics, None, None)
Añadido: Así, es la creación de objetos con el siguiente código - como yo lo hago ahora - no la creación de ellos en el proceso?
def NewObj(MyClass, MyInterface):
"""Creates a new comtypes POINTER object where\n\
MyClass is the class to be instantiated,\n\
MyInterface is the interface to be assigned"""
from comtypes.client import CreateObject
try:
ptr = CreateObject(MyClass, interface=MyInterface)
return ptr
except:
return None
Si no, deduzco que debo utilizar IObjectFactory. Suponiendo que mi actual objetos que no están en proceso, debo decir que no he visto ningún gran impacto en el rendimiento, pero supongo que sólo estoy preguntando por problemas obligando a un montón de llamadas entre procesos.
Gracias a todos por la ayuda. Yo experimento cuando tengo la oportunidad y hacerle saber los resultados.