[python-win32] Problem with Rhapsody automation: It is Impossible?
sccs cscs
zorg724 at yahoo.fr
Thu Aug 2 12:46:37 CEST 2007
Hello, Our team uses Visual Basic for Rhapsody Automation,
but we now would like to use Python. But it seems to be IMPOSSIBLE.
Indeed, it seems that there is no Polymorphism in Python so that when i get back
a daughter instance Class, it does not not work, i continue to have the corresponding Mother Class.
Exemple:
Here is my code:
The Application used is "Rhapsody"
import pythoncom # Window word wrapper for Rhapsody
import win32com.client # Window word wrapper for Rhapsody
import sys
class TestRhapsody(object):
def connectRhapsody(self):
print "connecting to Rhapsody.."
self.rhapsody = win32com.client.gencache.EnsureDispatch("Rhapsody.Application")
self.project = self.rhapsody.activeProject()
if self.project == None :
raise Exception("Load a Rhapsody project!")
print "OK"
def listAllLanguageTypes(self):
theIRPModelElement = self.project.findNestedElementRecursive("T_Boolean", "Type")
print theIRPModelElement.getFullPathName()
print theIRPModelElement.name
# HERE IS THE ERROR: The theIRPModelElement is a "IRPType" which is
# a specialization of a IRPModelElement, but Python continue to see it like an IRPModelElement
print "Declaration : %s\n" % (theIRPModelElement.declaration)
def test():
try:
thePatch = TestRhapsody()
thePatch.connectRhapsody()
thePatch.listAllLanguageTypes()
except Exception ,err:
print "ERROR ! \n %s"%( str (err))
if __name__ == '__main__':
test()
I got the following message:
'<win32com.gen_py.47DBF9D5-F318-11D2-B825-00104B3E6572x0x1x0.IRPModelElement instance at 0x59532032>'
object has no attribute 'declaration'
>>>
Here is the Py32Com Wrapper extract:
class IRPModelElement(DispatchBaseClass):
"""IRPModelElement Interface"""
CLSID = IID('{57DBF9EF-F318-11D2-B825-00104B3E6572}')
coclass_clsid = IID('{57DBF9F0-F318-11D2-B825-00104B3E6572}')
class IRPType(DispatchBaseClass):
"""IRPType Interface"""
CLSID = IID('{EB754AE3-0D76-11D3-8E4D-0060080B70BC}')
coclass_clsid = IID('{EB754AE4-0D76-11D3-8E4D-0060080B70BC}')
# Result is of type IRPFlowchart
def addActivityDiagram(self):
"""method addActivi
_prop_map_get_ = {
...
"currentDirectory": (110, 2, (8, 0), (), "currentDirectory", None),
"declaration": (803, 2, (8, 0), (), "declaration", None),
...
---------------------------------
Ne gardez plus qu'une seule adresse mail ! Copiez vos mails vers Yahoo! Mail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-win32/attachments/20070802/fedd0fbc/attachment.html
More information about the python-win32
mailing list