Копал не в том направлении.
Привожу работающий код для добавления прямоугольника в OpenOffice:
X++:
COM oRange;
COM oSheets;
COM oSheet;
COM oShape;
COM oSize;
COM oPos;
COM oPage;
ComDispFunction func;
COMVariant varArg1 = new COMVariant();
;
//что такое oDocument можно посмотреть в предыдущей теме про опенофис
oSheets = oDocument.getSheets();
oSheet = oSheets.getByIndex(0);
oPage = osheet.getDrawPage();
oShape = oDocument.createInstance('com.sun.star.drawing.RectangleShape');
//зададим размеры прямоугольника
oSize = oDocument.Bridge_GetStruct('com.sun.star.awt.Size');
func = new COMDispFunction(oSize, "width", COMDispContext::PropertyPut);
varArg1.int(1000);
func.call(varArg1);
func = new COMDispFunction(oSize, "height", COMDispContext::PropertyPut);
varArg1.int(1000);
func.call(varArg1);
oShape.setSize(oSize);
//зададим позицию прямоугольника
oPos = oDocument.Bridge_GetStruct('com.sun.star.awt.Point');
func = new COMDispFunction(oPos, "x", COMDispContext::PropertyPut);
varArg1.int(100);
func.call(varArg1);
func = new COMDispFunction(oPos, "y", COMDispContext::PropertyPut);
varArg1.int(100);
func.call(varArg1);
oShape.setPosition(oPos);
oPage.add(oShape);