引出線は、注釈に関連付けられています。そのため、注釈を移動すると、引出線の終点もそれに応じて移動します。文字および公差記入枠の注釈を移動すると、最後の引出線セグメントは、注釈と最後から 2 番目の引出線の点との関係に応じて、注釈の右側または左側に変更されます。注釈の中点が引出線の最後から 2 番目の点の右側にある場合は、引出線は右側に付きます。そうでない場合は、左側に付きます。
Erase、Add (ブロックを追加)、または WBlock メソッドのいずれかを使用して図面からオブジェクトを削除すると、関連付けが失われます。引出線とその注釈を 1 回の操作でまとめて複写した場合は、関連付けが保持されます。個別にコピーした場合、それらは自動調整されません。引出線オブジェクトのみを複写したり、注釈を削除するなどして、両者の関連付けが失われた場合は、その理由に関わらず、フック ラインが引出線から除去されます。
次の例は、MText オブジェクトを作成します。次に、この MText オブジェクトを注釈にして引出線を記入します。
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
<CommandMethod("AddLeaderAnnotation")> _
Public Sub AddLeaderAnnotation()
'' Get the current database
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
'' Start a transaction
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
'' Open the Block table for read
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, _
OpenMode.ForRead)
'' Open the Block table record Model space for write
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
OpenMode.ForWrite)
'' Create the MText annotation
Using acMText As MText = New MText()
acMText.Contents = "Hello, World."
acMText.Location = New Point3d(5, 5, 0)
acMText.Width = 2
'' Add the new object to Model space and the transaction
acBlkTblRec.AppendEntity(acMText)
acTrans.AddNewlyCreatedDBObject(acMText, True)
'' Create the leader with annotation
Using acLdr As Leader = New Leader()
acLdr.AppendVertex(New Point3d(0, 0, 0))
acLdr.AppendVertex(New Point3d(4, 4, 0))
acLdr.AppendVertex(New Point3d(4, 5, 0))
acLdr.HasArrowHead = True
'' Add the new object to Model space and the transaction
acBlkTblRec.AppendEntity(acLdr)
acTrans.AddNewlyCreatedDBObject(acLdr, True)
'' Attach the annotation after the leader object is added
acLdr.Annotation = acMText.ObjectId
acLdr.EvaluateLeader()
End Using
End Using
'' Commit the changes and dispose of the transaction
acTrans.Commit()
End Using
End Sub
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
[CommandMethod("AddLeaderAnnotation")]
public static void AddLeaderAnnotation()
{
// Get the current database
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
// Start a transaction
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
// Open the Block table for read
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
OpenMode.ForRead) as BlockTable;
// Open the Block table record Model space for write
BlockTableRecord acBlkTblRec;
acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
OpenMode.ForWrite) as BlockTableRecord;
// Create the MText annotation
using (MText acMText = new MText())
{
acMText.Contents = "Hello, World.";
acMText.Location = new Point3d(5, 5, 0);
acMText.Width = 2;
// Add the new object to Model space and the transaction
acBlkTblRec.AppendEntity(acMText);
acTrans.AddNewlyCreatedDBObject(acMText, true);
// Create the leader with annotation
using (Leader acLdr = new Leader())
{
acLdr.AppendVertex(new Point3d(0, 0, 0));
acLdr.AppendVertex(new Point3d(4, 4, 0));
acLdr.AppendVertex(new Point3d(4, 5, 0));
acLdr.HasArrowHead = true;
// Add the new object to Model space and the transaction
acBlkTblRec.AppendEntity(acLdr);
acTrans.AddNewlyCreatedDBObject(acLdr, true);
// Attach the annotation after the leader object is added
acLdr.Annotation = acMText.ObjectId;
acLdr.EvaluateLeader();
}
}
// Commit the changes and dispose of the transaction
acTrans.Commit();
}
}
Sub AddLeaderAnnotation()
Dim leaderObj As AcadLeader
Dim mtextObj As AcadMText
Dim points(0 To 8) As Double
Dim insertionPoint(0 To 2) As Double
Dim width As Double
Dim leaderType As Integer
Dim annotationObject As Object
Dim textString As String, msg As String
' Create the MText object in model space
textString = "Hello, World."
insertionPoint(0) = 5
insertionPoint(1) = 5
insertionPoint(2) = 0
width = 2
Set mtextObj = ThisDrawing.ModelSpace. _
AddMText(insertionPoint, width, textString)
' Data for Leader
points(0) = 0: points(1) = 0: points(2) = 0
points(3) = 4: points(4) = 4: points(5) = 0
points(6) = 4: points(7) = 5: points(8) = 0
leaderType = acLineWithArrow
' Create the Leader object in model space and associate
' the MText object with the leader
Set annotationObject = mtextObj
Set leaderObj = ThisDrawing.ModelSpace. _
AddLeader(points, annotationObject, leaderType)
ZoomAll
End Sub