Hello again, Finally I got it to work! Here it is: import win32com.client srf = win32com.client.gencache.EnsureDispatch('Surfer.Application') Plot = srf.Documents.Add(1) srf.Visible = True MapFrame1 = Plot.Shapes.AddImageMap(GridFileName="C:/test.grd") ImageLayer1 = MapFrame1.Overlays(1) ImageMap1 = win32com.client.CastTo(ImageLayer1, "IImageLayer") # the property was under IImageLayer ImageMap1.ShowColorScale = True
Your help lead me to the solution. I now understand what the issue was and how to use CastTo to get it working. Thank you and Mr.Hammond so much during for all your help! Best regards, E m r e On Tuesday, May 22, 2018, 11:21:35 PM GMT+3, Emre CETIN <e.ce...@yahoo.com> wrote: Hi again, I solved the unexpected error I just posted by following this link: https://mail.python.org/pipermail/python-list/2008-July/509467.html There is said to: "Just in case, could you delete the contents of your gen_py directory (probably in %TEMP%\gen_py)"That did it. Now I was able to test your answer. But I got this error: --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-7-3745e339d45c> in <module>() ----> 1 ImageMap1 = ImageLayer1.CastTo("IContourMap") C:\Program Files\Anaconda3\lib\site-packages\win32com\client\__init__.py in __getattr__(self, attr) 463 args=self._prop_map_get_.get(attr) 464 if args is None: --> 465 raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr)) 466 return self._ApplyTypes_(*args) 467 AttributeError: '<win32com.gen_py.Surfer 13 Type Library.IShape instance at 0x2630076970544>' object has no attribute 'CastTo' I tried adding an import for it to work: import win32com.client from win32com.client import CastTo # tried adding this line but it didn't change the error. E m r e On Tuesday, May 22, 2018, 11:09:45 PM GMT+3, Emre CETIN via python-win32 <python-win32@python.org> wrote: Thank you for your reply. I wanted to try it but for seom reason the code that has been running without a problem suddenly gave this error: import win32com.client srf = win32com.client.gencache.EnsureDispatch('Surfer.Application') # after this line of code the error below is produced... --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-2-5e3c96b21b0e> in <module>() ----> 1 srf = win32com.client.gencache.EnsureDispatch('Surfer.Application') C:\Program Files\Anaconda3\lib\site-packages\win32com\client\gencache.py in EnsureDispatch(prog_id, bForDemand) 538 tlb, index = ti.GetContainingTypeLib() 539 tla = tlb.GetLibAttr() --> 540 mod = EnsureModule(tla[0], tla[1], tla[3], tla[4], bForDemand=bForDemand) 541 GetModuleForCLSID(disp_clsid) 542 # Get the class from the module. C:\Program Files\Anaconda3\lib\site-packages\win32com\client\gencache.py in EnsureModule(typelibCLSID, lcid, major, minor, progressInstance, bValidateFile, bForDemand, bBuildHidden) 395 try: 396 try: --> 397 module = GetModuleForTypelib(typelibCLSID, lcid, major, minor) 398 except ImportError: 399 # If we get an ImportError C:\Program Files\Anaconda3\lib\site-packages\win32com\client\gencache.py in GetModuleForTypelib(typelibCLSID, lcid, major, minor) 264 # module to our cache though - check that here. 265 if "_in_gencache_" not in mod.__dict__: --> 266 AddModuleToCache(typelibCLSID, lcid, major, minor) 267 assert "_in_gencache_" in mod.__dict__ 268 return mod C:\Program Files\Anaconda3\lib\site-packages\win32com\client\gencache.py in AddModuleToCache(typelibclsid, lcid, major, minor, verbose, bFlushNow) 556 # module - this doesn't mean anything special though! 557 mod._in_gencache_ = 1 --> 558 dict = mod.CLSIDToClassMap 559 info = str(typelibclsid), lcid, major, minor 560 for clsid, cls in dict.items(): AttributeError: module 'win32com.gen_py.54C3F9A2-980B-1068-83F9-0000C02A351Cx0x1x4' has no attribute 'CLSIDToClassMap' Any idea of what this is and how to solve it? E m r e On Tuesday, May 22, 2018, 8:14:34 PM GMT+3, Tim Roberts <t...@probo.com> wrote: Emre CETIN via python-win32 wrote: > Hi, I've been looking for a solution to this question for some time > now. Hopefully you could help me out. There's a program (Golden > Software Surfer) that I have successfully automated using Python COM. > I normally am able to control every portion I need. The part I have > trouble accessing is under its "Property Manager". Even though I am > using the description provided in the software's documents & help > files I get an error saying: > > AttributeError: '<win32com.gen_py.Surfer 13 Type Library.IShape > instance at 0x2327715907232>' object has no attribute 'ShowColorScale' > > "ShowColorScale" is just an example of one property/method in the > Property Manager window. > > Here is the example code I have been working with: > |importwin32com.client srf > =win32com.client.gencache.EnsureDispatch('Surfer.Application')Plot=srf.Documents.Add(1)srf.Visible=TrueMapFrame1=Plot.Shapes.AddImageMap(GridFileName="C:/test.grd")ImageLayer1=MapFrame1.Overlays(1)ImageLayer1.ShowColorScale=True# > this is where i get the error| The problem here, I think, is that ShowColorScale is a property of the IContourMap interface, but you've been given an IShape interface. One of the issues about COM is that some objects implement many different interfaces, and you have to know which interface to ask for to get the methods and properties you want. The answer, as the old poster suggested, is to query the IShape object for its IContourMap interface. It shouldn't be very much more complicated than this: ImageMap1 = ImageLayer1.CastTo( "IContourMap" ) ImageMap1.ShowColorScale = True -- Tim Roberts, t...@probo.com Providenza & Boekelheide, Inc. _______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32 _______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32
_______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32