0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autocad VBA 入門 のご紹介  第1回 

  CAD作業をVBAを使って自動化する技術をご紹介します。
 本記事以外にも下記にて学習が可能です。ご利用ください。

また、Autocad 自動化の受注業務も行っています。
下記ホームページ下部のメールよりお気軽にご相談ください。
https://www.autotex.org/

(1)Youtube 動画で詳細に解説
https://www.youtube.com/watch?v=BSOfA0CdP4Y&list=PLTGhsY0lj6fYNFqS8rBjVbxjcqclj_5YD&index=10

(2)テキストの販売・・・下記ホームページよりご購入ください。
https://www.autotex.org/
注意:テキストは現在(2024年) 入門編と基礎編があります。
   ご購入の領収書発行を行っています。

(例-1)直線を作図・・・(10,20)と(60,40)を結ぶ直線
直線作図.png

Sub Example_AddLine()
 '線オブジェクトを宣言
Dim lineObj As AcadLine

 '線オブジェクトの要素を宣言
Dim startPoint(0 To 2) As Double  ’線分の始点(3D WCS 座標)
Dim endPoint(0 To 2) As Double   ’線分の終点(3D WCS 座標)

'線オブジェクトの要素を設定(線の始点と終点)		
startPoint(0) = 10: startPoint(1) =20: startPoint(2) = 0		
endPoint(0) = 60: endPoint(1) = 40: endPoint(2) = 0		

 'モデル空間に線を作成
Set lineObj = ThisDrawing.ModelSpace.AddLine (startPoint, endPoint)
lineObj.color= acCyan

 '図面全体表示
    ZoomAll

End Sub

(例-2)円を作図・・・中心(10,20)に半径30の円を作図

円作図.png

Sub Example_AddCircle()

’円オブジェクトの宣言
Dim circleObj As AcadCircle

’円オブジェクト要素の宣言
Dim centerPoint(0 To 2) As Double  ’円の中心(3D WCS 座標)
Dim radius As Double        ’円の半径(正の数値)

’円オブジェクト要素の設定
centerPoint(0) = 10#: centerPoint(1) =20#: centerPoint(2) = 0#
radius = 30#

''モデル空間に円を作成	
Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)	

  circleObj.color=acYellow

’図面全体表示
  ZoomAll

End Sub

(例-3)ソリッドを作図
ソリッド.png

Sub Example_AddSolid()

’ソリッドオブジェクトの宣言
Dim solidObj As AcadSolid

’ソリッドオブジェクト要素の宣言
Dim point1(0 To 2) As Double   ’1 番目の点( 3D WCS 座標)
Dim point2(0 To 2) As Double   ’2 番目の点( 3D WCS 座標)
Dim point3(0 To 2) As Double   ’3 番目の点( 3D WCS 座標)
Dim point4(0 To 2) As Double   ’4 番目の点( 3D WCS 座標)

’ソリッドオブジェクト要素の設定
point1(0) = 50#: point1(1) = 0#: point1(2) = 0#
point2(0) = 80#: point2(1) = 0#: point2(2) = 0#
point3(0) = 80#: point3(1) = 60#: point3(2) = 0#
point4(0) = 50#: point4(1) = 60#: point4(2) = 0#

' モデル空間にソリッドオブジェクトを作成	
Set solidObj = ThisDrawing.ModelSpace.AddSolid(point1, point2, point3, point4)	
solidObj.color=acGreen	

’図面全体表示
ZoomAll

End Sub

(例-4)リージョンを作図
リージョン.png

Sub Example_AddRegion()

’リージョンオブジェクトの宣言
 Dim regionObj As Variant   ’タイプ:バリアント型(Region オブジェクトの配列)

’リージョンオブジェクトの領域宣言
Dim curves(0 To 1) As AcadEntity   '''''円弧とラインを想定しているので0,1の2個でオブジェクト配列宣言
'円弧の要素宣言
Dim centerPoint(0 To 2) As Double
Dim radius As Double
Dim startAngle As Double
Dim endAngle As Double

'円弧の要素設定
centerPoint(0) = -30#: centerPoint(1) = -30#: centerPoint(2) = 0#
radius = 30#: startAngle = 30: endAngle = 240

' 度単位の角度をラジアン単位の角度に変換		
Dim startAngleInRadian As Double		
Dim endAngleInRadian As Double		
startAngleInRadian = startAngle* 3.141592 / 180#		
endAngleInRadian = endAngle * 3.141592 / 180#			

 ’リージョンオブジェクトの領域設定・・・領域を形成する円弧(0)とライン(1)を作成
Set curves(0) = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngleInRadian , endAngleInRadian )
Set curves(1) = ThisDrawing.ModelSpace.AddLine(curves(0).startPoint, curves(0).endPoint)

' リージョンを作成 (注意:Setは不要)		
regionObj = ThisDrawing.ModelSpace.AddRegion(curves)		

regionObj(0).color = acMagenta      '''色を設定するには配列(0)にしないといけない。

’図面全体表示
ZoomAll

End Sub

(例-5)ハッチングを作図
ハッチング.png

Sub Example_AddHatch()

’ハッチングオブジェクトの宣言
Dim hatchObj As AcadHatch

’ハッチングオブジェクトの要素宣言
Dim PatternType As Long     ’パターンタイプ
Dim patternName As String    ’パターン名
Dim bAssociativity As Boolean   ’パターンの自動調整 (True:あり、False:なし)

’ハッチングオブジェクトの要素設定
PatternType = 0
patternName ="ANSI31"
bAssociativity = True        ’パターンの自動調整 あり

' 'モデル空間にハッチオブジェクトを作成		
Set hatchObj = ThisDrawing.ModelSpace.AddHatch (PatternType, patternName, bAssociativity)
	
' 'ハッチの外側の境界を宣言    '''''外側のループは閉じたループで、内側のループより先に作成しなければなりません。		
Dim outerLoop(0 To 0) As AcadEntity		

 ' 'ハッチの外側の境界(円)の要素宣言
Dim center(0 To 2) As Double
Dim radius As Double

 ' 'ハッチの外側の境界(円)の要素設定
center(0) =-30: center(1) = 30: center(2) = 0
radius = 15

 ' 'ハッチの外側の境界(円)の作成
Set outerLoop(0) = ThisDrawing.ModelSpace.AddCircle (center, radius)
 outerLoop(0).color = acGreen

'''''有効な外側のループを作成したら、AppendInnerLoop メソッドを使用して 内側のループを追加します。		
' 'ハッチングオブジェクトに外側の境界を追加し、ハッチングを表示		
hatchObj.AppendOuterLoop (outerLoop)    		

 hatchObj.color=acGreen

hatchObj.Evaluate          '''''境界用のハッチング線分または塗り潰しを計算		
	
ThisDrawing.Regen  True		

End Sub

今回は簡単な2D図形の作図を扱いました。
次回、2回目は図形の編集(複写、鏡像、移動、回転など)を扱います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?