Jwc2BmpX (JWTmaker)

表紙  JWTran  Jwc2Bmp  Jwc2BmpX

1. 概要
2. 使い方
3. プログラム例
4. コマンド・関数の解説
 4.1 コマンド・関数一覧
 4.2 制御ブロック
 4.3 作図ブロック
 4.4 変換・表示コマンド
 4.5 JWC図面プロパティ


1. 概要

Jwc2BmpX(旧称JWTmaker32)

Jwc2BmpXは、WINDOWS環境でJWTデータを作成するためのプロシジャのActiveX.DLLです。これをVBやVBA(エクセルなどに付属)から参照することで、JWTデータを作るメソッドがLINE とか CIRCLE というグラフィック命令ステートメントと同じように使え、JW_Cadを利用するプログラムを簡単に書けます。 表示機能はJwc2Bmp2と全く同じです。

レジストリ自動登録のため必ず付属のセットアップでインストールしてください。また旧版がある時には、「コントロールパネル」−「アプリケーションの追加と削除」で削除してからインストールしてください。

JWTmaker

JWTmakerは、DOS環境でJWTデータ生成のためのQBステートメントのライブラリパッケージです。QUICK BASIC 上で LINE とか CIRCLE というグラフィック命令で画面に作画するのと同様に、LINETO や、ARC という命令でJWTコマンドを出力します。

DOS用のJWTmakerは、PC9801用、DOS/V用それぞれに用意されており、使用方法はそれぞれの添付ドキュメントを参照してください。ここでは、Jwc2BmpXの解説のみを行います。


2. 使い方

1) 呼び出し準備をする

VB(Visual Basic - 開発用言語)またはVBA(エクセルやワードに付属している Visual Basic for Application)を起動後、[参照設定]で、Jwc2BmpX にチェックを入れておきます。これは初回起動時のみ行えばOKです。 (例:下図)

2) 呼び出しプログラムを書く

ActiveX DLLを読み込むために、DIM ステートメントで次のように宣言します。

DIM <変数名> AS NEW clsJWTmaker  'clsJWTmakerはクラスモジュール名。

変数名は適当に決めてればよいですが、JW としておくとわかりやすいです。

3) 後は、普通にプログラムを作成し、図化処理の必要なところで、適宜Jwc2BmpX.DLLに含まれるメソッド・関数を使いながらJWTデータを作っていきます。以下にプログラム構成例を示します。

Dim jw As New clsJWTmaker 'ActiveX.DLLの使用宣言
jw.JwtOpen "example" '新規ファイルオープン
..
'制御ブロックを記述 '(省略可)
..
jw.PaperSize 4 '(省略可)
jw.GroupName 0, 50, "" '(省略可)
..
..
jw.Begin '以降に作図ブロック処理を書く
..
..
'作図ブロックを記述
..
..
jw.Jwtclose

4) エクセルに付属のVBAから使う場合の例です。

1. メニュー[ツール]−[マクロ]−[Visual Basic Editor]を選ぶ。
2. メニュー[挿入][標準モジュール]を選ぶ。
3. メニュー[ツール][参照設定]で[Jwc2BmpX]にチェックする。
4. 下に示すサンプルプログラムを切り取って貼り付ける。
5. メニュー[実行]を選ぶ。

5) JWTデータ作成以外に、単独で使用できる次のコマンドがあります。

jw.JWTtoJWC myFile$ '指定したJWTファイルをJWCに変換する
jw.JWCtoJWT myFile$ '指定したJWCファイルをJWTに変換する
jw.ShowJWC myfile$ '指定したJWCファイルを表示する
jw.ShowJWT myfile$ '指定したJWTファイルを表示する

6) 作図ブロックで説明している幾何計算関数の多くは、JW_Cad作図以外にも利用可能です。


3. プログラム例

例(1) 作図例1

Sub Test1()
' 両対数グラフ用紙を作る
Dim jw As New clsJWTmaker
file$ = "logpaper"
jw.JwtOpen file$

jw.FileMemo "対数目盛グラフ用紙", "by JWTmaker"
jw.PaperSize 4
jw.GroupName 0, 5, "LOG_GRID"

jw.Begin
Lc = 2
Ls = 1
Ly = 0
LayerGroup = 0

'両対数目盛
xmin = 1
xmax = 10
ymin = 1
ymax = 10
OffsetX = log10(xmin)
OffsetY = log10(ymin)
jw.LeftBottom LayerGroup, OffsetX, OffsetY
For a = 1 To 10
jw.LineBetween Ly, log10(xmin), log10(a), log10(xmax), log10(a), Ls, Lc
jw.Character Ly, log10(xmin) - 60, log10(a), 0, 3, Right$(" " + Str$(a), 3)
jw.LineBetween Ly, log10(a), log10(ymin), log10(a), log10(ymax), Ls, Lc
jw.Character Ly, log10(a) - 20, log10(ymin) - 50, 0, 3, Right$(" " + Str$(a), 3)
Next a
jw.Jwtclose
jw.ShowJwt file$
End Sub

Function log10!(a)
log10! = 1000 * Log(a) / Log(10)
End Function

例 (2) 作図例2

Sub Main()
Dim jw As New clsJWTmaker

myfile$ = "banana"
jw.JwtOpen myfile$

jw.FileMemo "This is sample file", "for Testing JWTmaker32"
jw.PaperSize 3
jw.GroupName 0, 1, "0グループ"
jw.GroupName 1, 20, "1グループ"

jw.Begin
Ly% = 7
Lc% = 2
Ls% = 1
x0! = 0
y0! = 0
X1! = 400
Y1! = 300
jw.LineBox Ly%, x0!, y0!, X1!, Y1!, Ls%, Lc%
For x! = 0 To 400 Step 50
jw.LineBetween Ly%, x!, y0!, x!, Y1!, 4, Lc%
Next
For y! = 0 To 300 Step 50
jw.LineBetween Ly%, x0!, y!, X1!, y!, 2, Lc%
Next

y! = 225
For x! = 250 To 350 Step 25
jw.Relocate Ly% \ 16, x!, y!
jw.LineTo Ly%, 0, 25, 1, 5
jw.Polygon Ly%, 0, 0, 25, 18, 1, 3, 5
Next

Ly% = 16
x0! = 1500
y0! = 1500
X1! = 5000
Y1! = 4500
Lc% = 6
jw.LineBox Ly%, x0!, y0!, X1!, Y1!, Ls%, Lc%
jw.Character 20, 500, 500, 0, 5, "JWT出力テスト"
jw.Relocate Ly% \ 16, 50, 50
a! = 500
h! = a! / 2 * Sqr(3)
For j% = 0 To 3
y! = j% * h!
C! = C! + h! / 2
For i% = 0 To 3
x! = a * (i% + j% \ 2) + 3000
jw.Polygon Ly%, x! + C!, y!, h!, i% * 60, 1, 4, 3
Next i%
Next j%

jw.LineDivide Ly%, 1500, 1000, -1000, 2000, _
3000, 2000, 4000, 3000, 1, 3, 16
jw.JWTclose
jw.showJwt myfile$

End Sub

例 (3) 別のJWTファイルを読みこみ、編集中の図面中の任意位置に表示する。

Sub Test3()
' 外部ファイルをインポートする
Dim jw As New clsJWTmaker

file$ = "output"
jw.JwtOpen file$

jw.PaperSize 2
jw.GroupName 0, 100, "Group 1"

jw.Begin
jw.ChangeLayer 0
jw.ChangeStyle 1

For a = 0 To 5
jw.ChangeColor (a Mod 6) + 1
OffsetX = 8000 + a * 8000 - (a Mod 2) * 16000
OffsetY = 40000 - a * 6000 - (a Mod 2) * 12000
jw.LeftBottom 0, -OffsetX, -OffsetY
jw.Import 1, "d:\temp\j2b"
Next a

jw.Jwtclose
jw.ShowJwt file$
End Sub

例 (4) 指定したJWCファイルを表示する。

Sub Test2()
'JWCファイルを開く
Dim jw As New clsJWTmaker

file$ = "d:\temp\jw2bm2"
jw.ShowJwc file$

End Sub


4. コマンド・関数の解説

4.1 コマンド・関数一覧

利用できるProcedure, Function、Property の引数の型は、下記の通りです。
型宣言子の、% は2バイト整数、! は4バイト実数(単精度)、$ は文字型を示しています。

・ 制御ブロック

●JWT出力ファイル名指定
Sub JwtOpen(fl$)

●ファイルコメント
Sub FileMemo(co1$, co2$)

●用紙サイズ設定
Sub PaperSize(ps%)

●文字表示仕様
Sub MojiSize(mj%, Lc%, wide!, high!, space!)

●レイヤグループ縮尺・名称
Sub GroupName(Gp%, sc!, GName$)

●レイヤ名称
Sub LayerName(Ly%, LName$)

●表示グループレイヤ
Sub GroupVisible(J0%, J1%, J2%, J3%, J4%, J5%, J6%, J7%, J8%, J9%, JA%, JB%, jC%, JD%, jE%, JF%)

●サーチグループレイヤ
Sub GroupActive(J0%, J1%, J2%, J3%, J4%, J5%, J6%, J7%, J8%, J9%, JA%, JB%, jC%, JD%, jE%, JF%)

●表示レイヤ
Sub LayerVisible(Gp%, J0%, J1%, J2%, J3%, J4%, J5%, J6%, J7%, J8%, J9%, JA%, JB%, jC%, JD%, jE%, JF%)

●サーチレイヤ
Sub LayerActive(Gp%, J0%, J1%, J2%, J3%, J4%, J5%, J6%, J7%, J8%, J9%, JA%, JB%, jC%, JD%, jE%, JF%)

●レイヤグループ毎の書き込みレイヤ
Sub LayerOpen(J0%, J1%, J2%, J3%, J4%, J5%, J6%, J7%, J8%, J9%, JA%, JB%, jC%, JD%, jE%, JF%)

●書込レイヤ
Sub LatestLayer(Ly%)

●書込線色
Sub LatestColor(Lc%)

●書込線種
Sub LatestStyle(Ls%)

●ヘッダ情報2
Sub Header2(H2$)

●ヘッダ情報3
Sub Header3(H3$)

●ヘッダ情報4
Sub Header4(H4$)

●図形ファイル
Sub zukei(scl!)

●コメント
Sub Remarks(c$)

●制御ブロック終了
Sub Begin()

・ 作図ブロック

●作図座標系の原点指定(実長さで原点指示)
Sub Relocate(Gp%, xo!, yo!)

●作図座標系の原点指定(左下隅座標値を指示)
Sub LeftBottom(Gp%, xo!, yo!)

●現在位置変更
Sub MovePoint(Ly%, x!, Y!)

●仮点
Sub VirtualPoint(Ly%, xc!, yc!)

●実点
Sub RealPoint(Ly%, xc!, yc!, Lc%)
Sub RealPointF(Ly%, xc!, yc!, Lc%, fl1%, dm1%)

●線分 2点指定
Sub LineBetween(Ly%, xb!, yb!, xe!, ye!, Ls%, Lc%)
Sub LineBetweenF(Ly%, xb!, yb!, xe!, ye!, Ls%, Lc%, dm1%, fl1%, fl2%)

●線分 1点指定
Sub LineTo(Ly%, xe!, ye!, Ls%, Lc%)
Sub LineToF(Ly%, xe!, ye!, Ls%, Lc%, dm1%, fl1%, fl2%)

●箱型 対角指定
Sub LineBox(Ly%, x1!, y1!, x2!, y2!, Ls%, Lc%)

●箱型 中心指定
Sub LineBoxC(Ly%, x1!, y1!, wx!, wy!, Ls%, Lc%)

●多線
Sub LineDivide(Ly%, x1b!, y1b!, x1e!, y1e!, x2b!, y2b!, x2e!, y2e!, Ls%, Lc%, n%)

●多角形
Sub Polygon(Ly%, xc!, yc!, rc!, angle!, Ls%, Lc%, np%)

●線分 指定点から距離・角度指定
Sub LinePole(Ly%, x1!, y1!, dd!, angle!, Ls%, Lc%)

●線分 指定点からX,Y成分指定
Sub LineStep(Ly%, x1!, y1!, xstep!, ystep!, Ls%, Lc%)

●連続2線
Sub DualLine(Ly%, xp!(), yp!(), np%, iC%, ofL!, ofR!, Ls%, Lc%, iLsL%, iLcL%, iLsR%, iLcR%)

●スプライン(閉)
Sub DrawSplineC(Ly%, x!(), y!(), n%, Ls%, Lc%, Ndiv%)

●スプライン(開)
Sub DrawSplineF(Ly%, x!(), y!(), n%, Ls%, Lc%, Ndiv%)

●等高線
Sub LineContour(Ly%, xoff!, yoff!, div!, grid%, x!(), y!(), z!())
Sub LineContourN(Ly%, xoff!, yoff!, div!, grid%, z!())

●接線
Function TangentLine(Ly%,x1!,y1!,xc!,yc!,rc!,x3!,y3!,x4!,y4!,Ls%,Lc%) As Boolean

●直線と円の交点
Function NodeCircle(x1!,y1!,x2!,y2!,xc!,yc!,rc!,x3!,y3!,x4!,y4!) As Integer

●2円の交点
Function NodeCircle2(x1!,y1!,r1!,x2!,y2!,r2!,x3!,y3!,x4!,y4!) As Integer

●円弧 ArC
Sub ARC(Ly%, xc!, yc!, rc!, aspect!, sStart!, sEnd!, angle!, Ls%, Lc%)
Sub ARCF(Ly%, xc!, yc!, rc!, aspect!, sStart!, sEnd!, angle!, Ls%, Lc%, dm1%, fl1%, dm2%)

●全円 CirCle
Sub FullCircle(Ly%, xc!, yc!, rc!, Ls%, Lc%)
Sub FullCircleF(Ly%, xc!, yc!, rc!, Ls%, Lc%, dm1%, fl1%, dm2%)

●円弧 接線方向指示
Sub ArcStep(Ly%, x1!, y1!, ag1!, rc!, ac!, Ls%, Lc%)

●文字 左寄せ
Sub Character(Ly%, xb!, yb!, angle!, mj%, B$)
Sub CharacterF(Ly%, xb!, yb!, angle!, mj%, B$, fl1%, fl2%)
Sub StrLeft(Ly%, x1!, y1!, angle!, moji%, a$)

●文字 指定点中央
Sub CharacterC(Ly%, xb!, yb!, angle!, mj%, B$)
Sub StrCenter(Ly%, x1!, y1!, angle!, moji%, a$)

●文字 右寄せ
Sub CharacterR(Ly%, xb!, yb!, angle!, mj%, B$)
Sub StrRight(Ly%, x1!, y1!, angle!, moji%, a$)

●文字 2点間中央
Sub StrBetween(Ly%, x1!, y1!, x2!, y2!, moji%, a$)

●書式指定付き文字
Sub ValueFormat(Ly%, x1!, y1!, angle!, moji%, a, using$)

●距離寸法値表示
Sub DimValueBetween(Ly%, x1!, y1!, x2!, y2!, soffset!, moji%)

●寸法線・寸法値表示
Sub DimLineBetween(Ly%, x1!, y1!, x2!, y2!, soffset!, Ls%, Lc%, moji%)

●直線指定−2点を通る直線
Function MemoLineStep(m%, x1!, y1!, x2!, y2!) As Boolean

●直線指定−1点を通り、指定した傾きの直線
Function MemoLinePole(m%, x1!, y1!, angle!) As Boolean

●直線指定−1点を通り、指定した直線に直交する直線
Function MemoLineNorm(m%, m1%, x1!, y1!) As Boolean

●直線指定−1点を通り、指定した直線に平行する直線
Function MemoLinePara1(m%, m1%, x1!, y1!) As Boolean

●直線指定−指定した直線から指定距離で平行する直線
Function MemoLineParaD(m%, m1%, dist!) As Boolean

●平行・回転移動
Sub Transform(xo!, yo!, angle!, u!, v!, x!, y!)

●回転・平行移動
Sub InvTransform(xo!, yo!, angle!, x!, y!, u!, v!)

●座標計算−移動(距離・角度)
Sub MovePole(x1!, y1!, dd!, angle!)

●座標計算−移動(X成分・Y成分)
Sub MoveStep(x1!, y1!, xstep!, ystep!)

●座標計算−2点の中点
Sub MiddlePt(x1!, y1!, x2!, y2!, xm!, ym!)

●座標計算−2点のn等分点
Sub DividePt(x1!, y1!, x2!, y2!, xp!(), yp!(), idiv%)

●座標計算−2直線の交点
Function CrossPt(m1%, m2%, x!, Y!) As Integer

●距離計算−2点間の距離
Function DistancePt(x1!, y1!, x2!, y2!) as single

●距離計算−1点と直線の間の距離
Function DistanceLine(m1%, x1!, y1!) as single

●角度計算−指定直線とX軸
Function AngleBetween(x1!, y1!, x2!, y2!) As Single

●三角形面積計算
Function Area3(x1!, y1!, x2!, y2!, x3!, y3!) As Double

●多角形面積計算
Function AreaN(x!(), Y!(), n%) As Double

●領域内判定
Function CheckInsidePolygon(xc!, yc!, x!(), Y!(), n%) As Boolean

●凸領域内判定
Function CheckInsideConvex(xc!, yc!, x!(), Y!(), n%) As Boolean

●ポリライン検出
Function DetectPL (n%,x1!(),y1!(),x2!(),y2!(),u!(),v!()) as Integer

●ポリライン検出(複数)
Function DetectPLS (n%,x1!(),y1!(),x2!(),y2!(),u!(),v!()) as Integer

●断面性能
Sub properties(x(), y(), n%, a!, px!, py!, rx!, ry!, z1!, z2!, z3!, z4!, pm)

●コメント
Sub Remarks(c$)

●外部JWTファイル追加読込み
Sub Import(fn%, jfile$)

●レイヤ変更
Sub ChangeLayer(Ly%)

●線色変更
Sub ChangeColor(Lc%)

●線種変更
Sub ChangeStyle(Ls%)

●文字種変更
Sub ChangeMoji(mj%)

●指定完了=JWTファイルクローズ
Sub Jwtclose()

・ 変換・表示コマンド

●JWTファイル図示・JWCファイル出力
Sub ShowJWT(jfile$)

●JWCファイル図示・JWTファイル出力
Sub ShowJWC(jfile$)

●JWCファイルからJWTファイルへ変換出力
Sub JWCtoJWT(jfile$)

●JWTファイルからJWCファイルへ変換出力
Sub JWTtoJWC(jfile$)

・ JWC/JWT/JWK図面プロパティ

●JWCファイル図を読込む。
Sub GetJwcData(jfile$)

●JWTファイル図を読込む。
Sub GetJwtData(jfile$)

●JWKファイル図を読込む。
Sub GetJwkData(jfile$)

●図面情報全般のプロパティ
Property Get NumberOfLines() As Long
Property Get NumberOfCircles() As Long
Property Get NumberOfStrings() As Long
Property Get NumberOfPoints() As Long
Property Get NumberOfVPoints() As Long
Property Get SizeOfPaper() As Integer
Property Get GroupScales(Index As Integer) As Single
Property Get GroupNames(Index As Integer) As String
Property Get LayerNames(Index As Integer) As String
Property Get HeaderValue2(Index As Integer) As Single
Property Get HeaderValue3(Index As Integer) As Single
Property Get HeaderValue4(Index As Integer) As Single
Property Get TextColor(Index As Integer) As Integer
Property Get TextSizeH(Index As Integer) As Integer
Property Get TextSizeV(Index As Integer) As Integer
Property Get TextPitch(Index As Integer) As Integer

●線データのプロパティ
Property Get LinesXb(Index As Long) As Single
Property Get LinesYb(Index As Long) As Single
Property Get LinesXe(Index As Long) As Single
Property Get LinesYe(Index As Long) As Single
Property Get LinesClr(Index As Long) As Byte
Property Get LinesStl(Index As Long) As Byte
Property Get LinesLay(Index As Long) As Byte

●点データのプロパティ
Property Get PointsXc(Index As Long) As Single
Property Get PointsYc(Index As Long) As Single
Property Get PointsLay(Index As Long) As Byte
Property Get PointsClr(Index As Long) As Byte

●円データのプロパティ
Property Get CirclesXc(Index As Long) As Single
Property Get CirclesYc(Index As Long) As Single
Property Get CirclesRc(Index As Long) As Single
Property Get CirclesAp(Index As Long) As Single
Property Get CirclesAb(Index As Long) As Single
Property Get CirclesAe(Index As Long) As Single
Property Get CirclesAa(Index As Long) As Single
Property Get CirclesStl(Index As Long) As Byte
Property Get CirclesClr(Index As Long) As Byte
Property Get CirclesLay(Index As Long) As Byte

●文字データのプロパティ
Property Get StringsXb(Index As Long) As Single
Property Get StringsYb(Index As Long) As Single
Property Get StringsXe(Index As Long) As Single
Property Get StringsYe(Index As Long) As Single
Property Get StringsTyp(Index As Long) As Byte
Property Get StringsLay(Index As Long) As Byte
Property Get StringsDat(Index As Long) As String


4.2 制御ブロック

説明中、データ並び中の{ }内は数値データ、他は文字データ。

Proc : JWT出力ファイル名指定

JWTMAKERを利用する場合、制御・作図コマンド出力前に、まず出力先のファイル名を指定する。拡張子は不要で".JWT"が追加される。

JWTOpen {abc}

"abc" : 文字列 (8文字以内)

Proc : ファイルコメント

FileMemo "abc", "def"

"abc" : ファイルのコメント1行目 ( =< 32byte )
"def" : ファイルのコメント2行目 ( =< 32byte )

Proc : 用紙サイズ設定

PaperSize {size}

{size} : A用紙大きさ (0-4)

Proc : 文字表示仕様

MojiSize {no}, {Lc}, {sw}, {sh}, {sp}

{no} : 文字番号 (1-10)
{Lc} : ペン番号 (1- 6)
{sw} : 文字の幅 (1/0.1mm)
{sh} : 文字の高さ (1/0.1mm)
{sp} : 文字の間隔 (1/0.1mm)

Proc : レイヤグループ縮尺・名称

GroupName {group}, {scale}, "abcd"

{group} : グループ番号 (0-15)
{scale} : レイヤグループの縮尺
"abcd" : レイヤグループの名称 ( =< 16byte )

Proc : レイヤ名称

LayerName {layer}, "abcd"

{layer} : レイヤ番号 (0-255)
"abcd" : レイヤの名称 ( =< 8byte )

Proc : 表示グループレイヤ

GroupVisible {g0},{g1},{g2},{g3},{g4}, ..... {gD},{gE},{gF}

{gn} : グループ(0-15)毎の表示のオンオフ (1=on, o=off)

Proc : サーチグループレイヤ

GroupActive {g0},{g1},{g2},{g3},{g4}, ..... {gD},{gE},{gF}

{gn} : グループ(0-15)毎のサーチのオンオフ (1=on, o=off)

Proc : 表示レイヤ

LayerVisible {group}, {L0},{L1},{L2},{L3},{L4}, ..... {LD},{LE},{LF}

{group} : グループ番号 (0-15)
{Ln} : 当該グループのレイヤ(0-15)毎の表示オンオフ (1=on, o=off)

Proc : サーチレイヤ

LayerActive {group}, {L0},{L1},{L2},{L3},{L4}, ..... {LD},{LE},{LF}

{group} : グループ番号 (0-15)
{Ln} : 当該グループのレイヤ(0-15)毎のサーチオンオフ(1=on, o=off)

Proc : レイヤグループ毎の書き込みレイヤ

LayerOpen {layer0}, {layer1}, {layer2}, {layer3},.. {layerE}, {layerF}

{layern} : グループ(0-15)毎の書き込みレイヤ番号(0-255)

Proc : 書込レイヤ

LatestLayer {layer}

{layer} : レイヤ番号 (0-255)

Proc : 書込線色

LatestColor {Lc}

{Lc} : 線色 (1 to 8)

Proc : 書込線種

LatestStyle {Ls}

{Ls} : 線種 (1 to 18)

Proc : ヘッダ情報2

指定無き場合には、"5,5,5,10,1,0,0,0,1,2,3,5,5,0,0,0,518,0" がデフォルト

Header2 "csv data"

"csv data" : ヘッダ2の15番目以降のCSVデータを1文字列としたもの
(15, 16) ; プロッタ出力原点座標 x,y
(17) ; 破線ピッチ
(18) ; 鎖線ピッチ
(19) ; 作図時間 (sec)
(20〜25) ; プリンタ出力時の1〜6番ペンの太さ
(26, 27) ; 目盛の間隔 x,y (mm)
(28, 29) ; 目盛の原点座標 x,y (mm)
(30) ; 目盛の表示倍率
(31) ; 作図ウィンドウ幅 (dot)
(32) ; プリンタ出力時細線を使用するフラグ

Proc : ヘッダ情報3

指定無き場合には、"0.5,0.0,3.0,15.0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1000,1000,100,200,300,500,0,0,1" がデフォルト

Header3 "csv data"

"csv data" : ヘッダ3のCSVデータを1文字列としたもの
( 1) ; 寸法線と値の離れ (mm)
( 2) ; 引き出しの突出 (mm)
....
(28) ; 保存時の画面表示倍率

Proc : ヘッダ情報4

指定無き場合には、"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,-23.45,0,0,-1"がデフォルト

Header4 "csv data"

"csv data" : ヘッダ4の3番目以降のCSVデータを1文字列としたもの
( 3) ; サブズーム画面0のX座標
....
(22) ; 2.5Dで単位を[m]とするフラグ

Proc : 図形ファイル

この指定を行った時には、BEGIN 以外の制御コマンドは無視され、JWK ファイルが作成される。

Zukei {scale}

{scale} : 登録時の基準縮尺

Proc : コメント

JWTデータに注釈を付ける。

Remarks {abc}

"abc" : 文字列

Proc : 指定終了

Begin

制御データブロックの終りを示すとともに、作図データブロックの開始を示す。

 

制御ブロックのデータ指定はそれぞれ省略可能。その場合にはデフォルト値が採用される。各デフォルト値は次の通り。

1) 用紙サイズ設定 = 1 (A1サイズ)

2) 文字表示仕様 = 無指定の文字番号については、次の設定による

文字番号 ペン番号 文字の幅 文字高さ 文字間隔
--------------------------------------------
1 1 10 10 5
2 1 20 20 5
3 2 30 30 5
4 2 40 40 5
5 3 50 50 5
6 3 60 60 10
7 4 70 70 10
8 4 80 80 10
9 5 90 90 10
10 5 100 100 10

3) レイヤグループ縮尺・名称 =無指定のグループ縮尺は1/100、名称はブランクとなる。

4) レイヤ名称 =無指定のレイヤ名称は空白

制御ブロックの各設定は、全て省略してもよく、この場合、"BEGIN" の1行のみとなる。


4.3 作図ブロック

各項目先頭の、Proc: はコマンド、Func: は関数を示しています。呼び出し方法が異なることに注意してください。

コマンド・関数で作図を伴わないものがあります。作図に関連しない関数は、作図ブロック以外でも使用可能です。

Proc : 作図座標系の原点指定

作図スケールでの長さ指定あるいは用紙上での長さ指定の2つの方法があり、どちらでも可。各グループの原点は次に再指定されるまで記憶されている。

  (1) 作図用紙上の実長で原点位置を指定する方法

作図座標系の原点(x=0、y=0)位置を用紙端部からの実長さで指定する。宣言のみで作図はしない。書込レイヤは変更される。

Relocate {group}, {xo}, {yo}

{group} : グループ番号 (0-15)
{xo} : 新原点設定(用紙左端からの右向を正とする距離 mm)
{yo} : 新原点設定(用紙下端からの上向を正とする距離 mm)

  (2) 用紙左下隅角を作図座標系による座標値で指定する方法

用紙の左下隅点の座標を指定する。宣言のみで作図はしない。レイヤは変更され、座標系スケールはそのレイヤの縮尺による。

LeftBottom {group}, {xo}, {yo}

{group} : グループ番号 (0-15)
{xo} : 用紙原点(用紙左下角)のX座標 (default = 0)
{yo} : 用紙原点(用紙左下角)のY座標 (default = 0)

Proc : 現在位置変更 Move Point

現在位置座標を変更する。宣言のみで作図はしない。

MovePoint {Ly}, {x}, {y}

{Ly} : レイヤ (0 to 255)
{x} : X座標値
{y} : Y座標値

Proc : 仮点 Virtual Point

仮点の作図を行い、現在位置座標を変更する。

VirtualPoint {Ly}, {x}, {y}

{Ly} : レイヤ (0 to 255)
{x} : X座標値
{y} : Y座標値

Proc : 実点 Real Point

実点の作図を行い、現在位置座標を変更する。

RealPoint {Ly}, {x}, {y}, {Lc}
RealPointF {Ly}, {x}, {y}, {Lc}, {fl},{dm1}

{Ly} : レイヤ (0 to 255)
{x} : X座標値
{y} : Y座標値
{Lc} : 線色 (1 to 6)
{fl},{dm1}: フラグ

Proc : 線分(2点) Line 2 points

与えられた2点を結ぶ線分の作図を行い、終点を現在位置座標に変更する。

LineBetween {Ly}, {x1}, {y1}, {x2}, {y2}, {Ls}, {Lc}
LineBetweenF {Ly}, {x1}, {y1}, {x2}, {y2}, {Ls}, {Lc}, {dm1},{fl1},{fl2}

{Ly} : レイヤ (0 to 255)
{x1} : 始点X座標値
{y1} : 始点Y座標値
{x2} : 終点X座標値
{y2} : 終点Y座標値
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{dm1},{fl1},{fl2}: フラグ

Proc : 線分(1点) Line 1 point

現在位置座標を開始点として絶対座標で与えられた1点への線分の作図を行い、終点を現在位置座標に変更する。

LineTo {Ly}, {x2}, {y2}, {Ls}, {Lc}
LineToF {Ly}, {x2}, {y2}, {Ls}, {Lc}, {dm1},{fl1},{fl2}

{Ly} : レイヤ (0 to 255)
{x2} : 終点X座標値
{y2} : 終点Y座標値
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{dm1},{fl1},{fl2}: フラグ

Proc : 箱型 LineBox

与えられた2点を対角のコーナーとする箱型の線分4本の作図を行う。

LineBox {Ly}, {x1}, {y1}, {x2}, {y2}, {Ls}, {Lc}

{Ly} : レイヤ (0 to 255)
{x1} : 始点X座標値
{y1} : 始点Y座標値
{x2} : 終点X座標値
{y2} : 終点Y座標値
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)

Proc : 箱型 LineBox from Center

与えられた1点を中心に、与えられた2辺の長さの箱型の線分4本の作図を行う。

LineBoxC {Ly}, {x1}, {y1}, {dx}, {dy}, {Ls}, {Lc}

{Ly} : レイヤ (0 to 255)
{xc} : 中心X座標値
{yc} : 中心Y座標値
{dx} : X方向辺長さ
{dy} : Y方向辺長さ
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)

Proc : 多線 LineX

与えられた2線を指定された数に等分割するの線分の作図を行い、線bの終点を現在位置座標に変更する。

LineDivide {Ly}, {x1},{y1},{x2},{y2},{u1},{v1},{u2},{v2}, {Ls},{Lc},{n}

{Ly} : レイヤ (0 to 255)
{x1} : 線aの始点X座標値
{y1} : 始点Y座標値
{x2} : 終点X座標値
{y2} : 終点Y座標値
{u1} : 線bの始点X座標値
{v1} : 始点Y座標値
{u2} : 終点X座標値
{v2} : 終点Y座標値
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{n} : 線aと線bの間の分割数

Proc : 多角形 PolyGon

与えられた点を中心とする正N角形の作図を行い、開始角度の頂点を現在位置座標に変更する。

Polygon {Ly}, {xc}, {yc}, {r}, {aa}, {Ls}, {Lc}, {np}

{Ly} : レイヤ (0 to 255)
{xc} : 中心のX座標値
{yc} : 中心のY座標値
{r} : 中心から頂点までの距離
{aa} : 傾き (deg)
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{np} : 頂点の数 ( >2 )

Proc : 線分描画−指定点から距離・角度指定

座標指定点1から、距離と角度を指定して線分を描画する。
MovePoleの移動前後の点を結ぶ線分と同じ。

LinePole {Ly}, {x1}, {y1}, {dd}, {angle}, {Ls}, {Lc}

{Ly} : レイヤ (0 to 255)
{x1} : 点のX座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{y1} : 点のY座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{dd} : 移動距離
{angle} : 移動角度(0 to 360 度)
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)

Proc : 線分描画−指定点からX,Y成分指定

座標指定点1から、X,Y方向成分を指定して線分を描画する。
MoveStepの移動前後の点を結ぶ線分と同じ。

LineStep {Ly}, {x1}, {y1}, {dx}, {dy}, {Ls}, {Lc}

{Ly} : レイヤ (0 to 255)
{x1} : 点のX座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{y1} : 点のY座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{dx} : X方向距離成分
{dy} : Y方向距離成分
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)

Proc : 連続2線

配列で与えられた座標点を結ぶ連続線上に、中心線と左右に指定オフセットで平行線を描画する。

DualLine {Ly}, {xp()},{yp()},{np},{center},{offsetL},{offsetR},{LsC},{LcC},{LsL},{LcL},{LsR},{LcR}

{Ly} : レイヤ (0 to 255)
{xp()} : X座標値配列。(np)の数以上まで用意する。
{yp()} : Y座標値配列。(np)の数以上まで用意する。
{np} : 座標点の数。
{center} : 中心線描画スイッチ。0:非描画、0以外:描画。
{offsetL}: 左側線オフセット距離。(0:非描画)
{offsetR}: 右側線オフセット距離。(0:非描画)
{LsC} : 中心線線種 (1 to 18)
{LcC} : 中心線線色 (1 to 6)
{LsL} : 左側線線種 (1 to 18)
{LcL} : 左側線線色 (1 to 6)
{LsR} : 右側線線種 (1 to 18)
{LcR} : 右側線線色 (1 to 6)

Proc : スプライン(始点と終点が同じ=閉鎖多角形)

配列で与えられた座標点を3次スプラインで結ぶ。

DrawSplineC {Ly}, {xp()},{yp()},{np},{Ls},{Lc},{Ndiv}

{Ly} : レイヤ (0 to 255)
{xp()} : X座標値配列。(0からnp)に np+1 個の座標を入れて呼ぶ。
xp(0)=xp(np)とする。
{yp()} : Y座標値配列。(0からnp)に np+1 個の座標を入れて呼ぶ。
yp(0)=yp(np)とする。
{np} : 座標点の数。
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{Ndiv} : 2座標点間の分割数(4以下だと自動的に6を取る)

Proc : スプライン (始点と終点が異なる開折れ線)

配列で与えられた座標点を3次スプラインで結ぶ。

DrawSplineF {Ly}, {xp()},{yp()},{np},{Ls},{Lc},{Ndiv}

{Ly} : レイヤ (0 to 255)
{xp()} : X座標値配列。(0からnp-1)にnp個の座標を入れて呼ぶ。
{yp()} : Y座標値配列。(0からnp-1)にnp個の座標を入れて呼ぶ。
{np} : 座標点の数。
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{Ndiv} : 2座標点間の分割数(4以下だと自動的に6を取る)

Proc : 等高線描画 Contour Line

(x,y,z)データ配列から等高線を描画。
データをグリッド点で与える。X、Y方向のグリッド数を nx, ny(グリッド点数
はそれぞれ nx+1, ny+1)とすると、グリッド点のX座標をx(0 to nx, 0 to ny)、Y座標をy(0 to nx, 0 to ny)、Z値をz(0 to nx, 0 to ny)に入れて呼び出す。等高線は線色2で、5本おきに線種5で描かれる。

LineContour {Ly}, {xoff}, {yoff}, {div}, {grid}, {x()}, {y()}, {z()}

{Ly} : レイヤ (0 to 255)
{xoff} : 等高線表示位置で、図面左下隅からのx距離で指定。
{yoff} : 等高線表示位置で、図面左下隅からのy距離で指定。
{div} : 等高線間隔
{grid} : グリッド表示スイッチ (0:非描画, 1:描画)
{x()} : X座標配列 (x方向グリッド点数,y方向グリッド点数)
{y()} : Y座標配列 (x方向グリッド点数,y方向グリッド点数)
{z()} : Z座標配列 (x方向グリッド点数,y方向グリッド点数)

Proc : 等高線描画 Contour Line (等間隔グリッド)

グリッドピッチが一定の場合に使用できる省略書式。
X,Y方向のグリッド間隔が一定値の場合、X,Y座標データの指定不要で、グリッド間隔を 10m に正規化して各座標値を内部で計算する。他は LineContour と同機能。

LineContourN {Ly}, {xoff}, {yoff}, {div}, {grid}, {z()}

{Ly} : レイヤ (0 to 255)
{xoff} : 等高線表示位置で、図面左下隅からのx距離で指定。
{yoff} : 等高線表示位置で、図面左下隅からのy距離で指定。
{div} : 等高線間隔
{grid} : グリッド表示スイッチ (0:非描画, 1:描画)
{z()} : Z座標配列 (x方向グリッド点数,y方向グリッド点数)

Func : 接線 Tangent Line

指定点から円へ接線を引く関数。接線が引けない場合には戻り値に0が入る。

TangentLine({Ly},{x},{y},{xc},{yc},{rc},{x3},{y3},{x4},{y4}, {Ls},{Lc})

{Ly} : レイヤ (0 to 255)
{x} : 接線を引く点のX座標値
{y} : 接線を引くのY座標値
{xc} : 円の中心のX座標値
{yc} : 円の中心のY座標値
{rc} : 円の半径
{x3} : 接点1のX座標値
{y3} : 接点1のY座標値
{x4} : 接点2のX座標値
{y4} : 接点2のY座標値
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{戻り} : 0:接線なし, -1:接線あり。

Func : 直線と円の交点

2点を結ぶ直線と円との交点を返す関数。

iRet=NodeCircle({x1},{y1}, {x2},{y2}, {xc},{yc},{rc}, {x3},{y3}, {x4},{y4})

{x1} : 線分端点1のX座標値。
{y1} : 線分端点1のY座標値。
{x2} : 線分端点2のX座標値。
{y2} : 線分端点2のY座標値。
{xc} : 円の中心のX座標値
{yc} : 円の中心のY座標値
{rc} : 円の半径
{x3} : 交点1のX座標値
{y3} : 交点1のY座標値
{x4} : 交点2のX座標値
{y4} : 交点2のY座標値
iRet : 戻り値(integer)。交点無しの場合に0、接すると場合に1、交わる場合に2。

Func : 2円の交点

2円の交点を返す関数。

iRet=NodeCircle2({x1}, {y1}, {r1}, {x2}, {y2}, {r2}, {x3}, {y3}, {x4}, {y4})

{x1} : 円1の中心のX座標値
{y1} : 円1の中心のY座標値
{r1} : 円1の半径
{x2} : 円2の中心のX座標値
{y2} : 円2の中心のY座標値
{r2} : 円2の半径
{x3} : 交点1のX座標値
{y3} : 交点1のY座標値
{x4} : 交点2のX座標値
{y4} : 交点2のY座標値
iRet : 戻り値(integer)。交点無しの場合に0、交わる場合に2。同一円の場合に-1。

Proc : 円弧 ArC

与えられた点を中心とする円弧の線分の作図を行い、円の中心を現在位置座標に変更する。

ARC {Ly}, {xc}, {yc}, {r}, {ap}, {ab}, {ae}, {aa}, {Ls}, {Lc}
ARCF {Ly}, {xc}, {yc}, {r}, {ap}, {ab}, {ae}, {aa}, {Ls}, {Lc},{dm1},{fl1},{dm2}

{Ly} : レイヤ (0 to 255)
{xc} : 中心のX座標値
{yc} : 中心のY座標値
{r} : 半径
{ap} : 偏平率 ** @AC では1となる
{ab} : 開始角 (deg)
{ae} : 終了角 (deg)
{aa} : 傾き (deg) ** @AC では0となる
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{dm1},{fl1},{dm2}: フラグ

Proc : 全円 CirCle

与えられた点を中心として全円の線分の作図を行い、円の中心を現在位置座標に変更する。偏平率は1で傾きは0度のArcと同等。

FullCircle {Ly}, {xc}, {yc}, {r}, {Ls}, {Lc}
FullCircleF {Ly}, {xc}, {yc}, {r}, {Ls}, {Lc}, {dm1},{fl1},{dm2}

{Ly} : レイヤ (0 to 255)
{xc} : 中心のX座標値
{yc} : 中心のY座標値
{r} : 半径
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{dm1},{fl1},{dm2}: フラグ

Proc : 円弧−接線方向指示

点1(x1,y1)から接線方向角(ag)で始まり,半径(r)で見込角度(ac)分だけ回転する円弧を描画。点1(x1,y1)には終点座標が、(ag)には終点の接線方向角が戻り値として入る。

ArcStep {Ly}, {x1}, {y1}, {ag}, {r}, {ac}, {Ls}, {Lc}

{Ly} : レイヤ (0 to 255)
{x1} : 始点のX座標値。戻り時に終点のX座標値。
{y1} : 始点のY座標値。戻り時に終点のY座標値。
{ag} : 接線方向角度 (0 to 360 度)
{r} : 半径
{ac} : 見込角 (deg) 正値は反時計周り、負値は時計周り
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)

Proc : 文字 STring left

指定点から文字を書く。現在位置座標は変化しない。

Character {Ly}, {x1}, {y1}, {ag}, {mj}, "abc"
CharacterF {Ly}, {x1}, {y1}, {ag}, {mj}, "abc", {fl1},{fl2}
StrLeft {Ly}, {x1}, {y1}, {ag}, {mj}, "abc"

{Ly} : レイヤ (0 to 255)
{x1} : 左下始点X座標値
{y1} : 左下始点Y座標値
{ag} : 傾き (0 to 360 度)
{mj} : 文字番号 (1 to 10)
"abc" : 文字列 (総文字数の制限 = 32768)
{fl1},{fl2}: フラグ

Proc : 文字 String Center

指定点から中央振り分けで文字を書く。現在位置座標は変化しない。

CharacterC {Ly}, {x1}, {y1}, {ag}, {mj}, "abc"
StrCenter {Ly}, {x1}, {y1}, {ag}, {mj}, "abc"

{Ly} : レイヤ (0 to 255)
{x1} : 中央点X座標値
{y1} : 中央点Y座標値
{ag} : 傾き (0 to 360 度)
{mj} : 文字番号 (1 to 10)
"abc" : 文字列 (総文字数の制限 = 32768)

Proc : 文字 String Right

指定点左側に右詰めで文字を書く。現在位置座標は変化しない。

CharacterR {Ly}, {x1}, {y1}, {ag}, {mj}, "abc"
StrRight {Ly}, {x1}, {y1}, {ag}, {mj},"abc"

{Ly} : レイヤ (0 to 255)
{x1} : 右下点X座標値
{y1} : 右下点Y座標値
{ag} : 傾き (0 to 360 度)
{mj} : 文字番号 (1 to 10)
"abc" : 文字列 (総文字数の制限 = 32768)

Proc : 文字 String Between 2 points

指定点2点間の中心に文字を書く。現在位置座標は変化しない。

StrBetween {Ly}, {x1}, {y1}, {x2}, {y2}, {mj},"abc"

{Ly} : レイヤ (0 to 255)
{x1} : 点1X座標値
{y1} : 点1Y座標値
{x2} : 点2X座標値
{y2} : 点2Y座標値
{mj} : 文字番号 (1 to 10)
"abc" : 文字列 (総文字数の制限 = 32768)

Proc : 書式指定付き文字 Value Format

表示形式を指定して数値文字を表示する。現在位置座標は変化しない。

ValueFormat {Ly}, {x1}, {y1}, {ag}, {mj}, va, "###"

{Ly} : レイヤ (0 to 255)
{x1} : 左下始点X座標値
{y1} : 左下始点Y座標値
{ag} : 傾き (0 to 360 度)
{mj} : 文字番号 (1 to 10)
{va} : 数値
"###" : 書式文字列 (VBヘルプ参照)

Proc : 距離寸法値表示

指定した2点間の距離を2点を結ぶ線に平行に指定値だけオフセットして値表示。

DimValueBetween {Ly}, {x1}, {y1}, {x2}, {y2}, {offset}, {mj}

{Ly} : レイヤ (0 to 255)
{x1} : 点1のX座標値
{y1} : 点1のY座標値
{x2} : 点2のX座標値
{y2} : 点2のY座標値
{offset}: 寸法線の離れ距離
{mj} : 文字番号 (1 to 10)

Proc : 寸法線・寸法値表示

指定した2点間の距離を、2点を結ぶ線に平行に指定値だけオフセットして、値と寸法線を表示し、2点間の距離表示寸法線を、2点を結ぶ直線から指定値だけオフセットして表示する。

DimLineBetween {Ly}, {x1}, {y1}, {x2}, {y2}, {offset}, {Ls}, {Lc}, {mj}

{Ly} : レイヤ (0 to 255)
{x1} : 点1のX座標値
{y1} : 点1のY座標値
{x2} : 点2のX座標値
{y2} : 点2のY座標値
{offset}: 寸法線の離れ距離
{Ls} : 線種 (1 to 18)
{Lc} : 線色 (1 to 6)
{mj} : 文字番号 (1 to 10)

Func : 直線指定−2点を通る直線

点1と点2を通る直線に、番号を付けて記憶する関数。描画無し。
座標計算の補助のために、直線(ax+by+c=0)を記憶する配列を内部に設けている。

MemoLineStep {m}, {x1}, {y1}, {x2}, {y2}

{m } : 直線番号 (0 から 100 の間で任意番号)
{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{x2} : 点2のX座標値。
{y2} : 点2のY座標値。
{戻り} :

Func : 直線指定−1点を通り、指定した傾きの直線

指定角度で点1を通る直線に、番号を付けて記憶する関数。描画無し。

MemoLinePole {m}, {x1}, {y1}, {angle}

{m } : 直線番号 (0 から 100 の間で任意番号)
{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{angle} : 直線角度(0 to 360 度)
{戻り} :

Func : 直線指定−1点を通り、指定した直線に直交する直線

点1を通り既知直線に直交する直線に、番号を付けて記憶する関数。描画無し。

MemoLineNorm {m}, {m1}, {x1}, {y1}

{m } : 直線番号 (0 から 100 の間で任意番号)
{m1} : 既知の直線の番号 (0 から 100 の間で任意番号)
{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{戻り} :

Func : 直線指定−1点を通り、指定した直線に平行する直線

点1を通り既知直線に平行する直線に、番号を付けて記憶する関数。描画無し。

MemoLinePara1 {m}, {m1}, {x1}, {y1}

{m } : 直線番号 (0 から 100 の間で任意番号)
{m1} : 既知の直線の番号 (0 から 100 の間で任意番号)
{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{戻り} :

Func : 直線指定−指定した直線から指定距離で平行する直線

既知直線に指定距離で平行する直線に、番号を付けて記憶する関数。描画無し。

MemoLineParaD {m}, {m1}, {dd}

{m } : 直線番号 (0 から 100 の間で任意番号)
{m1} : 既知の直線の番号 (0 から 100 の間で任意番号)
{dd} : 距離。Y座標正側への離れを正。Y軸平行の場合はX座標大を正。
{戻り} :

Proc : 平行・回転移動

点 (xo,yo) を原点とする直交座標系に、点(u,v)を 平行移動する、その後、(xo,yo) 周りに指定角度 (angle) だけ回転させた時の (x,y) 座標を取得する。描画無し。

Transform {xo}, {yo}, {angle}, {u}, {v}, {x}, {y}

{xo} : 新原点のX座標値。
{yo} : 新原点のY座標値。
{angle} : 角度(0 to 360 度)
{u} : 現在のX座標値。
{v} : 現在のY座標値。
{x} : 戻りに移動後のX座標値。= u*Cos(Angle)-v*Sin(Angle)+xo
{y} : 戻りに移動後のY座標値。= u*Sin(Angle)+v*Cos(Angle)+yo

Proc : 回転・平行移動

Transformの逆変換。描画無し。

InvTransform {xo}, {yo}, {angle}, {x}, {y}, {u}, {v}

{xo} : 新原点のX座標値。
{yo} : 新原点のY座標値。
{angle} : 角度(0 to 360 度)
{x} : 現在のX座標値。
{y} : 現在のY座標値。
{u} : 戻りに移動後のX座標値= (x-xo)*Cos(Angle)+(y-yo)*Sin(Angle)
{v} : 戻りに移動後のY座標値=-(x-xo)*Sin(Angle)+(y-yo)*Cos(Angle)

Proc : 座標計算−移動(距離・角度)

距離と角度を指定して移動した点の座標値を取得する。描画無し。

MovePole {x1}, {y1}, {dd}, {angle}

{x1} : 点のX座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{y1} : 点のY座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{dd} : 移動距離
{angle} : 移動角度(0 to 360 度)

Proc : 座標計算−移動(X成分・Y成分)

X,Y方向成分を指定して移動した点の座標値を取得する。描画無し。

MoveStep {x1}, {y1}, {dx}, {dy}

{x1} : 点のX座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{y1} : 点のY座標値を入れて呼ぶ、戻りには移動後のX座標値が入る。
{dx} : X方向距離成分
{dy} : Y方向距離成分

Proc : 座標計算−2点の中点

指定した2点の中点座標を取得する。描画無し。

MiddlePt {x1}, {y1}, {x2}, {y2}, {xm}, {ym}

{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{x2} : 点2のX座標値。
{y2} : 点2のY座標値。
{x2} : 戻りに中点のX座標値が入る。
{y2} : 戻りに中点のY座標値が入る。

Proc : 座標計算−2点のn等分点

指定した2点をn等分する点の座標を取得する。描画無し。
分割数n以上の配列を取得してから呼び出すこと。

DividePt {x1}, {y1}, {x2}, {y2}, {xp()}, {yp()}, {n}

{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{x2} : 点2のX座標値。
{y2} : 点2のY座標値。
{xp()} : 戻りに等分点のX座標値が入る。xp(0)は点1、xp(n)は点1となる。
{yp()} : 戻りに等分点のY座標値が入る。yp(0)は点1、yp(n)は点1となる。
{n} : 分割数。

Func : 座標計算−2直線の交点

指定した2直線の交点座標を取得する関数。描画無し。

CrossPt {m1}, {m2}, {x1}, {y1}

{m1} : 既知の直線の番号 (0 から 100 の間で任意番号)
{m2} : 既知の直線の番号 (0 から 100 の間で任意番号)
{x1} : 戻りに交点のX座標値が入る。
{y1} : 戻りに交点のY座標値が入る。
{戻り} : -1;正常, 0;交点無し、-2;交点無限(2直線一致)

Func : 距離計算−2点間の距離

指定した2点の距離を返す関数。描画無し。

DistancePt {m1}, {m12, {x1}, {y1}

{m1} : 既知の直線の番号 (0 から 100 の間で任意番号)
{m2} : 既知の直線の番号 (0 から 100 の間で任意番号)
{x1} : 戻りに交点のX座標値が入る。
{y1} : 戻りに交点のY座標値が入る。
{戻り} : -1;正常, 0;交点無し、-2;交点無限(2直線一致)

Func : 距離計算−1点と直線の間の距離

指定した点から指定した直線への距離を返す関数。描画無し。

DistanceLine {m1}, {x1}, {y1}

{m1} : 既知の直線の番号 (0 から 100 の間で任意番号)
{x1} : 戻りに交点の X 座標値が入る。
{y1} : 戻りに交点の Y 座標値が入る。
{戻り} : 距離。Y座標正側への離れを正。Y軸平行の場合はX座標大を正。

Func : 角度計算−指定直線とX軸

点1から点2へ向く直線の傾きをX軸正方向からの角度で返す関数。描画無し。

AngleBetween {x1}, {y1}, {x2}, {y2}

{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{x2} : 点2のX座標値。
{y2} : 点2のY座標値。
{戻り} : 角度(0 to 360 度)

Func : 三角形面積計算

三角形の3点を指定し面積を計算する関数。

Area3 {x1}, {y1}, {x2}, {y2}, {x3}, {y3}

{x1} : 点1のX座標値。
{y1} : 点1のY座標値。
{x2} : 点2のX座標値。
{y2} : 点2のY座標値。
{x3} : 点3のX座標値。
{y3} : 点3のY座標値。
{戻り} : 3点が反時計周りの時に正、時計周りの時には負値を返す。

Func : 多角形面積計算

n個の点で囲まれる閉鎖多角形(凹凸問わず)の各点を与え、面積を計算する関数。

AreaN {x()}, {y()}, {n}

{x()} : 多角形頂点のX座標値。x(1 to n)
{y()} : 多角形頂点のY座標値。y(1 to n)
{n} : 多角形の頂点数。
{戻り} : 3点が反時計周りの時に正、時計周りの時には負値を返す。

Func : 領域内判定

点が、指定した多角形(凹凸問わず)の内部にあるかどうか判定する関数。

CheckInsidePolygon({xc}, {yc}, {x()}, {Y()}, {n})

{xc} : 指定点のX座標値。
{yc} : 指定点のY座標値。
{x()} : 多角形頂点のX座標値。x(1 to n) 頂点並びは反時計周りとする
{y()} : 多角形頂点のY座標値。y(1 to n) 頂点並びは反時計周りとする
{n} : 多角形の頂点数。
{戻り} : 領域内の場合に-1、領域外の時には0を返す。

Func : 凸領域内判定

点が、指定した凸多角形の内部にあるかどうか判定する関数。
関数 CheckInsidePolygon よりも高速だが、凸領域に限る。

CheckInsideConvex({xc}, {yc}, {x()}, {Y()}, {n})

{xc} : 指定点のX座標値。
{yc} : 指定点のY座標値。
{x()} : 多角形頂点のX座標値。x(1 to n) 頂点並びは反時計周りとする
{y()} : 多角形頂点のY座標値。y(1 to n) 頂点並びは反時計周りとする
{n} : 多角形の頂点数。
{戻り} : 領域内の場合に-1、領域外の時には0を返す。

Func : ポリライン検出

順不同の線分群をサーチして、ポリラインを形成するように座標点を並び替える関数。

DetectPL ({n},{x1()},{y1()},{x2()},{y2()},{u()},{v()})

{n} : 線分の本数。
{x1()} : 始点X座標値配列(1 to n)。
{y1()} : 始点Y座標値配列(1 to n)。
{x2()} : 終点X座標値配列(1 to n)。
{y2()} : 終点Y座標値配列(1 to n)。
{u()} : ポリライン頂点のX座標値。(1 to n)
{v()} : ポリライン頂点のY座標値。(1 to n)
{戻り} : 開ポリラインは-2、閉ポリラインは-1、不連続線分があれば0を返す。

Func : ポリライン検出(複数ポリライン一括対応)

順不同の線分群をサーチして、順次ポリラインとして抽出する関数。

DetectPLS ({n},{x1()},{y1()},{x2()},{y2()},{u()},{v()})

{n} : (入)線分の本数。(出)残り線分の本数
{x1()} : 線分始点X座標値配列(1 to n)。
{y1()} : 線分始点Y座標値配列(1 to n)。
{x2()} : 線分終点X座標値配列(1 to n)。
{y2()} : 線分終点Y座標値配列(1 to n)。
{u()} : ポリライン頂点のX座標値。(0 to j)
{v()} : ポリライン頂点のY座標値。(0 to j)
{戻り} : ポリラインの頂点配列の上限(j)を返す。閉ポリラインは点0と点jの
座標値が同一になる。
抽出後の残りの線分群は座標値配列 x1(),y1(),x2(),y2()に,
引数(1 to n)に排出される。
戻り値が0になるまで呼び出すと検出完了。

Proc : 断面性能

座標点で規定される多角形断面の断面性能値を得る。

Properties{x()},{y()},{n},{a},{px},{py},{rx},{ry},{z1},{z2},{z3},{z4},{pm}

{x()} : 多角形頂点のX座標値。x(1 to n) 頂点並びは反時計周りとする
{y()} : 多角形頂点のY座標値。y(1 to n) 頂点並びは反時計周りとする
{n} : 多角形の頂点数。
{a} : 断面積
{px} : X軸周り断面2次モーメント。
{py} : Y軸周り断面2次モーメント。
{rx} : X軸周り断面2次半径。
{ry} : Y軸周り断面2次半径。
{z1} : X軸周り断面係数1。
{z2} : X軸周り断面係数2。
{z3} : Y軸周り断面係数1。
{z4} : X軸周り断面係数2。
{pm} : 周長

Proc : コメント

JWTデータに注釈を付ける。

Remarks {abc}

"abc" : 文字列

Proc : 外部JWTファイル追加読込み (JWTran32のみ対応)

JWTファイル内に外部のJWTファイルのデータを取り込む。外部JWTファイル名を指定する。拡張子は不要で".JWT"が追加される。
外部データの縮尺とかレイヤ名などの各種記述は無視され、"Begin" 以降の作図データのみ有効となる。
複数ファイルを読み込んで一つの図面ファイルを作成、あるいは必要なファイルだけ重ねあわせる、部品をある位置に貼り付けるなど、応用できる。

Import {fl}, {abc}

{fl} : オフセット値等を引継ぐフラグ。0=引継がない、0以外で引継ぐ
"abc" : 文字列 (8文字以内)

Proc : 指定完了=JWTファイルクローズ

制御・作図コマンド出力後、ファイルをクローズする。これにより、JWTファイルを出力すると共に、同内容をクリップボードに送る。

JWTClose

作図データブロックの終りを示します。

一度使ったレイヤ番号、線色番号、線種番号、文字番号は記憶されているので、これらが同じである場合には省略して記述できる。上記の作図コマンドで"@" が先頭に付いたものがこの省略形式を示す。省略コマンドを有効に使うために下記の補助作図コマンドがある。

Proc : レイヤ変更

宣言のみで作図はしない。

ChangeLayer {Ly}

{Ly} : レイヤ (0 to 255)

Proc : 線色変更

宣言のみで作図はしない。

ChangeColor {Lc}

{Lc} : 線色 (1 to 6)

Proc : 線種変更

宣言のみで作図はしない。

ChangeStyle {Ls}

{Ls} : 線種 (1 to 18)

Proc : 文字種変更

宣言のみで作図はしない。

ChangeMoji {mj}

{mj} : 文字番号 (1 to 10)


4.4 変換・表示コマンド

Proc : JWTファイル図示・JWCファイル出力

指定したJWTファイルを表示する。拡張子は不要で".JWT"が追加される。
表示画面上からの操作でJWCファイルに変換して出力する。

ShowJWT {abc}

"abc" : 文字列 (8文字以内)

Proc : JWCファイル図示・JWTファイル出力

指定したJWCファイルを表示する。拡張子は不要で".JWC"が追加される。
表示画面上からの操作でJWTファイルに変換して出力する。

ShowJWC {abc}

"abc" : 文字列 (8文字以内)

Proc : JWCファイルからJWTファイルへ変換出力

指定したJWCファイルをJWTファイルに変換して出力する。
入力JWCファイル名の拡張子は不要で".JWC"が内部で追加される。
出力JWTファイル名は、ベース名が同じで拡張子のみが".JWT"となる。

JWCtoJWT {abc}

"abc" : 文字列 (8文字以内)

Proc : JWTファイルからJWCファイルへ変換出力

指定したJWTファイルをJWCファイルに変換して出力する。
入力JWTファイル名の拡張子は不要で".JWT"が内部で追加される。
出力JWCTファイル名は、ベース名が同じで拡張子のみが".JWC"となる。

JWTtoJWC {abc}

"abc" : 文字列 (8文字以内)

 


4.5 JWC図面プロパティ

Proc : JWCファイル図を読込む

指定したJWCファイルを読み込む。拡張子は不要で".JWC"が追加される。
この実行以降で、図面プロパティの取得が可能になる。

GetJwcData {abc}

"abc" : 文字列 (8文字以内)

Proc : JWTファイル図を読込む

指定したJWTファイルを読み込む。拡張子は不要で".JWT"が追加される。
この実行以降で、図面プロパティの取得が可能になる。

GetJwtData {abc}

"abc" : 文字列 (8文字以内)

Proc : JWKファイル図を読込む

指定したJWKファイルを読み込む。拡張子は不要で".JWK"が追加される。
この実行以降で、図面プロパティの取得が可能になる。

GetJwkData {abc}

"abc" : 文字列 (8文字以内)

Prop : データサイズ

総線分数 n& = NumberOfLines
総円弧数 n& = NumberOfCircles
総実点数 n& = NumberOfPoints
総文字数 n& = NumberOfStrings

Prop : 用紙サイズ

読み込んだJWC図面の用紙サイズ(0〜4)を得る。

n% = SizeOfPaper

Prop : グループレイヤ縮尺

読み込んだJWC図面の各グループレイヤの縮尺を得る。

s! = GroupScales(index)

{index} : グループ番号 (0-15)

Prop : グループレイヤ名称

読み込んだJWC図面の各グループレイヤの名称を得る。

t$ = GroupNames(index)

{index} : グループ番号 (0-15)

Prop : レイヤ名称

読み込んだJWC図面の各レイヤの名称を得る。

t$ = LayerNames(index)

{index} : レイヤ番号 (0-255)

Prop : ヘッダ情報

読み込んだJWC図面の各CSVヘッダの個々の値を得る。

a! = HeaderValue2(index)  ヘッダ2

{index} : データ番号 (1-32)

a! = HeaderValue3(index)  ヘッダ3

{index} : データ番号 (1-28)

a! = HeaderValue4(index)  ヘッダ4

{index} : データ番号 (1-22)

Prop : 文字の設定プロパティ

文字(1-10)の表示設定値を得る。

n% = TextColor(index)  ペン番号(1-6)

n% = TextSizeH(index)  文字幅

n% = TextSizeV(index)  文字高

n% = TextPitch(index)  文字ピッチ

{index} : 文字種 (1-10)

Prop : 線分プロパティ

読み込んだJWC図面の各線分の個々の値を得る。

始点X座標値 xb! = LinesXb(index)
始点Y座標値 yb! = LinesYb(index)
終点X座標値 xe! = LinesXe(index)
終点Y座標値 ye! = LinesYe(index)
線色(1 to 6) Lc% = LinesClr(index)
線種(1 to 18) Ls% = LinesStl(index)
レイヤ (0 to 255) Ly% = LinesLay(index)

{index} : 線分番号 (1-NumberOfLines)

Prop : 実点プロパティ

読み込んだJWC図面の各実点の個々の値を得る。

点X座標値 xb! = PointsXc(index)
点Y座標値 yb! = PointsYc(index)
点色(1 to 6) Lc% = PointsClr(index)
レイヤ (0 to 255) Ly% = PointsLay(index)

{index} : 実点番号 (1-NumberOfPoints)

Prop : 円弧プロパティ

読み込んだJWC図面の各円弧の個々の値を得る。

中心X座標値 xc! = CirclesXc(index)
中心Y座標値 yc! = CirclesYc(index)
半径値 rc! = CirclesRc(index)
偏平率 ap! = CirclesAp(index)
開始角 (deg) ab! = CirclesAb(index)
終了角 (deg) ae! = CirclesAe(index)
傾き (deg) aa! = CirclesAa(index)
線色(1 to 6) Lc% = CirclesClr(index)
線種(1 to 18) Ls% = CirclesStl(index)
レイヤ (0 to 255) Ly% = CirclesLay(index)

{index} : 円弧番号 (1-NumberOfCircles)

Prop : 文字列プロパティ

読み込んだJWC図面の各文字列の個々の値を得る。

始点X座標値 x1! = StringsXb(index)
始点Y座標値 y1! = StringsYb(index)
終点X座標値 x2! = StringsXe(index)
終点Y座標値 y2! = StringsYe(index)
文字番号 (1-10) mj% = StringsTyp(index)
レイヤ (0 to 255) Ly% = StringsLay(index)
文字列 tx$ = StringsDat(index)

{index} : 文字番号 (1-NumberOfStrings)


このページ先頭に戻る