お知らせ

--------------------------------------------------

プログラム作成/コンサルティングの申し込みはこちら

--------------------------------------------------

2010年4月9日金曜日

.NET の勉強 「線分、円、MTEXT の作成」(AutoCAD 2011)

今日は、ながーらくサボっていた .NET の勉強を、やっと再開したので、そこのとについてです。


今回は、何か図形を描いてみたいと思って、サンプル ファイルを探してみました。
まずは、基本からなので、線分を作成する以下のサンプル見つけて、それをやってみました。
(プロジェクトの作成は、以前書いた手順で行いました。)
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry

<CommandMethod("AddLine")> _
Public Sub AddLine()

    '' Get the current document and 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 a line that starts at 5,5 and ends at 12,3
        Dim acLine As Line = New Line(New Point3d(5, 5, 0), _
                                            New Point3d(12, 3, 0))
        acLine.SetDatabaseDefaults()

        '' Add the new object to the block table record and the transaction
        acBlkTblRec.AppendEntity(acLine)
        acTrans.AddNewlyCreatedDBObject(acLine, True)

        '' Save the new object to the database
        acTrans.Commit()
    End Using
End Sub
線分1本描くのにいろいろやらなきゃいけないんですね。
確かに 5,5 から 12,3 の線分が描けましたが、何やってるんでしょう???
管理人には難しすぎて、ほとんど理解不能です。。。


オンライン ヘルプに、こんな絵が載ってました。
サンプルでは、Document、Database、Block table、Block table record の順番に開いているのは、この絵の順番なんだろうか???きっとそうだ。そう思おう。


ということで、あんまり難しいことを理解しようとすると、何も前に進まないので、「'' Create a line that starts at 5,5 and ends at 12,3」のところの作図部分だけをいろいろいじってみることにしました。


どういじったかというと、試しに、もうひとつの線分と 円と MTEXT を描くために、こんな内容を追加してみました。
Dim L1 As Line = New Line()
L1.SetDatabaseDefaults()
L1.StartPoint = New Point3d(0, 0, 0)
L1.EndPoint = New Point3d(100, 100, 0)

acBlkTblRec.AppendEntity(L1)
acTrans.AddNewlyCreatedDBObject(L1, True)


Dim c1 As Circle = New Circle()
c1.SetDatabaseDefaults()
c1.Center = New Point3d(50, 50, 0)
c1.Radius = 20
c1.ColorIndex = 1
c1.Normal = Vector3d.ZAxis

acBlkTblRec.AppendEntity(c1)
acTrans.AddNewlyCreatedDBObject(c1, True)


Dim mt1 As MText = New MText()
mt1.SetDatabaseDefaults()
mt1.Location = New Point3d(50, 50, 0)
mt1.Width = 100.0
mt1.TextHeight = 10.0
mt1.Contents = "てすとです。"

acBlkTblRec.AppendEntity(mt1)
acTrans.AddNewlyCreatedDBObject(mt1, True)
これで、実行してみたところ、無事 線分、円、MTEXT を作成することができました。


各オブジェクトを宣言したあと、それぞれのプロパティを指定してあげれば、オブジェクトを作成できるようです。

  • 線分の場合は、L1 を宣言して、L1 の始点、終点 を指定しました。
  • 円の場合は、c1 を宣言して、c1 の中心点、半径、色、法線方向 を指定しました。
  • MTEXT の場合は、mt1 を宣言して、文字の位置、幅、文字高さ、文字 を指定しました。


なんとなく、コツがつかめたような感じがします。他のオブジェクトもこんな感じで描けると思います。
意味が分からないところがありますが、とりあえず図形は描けるようになりました。


まだ勉強を始めたばかりなので、分からないところばかりにこだわらずに、これからもどんどん次に進んでいこうかと思います。

※ これから、毎週金曜日は .NET の日にしようかなぁー、、、と思ってたりします。

0 件のコメント:

コメントを投稿