On 29/07/2009 7:30 AM, Mike Graham wrote:
Upon some further investigation, I have come to understand the method a bit betterdef PickObject(self, obj=defaultNamedNotOptArg, x=defaultNamedNotOptArg, y=defaultNamedNotOptArg, z=defaultNamedNotOptArg, obj_num=defaultNamedNotOptArg, entity_num=defaultNamedNotOptArg, tolerance=9.9999997473787516e-06, PType=0): """Retrieve an object ID and face or edge number by giving an object type and global coordinates""" return self._ApplyTypes_(76, 1, (24, 0), ( (16387, 3), (12, 1), (12, 1), (12, 1), (16387, 3), (16387, 3), (5, 49), (3, 49) ), u'PickObject', None, obj, x, y, z, obj_num, entity_num, tolerance, PType) The tuple of tuples in the _ApplyTypes_ call is of flags for each obj, x, y,...PType. For example, (type, input_or_output_flag) = (16387, 3) where 3 I believe indicates an input/output parameter.
Actually, I made this mistake in the last message I sent too. These are the "param flags", and they have the values:
OAIdl.Idl:const USHORT PARAMFLAG_NONE = 0x00; OAIdl.Idl:const USHORT PARAMFLAG_FIN = 0x01; OAIdl.Idl:const USHORT PARAMFLAG_FOUT = 0x02; OAIdl.Idl:const USHORT PARAMFLAG_FLCID = 0x04; OAIdl.Idl:const USHORT PARAMFLAG_FRETVAL = 0x08; OAIdl.Idl:const USHORT PARAMFLAG_FOPT = 0x10; OAIdl.Idl:const USHORT PARAMFLAG_FHASDEFAULT = 0x20; OAIdl.Idl:const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;So we appear to have 3 params defined as "in out" and, as hex(49)=='0x31', we have 2 "optional" params at the end.
I can change these to 1 (for input) and 2 (for output for obj_num and entity_num), but it still does not work. I suspect there might have to be other changes in order (obj_num and entity_num shouldn't ==defaultNamedNotOptArg, for example, and I am not sure if they should be passed to _ApplyTypes_ at all). I think this is the basis of the problem, but I still cannot solve it. Nowhere else in my generated file can I find an example of this working right to follow. I am really hoping to get this working.
I don't think you've ever pasted the exception you get. From the signature above, it appears you need to pass 6 params, and can expect 3 back.
Cheers, Mark
Thanks, Mike On Tue, Jul 28, 2009 at 9:00 AM, Mike Graham<mikegra...@gmail.com> wrote:Hi Greg, Thanks for your reply. I went back through the mailing list archives to try to find someone else who had the same problem I did and found your posts, but I couldn't quite understand your and Hammond's solutions well enough to apply it. Perhaps you or someone else can help me understand what's going on better. You present what looks like an item from a dict: "feSelector": (10349, 2, (9, 0), (), "feSelector", None) and explain that the None in the tuple should be replaced by the CLSID of the class to which "feSelector" belongs. The method I posted as an example's name does not occur in any dicts. It occurs in two places in the generated source. The first is the method definition I posted, in which it is part of a class _IDualModelItem(DispatchBaseClass) with the member CLSID=IID('{976FAFC8-96FD-11D4-A09D-0050DA1AC1A8}'). I am not aware of any particular python class from which this should be associated with. In my definition, I have a tuple that appears to be laid out the same as yours, so I tried replacing None with '{976FAFC8-96FD-11D4-A09D-0050DA1AC1A8}', but this didn't change anything. The other occurrence is in the list _IDualModelItem_vtables_, where one item is: (( u'PickObject' , u'obj' , u'x' , u'y' , u'z' , u'obj_num' , u'entity_num' , u'tolerance' , u'PType' , ), 76, (76, (), [(16387, 3, None, None), (12, 1, None, None), (12, 1, None, None), (12, 1, None, None), (16387, 3, None, None), (16387, 3, None, None), (5, 49, '9.9999997473787516e-06', None), (3, 49, '0', None)], 1, 1, 4, 0, 332, (3, 0, None, None), 0) ) To tell the truth, I have no idea what _IDualModelItem_vtables_ does. I think I've examined these as close as I can without disecting the win32com.client module itself or finding some documentation (if there is documentation of any depth somewhere, I would love a link; I was unable to find any.) Can anyone provide any further insight? Mike_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32