I just tested under comtypes 0.3 and 0.4 with Autocad 2008.  I get this
exception for both when using CreateObject:
######################################################################
>>> acad = client.CreateObject("AutoCAD.Application")
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "D:\Python25\Lib\site-packages\comtypes\client\__init__.py", line 203,
in CreateObject
    return _manage(obj, clsid, interface=interface)
  File "D:\Python25\Lib\site-packages\comtypes\client\__init__.py", line 171,
in _manage
    obj = wrap(obj)
  File "D:\Python25\Lib\site-packages\comtypes\client\__init__.py", line 122,
in wrap
    typeattr = tinfo.GetTypeAttr()
  File "D:\Python25\Lib\site-packages\comtypes\typeinfo.py", line 262, in
GetTypeAttr
    return _deref_with_release(self._GetTypeAttr(), self.ReleaseTypeAttr)
COMError: (-2147418111, 'Call was rejected by callee.', (None, None, None, 0,
None))
######################################################################

I think this happens because comtypes is trying to talk to Autocad before it
is finished its post startup initialization (loading modules, CUI, lisp
files).

Using client.GetActiveObject on the other hand successfully generates the
Autocad modules and returns a pointer to the first running instance.  It
doesn't work if Autocad isn't running though.

BTW Thomas: I had to switch back to version 0.3.3 because something broke
between that version and the current.  When I try to get a pointer to
Microstation under 0.4.1 I get this:
######################################################################
>>> usta = client.GetActiveObject("MicroStationDGN.Application")
# Generating comtypes.gen._CF9F97BF_39F2_4B8E_835C_8BE9E99DAF5B_0_8_0
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "D:\Python25\Lib\site-packages\comtypes\client\__init__.py", line 166,
in GetActiveObject
    return _manage(obj, clsid, interface=interface)
  File "D:\Python25\Lib\site-packages\comtypes\client\__init__.py", line 171,
in _manage
    obj = wrap(obj)
  File "D:\Python25\Lib\site-packages\comtypes\client\__init__.py", line 134,
in wrap
    mod = GetModule(tlib)
  File "D:\Python25\lib\site-packages\comtypes\client\_generate.py", line
100, in GetModule
    is_current, mod = _CreateWrapper(tlib, pathname)
  File "D:\Python25\lib\site-packages\comtypes\client\_generate.py", line
218, in _CreateWrapper
    mod = _my_import(fullname)
  File "D:\Python25\lib\site-packages\comtypes\client\_generate.py", line 14,
in _my_import
    return __import__(fullname, globals(), locals(), ['DUMMY'])
  File
"D:\Python25\lib\site-packages\comtypes\gen\_CF9F97BF_39F2_4B8E_835C_8BE9E99DAF5B_0_8_0.py",
line 223, in <module>
    ( ['retval', 'out'], POINTER(_midlSAFEARRAY(POINTER(_DataBlock))), 'pVal'
)),
  File "D:\Python25\Lib\site-packages\comtypes\safearray.py", line 18, in
_midlSAFEARRAY
    sa_type = _make_safearray_type(itemtype)
  File "D:\Python25\Lib\site-packages\comtypes\safearray.py", line 46, in
_make_safearray_type
    raise TypeError(itemtype)
TypeError: <class 'comtypes.POINTER(_DataBlock)'>
######################################################################

Something to do with the safearray refactor?

Ed Blake
--- Thomas Heller <[EMAIL PROTECTED]> wrote:

> Kelie schrieb:
> > Hello group,
> > 
> > I'm getting an error when trying to launch AutoCAD using comtypes.  The
> > application does get started. But the variable 'app' does not seem to
> hold a
> > valid instance of it, because I was not able to access its properties
> such as
> > ActiveDocument, WindowState, etc..
> > 
> > This is copied from Python shell:
> > 
> >>>> import comtypes
> >>>> comtypes.__version__
> > '0.4.2'
> >>>> app = comtypes.client.CreateObject("AutoCAD.Application")
> > # Generating comtypes.gen.AutoCAD
> > Traceback (most recent call last):
> >   File "<interactive input>", line 1, in <module>
> >   File
> "C:\Programming\Python\Install\comtypes\comtypes\client\__init__.py",
> > line 202, in CreateObject
> >     return _manage(obj, clsid, interface=interface)
> >   File
> "C:\Programming\Python\Install\comtypes\comtypes\client\__init__.py",
> > line 170, in _manage
> >     obj = GetBestInterface(obj)
> >   File
> "C:\Programming\Python\Install\comtypes\comtypes\client\__init__.py",
> > line 133, in GetBestInterface
> >     interface = getattr(mod, itf_name)
> > AttributeError: 'module' object has no attribute 'IAcadApplication'
> > 
> > Any idea why?
> 
> Hm, the exception seems to be raised when the module is generated.  Please
> look
> into the comtypes\gen directory, do you find a (valid) AutoCAD.py file, and
> the file
> that is imported by AutoCad.py?
> 
> If so, can you please look into the latter if there is a 'IAcadApplication'
> interface
> defined?
> 
> If not, you should probably set a breakpoint on line 132 in
> comtypes\client\__init__.py,
> and inspect the generated module (which has not yet been written to disk). 
> Or put a line
>   print dir(mod)
> must before line 133 in this file.  This should provide some insight.
> 
> Thomas
> 
> 
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
>
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
> _______________________________________________
> comtypes-users mailing list
> comtypes-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/comtypes-users
> 


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
comtypes-users mailing list
comtypes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/comtypes-users

Reply via email to