Top > OOobbs3 > 29

OOobbs3/29 Edit

  • サマリ: com.sun.star.drawing.ConnectorShapeについて
  • 環境: Draw
  • 状態: 解決
  • 投稿者: new_OOo3?
  • 投稿日: 2010-10-09 (土) 10:31:10

質問 Edit

お世話になります。

2つの四角形を線で繋ぐMACROとして下記Codeにて試みましたが、ConnectorShape追加のLineでErrorが生じます。

[ Error ]

Error Message : An exception occurred

Type: com.sun.star.lang.IllegalArgumentException Message

良く見る「予期せぬエラー」ということだと認識しているのですが、当方の知識ではなぜダメなのか解決出来ませんでした。

つきましては、下記Codeの不具合点をご教示頂けます様お願いします。

******* Code ***********
Sub oDShape
	Dim oDoc
	Dim oPage
	Dim oShape
	Dim Dummy()
		oDoc = StarDesktop.loadComponentFromURL("private:factory/sdraw", "_default", 0, Dummy())
		oPage = oDoc.getDrawPages().getByIndex(0)
		for i = 0 to 1
			oShape(i) = oDoc.createInstance("com.sun.star.drawing.RectangleShape")
			' Position
			 	oPoint = CreateUnoStruct("com.sun.star.awt.Point")
 				oPoint = oShape(i).Position
					oPoint.X = 2000 + i*6000
					oPoint.Y = 2000
				oShape(i).Position = oPoint
   		' Size
   			oSize = CreateUnoStruct("com.sun.star.awt.Size")
   			oSize = oShape(i).Size
   				oSize.Height = 1500		' unit : 1/100mm
   				oSize.Width =  3000		' unit : 1/100mm
   			oShape(i).Size = oSize
   		oPage.add(oShape(i))
   	next i
   	'
   	oConnector = oDoc.createInstance("com.sun.star.drawing.ConnectorShape") 
			oPage.add(oConnector)				' <= Error Line
			oConnector.StartShape = oShape(0)
			oConnector.StartGluePointIndex = 0
			oConnector.EndShape = oShape(1)
			oConnector.EdgeKind = com.sun.star.drawing.ConnectorType.STANDARD
End Sub
*********************************************** 

回答 Edit

  • 私の環境 (WinXP, OOo 3.2.1) では特にエラーは出ませんでした。上記のエラーは、「引数が間違っている」時のエラーです。 -- はにゃ?

感想,コメント,メモ Edit

new{2010-10-09 (土) 11:32:48};

  • ありがとうございます。解決しました。 -- new_OOo3 2010-10-09 (土) 15:35:59

お騒がせしまして申し訳ありません。

[ 環境1 ]

OS : Windows7 Professional 32bit版

OOo : OpenOffice.org 3.3 Beta

での現象でした。

ご提示頂きました様に下記環境ではConnectShapeが作成されました。

[ 環境2 ]

OS : Windows XP Professional SP3

OOo : OpenOffice.org 3.2.1

但し、上記Codeのままでは1つの□を繋ぐ様になるので、下記Code2の様に修正することで想定するConnecterを作成する事ができました。 また、Error Messageの誤認識までご指導頂きましてありがとうございます。(自分の英語力の無さを改めて痛感しました。)

******* Code2 ***********
Sub oDShape
	Dim oDoc
	Dim oPage
	Dim oShape(1)       ' <= 配列数を追加
	Dim Dummy()
		oDoc = StarDesktop.loadComponentFromURL("private:factory/sdraw", "_default", 0, Dummy())
		oPage = oDoc.getDrawPages().getByIndex(0)
		for i = 0 to 1
			oShape(i) = oDoc.createInstance("com.sun.star.drawing.RectangleShape")
			' Position
			 	oPoint = CreateUnoStruct("com.sun.star.awt.Point")
				oPoint = oShape(i).Position
					oPoint.X = 2000 + i*6000
					oPoint.Y = 2000
				oShape(i).Position = oPoint
  		' Size
  			oSize = CreateUnoStruct("com.sun.star.awt.Size")
  			oSize = oShape(i).Size
  				oSize.Height = 1500		' unit : 1/100mm
  				oSize.Width =  3000		' unit : 1/100mm
  			oShape(i).Size = oSize
  		oPage.add(oShape(i))
  	next i
  	'
  	Dim oConnector
  	oConnector = oDoc.createInstance("com.sun.star.drawing.ConnectorShape") 
			oPage.add(oConnector)	
			oConnector.StartShape = oShape(0)
			oConnector.StartGluePointIndex = 1
			oConnector.EndShape = oShape(1)
			oConnector.EdgeKind = com.sun.star.drawing.ConnectorType.STANDARD
End Sub
****************************************************


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes