Top > OOoBasic > Draw > Gluepoints

*接着点 [#h67e0fa4]

[[コネクタ>OOoBasic/Draw/Shapes#m77bfa11]]を付けておくことができる接着点。

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

#contents

**取得 [#d249d809]
接着点コンテナオブジェクトは各シェープごとにあります。

 oGluePoints = oShape.GluePoints
このオブジェクトは次のインターフェースをエクスポートしています。
-com.sun.star.container.XIdentifierContainer
-com.sun.star.container.XIndexContainer
**追加 [#aa10c119]
接着点の指定は 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|説明|h
|Position|位置。1/100 mm または 1/100 % 単位で指定。位置はシェープの中央が (0, 0)。IsRelative が True のときは % 指定できる|
|IsRelative|相対位置指定を利用する|
|PositionAlignment|接着点の配置。[[com.sun.star.drawing.Alignment>http://api.openoffice.org/docs/common/ref/com/sun/star/drawing/Alignment.html]]|
|Escape|コネクタの向く向き指定。[[com.sun.star.drawing.EscapeDirection>http://api.openoffice.org/docs/common/ref/com/sun/star/drawing/EscapeDirection.html]]|
|PositionAlignment|接着点の配置。&idlref(com.sun.star.drawing.Alignment);|
|Escape|コネクタの向く向き指定。&idlref(com.sun.star.drawing.EscapeDirection);|
|IsUserDefined|ユーザー定義。ユーザー定義のものはクロスマークで表示される|
**削除 [#n9e8dc9c]
removeByIndex メソッドまたは removeByIdentifier で行います。removeByIdentifier では作成時の ID を指定します。
**置換 [#w3a22488]
replaceByIndex メソッドまたは replaceByIdentifer メソッドで行います。削除と同様。
**追加2 [#a26c853a]
接着点はいろんな位置に追加できますが、長方形の頂点に挿入するときなどは簡単に位置を指定できます。

#code(ob){{
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