2011年05月23日
実用VBP第2弾
Paoには図郭とトンボの自動作成機能がない。
一応、汎用CADというポリシーがあるので・・・
そこで、測量座標系がちゃんと設定されている図面で、図枠の下書きからXY座標軸が付いた図郭を自動作成するマクロを作りました。
座標軸を書き込むのは結構面倒な作業なので、これだけでも随分便利です。
'矩形を選択して座標値付きの図郭を作成
Sub CreateXYFrame()
If Selection.Count <> 1 Then Exit Sub
If Selection.First.FeatureType <> hoc_Polyline Then Exit Sub
'座標値文字のフォント設定
With FontSeting
.Height = 4.0
.Width = 4.0
.FontName = "MS 明朝"
End With
'内側の枠を作る
PenNo = 1
LineKind = 1
Set Verts1 = New CoordList '頂点座標リスト
Verts1.Add Selection.First.Verts(0) '右下
Verts1.Add Selection.First.Verts(1) '左下
Verts1.Add Selection.First.Verts(2) '左上
Verts1.Add Selection.First.Verts(3) '右上
DrawPolyline Verts1, hoc_oc_Close
'左下角の測量座標値を計算する
Set SvyLeftBottom1 = GroupInfo(0).PosToSvyCoord(Selection.First.Verts(1))
'X座標値の書き出し
BaseX1 = Fix(SvyLeftBottom1.X / 100) * 100
Set LeftBase1 = GroupInfo(0).SvyCoordToPos(CoordXY(BaseX1, SvyLeftBottom1.Y))
Set RightBase1 = CoordXY(Verts1.Item(0).X, LeftBase1.Y)
While LeftBase1.Y < Verts1.Item(2).Y
DrawLine LeftBase1, CoordXY(LeftBase1.X - 15, LeftBase1.Y)
DrawText CoordXY(LeftBase1.X - 7.5, LeftBase1.Y), CStr(BaseX1)
DrawLine RightBase1, CoordXY(RightBase1.X + 15, RightBase1.Y)
DrawText CoordXY(RightBase1.X + 7.5, RightBase1.Y), CStr(BaseX1)
LeftBase1.Offset 0, 100 * 1000 * GroupScale(0)
RightBase1.Offset 0, 100 * 1000 * GroupScale(0)
BaseX1 = BaseX1 + 100
Wend
BaseY1 = Fix(SvyLeftBottom1.Y / 100) * 100 + 100
Set BottomBase1 = GroupInfo(0).SvyCoordToPos(CoordXY(SvyLeftBottom1.X, BaseY1))
Set TopBase1 = CoordXY(BottomBase1.X, Verts1.Item(2).Y)
'Y座標値の書き出し
While BottomBase1.X < Verts1.Item(0).X
DrawLine BottomBase1, CoordXY(BottomBase1.X, BottomBase1.Y - 15)
DrawText CoordXY(BottomBase1.X, BottomBase1.Y - 7.5), CStr(BaseY1), 270
DrawLine TopBase1, CoordXY(TopBase1.X, TopBase1.Y + 15)
DrawText CoordXY(TopBase1.X, TopBase1.Y + 7.5), CStr(BaseY1), 270
BottomBase1.Offset 100 * 1000 * GroupScale(0), 0
TopBase1.Offset 100 * 1000 * GroupScale(0), 0
BaseY1 = BaseY1 + 100
Wend
'外側の枠を作る
PenNo = 2
Verts1.Item(0).Offset 15, -15
Verts1.Item(1).Offset -15, -15
Verts1.Item(2).Offset -15, 15
Verts1.Item(3).Offset 15, 15
DrawPolyline Verts1, hoc_oc_Close
End Sub
こうして、サンプルとしてではなく、実際に使用するものを作成してみると、作りづらいところがよく見えてきます。
その都度 チューニングしつつ、だいぶそれなりにコーディングできるようになってきました。
今は、とにかくVBPのヘルプが直ぐに表示されるようにしたので、それだけでだいぶ楽になりました。
今はこれを「マイマクロ」に置いていますが、こういったユーティリティマクロが増えていくと、やっぱりアドインマクロのような機能が欲しくなります。 これは まあ 後々の課題で・・・
まだバグもちらほら 見つかりますが、もうかなりレアケースのバグばかりになってきました。
Pao自体は、ほぼ自分中での「こういうCADだったらいいなー」というものになって来た感じです。
あとはVBPのヘルプを完成させるのみ!
トラックバックURL
この記事へのコメント
Paoは測量系に特化したCADで進んで行くの
でしょうか?
建築系のCADには進まないのであれば
別のCADに進みたいと思うのですが。
方向性が知りたいですね。