Top > OOoBasic > Draw > Gluepoints

接着点 Edit

コネクタを付けておくことができる接着点。

手動で新しく接着点を追加できますが、手で行うと正確な位置に配置するのは結構難しいです。

取得 Edit

接着点コンテナオブジェクトは各シェープごとにあります。

oGluePoints = oShape.GluePoints

このオブジェクトは次のインターフェースをエクスポートしています。

  • com.sun.star.container.XIdentifierContainer
  • com.sun.star.container.XIndexContainer

追加 Edit

接着点の指定は com.sun.star.drawing.GluePoint2 struct で行います。

 aPoints = CreateUnoStruct("com.sun.star.drawing.GluePoint2")
 
 aPos = CreateUnoStruct("com.sun.star.awt.Point")
 aPos.X = 0
 aPos.Y = 0
 
 nAlign = com.sun.star.drawing.Alignment
 nEscape = com.sun.star.drawing.EscapeDirection
 
 With aPoints
   .Position = aPos
   .IsRelative = True
   .PositionAlignment = nAlign.CENTER
   .Escape = nEscape.SMART
   .IsUserDefined = True
 End With
 
 nID = oShape.GluePoints.insert( aPoints )

コンテナの適当なインデックスを選んで挿入するには insertByIndex メソッドで行えます。インデックスを指定せずに insert メソッドで挿入するとポイントの ID を返します。この ID はコネクタを接続する時に使用します。

GluePoint2説明
Position位置。1/100 mm または 1/100 % 単位で指定。位置はシェープの中央が (0, 0)。IsRelative が True のときは % 指定できる
IsRelative相対位置指定を利用する
PositionAlignment接着点の配置。com.sun.star.drawing.Alignment
Escapeコネクタの向く向き指定。com.sun.star.drawing.EscapeDirection
IsUserDefinedユーザー定義。ユーザー定義のものはクロスマークで表示される

削除 Edit

removeByIndex メソッドまたは removeByIdentifier で行います。removeByIdentifier では作成時の ID を指定します。

置換 Edit

replaceByIndex メソッドまたは replaceByIdentifer メソッドで行います。削除と同様。

追加2 Edit

接着点はいろんな位置に追加できますが、長方形の頂点に挿入するときなどは簡単に位置を指定できます。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
Sub gluepoints_1
  oDoc = ThisComponent
  oPage = oDoc.getDrawPages().getByIndex(0)
  
  oRect = oPage.getByIndex(0)
  
  nAlign = com.sun.star.drawing.Alignment
  nEscape = com.sun.star.drawing.EscapeDirection
  
  InsertGluePoint( oRect, -5000, -5000, True, nAlign.TOP_LEFT, nEscape.SMART )
  InsertGluePoint( oRect, 5000, -5000, True, nAlign.TOP_RIGHT, nEscape.SMART )
  InsertGluePoint( oRect, 5000, 5000, True, nAlign.BOTTOM_RIGHT, nEscape.SMART )
  InsertGluePoint( oRect, -5000, 5000, True, nAlign.BOTTOM_LEFT, nEscape.SMART )
End Sub
 
 
Function InsertGluePoint( oShape As Object, _
    nX As Long, nY As Long, _
    bRelative As Boolean, nAlign As Long, nEscape As Long )
  
  aPoints = CreateUnoStruct("com.sun.star.drawing.GluePoint2")
  
  aPos = CreateUnoStruct("com.sun.star.awt.Point")
  aPos.X = nX
  aPos.Y = nY
  
  With aPoints
    .Position = aPos
    .IsRelative = bRelative
    .PositionAlignment = nAlign
    .Escape = nEscape
    .IsUserDefined = True
  End With
  
  InsertGlue = oShape.GluePoints.insert( aPoints )
End Function

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