Lite & Seen Lite / jw.rb による 外部変形
 煙の出ない玉手箱 コマンドリファレンス

○ 外部変形rubyJwwライブラリ( 煙の出ない玉手箱 )

| 前へ | 表紙へ |いろはにruby外部変形|rubyJWW ライブラリ プログラム例|

  • ♪ Lite & Seen Lite は みんなの道具。
    本稿は JW_CAD 外部変形のプログラムを作成されている方を想定して書いています。JW_CAD 外部変形のプログラムをより簡単に書く方法を管理人が独自に紹介しています。手書き図面のイメージでプログラムができるように心がけています。
    コマンドの多くは 定規やコンパスの作図手順を外部変形用にプログラムしたものです。require 'jw' で利用できます。
    jscript、lua による同様のライブラリ jw.js、jw.lua は jw.rb に準じています。

    【煙の出ない玉手箱 / コマンドメニュー】
    
      □ class Fonts  class Colors 
      
    class Jwc_temp | $select_data | $hq | $hk | $hs | $hcw,$hch,$hcd,$hcc | $hn | $hzk | $hzs | $hp | | $lg | $ly | $lc | $lt | $lw | $cn | $font | $pn | $ln | $ci | $ch | $pt | | $pl | $ml | $mc | $sl | $bl | $plsl |
    class Numeric
    class Range
    class String | zen_han | han_zen |
    class Hash
    class Array | x, x1 | y, y1 | x2 | y2 | r | p1 | p2 | pt, c, d, v, w, m | tn, per | f, f1, f2 | str | | to_layer | | to_f | to_i | to_n | sum | ave |
    関数 | jww | jww_close | run | hm | | comment | echo | erase | change | except | | hp | ln | ci | ch | pl | pt | sl | rc | pg | la | | hk | hs | hcw,hch,hcd,hcc | | lg | ly | lc | lt | lw | pn | cn | cn0 | font | | hd | bz | by | | r, R | j, J | k, K | | ln_set | ci_set | ch_set | pt_set | | reset | ln_reset | ci_reset | | vec | rad | deg | sgn | int | abs | env | gosa | | offset | dconv | adconv | elliptic_f | elliptic_e | | rounds | cround | | value_eq? | angle_eq? | ci_close? | | slplot, solid | | plot | to_txt | to_arr | | point | pmark | pset | to | | line | cline | rline | dline | | circle | arc | larc | | text | | oval | rectangle | roundrectangle | polygon | ray | xline | | bar_draw | arrow | dims | | scale | | ptpoint | ptdist | ptslope | ptspan | ptcenter | | lnpoint | lnlength | lnslope | lnspan | lncenter | | cipoint | cilength | cislope | cispan | cicenter | | chpoint | chlength | chslope | chspan | chcenter | | plpoint | pllength | plslope | plspan | plcenter | | ln_hpsnap | ln_hpdist | ln_hpnear | ln_hpends | ln_hpsens | ln_hpmens | | ci_hpsnap | ci_hpdist | ci_hpnear | ci_hpends | ci_hpsens | ci_hpmens | | ch_hpsnap | ch_hpdist | ch_hpnear | ch_hpends | ch_hpsens | ch_hpmens | | pl_hpsnap | pl_hpdist | pl_hpnear | pl_hpends | pl_hpsens | pl_hpmens | | clength, len | span | slope,angle | snap | dist | near | ends | sens | mens | | rot | rot2 | | fromto | | ptcalc | ptsgn | | lnmove | cimove | ptmove | | div | lndivide | cidivide | ptdivide | | lnbreak | cibreak | | lnextend | ciextend | ln_hp | ci_hp | | ccpoint | | stroke | pstroke | | moveto | lineto | polarto | polar | | move | mirror | rotate | bairitu | shear | | multiput | cut | grid | ruisin | parallel | | inters | tangents | centers | fukusens | suisens | | interdeg | area | | ln_hptrack | ci_hptrack | ch_hptrack | | lnchamfer | lnfillet | | hatch | | ln_barplot | | bezier | bspline | spline |
    
     本稿は 煙の出ない玉手箱 の コマンドリファレンスです。
     → JW_CAD の 作図、編集機能を いくつか カバーしています。
     → エラー処理をはじめコマンドのチェックは不十分です。
    
     文字のコードは 暗黙の了解で Shift-Jis としています。きちんと表示されないとき
     は 起動時に -Ks オプション を指定してください。
     → ruby-1.9 では $KCODE と jcode.rb が使えなくなっています。
       ruby-1.9 では line [hp 1, 2] が エラーとなります。
                     line [hp(1, 2)] や line [(hp 1, 2)] あるいは line hp 1, 2 は大丈夫です。
     → "1\n2\n3\n".each{|i| p i} が ruby-1.9 では エラーとなります。
       "1\n2\n3\n".each_line{|i| p i} とすれば ruby-1.8 でも ruby-1.9 でも 通ります。
     → [1,2,3].each{|$_| p $_} が ruby-1.9 では エラーとなります。ブロック引数にグローバル変数が使えなくなっています。
     → 数学関数 Math.atan2(0, 0) は ruby-1.8 では 0 を返しますが ruby-1.9 では エラーとなります。
     → 10**(-3) は ruby-1.8 では 0.001 となりますが ruby-1.9 では 1/1000 となります。10.0**(-3)
       とすれば、どちらも 0.001 を返します。
     → ruby-1.9 は "123".reverse が できるようになっています。(String#reverse が 全角に対応)
    
    
    

    class Fonts


     文字フォントのクラス設定 ( V.1.01.84 より 仕様を変更 ) Font.msmincho → 'MS 明朝' Fonts.new(1).msgothic → 'MS ゴシック' CnFont.msmincho → 'cn"$<MS 明朝>' Fonts.new(0).msgothic → 'cn"$<MS ゴシック>'

    msmincho

    MS 明朝

    msgothic

    MS ゴシック

    hgpop

    HG創英角ポップ体

    先頭へ戻る


    class Colors


     ソリッド図形の塗りつぶし色のクラス設定 Color.red → '10 255' Color.lc1 → '1' Colors.new(1).red → 'lc10 255' Colors.new(1).lc1 → 'lc1' LcColor.red → 'lc10 255'
    black gray silver ◇white red yellow lime aqua blue fuchsia maroon olive green teal navy purple gold chocolate lightgray darkgray orange magenta cyan deeppink brown lightgreen lightblue lavender panel

    先頭へ戻る


    class Jwc_temp


     外部変形書き込みデータのクラス設定(txt:jwc_temp.txt)

    $select_data

    ・jwc_temp.txt で # 以降の指示・選択データを返す $select_data[] に 1行づつ String で セットされます。

    先頭へ戻る


    $err

    ・エラー番号を返す 未調整

    $hf, $file

    ・ファイル名を返す  「REM #hf」の指定があるとき、現在編集中のファイル名(フルパス)が書き 込まれています。

    $bz

    ・図面寸法でデータを書出す指定 bz があれば 1 を なければ 0 を 返す  「bz」よりあとにくるデータは図面寸法で書き込まれています。  → バッチファイルで REM #bz を指定したときに書き込まれます。  → 図面寸法とは、縮尺どおり印刷された図面に1/1のメジャーをあてた寸法です。   縮尺1/100で1mなら、図面寸法は1cmです。

    $hq

    ・外部プログラム実行チェック文字 jwc_temp.txt に hq があると $hq は 1 を返し、そうでなければ 0 を返す。

    先頭へ戻る


    $hk

    ・軸角( ゚ )

    先頭へ戻る


    $hs

    ・レイヤグループの縮尺(縮尺の逆数)  レイヤグループの縮尺の逆数がレイヤグループ(0〜F)毎に書き込まれています。  $hs = { "0" => %g, "1" => %g, "2" => %g, "3" => %g,      "4" => %g, "5" => %g, "6" => %g, "7" => %g,      "8" => %g, "9" => %g, "a" => %g, "b" => %g,      "c" => %g, "d" => %g, "e" => %g, "f" => %g }

    先頭へ戻る


    $hcw

    ・文字幅 mm (文字種類 No1〜10 )  $hcw = [%g, %g, %g, %g, %g, %g, %g, %g, %g, %g]

    $hch

    ・文字高 mm (文字種類 No1〜10 )  $hch = [%g, %g, %g, %g, %g, %g, %g, %g, %g, %g]

    $hcd

    ・文字間隔 mm (文字種類 No1〜10 )  $hcd = [%g, %g, %g, %g, %g, %g, %g, %g, %g, %g]

    $hcc

    ・文字色 文字色(ペンNo) (文字種類 No1〜10 )  $hcc = [%d, %d, %d, %d, %d, %d, %d, %d, %d, %d]

    先頭へ戻る


    $hn

    ・選択範囲  選択範囲の始点と終点の座標の書き込みです。  座標値は表示画面の縮尺となります。  $hn = [%g, %g, %g, %g]

    先頭へ戻る


    $hzk

    ・日影図計算の条件  日影図計算の条件の書き込みです。  緯度(度)、日赤緯(度)、測定高(m)、測定時間(0:8時〜16時 、 1:9時〜15時)  $hzk = [%g, %g, %g, %d]

    先頭へ戻る


    $hzs

    ・用紙の横と縦の寸法(mm)  $hzs = [%g, %g]

    先頭へ戻る


    $hp

    ・指示点 ( 1-99 ) [座標 x, y]  バッチファイルで指定した指示点が書き込まれます。指示点(0)は原点なの でとくに書き込みはありません。  $hp = [[0, 0], [%g, %g], [%g, %g], ・・・]

    $hpn

    ・指示線、円、文字データの指示点数

    先頭へ戻る


    $lg

    ・表示画面のレイヤグループ  $lg = %s ← %x ではないことに注意してください。

    先頭へ戻る


    $lgx

    ・表示画面のレイヤグループ状態  $lgx[$lg]  → バッチファイルで REM #gn を指定したときに書き込まれます。

    $lgn

    ・表示画面のレイヤグループ名  $lgn[$lg]  → バッチファイルで REM #gn を指定したときに書き込まれます。

    $ly

    ・表示画面のレイヤ  $ly = %s ← %x ではないことに注意してください。

    先頭へ戻る


    $lyx

    ・レイヤ状態  → バッチファイルで REM #gn を指定したときに書き込まれます。

    $lyn

    ・レイヤ名  → バッチファイルで REM #gn を指定したときに書き込まれます。 [ 使用例 ]
    :表示画面のレイヤグループのレイヤ名を確認する
    @echo off
    REM #jww
    REM #gn
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    pause
    goto:eof
    
    #!ruby -Ks -rjw
    $lyn[$lg].each_with_index do |layer, i|
      puts "#{i.to_s(16)}: #{layer}"
    end
    __END__
    

    $lc

    ・設定されている線色  $lc = %s ← %d ではないことに注意してください。

    先頭へ戻る


    $lt

    ・設定されている線種  $lt = %s ← %d ではないことに注意してください。

    先頭へ戻る


    $lw

    ・設定されている線幅  バッチファイルに「REM #zw」の指定があるときに有効になります。  線幅は数値の1/100mmとなります。 $lw = %s ← %d ではないことに注意してください。

    先頭へ戻る


    $cn

    ・設定されている文字種 ( 0-10 )( 0 → 任意サイズの文字 ) $cn = 0 のとき $chx[i][6] に 文字幅 mm $chx[i][7] に 文字高 mm $chx[i][8] に 文字間隔 mm $chx[i][9] に 文字色 が保存されます。

    先頭へ戻る


    $font

    ・設定されている文字フォント  $font = 'cn"$<MS ゴシック>'

    先頭へ戻る


    $pn

    ・設定されている点種

    先頭へ戻る


    $ln

    ・線データ  $ln = [0, [%g, %g, %g, %g], [%g, %g, %g, %g], ・・・]

    $lnn

    ・線データの選択数 あるいは 総数  $lnn = $ln.size - 1

    $lnx

    ・線データの属性  $lnx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]

    $lnz

    ・線データの図形属性

    $lnzon

    ・線データの図形属性(2)  → 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。

    $lnno

    ・線データ番号

    先頭へ戻る


    $ci

    ・円、円弧、楕円データ

    $cin

    ・円、円弧、楕円データの選択数 あるいは 総数

    $cix

    ・円、円弧、楕円データの属性

    $ciz

    ・円、円弧、楕円データの図形属性

    $cizon

    ・円、円弧、楕円データの図形属性(2)  → 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。

    $cino

    ・円データ番号

    先頭へ戻る


    $ch

    ・文字データ(".c[hvsroptkz2]"を".ch"に統一)

    $chn

    ・文字データの選択数 あるいは 総数

    $chx

    ・文字データの属性

    $chz

    ・文字データの図形属性

    $chzon

    ・文字データの図形属性(2)  → 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。

    $chno

    ・文字データ番号

    先頭へ戻る


    $pt

    ・点データ

    $ptn

    ・点データの選択数 あるいは 総数

    $ptx

    ・点データの属性

    $ptzon

    ・点データの図形属性(2)  → 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。

    $ptz

    ・点データの図形属性

    先頭へ戻る


    $pl

    ・曲線データ

    $pln

    ・曲線データの線の総数

    $plx

    ・曲線データの属性

    $plz

    ・曲線データの図形属性

    $plzon

    ・曲線データの図形属性(2)  → 図形属性のほかに属性を指定したとき、配列に "z2" が保存される。

    $plno

    ・曲線データ番号(データ毎の最後の番号)

    先頭へ戻る


    $ml

    ・寸法図形 線データ  $ml = [0, [%g, %g, %g, %g], [%g, %g, %g, %g], ・・・]

    $mln

    ・寸法図形 線データの選択数 あるいは 総数  $mln = $sl.size - 1

    $mlx

    ・寸法図形 線データの属性  $mlx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]

    $slz

    ・寸法図形 線データの図形属性

    $mlno

    ・寸法図形 線データ番号

    先頭へ戻る


    $mc

    ・寸法図形 文字データ

    $mcn

    ・寸法図形 文字データの選択数 あるいは 総数

    $mcx

    ・寸法図形 文字データの属性

    $mcz

    ・寸法図形 文字データの図形属性

    $mcno

    ・寸法図形 文字データ番号

    先頭へ戻る


    $sl

    ・ソリッドデータ

    $sln

    ・ソリッドデータの選択数 あるいは 総数  $sln = $sl.size - 1

    $slx

    ・ソリッドデータの属性  $slx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]

    $slz

    ・ソリッドデータの図形属性

    $slno

    ・ソリッドデータ番号

    先頭へ戻る


    $bl

    ・ブロックデータ

    $bln

    ・ブロックデータの選択数 あるいは 総数  $bln = $bl.size - 1

    $blx

    ・ブロックデータの属性  $blx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]

    先頭へ戻る


    $plsl

    ・曲線ソリッドデータ

    $plsln

    ・曲線ソリッドデータの選択数 あるいは 総数  $plsln = $plsl.size - 1

    $plslx

    ・曲線ソリッドデータの属性  $plslx = [[$lg, $ly, $lc, $lt, $lw], [%s, %s, %s, %s, %s], [%s, %s, %s, %s, %s], ・・・]

    $plslz

    ・曲線ソリッドデータの図形属性

    $plslno

    ・曲線ソリッドデータ番号

    先頭へ戻る


    class Numeric へ 追加したメソッド



    class Range へ 追加したメソッド



    class String へ 追加したメソッド

     標準クラス String に 追加する
    zen_han
    ・数字を全角文字から半角文字へ変換する  x.zen_han → self.tr("[{()}]0-9A-Za-z&¥.+−ー*×/÷^   :;=$%@ _,!”#?・〜|‘’<>、"," 〜 ")  x は文字列
    先頭へ戻る

    han_zen
    ・数字を半角文字から全角文字へ変換する  x.han_zen → self.tr("[{()}]0-9A-Za-z&\\\\.+\\-*/^:;=$%@ _,!\"#?・~|`'<>"," 〜 ")  x は文字列
    先頭へ戻る

    class Hash へ 追加したメソッド



    class Array へ 追加したメソッド

     標準クラス Array に 追加する
    x, x1
    ・線[x1, y1, x2, y2]の始点、円[x, y, r]の中心点 x 座標 を返す ln(1).x1 → [x1, y1, x2, y2].x1 → x1 ci(1).x → [x, y, r].x → x ・ln指標, ci指標 で 利用する  1.ln.x1 → x1  1.ci.x → x ・x のように 図形データの特定要素を返すコマンドを「スナップ(読取点)コマンド」と呼ぶ。 ・a = [1, 2, 3, 4] a.x = 5 p a → [5, 2, 3, 4] ・図形データは文字列も可とした "1 2 3 4".x → 1.0 ・図形データ.x(y) で 引数に y 座標を与えることができるようにした "1 2 3 4".x 5.0 → [1.0, 5.0] "1 2 3 4".pt.x 5.0 → [[1.0, 5.0], [3.0, 5.0]]
    先頭へ戻る

    y, y1
    ・線の始点、円の中心点 y 座標 を返す  ln(1).y1  ci(1).y ・図形データは文字列も可とした "1 2 3 4".y → 2.0 ・図形データ.y(x) で 引数に x 座標を与えることができるようにした "1 2 3 4".y 5.0 → [5.0, 2.0] "1 2 3 4".pt.y 5.0 → [[5.0, 2.0], [5.0, 4.0]]
    先頭へ戻る

    x2
    ・線の終点 x 座標 を返す  ln(1).x2
    先頭へ戻る

    y2
    ・線の終点 y 座標 を返す  ln(1).y2
    先頭へ戻る

    r
    ・点[x, y] や 線[0, 0, x, y] の長さ を返す ・線[x1, y1, x2, y2] の長さ を返す  ln(1).r → L = hypot(x2 - x1, y2 - y1)  1.ln.r ・円[x,y,r] の半径 を返す  ci(1).r → [x, y, r].r → r  1.ci.r ・文字列[x, y, lx, ly, str] の長さ を返す  ch(1).r  1.ch.r
    先頭へ戻る

    p1
    ・線[x1, y1, x2, y2] の 始点[x1,y1] を返す  ln(1).p1 → [x1, y1, x2, y2].p1 → [x1, y1]  1.ln.p1 ・円[x, y, r, p1, p2, w, d] の 始角 p1 を返す  ci(1).p1 → [x, y, r, p1, p2, w, d].p1 → p1  1.ci.p1 ・文字列[x, y, lx, ly, str] の 左下の点[x, y] を返す  ch(1).p1
    先頭へ戻る

    p2
    ・線[x1, y1, x2, y2] の 終点[x2, y2] を返す  ln(1).p2 ・円[x, y, r, p1, p2, w, d] の 終角 p2 を返す  ci(1).p2 ・文字列[x, y, lx, ly, str] の 右下の点[x, y] を返す  ch(1).p2
    先頭へ戻る

    pt, c, d, v, w, m
    pt : 両端(読取点) ・線[x1, y1, x2, y2] の 両端[x1, y1], [x2, y2] を返す  ln(1).pt  1.ln.pt(-1) → 始点[x1, y1]  1.ln.pt(1) → 終点[x2, y2] ・円[x, y, r]、楕円[x, y, r, 0, 360, w, d] の 中心点[x, y] を返す  ci(1).pt  1.ci.pt(0) → 中心点[x, y] ・円弧[x, y, r, p1, p2, w, d] の  ci(1).pt(-1) → 始角 p1 端[x1, y1] を返す  ci(1).pt(1) → 終角 p2 端[x2, y2] を返す  ci(1).pt(2) → 両端[x1, y1], [x2, y2] を返す  ci(1).pt(3) → 両端と中心点[x1, y1], [x, y], [x2, y2] を返す ・文字列[x, y, lx, ly, str] の 左下・右下の点[x1, y1], [x2, y2] を返す  ch(1).pt  1.ch.pt(-1) → 左下の点[x1, y1]  1.ch.pt(1) → 右下の点[x2, y2] c : 中点 ・線[x1, y1, x2, y2] の 中点[(x1 + x2) / 2, (y1 + y2) / 2] を返す  ln(1).c  1.ln.c 0.25 → 線長を 1.0 としたとき 始点からの距離比 0.25 の点[x, y] を返す ・円[x, y, r] の 中心点[x, y] を返す  ci(1).c ・円弧[x, y, r, p1, p2, w, d] の 中点[x3, y3] を返す  ci(1).c → 中点[x3, y3] を返す  1.ci.c 0.25 → 弧長を 1.0 としたとき 始角 p1 端からの距離比 0.25 の点[x3, y3] を返す ・文字列[x, y, lx, ly, str] の 下線の中点[x, y] を返す  ch(1).c  c r1, r2, … : 距離比 r1, r2, … の 点 pc  pc = ln(1).c r1, r2, …   r1, r2, … : 始点からの距離比 d : 角度 ・点[x, y] は 線[0, 0, x, y] の 傾角(rad) を返す ・線[x1, y1, x2, y2] の 傾角(rad) を返す  ln(1).d ・円[x, y, r]、楕円[x, y, r, 0, 360, w, d] の 傾角 d(゚) を返す  ci(1).d ・円弧[x, y, r, p1, p2, w, d]  ci(1).d(-1) → 始角 p1 を返す  ci(1).d(1) → 終角 p2 を返す  ci(1).d(2) → [p1, p2] を返す  ci(1).d(-2) → 交角 p2 - p1 を返す( 正値に補正した値 ) ・文字列[x, y, lx, ly, str] の 下線の傾角(rad) を返す  ch(1).d v : 鉛直 ・線[x1, y1, x2, y2] の 鉛直角(rad) を返す  ln(1).v ・円[x, y, r]、楕円[x, y, r, 0, 360, w, d] の 傾角 d + 90(゚) を返す  ci(1).v ・円弧[x, y, r, p1, p2, w, d]  ci(1).v(-1) → 始角 p1 + 90 を返す  ci(1).v(1) → 終角 p2 + 90 を返す  ci(1).v(2) → [p1 + 90, p2 + 90] を返す ・文字列[x, y, lx, ly, str] の 下線の鉛直角(rad) を返す  ch(1).v w : 幅 ・線[x1, y1, x2, y2] の スパン長[x2 - x1, y2 - y1] を返す  ln(1).w  ln(1).w $hk → 軸角(゚)を考慮してスパン長を返す  ln(1).w $hk, w=0.5 → 軸角(゚)と扁平比 w を考慮してスパン長を返す   軸角=0 なら [x2 - x1, (y2 - y1)/w] を返す ・円[x, y, r, p1, p2, w, d] の 扁平比 を返す  ci(1).w ・文字列[x, y, lx, ly, str] の XY方向の長さ[lx, ly] を返す → 下線のスパン長に相当する  ch(1).w m : 線の勾配 ・線[x1, y1, x2, y2] の 勾配 (x2 - x1) / (y2 - y1) を返す  ln(1).m → 軸角に対応する
    先頭へ戻る

    ◆SA::tn, per
     ci.tn(pt) ・円[x, y, r]、楕円・円弧 [x, y, r, p1, p2, w, d] の 円周上点 pt の接線の角度rad を返す  1.ci.tn  1.ci.tn(2)  (ci 1).tn(2)  ci.per(pt) ・円[x, y, r]、楕円・円弧 [x, y, r, p1, p2, w, d] の 円周上点 pt の法線の角度rad を返す  1.ci.per  1.ci.per(2)  (ci 1).per(2)
    先頭へ戻る

    f(pm=0), f1, f2
    ・楕円の焦点の座標 を返す  pf1, pf2 = ci(1).f  pf1 = ci(1).f(1)  pf2 = ci(1).f(2)  pf1 = ci(1).f1  pf2 = ci(1).f2
    先頭へ戻る

    str
    ・文字データの文字列 を返す  s = ch(1).str → s = "文字列"  s = ch(1..-1).str → s = ["文字列1", "文字列2", … ]
    先頭へ戻る

    ◆SA::to_layer(slg=$lg,sly=$ly)
    ・作図するレイヤグループとレイヤを設定する
    先頭へ戻る

    to_f(a=1.0)
    ・配列の値を実数に変換する  a : 変換倍率
    先頭へ戻る

    to_i
    ・配列の値を整数に変換する
    先頭へ戻る

    ◆FNSA::to_n(j=nil,k=nil,l=nil)
    ・連続線データの後に「"文字」で連続線端部に文字と点が作図され、  「"数字"+増分」で「数字+増分」の値と点が次の端部に作図される  (増分を省略すると増分は「1」になる)  i.to_n(j) あるいは to_n(i, j) → "i"+j 、j == nil なら "i  i : 文字、数字  j : 増分、ただし j が 文字列なら i = j + i.to_s となる    j != nil のとき k, l を 与えると k == l のときだけ 値を返す [ 使用例 ]
    :連続線に指示点番号と点を作図
    @echo off
    REM #jww
    REM #1-%d
    REM #99#
    REM #e
    
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    
    #!ruby -Ks -rjw
    jww
    lc sxflc :orange
    (hp 1..-1).each_with_index do |x, i|
    	echo x, (to_n i + 1, "#")
    	echo x, (to_n "#1", 1 if i == 0)
    	echo x, (to_n "#1", 1, i, 0)
    end
    __END__
    
    先頭へ戻る

    sum
    ・配列の合計値を返す [ 使用例 ] Array のほか Range も 可 (1..10).sum → 55  ln.r.sum → 指示線の線長の合計
    先頭へ戻る

    ave
    ・配列の平均値を返す [ 使用例 ] Array のほか Range も 可 (1..10).ave → 5.5  ln.r.ave → 指示線の線長の平均
    先頭へ戻る

    関数



    jww

    ・標準出力を jwc_temp.txt とする jww → $stdout = open("jwc_temp.txt", "w")  $stdout = STDOUT で リセットできる

    先頭へ戻る


    jww_close あるいは jww_data

    ・jww を リセット して 配列 $jww_data に 出力データをセットする

    先頭へ戻る


    run(file = $0, mode = 0)

    ・標準出力を jwc_temp.txt とする ・バッチファイルで  1) mode = 0 のとき つぎの 〜 部分 を 評価する   :: 〜 (先頭行)   REM #: 〜   REM #jww; 〜   mode = 1 のとき   REM #e の あとにある   ::command のつぎから (::〜 の 〜 は なんでもよい)   ::end のまえまで (::〜 の 〜 は なんでもよい) を 評価する  2) REM #c ***** /_$[1-9a-z]" $p =    で $p に 数値 を 取得する  3) REM #c ***** /_$[A-Z]" $p =    で $p に 文字 を 取得する  → 2), 3) で $p = を 省略したとき    $1 〜 $9 は $_1 〜 $_9 に 数値 を 取得する    $a 〜 $z は $a 〜 $z に 数値 を 取得する    $A 〜 $Z は $A 〜 $Z に 文字 を 取得する ・REM #hm による 項目選択メニュー があるとき  $hm に 項目の選択番号がセットされる(コマンドライン引数 %1 経由) ・バッチファイルを run で 評価するバッチ [ run.bat ] 例題のバッチファイルと同じフォルダに置いておく
    @echo off & cls
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "run '%1'" %* -
    → RUBYLIB は jw.rb の置いてあるフォルダ。パスが通っている場 所なら RUBYLIB の設定は不要。 [ 使用例 ]
    @rem 線を引く
    @echo off
    REM #jww
    REM #1-%d : 始点を指示してください
    REM #2%d  : 終点を指示してください
    REM #     : line
    REM #e
    %~dp0run %0
    
    [ 使用例−2 ]
    @rem 線を引く、円を描く
    @echo off
    REM #jww
    REM #hc メニュー
    REM #hm |1) / |2) ○ |
    REM #:1
    REM #:2
    REM #1-%d 点を指示してください
    REM #2%d 点を指示してください
    REM #e
    %~dp0run %0 %1 -mode1
    
    ::command
    case hm
      when 1 then line
      when 2 then circle
    end
    ::end
    
    ・バッチファイルを run で 評価するバッチ(2) [ let.bat ] 例題のバッチファイルと同じフォルダに置いておく
    @echo off
    set run=run
    if /i %1==norun (set run=#&shift /1)
    if /i %1==nojww (set nojww=%1&shift /1)
    if not exist %1 (
      echo バッチファイルが見当たりません
      echo @let %0 %* で 起動してください
      pause
      exit
    )
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ( echo %run% '%~1'
      findstr /iv "^[@:%%] ^REM" %1
    ) | ruby -Ks -rjw - %*
    
    → RUBYLIB は jw.rb の置いてあるフォルダ。パスが通っている場 所なら RUBYLIB の設定は不要。 [ 使用例−3 ]
    @rem 線を引く
    @let %0
    REM #jww
    REM #cd
    REM #1-%d 始点を指示してください
    REM #2%d  終点を指示してください
    REM #e
    
    line
    
    [ 使用例−4 ]
    @rem 線を引く、円を描く
    @let %0 %1
    REM #jww
    REM #cd
    REM #hc メニュー
    REM #hm |1) / |2) ○ |
    REM #:1
    REM #:2
    REM #1-%d 点を指示してください
    REM #2%d 点を指示してください
    REM #e
    
    case hm
      when 1 then line
      when 2 then circle
    end
    

    先頭へ戻る


    ▼F::hm

    ・関数 run を実行したとき バッチファイルの選択項目(メニュー)の番号を返す  hm → $hm に 保存されている値を返す  関数 run を実行しないとき や メニューがないときは 0 を返す

    先頭へ戻る


    ▼FNRSHA::comment

    ・数値をコメント表示する  comment(x,s="",t="") → print"h#"+x.to_s+s.to_s+t.to_s+"\n"  x は数値、文字列、配列、ハッシュのいずれでも構わない。 ・x が Numeric のとき  x.comment(s="",t="") → print"h#"+s+self.to_s+t+"\n"  printf "h#L = %s m\n",x なら s = "L = ", t = " m" となる。 ・x が Array のとき  x.comment(s="",t="") → print"h#"+s+"["+self.join(",")+"]"+t+"\n"  printf"h#L = [%s] m\n",x.join(",") なら s = "L = ", t = " m" となる。

    先頭へ戻る


    ▼F::echo(*x)

    ・puts x.flatten.join(" ") となる

    先頭へ戻る


    ▼F::erase(reg=//, x=nil)

    ・図形データ x から reg マッチするデータを削除して返す reg は 正規表現 か 文字列  x は 図形データ で デフォルト値 = $select_data

    先頭へ戻る


    ▼F::change(reg="", str="", x=nil)

    ・図形データ x で reg にマッチするデータを str に変換して返す  x が $select_data なら 同時に出力する reg は 正規表現 か 文字列 str は 文字列  x は 図形データ で デフォルト値 = $select_data

    先頭へ戻る


    ▼---S-Aexcept(reg)

    ・図形データ self で reg にマッチするデータを削除して出力する reg は 正規表現 曲線 reg = /^pl/、寸法図形 reg = /^ms[gz]/ に対応 [[1,2,3,4],"ci 1 2 3","pt 4 5",["ch",0,0,1,0,"ようこそ!"]].except(/^pt/)
      1 2 3 4
      ci 1 2 3
      ch 0 0 1 0 "ようこそ!

    先頭へ戻る


    ▼FNRS-A::hp(i)

    ・hp(1) で 指示点データ $hp[1] を返す ・1.hp で '1hp' を返す ・指示点データあるいは点データのセットに変換する '1'.hp → $hp[1] [1].hp → $hp[1]  hp 1 → [x, y]  hp 1, 2 → [[x1, y1], [x2, y2]]  hp 1..3 → [[x1, y1], [x2, y2], [x3, y3]]  hp [1, 2, 3, 4] → [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]  hp [x1, y1], [x2, y2, x3, y3] → [[x1, y1], [x2, y2], [x3, y3]]  hp [x1, y1, x2, y2], [x3, y3, x4, y4] → [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]  hp [[[x1, y1], [x2, y2]], [[x3, y3], [x4, y4]]]   → [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] つぎの処理は x1, y1, x2, y2 の いずれかが実数 でなければならない △hp [x1, y1, x2, y2] → [[x1, y1], [x2, y2]] △hp [[x1, y1, x2, y2]] → [[x1, y1], [x2, y2]]  つぎのような演算は 整数でも 可 ○hp(0, [x1, y1, x2, y2]) - [[0, 0]] → [[x1, y1], [x2, y2]]  要素数が6つと8つのときは つぎのようにできる (hp [x1, y1, x2, y2, x3, y3], [nil, nil]) - [[nil, nil]] → [[x1, y1], [x2, y2], [x3, y3]] (hp [x1, y1, x2, y2, x3, y3, x4, y4], [nil, nil]) - [[nil, nil]] → [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]  (hp 1) や hp -1 のような表現ができる。 [ 使用例 ]
    @rem 三角形
    @echo off
    REM #jww
    REM #1- 点1を指示してください
    REM #2- 点2を指示してください
    REM #3 点3を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; line (hp 1, 2, 3, 1)"
    
     → line hp, :c でも 構わない。

    先頭へ戻る


    ▼FNRS-A::ln(*x)

    ・ln(1) で 指示線データ $ln[1] を作図画面のスケールに補正した値を返す  → ln(1) は 配列 [x1, y1, x2, y2] となる。 ・1.ln で '1ln' を返す ・指示線データのエルエヌ指標に変換する  (1..lnn).ln → ['1ln', '2ln', ・・・] ・1.ln.ln で ln(1) を返す ・画層の属性を返す 1.ln.lg → グループレイヤ 1.ln.ly → レイヤ 1.ln.lc → 線色 1.ln.lt → 線種 ・指示線データに変換する '1'.ln → $ln[1] を 作図画面のスケールに補正した値 [1].ln → $ln[1] を 作図画面のスケールに補正した値  ln 1 → [x1, y1, x2, y2]  ln 1, 2 → [[x1, y1, x2, y2], [x3, y3, x4, y4]]  ln hp 1, 2 → [x1, y1, x2, y2]  引数に実数があるとき( Ver.1.05.12 より )
      return case x.size
        when 1 then "0 0 " + x[0].to_s + " 0"
        when 2 then "0 0 " + x.join(" ")
        when 3 then [x + [x[1].to_s]].join(" ")
        else x.join(" ")
      end
     ・引数の数 = 1 なら  ln 1000.0 → "0 0 1000.0 0"  ・引数の数 = 4 なら  ln 1, 2, 3, 4.0 → "1 2 3 4.0" ・始点、終点、中点 は スナップ(読取点)コマンド p1, p2, c ・・・ を 併用して返す 1.ln.p1 → [x1, y1] 始点 1.ln.p2 → [x2, y2] 終点 1.ln.c → [(x1 + x2) / 2, (y1 + y2) / 2] 中点 ・スナップ(読取点)コマンド を シンボルにして利用する 1.ln :p2, :p1 → [[x2, y2], [x1, y1]] 1.ln :y2, :x2, :y1, :x1 → [y2, x2, y1, x1] ○座標データを線データにして返す ln [x1, y1], [x2, y2], [x3, y3], ・・・ → [[x1, y1, x2, y2], [x3, y3, x4, y4], ・・・]

    先頭へ戻る


    ▼FNRS-A::ci(*x)

    ・ci(1) で 指示円データ $ci[1] を表示画面のスケールに補正した値を返す  → ci(1) は 配列 [x1, y1, r] となる。 ・1.ci で '1ci' を返す ・指示円データのシーアイ指標に変換する  (1..cin).ci → ['1ci', '2ci', ・・・] ・1.ci.ci で ci(1) を返す ・画層の属性を返す 1.ci.lg → グループレイヤ 1.ci.ly → レイヤ 1.ci.lc → 線色 1.ci.lt → 線種 ・指示円データに変換する  ci hp 1, 2 → 点1が中心、点2を円周上の点とする円になる  ci ((hp 1, 2), :d) → :d で 点1と点2を直径とする円になる  引数に実数があるとき( Ver.1.05.12 より )
      return case x.size
        when 1 then "ci 0 0 " + x[0].to_s
        when 2 then "ci 0 0 " + [0, x.split.to_f].r.to_s
        when 4 then "ci " + x[0..1].join(" ") + " " + [x[0..1].split.to_f, x[2..3].split.to_f].r.to_s
        else "ci " + x.join(" ")
      end
     ・引数の数 = 1 なら  ci 500.0 → "ci 0 0 500.0"  ・引数の数 = 3 なら  ci 1, 2, 3.0 → "ci 1 2 3.0"  → 3点円 は [1, 2, 3].ci true で返す。( Ver.1.00.70 より )

    先頭へ戻る


    ▼FNRS-A::ch(*x)

    ・ch(1) で 文字列データ $ch[1] を表示画面のスケールに補正した値を返す  → ch(1) は 配列 [s, x1, y1, lx, ly, str] となる。 ・1.ch で '1ch' を返す ・指示文字列データのシーエッチ指標に変換する  x.ch → ['1ch', '2ch', ・・・] ・1.ch.ch で ch(1) を返す ・画層の属性を返す 1.ch.lg → グループレイヤ 1.ch.ly → レイヤ 1.ch.lc → 文字色 1.ch.cn → 文字種 ・指示文字列データに変換する  [1].ch [ 使用例 ]
    :範囲選択した文字列を表示する
    @echo off
    REM #jww
    REM #h4
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    pause
    goto:eof
    
    #!ruby -Ks -rjw
    ch.str.each do |str|
      puts str
    end
    __END__
    

    先頭へ戻る


    ▼F::pl(i)

    ・pl(i) で 曲線データ $pl[s..e] を表示画面のスケールに補正した値を返す s : $plno[i - 1] + 1 e : $plno[i]

    先頭へ戻る


    ▼F::pt(i)

    ・pt(1) で 点・点マーカ $pt[1] を表示画面のスケールに補正した値を返す

    先頭へ戻る


    ▼F::sl(i)

    ・sl(1) で ソリッド図形 $sl[1] を表示画面のスケールに補正した値を返す

    先頭へ戻る


    ▼F-RS-A::rc(x=nil,y=nil,d=$hk)

    ・矩形の頂点の座標値 の セットを返す x : 始点の座標値 y : 対頂点の座標値 d : 傾斜角°  rc(1, 2)  rc([x1, y1], [x2, y2])  rc([x1, y1, x2, y2]) は [[x1, y1], [x3, y3], [x2, y2], [x4, y4], [x1, y1]] を返す。 ○対角の線データをバラして与えるとき 4辺の線データを返す  rc(x1, y1, x2, y2) は [[x1, y1, x3, y3], [x3, y3, x2, y2], [x2, y2, x4, y4], [x4, y4, x1, y1]] を返す。 ○指示点があるとき、つぎのような使い方ができる  rc  rc :uzu5  :uzu5 で 矩形の雷文様(渦巻き)で 5 度巻き の頂点座標のデータを返す  → line rc :uzu5 のようにして 利用する

    先頭へ戻る


    ▼F-RS-A::pg(x=nil,n=3,mode=0,zn="",zon=0)

    ・正多角形 や 閉鎖多角形の頂点の座標値 の セットを返す  pg(x, n, mode), x.pg(n, mode) x : 座標値のセット n : 頂点(辺)の数  mode = 0, :i で 点 x[0] を中心とし 点 x[1] が円周上にある円に 内接 する正多角形を描く   :id で 点 x[0] と 点 x[1] を直径とする円に 内接 する正多角形を描く  mode = 1, :e で 点 x[0] を中心とし 点 x[1] が円周上にある円に 外接 する正多角形を描く   :ed で 点 x[0] と 点 x[1] を直径とする円に 外接 する正多角形を描く  mode = 2, :s で 点 x[0] と 点 x[1] を結ぶ線を 下辺 とする正多角形を描く ○径や辺長と角度を指定するとき  pg(x, n, mode, zn, zon) x : 中心点や基点 n : 頂点(辺)の数  mode = 0, :i で zn を 半径とする円に 内接 する正多角形を描く  mode = 1, :e で zn を 半径とする円に 外接 する正多角形を描く  mode = 2, :s で zn を 底辺 とする正多角形を描く  zn : 径や辺長  zon : 底辺の角度° ○指示点があるとき  2点なら(3点以上のときは2点のみ有効)  pg(n.mode)  とする  径や辺長と角度を指定すると 指示点が基点の図形データを返す  pg(n, mode, zn, zon)  → 指示点 が 複数あれば 指示点の数だけ返す

    先頭へ戻る


    ▼F----A::la(x=nil,d=180,mode=0)

    ・線分を弦とし、交角を与えて半円のデータを返す la(x, d, mode)  x : 弦となる線データ [始点, 終点]  d : 交角 °(左回り)  mode : 予備データ

    先頭へ戻る


    ▼F::hk

    ・hk で $hk を返す  hk に 数値が代入されたときは無効となる  そんなときは hk() とする

    先頭へ戻る


    ▼F::hs(x=$lg)

    ・hs(x) で $hs[x] を返す  hs のとき hs($lg) を返すが、数値が代入されたときは無効となる  そんなときは hs() とする

    先頭へ戻る


    ▼F::hcw(x=nil), hch, hcd, hcc

    ・hcw(x) で $hcw[x] を返す  hcw で $hcw[$cn] を返す  hch, hcd, hcc についても同様

    先頭へ戻る


    lg(x=nil)

    ・lg(x) で print "lg%s\n" % [x] を出力する  lg のとき $lg を返す

    先頭へ戻る


    ly(x=nil)

    ・ly(x) で print "ly%s\n" % [x] を出力する  ly のとき $ly を返す

    先頭へ戻る


    lc(x=nil)

    ・lc(x) で print "lc%s\n" % [x] を出力する  lc のとき $lc を返す  → x は 線色(ペン色)番号 と呼ばれる。  → 任意色は あらかじめ SXF対応拡張線色のユーザー定義線色で設定する [ JWF ファイル や 基本設定→色・画面 で 変更可 ] lc 0 → デフォルト lc 1 → 線色1 RGB(0,195,198) lc 2 → 線色2 RGB(0,0,0) lc 3 → 線色3 RGB(0,195,0) lc 4 → 線色4 RGB(198,195,0) lc 5 → 線色5 RGB(198,0,198) lc 6 → 線色6 RGB(0,0,255) lc 7 → 線色7 RGB(0,130,132) lc 8 → 線色8 RGB(255,0,132) lc 9 → 補助線色 RGB(255,130,255) [ SXF対応拡張線色 ユーザー定義線色 17〜256 で設定可 → 117〜356 に相当 ] lc 100 → デフォルト lc 101 → black lc 102 → red lc 103 → green lc 104 → blue lc 105 → yellow lc 106 → magenta lc 107 → cyan lc 108 → white lc 109 → deeppink lc 110 → brown lc 111 → orange lc 112 → lightgreen lc 113 → lightblue lc 114 → lavender lc 115 → lightgray lc 116 → darkgray

    先頭へ戻る


    lc10(x)

    ・ソリッド図形の色  lc10(x) で print "lc10%s\n" % [x] を出力する  → x は 0 〜 16777215( 255 + 255 * 256 + 255 * 256 * 256 )   rgb(0, 0, 0) 〜 rgb(255, 255, 255)   0x000000 〜 0xffffff で 与える  lc10 255  lc10 0, 255, 255  lc10 rgb(0, 255, 255)

    先頭へ戻る


    lt(x=nil)

    ・lt(x) で print "lt%s\n" % [x] を出力する  lt のとき $lt を返す   [ JWF ファイル や 基本設定→線種 で 変更可 ] lt 0 → デフォルト lt 1 → 実線 lt 2 → 点線1 lt 3 → 点線2 lt 4 → 点線3 lt 5 → 一点鎖1 lt 6 → 一点鎖2 lt 7 → 二点鎖1 lt 8 → 二点鎖2 lt 9 → 補助線種 lt 10 → 点線(予備) lt 11 → @ランダム線 lt 12 → Aランダム線 lt 13 → Bランダム線 lt 14 → Cランダム線 lt 15 → Dランダム線 lt 16 → E倍長線種 lt 17 → F倍長線種 lt 18 → G倍長線種 lt 19 → H倍長線種 [ SXF対応拡張線種 ユーザー定義線種 17〜32 で設定可 → 47〜62 に相当 ] lt 30 → デフォルト lt 31 → 実線 lt 32 → 破線 lt 33 → 跳び破線 lt 34 → 一点長鎖線 lt 35 → 二点長鎖線 lt 36 → 三点長鎖線 lt 37 → 点線 lt 38 → 一点鎖線 lt 39 → 二点鎖線 lt 40 → 一点短鎖線 lt 41 → 一点二短鎖線 lt 42 → 二点短鎖線 lt 43 → 二点二短鎖線 lt 44 → 三点短鎖線 lt 45 → 三点二短鎖線 lt 46 → 実線(予備)

    先頭へ戻る


    lw(x=nil)

    ・lw(x) で print "lw%s\n" % [x] を出力する  lw のとき $lw を返す

    先頭へ戻る


    pn(x=nil)

    ・pn(x) で print "pn%s\n" % [x] を出力する  pn のとき $pn を返す  x は 点色番号で 線色番号と同じです

    先頭へ戻る


    cn(x=nil)

    ・cn(x) で print "cn%s\n" % [x] を出力する  cn のとき $cn を返す

    先頭へ戻る


    cn0(w=$hcw[$cn],h=$hch[$cn], d=$hcd[$cn],c=$hcc[$cn])

    ・任意サイズ、任意色の文字属性を設定する w は 文字幅 mm h は 文字成 mm d は 文字間隔 mm c は 文字色番号 : 線色番号と同じ  print "cn0 %s\n" % [w, h, d, c].join(" ") を出力する

    先頭へ戻る


    fonts(x=$font,mode="")

    ・フォントを設定する x は フォント mode は "/" なら斜体  print "cn\"$<%s>%s\n" % [x, mode] を出力する

    先頭へ戻る


    hd

    ・指示データあるいは範囲選択データを削除する(復元しない) → print "hd\n" を 書き込む

    先頭へ戻る


    bz

    ・bz 以降、図面寸法でデータを扱う → print "bz\n" を 書き込む

    先頭へ戻る


    by(x=1)

    ・by 以降、データの読み込み倍率を指定する → print "by %s\n" % [x] を 書き込む

    先頭へ戻る


    r(x=1,flg=true) R(x=1,flg=true)

    ・直交座標系 相対座標による 外部変形の連続線コマンド r, R を指定する → r なら puts (flg ? "r%s" : "R%s") % x を   R なら puts (flg ? "R%s" : "r%s") % x を 書き込む r は 原点[0, 0]から引き始める  R は R(x, flg = [x1, y1]) で 始点[x1, y1] から 引き始める

    先頭へ戻る


    j(x=1,flg=true) J(x=1,flg=true)

    ・極座標系の絶対座標による 外部変形の連続線コマンド j, J を指定する → j なら puts (flg ? "j%s" : "J%s") % x を   J なら puts (flg ? "J%s" : "j%s") % x を 書き込む  x = 1 → j1 : 角度は左回りが正、十進数°あるいは 30゚30'30.3"  x =-1 → j-1 : 角度は右回りが正     〃  x = 2 → j2 : 角度は左回りが正、度分秒変換(12.030456 → 12゚03'04.56")  x =-2 → j-2 : 角度は右回りが正     〃 x = 0 → j0 : 極座標系の絶対座標による作図を解除する j は 原点[0, 0]から引き始める  J は J(x, flg = [x1, y1]) で 始点[[x1, y1].r, [x1, y1].d] から 引き始める

    先頭へ戻る


    k(x=1,flg=true) K(x=1,flg=true)

    ・極座標系 相対座標による 外部変形の連続線コマンド k, K を指定する → k なら puts (flg ? "k%s" : "K%s") % x を   K なら puts (flg ? "K%s" : "k%s") % x を 書き込む  x = 1, *1 → k1 , k*1 : 角度は左回りが正、十進数°あるいは 30゚30'30.3"  x =-1,-*1 → k-1, k-*1 : 角度は右回りが正     〃  x = 2, *2 → k2 , k*2 : 角度は左回りが正、度分秒変換(12.030456 → 12゚03'04.56")  x =-2,-*2 → k-2, k-*2 : 角度は右回りが正     〃  x = 1*,-1*→ k1*, k-1* : 角度は前線の始点から終点方向に対しての角度になる  x = 2*,-2*→ k2*, k-2* : 角度は前線の終点から始点方向に対しての角度になる  x = 0 → k0 : 極座標系の相対座標による作図を解除する k は 原点[0, 0]から引き始める  K は K(x, flg = [x1, y1]) で 始点[[x1, y1].r, [x1, y1].d] から 引き始める

    先頭へ戻る


    ln_set(x,*y)

    ・線データのレイヤグループ、レイヤ、線色、線種、線幅を出力する ln_set(i) i : 線データの番号 ln_set([lg, ly, lc, lt, lw]) lg, ly, lc, lt, lw : レイヤグループ、レイヤ、線色、線種、線幅

    先頭へ戻る


    ci_set(x,*y)

    ・円データのレイヤグループ、レイヤ、線色、線種、線幅を出力する ci_set(i) i : 円データの番号 ci_set([lg, ly, lc, lt, lw]) lg, ly, lc, lt, lw : レイヤグループ、レイヤ、線色、線種、線幅

    先頭へ戻る


    ch_set(x,c=nil,flg=1)

    ・文字データのレイヤグループ、レイヤ、線色、線種、線幅を出力する ch_set([lg, ly, lc, lt, lw, cn, cn0w, cn0h, cn0d, cn0c]) ch_set(i, [lg, ly, lc, lt, lw, cn, cn0w, cn0h, cn0d, cn0c]) i : 文字データの番号 lg, ly, lc, lt, lw : レイヤグループ、レイヤ、線色、線種、線幅 cn, cn0w, cn0h, cn0d, cn0c : 文字種 c : 文字の基点 flg : 1=フォントを出力する 0=しない

    先頭へ戻る


    pt_set(x)

    ・点データのレイヤグループ、レイヤ、線色、線種、線幅、点種を出力する pt_set(i) i : 点データの番号 pt_set([lg, ly, lc, lt, lw, pn]) lg, ly, lc, lt, lw, pn : レイヤグループ、レイヤ、線色、線種、線幅、点種

    reset

    ・線・円・文字・点の属性を復元する → ソリッド図形は未対応

    先頭へ戻る


    ln_reset(ln)

    ・線をリセットする

    先頭へ戻る


    ci_reset(ci)

    ・円をリセットする → 扁平比を 1.0 以下 となるようにデータを変更する ci_reset(ci) → return ci

    先頭へ戻る


    ▼FN::vec(x,pm=0)

    ・条件 pm により 方向余弦 あるいは そのセット を返す vec(x, pm) あるいは x.vec( pm ) → pm == -1 : cos( x ) → pm == 1 : sin( x ) → else : [ cos( x ), sin( x ) ]  x は角度( rad )

    先頭へ戻る


    ▼FN::rad(x)

    ・角度( ゚ ) を ( rad ) に変換する rad(x) あるいは x.rad → x * π/180  x は角度( ゚ )

    先頭へ戻る


    ▼FN::deg(x)

    ・角度( rad ) を ( ゚ ) に変換する  deg(x) あるいは x.deg → x * 180/π  x は角度( rad )

    先頭へ戻る


    ▼FN::sgn(x)

    ・正なら 1 を 負なら -1 を ゼロなら 0 を返す  sgn(x) あるいは x.sgn → x == 0 ? x : ( x > 0 ? 1 : -1 )  x は数値

    先頭へ戻る


    int(x)

    ・数値を整数にして返す

    先頭へ戻る


    abs(x)

    ・絶対値を返す

    先頭へ戻る


    env(x)

    ・環境変数を返す  x は文字列 x = "s" とすると   ruby なら ENV["s"]  jw.js は ENV("s")  lua は os.getenv("s")  となる。jw.rb, jw.js, jw.lua で 共通に利用できる   env("s")  を作成した。

    先頭へ戻る


    gosa あるいは gosahosei(x,n=13.5)

    ・数値 x を 小数点以下 n 桁 で 丸める  x は 数値 あるいは 配列  → 配列の中の文字列はそのまま返す  gosa(1.2345, 3) → 1.235  計算誤差で数値が  1.234567890e-15 のようになるとき  1.234567890e-15.gosa  で  0  と補正できる

    先頭へ戻る


    offset(w,h,pt=5,opt=5)

    ・図心から基点までのオフセット値を返す  offset(w, h) → return x, y 基点 pt と 図心 opt のずれが返り値となる。 w --- 幅 h --- 成  pt --- 基点  opt --- 図心  x --- x方向 の基点から図心までのずれ  y --- y方向 の基点から図心までのずれ 7----8----9 --- y | | | | | 4----5----6 h | | | | | +---> x 1----2----3 --- |----w----|

    先頭へ戻る


    dconv(p,w)

    ・楕円中心と指示点を結ぶ線の角度( rad )を離心角( rad )に変換する  dconv(p, w) → d = atan(tan(p) / w)  p --- 楕円中心と指示点を結ぶ線の角度(楕円の極座標の角度)( rad )  w --- 扁平比  d --- 離心角(楕円に外接する補助円の角度)( rad )  → jw_cad の楕円の p1 始角、p2 終角データは離心角( ゚ )

    先頭へ戻る


    adconv(d,w) # dconv( , ) の逆関数

    先頭へ戻る


    elliptic_f(p,k=nil)

    ・第一種楕円積分(ルジャンドル標準形)  p --- 角度 rad  k --- 離心率 → m = k**2 (Maxima)  F(p,k) = elliptic_f(p,k)  第一種完全楕円積分  K(k) = elliptic_f(k)  内部計算はガウス−ルジャンドルの方法による数値積分によっています。  積分点数は n=60 としています。  以下のようにすると、積分点数は変更できます。  $gauss = gear(-300) # n=300  [ 使用例 ] 単振子の周期 T sec  L : 振り子の長さ m  g : 重力加速度 = 9.80665 m/sec2  θmax : 最大振れ角 rad → 理論的には π(180゚)のときに 振れない  T = 4 * sqrt(L/g) * elliptic_f(k=sin(θmax/2))  振れ角が小さい θmax < 30.rad なら elliptic_f(k=sin(θmax/2)) ≒ π / 2 より  T = 4 * sqrt(L/g) * π / 2 → 振れ角が小さいとき、振り子の等時性が仮定できる

    先頭へ戻る


    elliptic_e(p,k=nil)

    ・第二種楕円積分(ルジャンドル標準形)  p --- 角度 rad  k --- 離心率 → m = k**2 (Maxima)  E(p,k) = elliptic_e(p,k)  第二種完全楕円積分  E(k) = elliptic_e(k)  内部計算はガウス−ルジャンドルの方法による数値積分によっています。  積分点数は n=60 としています。  以下のようにすると、積分点数は変更できます。  $gauss = gear(-300) # n=300  [ 使用例 ] 楕円の周長 L m  rx : X軸方向の半径 m  ry : Y軸方向の半径 m  w : ry/rx 偏平比(アスペクト比) ただし rx > ry  L = 4 * rx * elliptic_e(k=sqrt(1-w**2))  円 k=0 なら elliptic_e(k=0) = π / 2 より  L = 4 * rx * π / 2

    先頭へ戻る


    rounds(v,r=3,s=0.5)

    ・数値を実数のままで丸める  rounds(v, r, s) → sgn(v) * ( (v.abs * 10 ** r + s).to_i ) * 10 ** (-r)  v : 数値  r : 有効桁数  s = 0.5 : 小数点位置から r+1 桁 で四捨五入する .round とは異なる  s = 0.9 : 小数点位置から r+1 桁 で切り上げる .ceil とは異なる  s = 0.0 : 小数点位置から r+1 桁 で切り下げる .floor とは異なる

    先頭へ戻る


    cround(v,r=3,s=0.5,keta=3,zero=1,blk=",",skip=0)

    ・3桁ごとに「,」を付けて、数値を丸めて、文字列で返す cround(v, r, s, keta, zero, blk, skip) → 丸めた数値 v : 数値 r : 有効桁数 s = 0.5 : 小数点位置から r + 1 桁 で四捨五入する s = 0.9 : 小数点位置から r + 1 桁 で切り上げる s = 0.0 : 小数点位置から r + 1 桁 で切り下げる ・keta 表示桁数 ・zero = 1 少数点以下の数値は「0」で埋める。 → zero = 0 でこの設定をオフとする。 ・小数点以上の数値に 3桁ごとに「blk」を付ける。 → canma(str, keta, blk) で必要。 ・skip = 5 少数点以下の数値に skip 桁ごとに「空白」をいれる。 → skip = 0 でこの設定をオフとする。

    先頭へ戻る


    value_eq?(l1,l2,eps=1e-15)

    ・数値1と数値2を比較して 誤差の範囲なら true そうでなければ false を返す  value_eq?(l1,l2) → true or false  l1 : 数値1  l2 : 数値2  eps : 誤差

    先頭へ戻る


    angle_eq?(d1,d2,eps=1e-15)

    ・角度1と角度2を比較して 誤差の範囲なら true そうでなければ false を返す  angle_eq?(d1,d2) → true or false  d1 : 角度1 rad  d2 : 角度2 rad  eps : 誤差

    先頭へ戻る


    ci_close?(ci,w=0)

    ・閉じた円なら true そうでなければ false を返す  ci_close?(ci) → true or false  ci : 円データ  w : 扁平比  円だけを取り出したいとき ci_close?(ci, w = 1) とできる

    先頭へ戻る


    ▼FA::slplot(x,s="sl",w=1,cflg=0), solid

    ・ソリッド図形を描く  slplot(x, s, w, cflg) あるいは x.slplot(s, w, cflg)   x : 座標リスト あるいは 図形データ   s : ソリッド図形の名称 :sl, :sc, :se, :sg, :so   w : 扁平比   cflg : 円フラグ → :sg, :so のとき cflg は 内円半径 = r * cflg   円ソリッドの半径や傾角、始角、円弧角は 座標リストx で算定する。 ○線、三角、四角ソリッド図形  s="sl" のとき w, cflg は 無効となる。slplot は "sl" を 省略できる。  slplot [x1, y1, x2, y2]  slplot [x1, y1, x2, y2, x3, y3]  slplot [x1, y1, x2, y2, x3, y3, x4, y4]  slplot [[x1, y1], [x2, y2]]  slplot [[x1, y1], [x2, y2], [x3, y3]]  slplot [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]  s が シンボルなら x と s を 入れ替えても構わない。  slplot :sl, [x1, y1, x2, y2]  slplot :sl, [x1, y1, x2, y2, x3, y3]  slplot :sl, [x1, y1, x2, y2, x3, y3, x4, y4]  slplot :sl, [[x1, y1], [x2, y2]]  slplot :sl, [[x1, y1], [x2, y2], [x3, y3]]  slplot :sl, [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] ○円ソリッド図形  slplot :sc, [x, y, r, w, d, p1, e, cflg]  slplot :sc, [x, y, r, w, d, p1, e, cflg]   r : 半径   d : 傾角rad   p1 : 始角rad   e : 円弧角rad   cflg : 円フラグ → :sg, :so のとき cflg は 内円半径  slplot :sc, [[x1, y1], [x2, y2]], w, cflg  slplot :sc, [[x1, y1], [x2, y2]], w, cflg, e  slplot :sc, [[x1, y1], [x2, y2]], w, cflg, [p1, e]  slplot :sc, [x1, y1, x2, y2], w, cflg  slplot :sc, [x1, y1, x2, y2], w, cflg, e  slplot :sc, [x1, y1, x2, y2], w, cflg, [p1, e]   cflg : 円フラグ → :sg, :so のとき cflg は 内円半径 = r * cflg  3点指示で 1点が中心点、2点がX軸方向の円周点、3点が円環弧の終点となる  slplot :sc, [[x1, y1], [x2, y2], [x3, y3]], w, cflg   cflg : 円フラグ → :sg, :so のとき cflg は 内円半径 = r * cflg   w を 負値とすると、3点目は円環の幅を決める。cflg は 無効となる ○指示点があるときは つぎのような使い方ができる。 ・線、三角、四角ソリッド図形  slplot ・円ソリッド図形  solid :sc, w, cflg  solid :sc, w, cflg, e  solid :sc, w, cflg, [p1, e]   cflg : 円フラグ → :sg, :so のとき cflg は 内円半径 = r * cflg  線形ソリッド図形 s="sl" なら x = [ x1, y1, x2, y2 ]  三角形ソリッド図形 s="sl" なら x = [ x1, y1, x2, y2, x3, y3 ]  四角形ソリッド図形 s="sl" なら x = [ x1, y1, x2, y2, x3, y3, x4, y4 ]    円ソリッド図形 s = "sc" なら x = [ x, y, r, 扁平比, 傾角, 始角, 円弧角, 円フラグ ]  角度の単位はラジアン、円フラグは円が「100」、弓形が「5」、扇形が「0」、  円外側ソリッド図形が「-1」なる。円外側のソリッド図形の円弧角はπ/2(90度)  以下になる(読込みのとき円弧角がπ/2を超えている場合は扇形になる)。  → 円フラグが「100」の場合には 始角、円弧角の指定が無効となる。    円周ソリッド図形 s = "se" なら x = [ x, y, r, 扁平比, 傾角, 始角, 円弧角, 円フラグ ]  角度の単位はラジアン、円フラグは円が「100」、円弧が「0」になる。    円環ソリッド図形 s = "sg", "so" なら x = [ x, y, r, 扁平比, 傾角, 始角, 円弧角, 内円半径 ]   ・2〜5点を指定する円関連のソリッド図形について  円ソリッド図形 s = "sc" のとき  x = [ x1, y1, x2, y2 ] なら 円のソリッド図形となる  x = [ x1, y1, x2, y2, x3, y3 ] なら 扇形のソリッド図形となる  そのとき   x1, y1 は 円の中心点   x2, y2 は 円周上の点で扇形の始点   x3, y3 は 円周上の吸着点で扇形の終点  となる。ただし、始点と終点は左回りで決定する  x = [ x1, y1, x2, y2, x3, y3, x4, y4 ] なら 扇形のソリッド図形となる  そのとき   x1, y1 は 円の中心点   x2, y2 は 円周上の点でX軸方向の半径を決定する   x3, y3 は 円周上の点で扇形の始点   x4, y4 は 円周上の吸着点で扇形の終点  となる。ただし、始点と終点は左回りで決定する    円周ソリッド図形 s="se" のとき  x = [ [x1, y1], [x2, y2] ] なら 円のソリッド図形となる  x = [ [x1, y1], [x2, y2], [x3, y3] ] なら 円弧のソリッド図形となる  そのとき   x1, y1 は 円の中心点   x2, y2 は 円周上の点で円弧の始点   x3, y3 は 円周上の吸着点で円弧の終点  となる。ただし、始点と終点は左回りで決定する  x = [ [x1, y1], [x2, y2], [x3, y3], [x4, y4] ] なら 円弧のソリッド図形となる  そのとき   x1, y1 は 円の中心点   x2, y2 は 円周上の点でX軸方向の半径を決定する   x3, y3 は 円周上の点で円弧の始点   x4, y4 は 円周上の吸着点で円弧の終点  となる。ただし、始点と終点は左回りで決定する    円環ソリッド図形 s="sg","so" のとき  x = [ [x1, y1], [x2, y2] ] なら 円のソリッド図形となる  x = [ [x1, y1], [x2, y2], [x3, y3] ] なら 円環弧のソリッド図形となる  そのとき   x1, y1 は 円の中心点   x2, y2 は 1つの円周上の点で円環弧の始点   x3, y3 は もう1つの円周上の点で円環弧の終点  となる。ただし、始点と終点は左回りで決定する  x = [ [x1, y1], [x2, y2], [x3, y3], [x4, y4] ] は 円環弧のソリッド図形となる  そのとき cflg = 0   x1, y1 は 円の中心点   x2, y2 は 1つの円周上の点で円環弧の始点   x3, y3 は 1つの円周上の吸着点で円環弧の終点   x4, y4 は もう1つの円周上の点( 円環の帯の円周上の点 )  となる。ただし、始点と終点は左回りで決定する  そのとき cflg != 0 ( 内円半径 = r * cflg )   x1, y1 は 円の中心点   x2, y2 は 円周上の点でX軸方向の半径を決定する   x3, y3 は 円周上の点で円環弧の始点   x4, y4 は 円周上の吸着点で円環弧の終点  となる。ただし、始点と終点は左回りで決定する  x = [ [x1, y1], [x2, y2], [x3, y3], [x4, y4], [x5, y5] ] は 円環弧のソリッド図形となる  そのとき   x1, y1 は 円の中心点   x2, y2 は 円周上の点でX軸方向の半径を決定する   x3, y3 は もう1つの円周上の点( 円環の帯の円周上の点 )   x4, y4 は 1つの円周上の点で円環弧の始点   x5, y5 は 1つの円周上の吸着点で円環弧の終点  となる。ただし、始点と終点は左回りで決定する

    先頭へ戻る


    plot(s,x="",zn="",zon=0)

    ・図形 s をプロットする  plot(s, x, zn, zon) あるいは s.plot(x, zn, zon) s は 点、線、円、文字データ と そのセット  x は "" あるいは "pt" とする  → s = [x, y]、 x = "pt" なら point([x, y]) に同じ

    先頭へ戻る


    to_txt(s,x="")

    ・Array 形式の図形 s を String 形式に変換する  to_txt(s, x) あるいは s.to_txt(x) s は 点、線、円、文字データ と そのセット x は 初期値

    先頭へ戻る


    to_arr(s)

    ・String 形式の図形 s を Array 形式に変換する  to_arr(s) あるいは s.to_arr s は 点、線、円、文字データ と そのセット

    先頭へ戻る


    ▼FNRSHA::point(x,zn="",zon=0)

    ・点を打つ  point(x, zn, zon) あるいは x.point(zn, zon) → 点 x を打つ  x は点 [X方向の座標値, Y方向の座標値] ・指示点があれば 引数を省略して   point  で 点を打つ。 [ 仕様外 ] で 使える。 ◎伝統的なやり方 point x, y x と zn に 数値を与えたときは 座標値 [ x, y = zn ] に点を打つ。 ◎引数をリスト形式とするやり方 $x, $y = 1, 2 point %($x $y) point %w($x $y) [ 使用例 ]
    @rem 点を打つ
    @echo off
    REM #jww
    REM #1%d
    REM #99#
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; point hp 1..-1"
    

    先頭へ戻る


    ▼FNRSHA::pmark(x,bai=1,d=0,code=0,zn="",zon=0)

    ・点マーカを打つ  pmark(x, bai, d, code, zn, zon) あるいは x.pmark(bai, d, code, zn, zon)  x は点 [X方向の座標値, Y方向の座標値]  bai : 倍率  d : 角度°  code : コード番号 ・簡易な書き方  pmark(x, zn)  x は点の座標値のほか 線データ も 可 zn は シンボルで与える。 :blancked_arrow** → code = 1 で **倍 :blancked_box** → code = 2 :blancked_dot** → code = 3 :dimension_origin** → code = 4 :filled_box** → code = 5 :filled_arrow** → code = 6 :filled_dot** → code = 7 :integral_symbol**, s** → code = 8 :open_arrow** → code = 9 :slash**, l** → code = 10 :unfilled_arrow** → code = 11 :a[sterisk]?** a** → code = -1 :c[ircle]?** c** → code = -2 :d[ot]?** d** → code = -3 :p[lus]?** p** → code = -4 :square**, b** → code = -5 :t[riangle]?** t** → code = -6 :x** → code = -7 ・指示点があれば   pmark(zn)  あるいは   pmark(bai, d, code)  で 点を打つ。
    点マーカコード

    先頭へ戻る


    ▼F-----::pset(x=nil,y=nil,z=nil)

    ・原点 $hp[0] を 変更する  pset(x, y)  x : X方向の座標値  y : Y方向の座標値 pset(x, y, z)  z : :pn1 として 点種を与えると、その点種で点を打つ

    先頭へ戻る


    ▼F-----::to(*x)

    ・(関数 line 専用) 引数 *x を ["to", x] として 返す pset x1, y1 line to x2, y2 → line x1, y1, x2, y2

    先頭へ戻る


    ▼FNRSHA::line

    ・line の 引数   @ 座標 あるいは 線データ   A 基点の座標 と [基点, 寸法] と 傾き°  を与えることができます  最初の引数 を 戻り値 で 返す。 ○座標 あるいは 線データ を 指定するとき line 座標 = [x1, y1], [x2, y2] = [[x1, y1], [x2, y2], … ] = [x1, y1], [[x2, y2], [x3, y3], … ] → 放射状に線を引く V.1.04.50 から = [[x1, y1], [x2, y2]], [[x3, y3], … ] → 放射状の複数系 V.1.04.84 から line 線データ = [x1, y1, x2, y2] = [[x1, y1, x2, y2], [x3, y3, x4, y4], … ] line 混合 = [[[x1, y1], [x2, y2], … ], [[x1, y1, x2, y2], [x3, y3, x4, y4], … ], … ] ~~~~~~~~~図形1~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~図形2~~~~~~~~~~~~~~~~ ○基点の座標 と [基点, 寸法] と 傾き°を 指定するとき line [[x1, y1], [x2, y2], … ], [基点, 寸法], 傾き° 基点の座標 [x1, y1] [[x1, y1], [x2, y2], … ] 基点 は シンボルで与えます :h, :d 水平線(軸角°が設定されているときはそれに追随する) :v 垂直線(軸角°が設定されているときはそれに追随する) :s, :p1? 始点を基点として終点に向けて配置する :c 中点を基点として配置する :e, :p2 終点を基点として始点に向けて配置する :***(\d) 傾斜角° **s, s** 始点(省略可) **c, c** 中点 **e, e** 終点 寸法 は mm 傾き は ° で 省略したときは 0°となる → 傾き は 軸角設定 $hk には追随しない ○ソリッド図形とするとき 末尾に :sl をつける → 2点〜4点までに限ります line 〜, :sl 指示点があれば line :sl あるいは line :slr で ソリッド図形を描く。 :sl 指示点が 2,3,4 個 のとき 線形,三角形,四角形ソリッド :sl.+ 線 ソリッド の 連続線(:slr で 可) ○ハッチ・図形・寸法・建具属性は 末尾に zn = :z1 〜 :z5, zon = 0-1 を指定する  ( ソリッド図形と併用はできない ) line 〜, zn, zon JWW_SMPL.BAT より 抜粋 ◎ハッチ・図形・寸法・建具属性(バッチファイルに「REM #zz」の指定がある場合)     次の行の線・円・実点・文字データのハッチ・図形・寸法・建具属性を指定する。    属性指定が複数の場合はz1〜z4の順に指定する。ただし、JW_CADから書き込    むデータは図形属性と他のひとつの属性指定のみになる。     文字ではハッチ属性はなく、寸法属性の設定は寸法値等の文字種類とは別の指    定になる。線データの包絡処理における建具としての性質をもつデータも建具    属性とする。 z1 ハッチ 属性 z2 図形 属性 z3 寸法 属性 z4 建具 属性(包絡処理対象外の指定) z5 建具 属性(包絡処理対象 の指定) [ 仕様外 ] で 使える。 ◎伝統的なやり方 line x1, y1, x2, y2 ◎引数をリスト形式とするやり方 $x1, $y1, $x2, $y2 = 1, 2, 3, 4 line %($x1 $y1 $x2 $y2) line %w($x1 $y1 $x2 $y2) ◎矩形の塗りつぶし r, g, b = 255, 0, 0 line x1, y1, x2, y2, "bf", [r, g, b] line %($x1 $y1 $x2 $y2), "bf", [r, g, b] line %w($x1 $y1 $x2 $y2), "bf", [r, g, b] ◎始点と終点を与えるやり方 line [x1, y1], [x2, y2] line (hp 1), (hp 2) ◎点と線データ line [[x1, y1], [x2, y2, x3, y3]], :c line [[[x1, y1], [x2, y2], [x3, y3]], [x4, y4, x5, y5]] Ver.1.03.35 から [ 使用例 ]
    @rem 線を引く
    @echo off
    REM #jww
    REM #1%d
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; line (stroke 1, [100, 100])"
    
    [ 使用例−2 ]
    @rem 長さ 1000、角度 45°の 線を引く
    @echo off
    REM #jww
    REM #1%d
    REM #: line 1000, :c45
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "run '%~f0'"
    

    先頭へ戻る


    ▼FA::cline(x,zn="",zon=0), polyline(x,zn,="",zon=0)

    ・指示点を結んで線を引く  cline(x, zn, zon) あるいは x.cline(zn, zon) → 指示点を結んで線を引く  x : 指示点 あるいは 座標のセット x を 戻り値 で 返す。

    先頭へ戻る


    ▼FRA::rline(x,r=0)

    ・指示点を結んで面をおとした線を引く  rline(x, r) あるいは x.rline(r) → 指示点を結んで面をおとした線を引く  x : 指示点 あるいは 座標のセット x を 戻り値 で 返す。

    先頭へ戻る


    ▼FRA::dline(x, b1, b2, d)

    ・指示点を結んで2重線を引く  dline(x, b1, b2, d) あるいは x.dline(b1, b2, d) → 指示点を結んで2重線を引く  x : 指示点 あるいは 座標のセット  b1, b2 : 指示点を結んで引いた線からからの距離  d : アールの寸法で内法径の直径  d は [d, tome, tometype] で アールの寸法、留線位置、留線タイプ が 指定できる  → dline(x, b1, b2, d, tome, tometype) でも可   d が 数値ならアールの寸法(d=nil デフォルト値 : アールなし)   tome は 留線の出の寸法(tome=nil デフォルト値 : 留線なし)   tometype = nil で 留線なし(デフォルト値)   tometype = 0 で 留線なし、点の数が3つ以上なら閉鎖形となる(留線位置 tome は 無効となる)   tometype = 1 で 留線あり、留線位置 tome のみの指定は tometype = 1 となる   tometype = 2 で 留線あり、2重線はそのまま引く   tometype = 3 で 留線なし、2重線の留線位置 tome は 有効となる x を 戻り値 で 返す。 ・簡易に指定する  dline(x, w, :p1) で 線幅w、始点に留線が 指定できる  dline(x, w, :p2) で 線幅w、終点に留線が 指定できる  dline(x, w, :pt) で 線幅w、両端に留線が 指定できる  dline(x, w, :[tbg]**) で 線幅w、留線位置** が 指定できる(留線位置** は 正の整数)  dline(x, b1, b2, :[tbg]**) で 線からからの距離、留線位置 が 指定できる(留線位置** は 正の整数)   :t** のとき tometype = 1 となり :g** のとき tometype = 2 :b** のとき tometype = 3 となる   :rt**, :rg**, :rb** で 線の外側に留線をかく ・指示点があれば x を省略できる dline(b1, b2, d) dline(b1, b2, d, tome, tometype)

    先頭へ戻る


    ▼FNRSHA::circle

    ・circle は つぎの引数   @ 座標 あるいは 円データ、線データ   A 中心点の座標 と 半径 あるいは 直径   B 基点の座標 と [基点、半径 あるいは 直径]    → 基点 は :p[1-9] で 左下 から 右上 となる      :d[1-9] で 直径となる  を与えることができます  最初の引数 を 戻り値 で 返す。 ○座標(2点) あるいは 円データ、線データ を 指定するとき ( 末尾に :d で 直径 ) → 扁平比(アスペクト比) w は 横径 a、縦径 b のとき w = b / a とする。 → 始角 p1、終角 p2、傾き d の 単位は(°) → 傾き d は 軸角設定 $hk には追随しない circle 座標 = [x1, y1], [x2, y2] = [[x1, y1], [x2, y2]] = [[[x1, y1], [x2, y2]], [[x3, y3], [x4, y4]], … ] circle 円データ = [x, y, r] = [x, y, r, p1, p2, w, d] = [[x1, y1, r1], [x2, y2, r2, p1, p2, w2, d], … ] circle 線データ = [x1, y1, x2, y2] = [[x1, y1, x2, y2], [x3, y3, x4, y4], … ] ○座標(3点) を 指定するとき circle [[x1, y1], [x2, y2], [x3, y3]] ○中心点の座標 と 半径 を 指定するとき ( 末尾に :d で 直径 ) circle 中心点の座標, r circle 中心点の座標, [r, 0, 360, 1, 0] ○基点の座標 と [基点、径] あるいは [基点、径、始角、終角、扁平比、傾き] を 指定するとき circle 基点の座標, [:p5, r] circle 基点の座標, [:d1, r, 0, 360, 1, 0] 基点は :d[1-9]? 直径とする :r[1-9]? 半径とする :*?p[1-9] 基点 (p[1-9] は [左右中][上下中] でも可) ○基点の座標 と [基点、径、オフセット量 dx, dy] を 指定するとき circle 基点の座標, [:p5, r, dx, dy] circle 基点の座標, [:d1, [r, 0, 360, 1, 0], dx, dy] 基点は 上記に同じ ○基点の座標 と [基点、[横径 a、縦径 b、傾き]、オフセット量 dx, dy] を 指定するとき circle 基点の座標, [:d1, [a, b, d], dx, dy] 基点は 上記に同じ ○ソリッド図形(扇形、円周)とするとき 末尾に :sc** または :sc あるいは :se をつける → sc** は ** で 円フラグを指定する 円:100、弓形:5、扇形:0、円外側:101 circle 〜, :sc ○ハッチ・図形・寸法・建具属性は 末尾に zn = :z1 〜 :z5, zon = 0-1 を指定する  ( ソリッド図形と併用はできない ) circle 〜, zn, zon [ 仕様外 ] で 使える。 ◎伝統的なやり方 circle x, y, r circle x, y, r, p1, p2, w, d ◎引数をリスト形式とするやり方 $x, $y, $r = 1, 2, 3 circle %($x $y $r) circle %w($x $y $r) ◎塗りつぶし r, g, b = 255, 0, 0 circle x, y, r, :sc, [r, g, b] circle %($x $y $r), :sc, [r, g, b] circle %w($x $y $r), :sc, [r, g, b] ◎中心点と円周上の点を与えるやり方 circle [x1, y1], [x2, y2] circle (hp 1), (hp 2) circle x1, y1, x2, y2 [ 使用例 ]
    @rem 3点を通る円を描く
    @echo off
    REM #jww
    REM #1-%d
    REM #2-%d
    REM #3%d
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; circle (hp 1, 2, 3)"
    
    [ 使用例−2 ]
    @rem 直径 1000、基点 左上で 円を描く
    @echo off
    REM #jww
    REM #:circle 1000, :d左上
    REM #1%d
    REM #e
    ruby -Ks -rjw -e "run '%~f0'"
    

    先頭へ戻る


    ▼FNRSHA::arc

    ・arc は つぎの引数   @ 座標 あるいは 円データ、線データ   A 中心点の座標 と 半径 あるいは 直径   B 基点の座標 と [基点、半径 あるいは 直径]    → 基点 は :p[1-9] で 左下 から 右上 となる      :d[1-9] で 直径となる  を与えることができます  最初の引数 を 戻り値 で 返す。 ○座標(2点) あるいは 円データ、線データ を 指定するとき ( 末尾に :d で 直径 ) → 扁平比(アスペクト比) w は 横径 a、縦径 b のとき w = b / a とする。 → 始角 p1、終角 p2、傾き d の 単位は(°) → 傾き d は 軸角設定 $hk には追随しない arc 座標 = [[x1, y1], [x2, y2]], w, d = [[[x1, y1], [x2, y2]], [[x3, y3], [x4, y4], [x5, y5]], … ], w, d arc 円データ = [x, y, r], w, d = [x, y, r, p1, p2, w, d] = [[x1, y1, r1], [x2, y2, r2, p1, p2, w, d], … ] arc 線データ = [x1, y1, x2, y2], w, d = [[x1, y1, x2, y2], [x3, y3, x4, y4], … ], w, d ○座標(3点) を 指定するとき arc [[x1, y1], [x2, y2], [x3, y3]], w, d → 中心、始点、終点 指示点が3つあるとき 半円は 下記の指定も可 arc :h, w ○中心点の座標 と 半径 を 指定するとき ( 末尾に :d で 直径 ) arc 中心点の座標, r, w, d arc 中心点の座標, [r, p1, p2, w, d] ○基点の座標 と [基点、径] あるいは [基点、径、始角、終角、扁平比、傾き] を 指定するとき arc 基点の座標, [:p5, r, p1, p2, w, d] 基点は :d[1-9]? 直径とする :r[1-9]? 半径とする :*?p[1-9] 基点 (p[1-9] は [左右中][上下中] でも可) ○基点の座標 と [基点、径、オフセット量 dx, dy] を 指定するとき arc 基点の座標, [:d1, [r, p1, p2, w, d], dx, dy] 基点は 上記に同じ ○基点の座標 と [基点、[横径 a、縦径 b、傾き]、オフセット量 dx, dy] を 指定するとき arc 基点の座標, [:d1, [a, b, d], dx, dy] 基点は 上記に同じ ○ソリッド図形(扇形、円周)とするとき 末尾に :sc** または :sc あるいは :se をつける → sc** は ** で 円フラグを指定する 円:100、弓形:5、扇形:0、円外側:101 arc 〜, :sc5 :s[ce] 円、円周のソリッド図形 :円 , :sc100 円のソリッド図形 :円周, :se 円周のソリッド図形 :弓形, :sc5 弓形のソリッド図形 :扇形, :sc1 扇形のソリッド図形 :外側, :sc101 外側のソリッド図形 ○ハッチ・図形・寸法・建具属性は 末尾に zn = :z1 〜 :z5, zon = 0-1 を指定する  ( ソリッド図形と併用はできない ) arc 〜, zn, zon [ 仕様外 ] で 使える。 ◎伝統的なやり方 arc x, y, r, p1, p2, w, d ◎引数をリスト形式とするやり方 $x, $y, $r = 1, 2, 3 arc %($x $y $r 0 180 1 0) arc %w($x $y $r 0 180 1 0) ◎塗りつぶし r,g,b = 255,0,0 cflg : se 円が「100」、円弧が「0」 : sc 円が「100」、弓形が「5」、扇形が「0」、外側が「-1」 外側の円弧角はπ/2(90度)以下(π/2を超える場合は扇形) 円弧角 = (始角-終角).abs arc x, y, r, p1, p2, w, d, "sc", [r, g, b], cflg arc %($x $y $r 0 180 1 0), "sc", [r, g, b], cflg arc %w($x $y $r 0 180 1 0), "sc", [r, g, b], cflg [ 使用例 ]
    @rem 中心点と始点と終点で円弧を描く
    @echo off
    REM #jww
    REM #1-%d中心点を指示してください
    REM #2-%d始点を指示してください
    REM #3%d終点を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; arc (hp 1, 2, 3)"
    
    [ 使用例−2 ]
    @rem 半円を描く
    @echo off
    REM #jww; arc :h
    REM #1-%d
    REM #2%d
    REM #3%d
    REM #e
    ruby -Ks -rjw -e "run '%~f0'"
    

    先頭へ戻る


    ▼FN-S-A::larc

    ・線分を弦とし、交角を与えて円弧を描く。( 半円を描くコマンド ) larc [始点, 終点], 交角(°) あるいは larc [x1, y1], [x2, y2], 交角(°)  最初の引数 を 戻り値 で 返す。  交角 °は 左回りが正 → 交角(°)の指定がないときは半円となる

    先頭へ戻る


    ▼FNRSHA::text

    ・text は つぎの引数   @ 文字データ   A 基点の座標 と 文字列 str と 角度 ang°と 文字データの種類  を与えることができます  最初の引数 を 戻り値 で 返す。 ○文字データ を 指定するとき → [lx, ly] は 文字の方向ベクトル text 文字データ = [:ch, x1, y1, lx, ly, str] = [x1, y1, lx, ly, str] → :ch のとき = [[:ch, x1, y1, lx, ly, str], [x2, y2, lx, ly, str], … ] ○基点の座標 と 文字列 str と 角度 ang と 文字データの種類 を 指定するとき text 基点の座標, str → ang = 0 で :ch のとき ang と :ch を省略できる text 基点の座標, str, ang → :ch のとき :ch を省略できる text 基点の座標, str, ang, :ch → 角度 は 軸角設定 $hk には追随しない ○ハッチ・図形・寸法・建具属性は 末尾に zn = :z1 〜 :z5, zon = 0-1 を指定する text 〜, zn, zon text 基点の座標, str, :z3, 1 text 基点の座標, str, ang, :z3, 1 text 基点の座標, str, ang, :ch, :z3, 1 → 角度 は 軸角設定 $hk には追随しない [ 仕様外 ] で 使える。 ◎伝統的なやり方 text x1, y1, lx, ly, str → s は "ch" text x1, y1, lx, ly, str, s text s, x1, y1, lx, ly, str ◎引数をリスト形式とするやり方 $x1, $y1 = 0, 0 text %(ch $x1 $y1 1 0 ようこそ) text %w(ch $x1 $y1 1 0 ようこそ) text %w(ch $x1 $y1 1 0) << "ようこそ! 煙の出ない玉手箱" ◎直感的なやり方 text "ようこそ" → text [0, 0] あるいは 指示点, "ようこそ" に同じ text [x1, y1], "ようこそ" text [[x1, y1], "ようこそ"] ◎基点に指示点番号を指定できます text 0, "ようこそ" text 1, "ようこそ" text 2, "ようこそ" ◎軸角に対応させることもできます text "ようこそ", 角度゚ = hk text 1, "ようこそ", 角度゚ = hk ◎文字データの種別は末尾に置きます。 横文字 :ch   縦文字 :cv 寸法値 :cs 半径 寸法値 :cr   直径 寸法値 :co   角度 寸法値 :cp   累寸 寸法値 :ct   日影 真北データ :ck   日影 建物高さデータ :cz   2.5D データ :c2 text "ようこそ", 角度゚, 文字データの種別 = :ch text 1, "ようこそ", 角度゚, 文字データの種別 = :cv [ 使用例 ]
    @rem ようこそ
    @echo off
    REM #jww
    REM #1 基準点を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    #!ruby -Ks -rjw
    jww
    cn0 10, 10, 1, 110
    fonts Font.msgo, "/"
    text 1, "ようこそ! 煙の出ない玉手箱です。"
    

    先頭へ戻る


    ▼FNRSHA::oval

     oval は つぎの引数   @ 対角の座標 あるいは 線データ   A 基点の座標 と [基点、横寸法、縦寸法]、軸角°、傾き°    → 基点 は :p[1-9] で 左下 から 右上 となる  を与えることができます  最初の引数 を 戻り値 で 返す。 ○対角の座標 あるいは 線データ と 軸角°$hk と 傾き°ang を 指定するとき oval 対角の座標 = [x1, y1], [x2, y2], $hk, ang = [[x1, y1], [x2, y2]], $hk, ang oval 対角の線データ = [x1, y1, x2, y2], $hk, ang = [[x1, y1, x2, y2], [x3, y3, x4, y4], … ], $hk, ang → $hk, ang を省略すると 軸角設定 $hk に追随する oval 対角の座標 = [x1, y1], [x2, y2] → $hk を省略すると ang = ang + $hk となる oval 対角の座標 = [x1, y1], [x2, y2], ang → $hk の位置を 0 にすると 軸角設定 $hk に追随しない oval 対角の座標 = [x1, y1], [x2, y2], 0, ang ○基点の座標 と [基点、横寸法 w、縦寸法 h、オフセット量dx, dy]、傾き°ang を 指定するとき oval 座標, [:p5, w, h, dx, dy], ang → 傾き は 軸角設定 $hk に追随しない ○ソリッド図形とするとき 末尾に :sl をつける oval 〜, :sl ○ハッチ・図形・寸法・建具属性は 末尾に zn = :z1 〜 :z5, zon = 0-1 を指定する  ( ソリッド図形と併用はできない ) oval 〜, zn, zon [ 仕様外 ] で 使える。 ◎伝統的なやり方 oval x1, y1, x2, y2 ◎引数をリスト形式とするやり方 $x1, $y1, $x2, $y2 = 1, 2, 3, 4 oval %($x1 $y1 $x2 $y2) oval %w($x1 $y1 $x2 $y2) ◎塗りつぶし r, g, b = 255, 0, 0 oval x1, y1, x2, y2, "sc", [r, g, b] oval %($x1 $y1 $x2 $y2), "sc", [r, g, b] oval %w($x1 $y1 $x2 $y2), "sc", [r, g, b] ◎内接する矩形の始点とその対頂点を分けて与えるやり方 oval [x1, y1], [x2, y2] oval (hp 1), (hp 2)

    先頭へ戻る


    ▼FNRSHA::rectangle

     rectangle は つぎの引数   @ 対角の座標 あるいは 線データ   A 基点の座標 と [基点、横寸法、縦寸法]、軸角°、傾き°    → 基点 は :p[1-9] で 左下 から 右上 となる  を与えることができます  最初の引数 を 戻り値 で 返す。 ○対角の座標 あるいは 線データ と 軸角°$hk と 傾き°ang を 指定するとき rect 対角の座標 = [x1, y1], [x2, y2], $hk, ang = [[x1, y1], [x2, y2]], $hk, ang rect 対角の線データ = [x1, y1, x2, y2], $hk, ang = [[x1, y1, x2, y2], [x3, y3, x4, y4], … ], $hk, ang → $hk, ang を省略すると 軸角設定 $hk に追随する rect 対角の座標 = [x1, y1], [x2, y2] → $hk を省略すると ang = ang + $hk となる rect 対角の座標 = [x1, y1], [x2, y2], ang → $hk の位置を 0 にすると 軸角設定 $hk に追随しない rect 対角の座標 = [x1, y1], [x2, y2], 0, ang ○基点の座標 と [基点、横寸法 w、縦寸法 h、オフセット量dx, dy]、傾き°ang を 指定するとき rect 座標, [:p5, w, h, dx, dy], ang → 傾き は 軸角設定 $hk に追随しない ○ソリッド図形とするとき 末尾に :sl をつける rect 〜, :sl ○ハッチ・図形・寸法・建具属性は 末尾に zn = :z1 〜 :z5, zon = 0-1 を指定する  ( ソリッド図形と併用はできない ) rect 〜, zn, zon ○基点を原点として 寸法 を指定するとき rect [0, 0], [横寸法 w, 縦寸法 h] rect [0, 0], [横寸法 w, 縦寸法 h], :c rect [0, 0, w, h], :c rect [[0, 0, w1, h1], [0, 0, w2, h2], … ], :c  → :c で 基点 は 図心となる [ 仕様外 ] で 使える。 ◎伝統的なやり方 rectangle x1, y1, x2, y2 ◎引数をリスト形式とするやり方 $x1, $y1, $x2, $y2 = 1, 2, 3, 4 rectangle %($x1 $y1 $x2 $y2) rectangle %w($x1 $y1 $x2 $y2) ◎塗りつぶし r, g, b = 255, 0, 0 rectangle x1, y1, x2, y2, "sl", [r, g, b] rectangle %($x1 $y1 $x2 $y2), "sl", [r ,g, b] rectangle %w($x1 $y1 $x2 $y2), "sl", [r ,g, b] ◎始点とその対頂点を分けて与えるやり方 rectangle [x1, y1], [x2, y2] rectangle (hp 1), (hp 2) ◎2重の矩形 rectangle [b, D, dt], :p[1-9] rectangle [b, D, dt, n], :p[1-9] rectangle [b, D, dt, n, n2], :p[1-9] b : 横寸法 D : 縦寸法 dt : 内側の矩形のオフセット寸法 → dt を [dt, dt2, dt3, dt4, dt0] として配列とするとき   dt 上側のオフセット寸法   dt2 左側のオフセット寸法   dt3 下側のオフセット寸法   dt4 右側のオフセット寸法   dt0 0 で 通常の動作、 9 で 外枠を書かない n : 内側の矩形の縦方向の分割数 n2 : 内側の矩形の横方向の分割数 :p[1-9] : 基点 (p[1-9] は [左右中][上下中] でも可) [ 使用例 ]
    :矩形を描く
    @echo off
    REM #jww
    REM #1-%d 矩形の始点を指示してください
    REM #2%d 対頂点を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; rect 1, 2"
    
    [ 使用例−2 ]
    :矩形を描く
    @echo off
    REM #jww
    REM #1%d
    REM #: rect 500, 700, :左上 #→ rect :p7, 500, 700 も 可(基点のデフォルト値は左上)
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "run '%~f0'"
    

    先頭へ戻る


    ▼F::roundrectangle(x,hk=[0,0,2,$hk], ang=0,zn="",zon=0)

    ・面取り矩形を描く  roundrectangle(x, hk, ang, zn, zon) あるいは roundrect(x, hk, ang, zn, zon)  x は 2点のセット @対角線 [ x1, y1, x2, y2 ] A始点とその対頂点 [ [x1, y1], [x2, y2] ] B@〜Aのセット(未調整!!) に対応している。  hk は [a, b, mode, 軸角( ゚ )]   a : 面取りの横寸法   b : 面取りの縦寸法   mode : 0 L面   1 角面   2 丸面 ( a を負値とすると 内側に丸面 )   3 出丸 ( a を負値とすると 内側に出丸 )  ang は 傾き( ゚ )  → 図形の回転は [x1, y1] を基点とする x を 戻り値 で 返す。 [ 仕様外 ] で 使える。 ◎塗りつぶし roundrectangle [ x1, y1, x2, y2 ], [a = 10, b = 20, 2, $hk], ang = 0, :sl

    先頭へ戻る


    ▼FA::polygon(x,n=3,mode=0,zn="",zon=0)

    ・正多角形を描く polygon(x, n, mode, zn, zon) あるいは x.polygon(n, mode, zn, zon) x : 座標値のセット n : 頂点(辺)の数  mode = 0, :i で 点 x[0] を中心とし 点 x[1] が円周上にある円に 内接 する正多角形を描く   :id で 点 x[0] と 点 x[1] を直径とする円に 内接 する正多角形を描く  mode = 1, :e で 点 x[0] を中心とし 点 x[1] が円周上にある円に 外接 する正多角形を描く   :ed で 点 x[0] と 点 x[1] を直径とする円に 外接 する正多角形を描く  mode = 2, :s で 点 x[0] と 点 x[1] を結ぶ線を 底辺 とする正多角形を描く x を 戻り値 で 返す。 ○径や辺長と角度を指定するとき  polygon(x, n, mode, zn, zon)  x : 中心点や基点 n : 頂点(辺)の数  mode = 0, :i で zn を 半径とする円に 内接 する正多角形を描く  mode = 1, :e で zn を 半径とする円に 外接 する正多角形を描く  mode = 2, :s で zn を 底辺 とする正多角形を描く  zn : 径や辺長  zon : 底辺の角度° ○指示点があるとき  2点なら(3点以上のときは2点のみ有効)  polygon(n, mode) あるいは polygon(n.mode)  とする  径や辺長と角度を指定すると 指示点が基点の図形データを描く  polygon(n, mode, zn, zon)  → 指示点 が 複数あれば 指示点の数だけ描く ○n = 0, -1 で 指示点を結んだ多角形となる  n = 0 は 閉鎖形  n = -1 は 開放形  polygon(0) → 指示点があるとき  polygon(x, 0)  n = 0 は 覚えにくいので n = :c あるいは :line でも 可とした  n = -1 は 覚えにくいので n = :p あるいは :open でも 可とした  polygon :c → 指示点があるとき  polygon x, :c  polygon :line, x ○n = 1 で 指示点を結んだソリッド図形となる  → ソリッド図形は径、辺長の指定はできない  polygon(1) → 指示点があるとき  polygon(x, 1)  n = 1 は 覚えにくいので n = :sl あるいは :solid でも 可とした  polygon :sl → 指示点があるとき  polygon x, :sl  polygon :solid, x

    先頭へ戻る


    ray(hp,d=rad($hk),l=1e+10)

    ・放射線を返す ray(hp, d, l) あるいは hp.ray(d, l) hp : 挿入点の座標値 [x,y] d : 放射線の角度rad l : 放射線の長さ

    先頭へ戻る


    xline(s=nil,d=rad($hk),l=1e+10,pm=0)

    ・構築線を返す xline(s, d, l, pm) あるいは s.xline(d, l, pm) s : 挿入点の座標値 [x,y] d : 構築線の角度rad l : 構築線の長さ pm : 0 のとき XY軸 pm : 1 のとき X軸のみ pm : 2 のとき Y軸のみ

    先頭へ戻る


    bar_draw(hp,d,ang=0, mark=nil,barsize=1.0,type=1,zz,barsc)

    ・鉄筋記号を描く 異形鋼棒 D10 〜 D76 までを定義している。 bar_draw(hp, d, ang, mark, barsize, type, zz, barsc) hp : 挿入点の座標値 [x,y] d : 異形鋼棒の公称径 mm ang : 記号の回転角( ゚ ) mark : 記号のサイズの種別 nil 標準サイズ 図寸固定 ( mm ) barsc = [hsc,xsc] で hsc > xsc のとき mark = 1 となる 0 標準サイズ 図寸固定 ( mm ) 1 実際の大きさ 2 節の平均高さ barsize : 記号の倍率( mark = 0 のとき有効 ) type : 記号の種類 0,1 標準 001 2 公共建築協会 002 3 住宅公団 003 4 実際の大きさ( 強制的に mark = 1 となる ) 5 節の平均高さ( 強制的に mark = 2 となる ) zz : [zn,zon] barsc : [hsc,xsc] 記号のサイズの種別の自動切換え mark = nil のとき hsc > xsc のとき mark = 1 となる [ 使用例 ]
    @rem 【 鉄筋記号 】
    @echo off
    REM #jww
    REM #1○挿入点を指示 《鉄筋記号》
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    #!ruby -Ks -rjw
    jww
    mark = 0
    barsize = 5.0
    type = 1
    ang = hk
    [10,13,16,19,22,25,29,32,35,38,41,51,57,64,70,76].each_with_index do |d,i|
    	x = ((i+1)%5).to_f*20.scale
    	y = ((i+1)/5).to_f*20.scale
    	pt = moveto [1],[x,-y]
    	pc = moveto [1],[x,-y+10.scale]
    	cc 4
    	text pc,"D"+d.to_s
    	bar_draw pt,d,ang,mark,barsize,type
    end
    

    先頭へ戻る


    ▼FNSA::arrow(x,d=0,size=5,xang=45,xan2=120)

    ・指示点 x に 角度 d ( deg ) で ソリッド図形の矢印を描く。 arrow(x,d=0,size=5,xang=45,xan2=120) x : 指示点 size : 矢印の長さ xang : 矢先の角度 xan2 : 矢尻の角度 x を 戻り値 で 返す。  矢印の先端が x : 指示点 となる size を 負値にすると 矢印の向きが逆になる size は 矢印の外側斜面の長さ

    先頭へ戻る


    ▼FNSA::dims(x, r = 0, mode = 1)

    ・点を結びながら寸法値を書く。 dims(x, r, mode)  x : 点データ、点データのセット  r : 寸法値の小数点以下の桁数  mode : 0 寸法値のみ、線なし   1 寸法図形   2 寸法値と線 x を 戻り値 で 返す。

    先頭へ戻る


    ▼FNA::scale(x=nil,lg=$lg)

    ・表示画面のスケールを返す  scale ・数値 x に表示画面のスケールを乗じて返す ・配列の数値 x に表示画面のスケールを乗じて返す  scale(x) あるいは x.scale ・数値 x に指定画面 lg のスケールを乗じて返す ・配列の数値 x に指定画面 lg のスケールを乗じて返す  scale(x,lg) あるいは x.scale(lg)

    先頭へ戻る


    ptpoint(x,y=nil,pm=0)

    ・点と点を結んだ線の値を返す ptpoint(x, y, pm) x, y は 点の座標値 のほか 1 あるいは '1' とすると $hp[1] が '1ln' あるいは '1ci' なら データの指示点 $hp[1] となる。

    先頭へ戻る


    ptdist(x,y=nil)

    ・点 と 点 の最短距離を返す ptdist(点, 点) y が nil なら [0, 0] と x の 値を返す ※Ver.1.03.66 から ptdist(x1, y1, x2, y2) を 可とした

    先頭へ戻る


    ptslope(x,y=nil,pm=1)

    ・点と点を結ぶ線の角度( rad )を返す ptslope(点, 点, pm) y が nil なら [0, 0] と x の 値を返す  pm = 1 のとき x → y の 角度  pm =-1 のとき y → x の 角度 ※Ver.1.03.66 から ptslope(x1, y1, x2, y2) を 可とした

    先頭へ戻る


    ptspan(x,y=nil,d=0)

    ・点と点を結ぶ線のXY方向のスパンを返す ptspan(点, 点, d) あるいは ptspan([点, 点], nil, d)  d : 軸角° ○ptspan(原点, 点, 回転角°) で 座標変換ができる ※Ver.1.03.66 から ptspan(x1, y1, x2, y2) を 可とした

    先頭へ戻る


    ptcenter(x,y=nil,z=0.5)

    ・点と点の中間点を返す z = 0.0 のとき x 点 z = 0.5 のとき 中間点 z = 1.0 のとき y 点 を返す

    先頭へ戻る


    lnpoint(ln,pm=0)

    ・線 ln の 始点 pm=-1, 終点 pm=1 の点の座標を返す lnpoint(ln, pm) → pm == -1 : 始点 [x1, y1] pm == 0 : 中点 [(x1 + x2) / 2, (y1 + y2) / 2] pm == 1 : 終点 [x2, y2] pm == 2 : 始点と終点 [x1, y1], [x2, y2] else : [0, 0]

    先頭へ戻る


    lnlength(ln)

    ・線長を返す lnlength(ln) → x1, y1, x2, y2 = *ln.to_f dx = x2 - x1 dy = y2 - y1 return sqrt(dx * dx + dy * dy)

    先頭へ戻る


    lnslope(ln)

    ・線の角度( rad )を返す lnslope(ln) → x1, y1, x2, y2 = *ln.to_f dx = x2 - x1 dy = y2 - y1 return atan2(dy, dx) [ 注意 ] lnslope($ln[i]).deg は (ツールバー 設定) の 線角 の値に一致する。 → データを $ln[i] に保存する際に 線角 d が -90゚ < d <= 90゚ となるよう補正。 ■指示線の角度を -PI/2 < d <= +PI/2 とする if x1 > x2 x1, x2 = x2, x1 y2, y2 = y2, y1 end if x1 == x2 && y1 > y2 y1, y2 = y2, y1 end  プログラムでは 線 [0, 0, -100, 100] は lnslope([0, 0, -100, 100]).deg → 135.0゚ ですが  指示線(1) [0, 0, -100, 100] は $ln[1] = [-100, 100, 0, 0] と自動補正されるため lnslope($ln[1]).deg → -45.0゚ となります。  →→ 指示線の向きの補正が不要な方は jw.rb の初期設定を( linevector = 1 )に書き換えてください。

    先頭へ戻る


    lnspan(ln,d=0)

    ・線のXY方向のスパンを返す lnspan(ln, d) d : 軸角°

    先頭へ戻る


    lncenter(ln,x=0.5)

    ・線の中間点を返す x = 0.0 のとき 始点 x = 0.5 のとき 中点 x = 1.0 のとき 終点 を返す

    先頭へ戻る


    cipoint(ci,pm=0)

    ・円弧 ci の 始点 pm=-1, 終点 pm=1 の点の座標と離心角( ゚ )を返す cipoint(ci, pm) → pm == -1 : 始点 [x1, y1], p1 pm == 0 : 中心点 [x, y], d pm == 1 : 終点 [x2, y2], p2 pm == 2 : 始点と終点 [[x1, y1], [x2, y2]], [p1, p2] pm == 3 : 始点と中心と終点 [[x1, y1], [x, y], [x2, y2]], [p1, p2] pm == -2, -3 : ci, d else : [0, 0], 0

    先頭へ戻る


    cilength(ci)

    ・円周、円弧長を返す cilength(ci) → 円周、円弧長を返す

    先頭へ戻る


    cislope(ci,hp=nil,pm=0)

    ・円の傾角( rad )を返す cislope(ci) ・円周上の点( hp )の法線方向の角度( rad )を返す cislope(ci, hp, 0) あるいは cislope(1, 'per') ・円周上の点( hp )の接線方向の角度( rad )を返す cislope(ci, hp, 1) あるいは cislope(1, 'tan') ・円周上の点( hp )の離心角( rad )を返す cislope(ci, hp, 2) あるいは cislope(1, 'dconv') ・円の始角と終角の差の絶対値( rad )を返す cislope(ci, hp, 3) あるいは cislope(1, 'xang') → 扇形の交角 a = cislope(1, 'xang') から ( w * a * r ** 2 ) / 2.0 で扇形の面積 となる。   ただし w は 扁平比 [ 使用例 ]
    :円の法線と接線
    @echo off
    REM #jww
    REM #1ci 円を指示してください
    REM #2 点を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    
    #!ruby -Ks -rjw
    jww
    pt = ci_hpsnap(1, 2, :per) # 法線方向の吸着点
    line pstroke pt, 10.scale, cislope(1, pt, :per)
    line pstroke pt, 10.scale, cislope(1, pt, :tan)
    __END__
    
    [ 使用例−2 ]
    :円から円弧を切り取る
    @echo off
    REM #jww
    REM #1%dci 円を指示してください
    REM #2%d 始点を指示してください
    REM #3%d 終点を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    
    #!ruby -Ks -rjw
    pt1 = ci_hpsnap(1, 2, :per); p1 = deg(cislope(1, pt1, :dconv))
    pt2 = ci_hpsnap(1, 3, :per); p2 = deg(cislope(1, pt2, :dconv))
    pc, r, d, w = 1.ci :pt, :r, :d, :w
    c = [pc, r, p1, p2, w, d].flatten
    c = [pc, r, p2, p1, w, d].flatten if ci_hpsens(c, 1) != -1
    
    jww
    hd
    circle c
    __END__
    

    先頭へ戻る


    cispan(ci,pm=0)

    ・円のXY方向の半径によるスパンを返す cispan(ci, pm) → pm == -1 : dx = r * co + r * w * si pm == 0 : [dx, dy] pm == 1 : dy = - r * si + r * w * co

    先頭へ戻る


    cicenter(ci,x=0.5)

    ・円弧の中間点を返す cicenter(ci) → return pt, d 中間点( x = 0.5 )と離心角(rad)

    先頭へ戻る


    chpoint(ch,pm=0)

    ・文字 ch の 基点(始点) pm = -1, 終点 pm = 1 の座標を返す chpoint(ch, pm) → pm == -1 : 基点(始点) [x1, y1] pm == 0 : 中心点 [(x1 + x2) / 2.0, (y1 + y2) / 2.0] pm == 1 : 終点 [x2, y2] pm == 2 : 基点(始点)と終点 [x1, y1], [x2, y2]

    先頭へ戻る


    chlength(ch)

    ・文字の長さを返す chlength(ch) → 文字の長さを返す

    先頭へ戻る


    chslope(ch)

    ・文字の傾角( rad )を返す

    先頭へ戻る


    chspan(ch,pm=0)

    ・文字の XY方向長さ を返す chspan(ch, pm) → pm == -1 : lx pm == 0 : [lx, ly] pm == 1 : ly

    先頭へ戻る


    chcenter(ch,x,pm=0)

    ・文字データの中心点を返す x = 0.0 のとき 左下点 x = 1.0 のとき 右下点 を返す pm = 1 なら 左下点〜右上点の中心点を返す

    先頭へ戻る


    plpoint(ln,pm=0)

    ・曲線 ln の 始点 pm=-1, 終点 pm=1 の点の座標を返す plpoint(ln, pm) → pm == -1 : 始点 pm == 0 : 中点 pm == 1 : 終点 pm == 2 : 始点と終点 else : [0, 0]

    先頭へ戻る


    pllength(ln)

    ・線長を返す pllength(ln)

    先頭へ戻る


    plslope(ln)

    線の角度( rad )を返す plslope(ln)

    先頭へ戻る


    plspan(ln,pm=0)

    線のXY方向のスパンを返す plspan(ln, pm)

    先頭へ戻る


    plcenter(ln,x=0.5)

    ・曲線の中間点を返す x = 0.0 のとき 始点 x = 0.5 のとき 中点 x = 1.0 のとき 終点 を返す

    先頭へ戻る


    ln_hpsnap(ln,hp=nil)

    ・線の吸着点を返す ln_hpsnap(ln, hp) → t = ln_hpdist(ln, hp) d = lnslope(ln) return ptcalc("+", hp, s_bai([sin(d), -cos(d)], t))

    先頭へ戻る


    ln_hpdist(ln,hp=nil)

    ・線と点の最短距離を返す ln_hpdist(ln, hp) → x = hp + lnpoint(ln, -1) return lnlength(x) * sin(lnslope(ln) - lnslope(x))

    先頭へ戻る


    ln_hpnear(ln,hp=nil,far=1)

    ・指示点近傍の線の端点を返す ln_hpnear(ln, hp, far) → 端点 pt far 1 で 近傍の端点 pt1 を返す far -1 で 遠方の端点 pt2 を返す far 2 で 近傍と遠方の端点 pt1, pt2 を返す

    先頭へ戻る


    ln_hpends(ln,hp=nil)

    ・線の端点の判別値を返す( 始点 -1 か 終点 +1 かの判別 ) ln_hpends(ln, hp) → l1 = lnlength(hp + lnpoint(ln,-1)) l2 = lnlength(hp + lnpoint(ln, 1)) return pm = l1 lt; l2 ? -1 : 1

    先頭へ戻る


    ln_hpsens(ln,hp=nil)

    ・線の吸着点の判別値を返す( 線の 内 -1 か 外 +1 かの判別 )

    先頭へ戻る


    ln_hpmens(ln,hp=nil)

    ・線と点の相対位置の判別値を返す( 線の 下 -1 か 上 +1 かの判別 )

    先頭へ戻る


    ci_hpsnap(ci,hp=nil,pm=0)

    ・円の吸着点を返す 円周 と 指示点と円の中心を結ぶ線 の 交点 を吸着点とする。( JW_CAD の 仕様 ) ci_hpsnap(ci, hp, pm) → pm == 0 : 吸着点 pt pm == 1 : 吸着点と離心角( ゚ ) pt, d pm == 2 : 離心角( ゚ ) d pm == 'per' : 法線の吸着点 pt

    先頭へ戻る


    ci_hpdist(ci,hp2=nil,pm=0,err=0)

    ・円と点の最短距離を返す ci_hpdist(ci, hp2, pm, err) → pm == -1 : t, pt1, pt2, err pm == 0 : t pm == 1 : t2, pt2 pm == 2 : t, pt1, pt2 else : pt1 法線の吸着点を返す

    先頭へ戻る


    ci_hpnear(ci,hp=nil,far=1)

    ・指示点近傍の円弧の端点を返す ci_hpnear(ci, hp, far) → [ 端点 pt, 離心角( ゚ ) a ] far 1 で 近傍の端点[pt1, a1]を返す far -1 で 遠方の端点[pt2, a2]を返す far 2 で 近傍と遠方の端点[pt1, a1], [pt2, a2]を返す

    先頭へ戻る


    ci_hpends(ci,hp=nil)

    ・円弧の端点の判別値を返す( 円弧の 始点 -1 か 終点 +1 かの判別 )

    先頭へ戻る


    ci_hpsens(ci,hp=nil)

    ・円弧の吸着点の判別値を返す( 円弧の 上 -1 か 外 +1 かの判別 )

    先頭へ戻る


    ci_hpmens(ci,hp=nil)

    ・円弧と点の相対位置の判別値を返す( 円弧の 内 -1 か 外 +1 かの判別 )

    先頭へ戻る


    ch_hpsnap(ch,hp=nil)

    ・文字の吸着点を返す ch_hpsnap(ch, hp) → 文字の吸着点を返す

    先頭へ戻る


    ch_hpdist(ch,hp=nil)

    ・文字列の下辺を線とみなして最短距離を返す ch_hpdist(ch, hp) → 文字列の下辺を線とみなして最短距離を返す

    先頭へ戻る


    ch_hpnear(ch,hp=nil)

    ・文字列の下辺を線とみなして指示点近傍の線の端点を返す ch_hpnear(ch, hp, far) → 端点を返す

    先頭へ戻る


    ch_hpends(ch,hp=nil) 未調整

    ・文字の端点の判別値を返す( 文字の 始点 -1 か 終点 +1 かの判別 )

    先頭へ戻る


    ch_hpsens(ch,hp=nil) 未調整

    ・文字の吸着点の判別値を返す( 文字の 上 -1 か 外 +1 かの判別 )

    先頭へ戻る


    ch_hpmens(ch,hp=nil) 未調整

    ・文字と点の相対位置の判別値を返す( 文字の 下 -1 か 上 +1 かの判別 )

    先頭へ戻る


    pl_hpsnap(ln,hp)

    ・曲線の吸着点を返す pl_hpsnap(ln, hp)

    先頭へ戻る


    pl_hpdist(ln,hp)

    ・曲線と点の最短距離を返す pn_hpdist(ln, hp)

    先頭へ戻る


    pl_hpnear(ln,hp,far=1)

    ・指示点近傍の端点を返す pl_hpnear(ln, hp, far) → 端点 pt far 1 で 近傍の端点 pt1 を返す far -1 で 遠方の端点 pt2 を返す far 2 で 近傍と遠方の端点 pt1, pt2 を返す

    先頭へ戻る


    pl_hpends(ln,hp)

    ・曲線の端点の判別値を返す( 始点 -1 か 終点 +1 かの判別 ) pl_hpends(ln, hp) → l1 = lnlength(hp + plpoint(ln,-1)) l2 = lnlength(hp + plpoint(ln, 1)) return pm = l1 lt; l2 ? -1 : 1

    先頭へ戻る


    pl_hpsens(ln,hp)

    曲線の吸着点の判別値を返す( 曲線の 内 -1 か 外 +1 かの判別 )

    先頭へ戻る


    pl_hpmens(ln,hp)

    曲線と点の相対位置の判別値を返す( 曲線の 下 -1 か 上 +1 かの判別 )

    先頭へ戻る


    ▼F--S-A::clength(x), leng(x)

    ・線、円弧、文字列 あるいは 曲線の長さを返す  clength(x) あるいは x.clength  x は 指示線 '1ln' あるいは 円弧 '2ci'   線 [x1, y1, x2, y2] あるいは 円 [x1, y1, r(, p1, p2, w, d)]  → x が 点 か 点マーカのときは 原点からの距離を返す  → x が 文字列のときは 文字列の長さを返す( √(lx ** 2 + ly ** 2) )

    先頭へ戻る


    ▼FNRS-A::span(x,y=nil,pm=0,flg=nil)

    ・線のスパン(XY方向の始点と終点の間隔)を返す ・条件 pm により 方向余弦 あるいは そのセット を返す span(x, y, pm) あるいは x.span(y, pm) → pm == -1 : x2 - x1 → pm == 1 : y2 - y1 → else : [ x2 - x1, y2 - y1 ]  x は 指示線 '1ln' あるいは  x は 線 [x1, y1, x2, y2]   線 [[x1, y1], [x2, y2]] で与える  x が 点 [x1, y1] のとき y を 点 [x2, y2] とする  → y は x が 点のときにのみ利用できる  → x が 指示点 '2' のときは 原点からの距離の組合せとなる  → x が 円 '3ci' のとき [r, w] の組合せとなる  → x が 円 [x1, y1, r(, p1, p2, w, d)] のとき [r, w] の組合せとなる  → x が 文字列のときは 文字列の方向余弦の組合せとなる ○始点[x1, y1] と 終点[x2, y2] の 座標値を利用するとき(Ver.1.05.13 から)  span x1, y1, x2, y2

    先頭へ戻る


    ▼FNRS-A::slope(x,y=nil), angle(x,y=nil)

    ・線角、円の接線の角度を返す slope(x, y) あるいは x.slope(y) → 線角、円の接線の角度を返す( rad )  x は 指示線 '1ln' あるいは 円 '2ci'  x は 線 [x1, y1, x2, y2] あるいは 円 [x1, y1, r(, p1, p2, w, d)]   線 [[x1, y1], [x2, y2]] で与えることもできる  → x が 点 か 点マーカのときは 原点からの極座標角となる  → x が 文字列のときは 文字列の傾角となる    x が 点 [x1, y1] のとき y を 点 [x2, y2] とする  → y は x が 点と円のときに利用できる    指示線1の角度は   slope ln 1    指示円2の傾角は   slope ci 2    指示点1と2を結ぶ線の角度は   slope hp 1..2  となる    指示円1の円周上点 pt = [x, y] の接線の角度は   slope (ci 1),pt  あるいは   (ci 1).slope pt  または   1.ci.slope pt  で返す。このとき pt は 円の吸着点に補正される  法線の角度は ±π/2 となる ○始点[x1, y1] と 終点[x2, y2] の 座標値を利用するとき  slope x1, y1, x2, y2

    先頭へ戻る


    ▼FNRS-A::snap(x,y=nil,pm=0)

    ・吸着点を返す snap(x, y, pm) あるいは x.snap(y, pm) → 点 hp の 線、円に対する吸着点を返す  → [x, y].snap でも可。pm は [x, y].snap(nil, pm) で与える  x は 指示線 '1ln' あるいは 円 '2ci'  x は 線 [x1, y1, x2, y2] あるいは 円 [x1, y1, r(, p1, p2, w, d)]  → x が 点 か 点マーカのときは 自身 x を返す  → x が 文字列の下辺を線とみなして吸着点を返す  → x が 円のとき pm = 1 とすると 法線による吸着点を返す

    先頭へ戻る


    ▼FNRS-A::dist(x,y=nil,pm=0)

    ・最短距離を返す dist(x, y, pm) あるいは x.dist(y, pm) → 点 y と 線、円 x の最短距離を返す  → [x, y].dist でも可。pm は [x, y].dist(nil, pm) で与える  x は 指示線 '1ln' あるいは 円 '2ci'  x は 線 [x1, y1, x2, y2] あるいは 円 [x1, y1, r(, p1, p2, w, d)]   線 [[x1, y1], [x2, y2]] で与えることもできる  → x が 点 か 点マーカのときは 距離 を返す  → x が 文字列のときは下辺を線とみなして最短距離を返す  → x が 円のとき pm != 0 の動作は ci_hpdist() を参照 ○始点[x1, y1] と 終点[x2, y2] の 座標値を利用するとき  dist x1, y1, x2, y2

    先頭へ戻る


    ▼FNRS-A::near(x,y=nil,far=1)

    ・近傍端点を返す x.near(y, far) → 点 y と 線、円弧 x の近傍端点を返す  → [x, y].near でも可。far は [x, y].near(nil, far) で与える  x は 指示線 '1ln' あるいは 円弧 '2ci'  x は 線 [x1, y1, x2, y2] あるいは 円弧 [x1, y1, r, p1, p2, w, d]  → x が 点 か 点マーカのときは 自身 x を返す  → x が 文字列のときは下辺を線とみなして近傍端点を返す  → x が 線、円弧のとき far ( 1 or -1 ) の動作は ln_hpnear(), ci_hpnear() を参照 [ 使用例 ]
    @rem 線と円の交点
    @echo off
    REM #jww
    REM #1ln 線を指示してください
    REM #2ci 円を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -Ks -rjw -e "jww; inters( 1.ln, 2.ci ).near( 2 ).point"
    

    先頭へ戻る


    ▼FN-S-A::ends(x,y=nil)

    ・始点終点(端点)の判別値を返す x.ends(y) → 点 y と 線、円弧、文字列、曲線 x の始点終点の判別値 で 始点 -1、終点 +1 を返す  x は 指示線 '1ln' あるいは 円弧 '2ci' あるいは 文字列 '3ch'  x は 線 [x1, y1, x2, y2] あるいは 円弧 [x1, y1, r, p1, p2, w, d]   あるいは 文字列 ["ch", x1, y1, lx, ly, str]  → x が 点 か 点マーカのときは 原点[0, 0] と x[0..1] を線として判別値を返す  → x が 文字列のときは下辺を線とみなす

    先頭へ戻る


    ▼FN-S-A::sens(x,y=nil)

    ・線の内外の判別値を返す x.sens(y) → 点 y と 線、円弧、文字列 x の線の内外の判別値 で 内(線上) -1、外 +1 を返す  x は 指示線 '1ln' あるいは 円弧 '2ci' あるいは 文字列 '3ch'  x は 線 [x1, y1, x2, y2] あるいは 円弧 [x1, y1, r, p1, p2, w, d]   あるいは 文字列 ["ch", x1, y1, lx, ly, str]  → x が 点 か 点マーカのときは 原点[0, 0] と x[0..1] を線として判別値を返す  → x が 文字列のときは下辺を線とみなす

    先頭へ戻る


    ▼FN-S-A::mens(x,y=nil)

    ・線を境界とした領域の判別値を返す x.mens(y) → 点 y と 線、円弧、文字列 x の線を境界とした領域の判別値 で 下(円は内) -1 か 上 +1 を返す  x は 指示線 '1ln' あるいは 円弧 '2ci' あるいは 文字列 '3ch'  x は 線 [x1, y1, x2, y2] あるいは 円弧 [x1, y1, r, p1, p2, w, d]   あるいは 文字列 ["ch", x1, y1, lx, ly, str]  → x が 点 か 点マーカのときは 原点[0, 0] と x[0..1] を線として判別値を返す  → x が 文字列のときは下辺を線とみなす

    先頭へ戻る


    ▼F--S-A::rot(x,d)

    ・回転による点の座標変換(部材系→全体系) rot(x, d) あるいは x.rot(d) → 点、線を 回転による座標変換(部材系→全体系)をして返す  x は 指示点 '1' あるいは 指示線 '2ln'  x は 点 [x1, y1] あるいは 線 [x1, y1, x2, y2]  → x が 文字列のときは下辺を線とみなして座標変換する rot(x, d) は rotate(x, [0,0], d) と 同じため 回転移動にも利用できる

    先頭へ戻る


    ▼F--S-A::rot2(x,d), arot(x,d)

    ・回転による点の座標変換(全体系→部材系) rot2(x, d) あるいは x.rot2(d) → 点、線を 回転による座標変換(全体系→部材系)をして返す  x は 指示点 '1' あるいは 指示線 '2ln'  x は 点 [x1, y1] あるいは 線 [x1, y1, x2, y2]  → x が 文字列のときは下辺を線とみなして座標変換する  → x が 点 あるいは 線 のときは rot(x, -d) と同じ

    先頭へ戻る


    ▼F--S-A::fromto(x,y,z)

    ・線をテンプレートとして線を引く fromto(x, y, z) あるいは x.fromto(y, z)  x は 点 [[x1, y1], [x2, y2]] あるいは 線 [x1, y1, x2, y2] 指示点 x は $hp[1, 2] さらに x は [$hp[1], $hp[2]] を [1, 2] あるいは ['1', '2'] とすることができる ・曲線データ x = [[x1, y1, x2, y2], [x3, y3, x4, y4], … ] のとき y, z は 吸着点となり、y 〜 z 間 の 曲線データを返す

    先頭へ戻る


    ptcalc(p,x,y)

    ・点データの数値演算(加減乗除) ptcalc(p, x, y) → x1, y1 = *x.to_f x2, y2 = *y.to_f case p when "+"; return [x1 + x2, y1 + y2] when "-"; return [x1 - x2, y1 - y2] when "*"; return [x1 * x2, y1 * y2] when "/"; return [x1 / x2, y1 / y2] else; return [0.0, 0.0] end

    先頭へ戻る


    ptsgn(x=nil, y=nil, d=$hk)

     x, y : 点データ  d : 軸角° ・2点を結ぶ線の傾斜の判別  / なら 1 を  \ なら -1 を 返す

    先頭へ戻る


    lnmove(ln,b,pmy=1.0)

    ・線を直交方向に平行移動する  ln : 線データ  b : 距離  pmy : 距離の正負補正 b * pmy

    先頭へ戻る


    cimove(ci,b,a=0,pm=0)

    ・円・円弧の同心円を返す  ci : 円・円弧データ  b : 距離  a : 傾き(rad)  pm : 傾きの正負補正   pm = -1, 1 なら a * pm pm = 2 なら ci.d + a.deg

    先頭へ戻る


    ptmove(hp,ln,a,b,pmx=1.0,pmy=1.0,rmode=1)

    ・点 hp を線 ln に沿って距離 a pmx の方向に,直交距離 b pmy の方向に移動する  hp : 点データ  ln : 線データ  a : X方向距離  b : Y方向距離  pmx : X方向距離の正負補正 a * pmx  pmy : Y方向距離の正負補正 b * pmy  rmode : 1 -- moveto(hp, rot([a * pmx, b * pmy], lnslope(ln))) に相当   2 -- moveto(hp, rot2([a * pmx, b * pmy], lnslope(ln))) に相当  → jw.js, jw.lua にはありません。moveto を 利用してください。

    先頭へ戻る


    divide あるいは div(x,y=nil,n=2,cmode=7)

    ・線、円、曲線データ あるいは 2点間を分割した座標を返す  線、円、曲線のとき div x, n, cmode x : 線データ 1.ln あるいは [x1, y1, x2, y2] あるいは "0 0 1000 0" x : 円データ 1.ci あるいは [x1, y1, r] あるいは "ci 0 0 500" x : 円弧データ、楕円データ 1.ci あるいは [x1, y1, r, p1, p2, w, d] あるいは "ci 0 0 500 30 120 1 0" x : 曲線データ 1.pl あるいは [[x1, y1, x2, y2], [x3, y3, x4, y4], … ] x : 座標データ hp あるいは hp 1, 2, … あるいは [[x1, y1], [x2, y2], … ] n : 整数で分割数、実数で分割間隔 mm cmode : 7 で 始点から 17 で 振り分け、"c"、:c で 振り分け  2点間 div x, y, n, cmode x, y : 点の座標値 n : 整数で分割数、実数で分割間隔 mm cmode : 7 で 始点から 17 で 振り分け、"c"、:c で 振り分け  → jw.js, jw.lua は 未作成!!

    先頭へ戻る


    lndivide(ll,lnhp,cmode=7,f=1.scale, zz,mark,barsize,type,ang)

    ・線の分割点をマークする。( 未調整!! ) ll : 分割数(負値) あるいは 分割距離 lnhp : ln あるいは [ln, hp] あるいは [ln, [hp1, hp2, hp3]] ln : 線データ hp, hp1 : ln の 指示点 hp2 : 分割する始点 hp3 : 分割する終点 cmode : マークの種別 0 : 点 1 : 斜線 2 : 法線 3 : × 4 : 円 5 : 鉄筋記号 7 : 点データを返す( マークなし ) 17 : 〃 ( 〃 センタリングする ) f : マークのサイズ cmode = 1,2,3 : 長さ 4 : 半径 5 : [公称径,mark,barsize,type,ang] zz : [zn,zon] 図形属性 mark, barsize, type, ang : 鉄筋記号用のパラメータ mark : 記号のサイズの種別 nil 標準サイズ 図寸固定 ( mm ) barsc = [hsc,xsc] で hsc > xsc のとき mark = 1 となる 0 標準サイズ 図寸固定 ( mm ) 1 実際の大きさ 2 節の平均高さ barsize : 記号の倍率( mark = 0 のとき有効 ) type : 記号の種類 0,1 標準 001 2 公共建築協会 002 3 住宅公団 003 4 実際の大きさ( 強制的に mark = 1 となる ) 5 節の平均高さ( 強制的に mark = 2 となる ) ang : 記号の回転角( ゚ )

    先頭へ戻る


    cidivide(ll,cihp,cmode=7,f=1.scale, zz,mark,barsize,type,ang)

    ・円の分割点をマークする。( 未調整!! ) ll : 分割数(負値) あるいは 分割距離 cihp : ci あるいは [ci, hp] あるいは [ci, [hp1, hp2, hp3]] ci : 円データ hp, hp1 : ci の 指示点 hp2 : 分割する始点 hp3 : 分割する終点 cmode : マークの種別 0 : 点 1 : 斜線 2 : 法線 3 : × 4 : 円 5 : 鉄筋記号 7 : 点データを返す( マークなし ) 17 : 〃 ( 〃 センタリングする ) f : マークのサイズ cmode = 1,2,3 : 長さ 4 : 半径 5 : [公称径, mark, barsize, type, ang] zz : [zn,zon] 図形属性 mark, barsize, type, ang : 鉄筋記号用のパラメータ mark : 記号のサイズの種別 nil 標準サイズ 図寸固定 ( mm ) barsc = [hsc,xsc] で hsc > xsc のとき mark = 1 となる 0 標準サイズ 図寸固定 ( mm ) 1 実際の大きさ 2 節の平均高さ barsize : 記号の倍率( mark = 0 のとき有効 ) type : 記号の種類 0,1 標準 001 2 公共建築協会 002 3 住宅公団 003 4 実際の大きさ( 強制的に mark = 1 となる ) 5 節の平均高さ( 強制的に mark = 2 となる ) ang : 記号の回転角( ゚ )

    先頭へ戻る


    ptdivide(x,y,n=2)

    ・点と点を結んだ線の等割点を返す ptdivide(x, y, n) x, y は 点の座標値 n : 分割数  → jw.js, jw.lua は ptdivide(n, x, y) となる

    先頭へ戻る


    lnbreak(ln,hp2=nil,hp3=nil)

    ・線を切断 あるいは 部分消去する。  ln が 1 か 1.ln (ln指標) で hp2, hp3 を 与えないときは 指示点で切断される

    先頭へ戻る


    cibreak(ci,hp2=nil,hp3=nil)

    ・円を切断 あるいは 部分消去する。  ci が 1 か 1.ci (ci指標) で hp2, hp3 を 与えないときは 指示点で切断される

    先頭へ戻る


    lnextend(lnhp,hp2)

    ・線を伸縮する。  [ 使用例 ]
    @rem 線の伸縮
    @echo off
    REM #jww
    REM #1ln 線を指示してください
    REM #2 伸縮する点を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    #!ruby -Ks -rjw
    jww
    hd
    line (lnextend (ln_set 1), 2).lnx 1
    reset
    

    先頭へ戻る


    ciextend(cihp,hp2)

    ・円を伸縮する。

    先頭へ戻る


    ln_hp(x,y=nil,pt=nil)

    ・線 x を 点 y で カット あるいは 伸張 して 残す側の点 部分の線を返す。(伸縮コマンドに相当) ln_hp x, y | y : カット あるいは 伸張 する点 x : [指示線, 指示点(残す側の点)] あるいは 指示線番号(指示点が残す側の点となる) ・線 x を 点 pt で カット あるいは 伸張 して 点 y 部分の線を返す。 ln_hp x, y, pt, :break | | pt : カット あるいは 伸張 する点 | y : 指示点(残す側の点) x : 指示線 :break あるいは :cut が あるとき 2分割した線データを2つ共に返す

    先頭へ戻る


    ci_hp(x,y=nil,pt=nil)

    ・円弧 x を 点 y で カット あるいは 伸張 して 残す側の点 部分の円弧を返す。(伸縮コマンドに相当) ci_hp x, y | y : カット あるいは 伸張 する点 x : [指示円, 指示点(残す側の点)] あるいは 指示円番号(指示点が残す側の点となる) ・円弧 x を 点 pt で カット あるいは 伸張 して 点 y 部分の円弧を返す。  → 円 や 楕円 は そのまま返す。 ci_hp x, y, pt, :break | | pt : カット あるいは 伸張 する点 | y : 指示点(残す側の点) x : 指示円 :break あるいは :cut が あるとき 2分割した円弧データを2つ共に返す → 円は、円を切断したデータを返す(伸縮コマンドに相当)

    先頭へ戻る


    ccpoint(ch,cn=0,u=0,v=0)

    ch : 文字列データ cn : 文字種類番号 cn が 負値のとき 文字高さの直接入力となる u : 横の間隔 v : 縦の間隔 ・文字データの基点( cc = 0〜8 )の 座標値 [ x,y ] を返す p = ccpoint(1.ch) p[i] : cci に相当する基点 i = 0 〜 8  [ 使用例 ]
    @rem 文字に×を記入する
    @echo off
    REM #jww
    REM #1ch 文字を指示してください
    REM #e
    set RUBYLIB=\jww\Lite\pro\ruby\lib
    ruby -x %~f0
    goto:eof
    #!ruby -Ks -rjw
    pt = ccpoint(1.ch, 0, 2.scale, 2.scale)
    jww
    line pt.values_at( 9,12)
    line pt.values_at(10,11)
    

    先頭へ戻る


    stroke(x,y,z=nil)

    ・点x から 相対距離 y [ a, b ] までの線を返す  y を [1] のように 指示点番号の配列で与えたときは x と [1] を結ぶ線を返す  x は 基点( x y )  y は 相対距離( a b )   a は X方向の距離   b は Y方向の距離   stroke(x, [a, b]) stroke(x, a, b) stroke(x, [a, b])  [ 使用例 ] 〇指示点1から指示線2と同じ長さと方向で線を引く
      stroke( 1, 2.ln.span ).line
     y を [1] のように 指示点のインデックスとしたとき x と y を結んだ線を返す。  y,z の 数値入力で y [ y,z ] となる。

    先頭へ戻る


    pstroke(x,r,d=0,w=1)

    ・点x から 相対距離 [ r, d ] までの線を返す  r を [1] のように 指示点のインデックスで与えたときは x と [1] を結ぶ線を返す  x は 基点( x y )  r は 距離  d は 角度(rad) pstroke([x, y], r) pstroke([x, y], r, d, w) pstroke([x, y], [r, d])

    先頭へ戻る


    moveto(x,a,b=nil)

    ・点x を 相対距離 [ a,b ] へ移動  a を [1] のように 指示点のインデックスで与えたときは [1] へ移動する  x は 基点( x y )  a は X方向の距離  b は Y方向の距離   moveto([x, y], a, b) moveto([x, y], [a, b])

    先頭へ戻る


    lineto(ln,r,d=0)

    ・線ln を 相対距離 r [ a,b ] 回転 d で移動

    先頭へ戻る


    polarto(x,r,d=nil)

    ・点x を極座標値 で 相対移動する  r を [1] のように 指示点のインデックスで与えたときは [1] へ移動する  x は 基点( x y )  r は 距離  d は 角度( rad )   polarto([x, y], r, d) polarto([x, y], [r, d])

    先頭へ戻る


    ▼FN::polar(r=1,d=0,w=1)

    ・極座標値 [r,d] を XY座標値に変換する polar(r, d, w) → return r ? [r * cos(d), r * sin(d) * w] : [0, 0] r が '1ci' や '2' のときは 表示画面の円データの [r, d, w] に変換する w は 扁平比

    先頭へ戻る


    ▼FNRS-A::move(s,x=nil,y=nil,d=hk.rad)

    ・点、線、円、文字列、曲線、ソリッドを移動する s : 点、線、円、文字列、曲線、ソリッド x : X軸方向の移動量 y : Y軸方向の移動量 d : 回転角( rad ) move(s, x, y, d) move s, [x, y], d s.move [x, y], d

    先頭へ戻る


    ▼FNRS-A::mirror(s,y=nil,h=0)

    ・点、線、円、文字列、曲線、ソリッドを点、線で反転する s : 点、線、円、文字列、曲線、ソリッド y : 反転の基準となる点( x y )、線( x1 y1 x2 y2 ) :x で Y軸で反転(原点を通る) :y で X軸で反転(原点を通る) :o あるいは :xy で 原点で反転(点対称) h : 文字の高さ mirror(s, y) → ミラー後の要素を返す s.mirror y

    先頭へ戻る


    ▼FNRS-A::rotate(s,y=nil,d=0)

    ・点、線、円、文字列、曲線、ソリッドを回転移動する s : 点、線、円、文字列、曲線、ソリッド y : 回転の基点( x y ) d : 回転角( rad ) rotate(s, [x, y], d) s.rotate [x, y], d

    先頭へ戻る


    ▼FNRS-A::bairitu(s,x=nil,y=nil)

    ・点、線、円、文字列、曲線、ソリッドを拡大縮小する s : 点、線、円、文字列、曲線、ソリッド x : X方向倍率 y : Y方向倍率 bairitu(s, x, y) s.bairitu x, y

    先頭へ戻る


    ▼FNRS-A::shear あるいは skew(s,x=nil,y=nil)

    ・点、線、円、曲線、ソリッドをせん断変形する s : 点、線、円、曲線、ソリッド x : X方向せん断角 rad y : Y方向せん断角 rad shear(s, x, y) s.shear x, y

    先頭へ戻る


    ▼FNRS-A::multiput(x,y,z=nil,n=nil)

    ・XY方向にそれぞれ指定した間隔と配置数を指定して座標のセットを返す x : 基点( x1 y1 ) あるいは 指示点 y : X方向の間隔 lx z : Y方向の間隔 ly n : 配置数( nx ny )   あるいは x : 基点( x1 y1 ) y : 間隔( lx ly ) z : 配置数( nx ny ) multiput([x1, y1], lx, ly, [nx, ny]) multiput([x1, y1], [lx, ly], [nx, ny]) multiput([x1, y1], lx, ly){[nx, ny]} multiput([x1, y1], [lx, ly]){[nx, ny]}  → tex \multiput(x1,y1)(lx,ly){n} に 由来

    先頭へ戻る


    ▼F-----::cut(x=nil,y=nil,n=nil,flg=nil)

    ・対角の2点を指定した矩形範囲のX、Y方向を均等分割する線データを返す x : 対角の始点 y : 対角の終点 n : 分割数(整数) あるいは 距離(実数) flg : 線データの方向 :x X方向 :y Y方向 :xy XY方向 cut([x1, y1], [x2, y2], n, flg)

    先頭へ戻る


    ▼F-----::grid(x=nil,y=nil,lx=nil,ly=nil)

    ・対角の2点を指定した矩形範囲のXY方向を均等分割する格子状の線データを返す x : 対角の始点 y : 対角の終点 lx : X方向の分割数(整数) あるいは 距離(実数) ly : Y方向の分割数(整数) あるいは 距離(実数) grid([x1, y1], [x2, y2], lx, ly)

    先頭へ戻る


    ▼-----A::self.ruisin(pm=1,orgn=0)

    ・累進寸法の配列を返す self : 数値を要素とする数列(1次元配列) pm : 数値の正負 orgn : 数列の原点 [1820, [910]*3].ruisin(pm=1,orgn=-910) → [910, 1820, 2730, 3640] [1820, [910]*3].ruisin(pm=1).xy(:x) → [[1820,0], [2730,0], [3640,0], [4550,0]] [1820, [910]*3].ruisin(pm=-1).xy(:y) → [[0,-1820], [0,-2730], [0,-3640], [0,-4550]]

    先頭へ戻る


    ▼F-----::para あるいは parallel(x,y=nil)

    ・配列 x と y を 要素順に組み込んで返す x : 配列 y : 配列 parallel [1,2], [3,4] → [1,3], [2,4] parallel [[1,2], [3,4]], [[5,6], [7,8]] → [[1,2], [5,6], [3,4], [7,8]]

    先頭へ戻る


    ▼FA::inters(x,y,pm=1,err=0)

    ・線、円の交点を返す inters(x, y, pm) → 線、円の交点のセットを返す inters [x, y], nil, pm (inters x, y, pm) [x, y].inters(pm) → 線、円の交点のセットを返す → x, y は 線か円の配列 線なら [ x1, y1, x2, y2 ] 円なら [ xc, yc, r (, p1, p2, w, d) ] となる。 x, y が 指示データのとき 線なら 1.ln あるいは oln(1) 円なら 2.ci あるいは oci(2) とすることができる。 ただし、このとき指示データは表示画面のスケールに補正される。 → 作図画面のスケールで計算するときは $ln[1] や $ci[2] とする。 → pm : pm = 1 で 交点が1つのときでも配列として返す。 このとき 1つだけの交点は [ [ x, y ] ] で返す。 pm = 0 のとき 交点が1つの場合は [ x, y ] となる。 → 線と線の交点に点を打つ point inters [ 1.ln, 2.ln ] [ 1.ln, 2.ln ].inters.point → 線と円の交点に点を打つ point inters [ 1.ln, 2.ci ] [ 1.ln, 2.ci ].inters.point → 円と円の交点に点を打つ point inters [ 1.ci, 2.ci ] [ 1.ci, 2.ci ].inters.point

    先頭へ戻る


    ▼FA::tangents(x,y,near=1,xmode=0,err=0)

    ・点、線、円 と 円の接線を返す x : 点、線、円 y : 円 near : 1 = 近傍 0 = すべて xmode : 下記による tangents(x, y, near, xmode) → 点、線、円 と 円の接線を返す tangents [x, y], nil, near, xmode (tangents x, y, near, xmode) [x, y].tangents(near, xmode) → 点、線、円 と 円の接線を返す ※ 円と円が接しているときに動作が不安定となります。どちらかの   円の半径 r を r + 1e-5 程度補正してください。 → 線から円に平行に接線を引く( xmode == 0 : 円に接線 ) tangents( 1.ln, 2.ci, 1, 0 ).line line tangents [ 1.ln, 2.ci ], nil, 1, 0 [ 1.ln, 2.ci ].tangents(1,0).line → 線から円に法線を引く( xmode == 1 : 円に法線 ) tangents( 1.ln, 2.ci, 1, 1 ).line line tangents [ 1.ln, 2.ci ], nil, 1, 1 [ 1.ln, 2.ci ].tangents(1,1).line → 線から円に線の垂線で円の接線となる線を引く( xmode == 2 : 線の垂線と円に接線 ) tangents( 1.ln, 2.ci, 1, 2 ).line line tangents [ 1.ln, 2.ci ], nil, 1, 2 [ 1.ln, 2.ci ].tangents(1,2).line

    先頭へ戻る


    ▼FA::centers(x,y,lnp="",err=0)

    ・点、線、円 相互の中心線を返す( lnp=="" のときは 補助線を返す ) centers(x, y, lnp) → 点、線、円 相互の中心線を返す centers [x, y], nil, lnp (centers x, y, lnp) [x, y].centers(lnp) → 点、線、円 相互の中心線を返す → 点と点の中心線を引く centers( 1, 2, [ 3, 4 ] ).line line centers [ 1, 2 ],nil,[ 3, 4 ] [ 1, 2 ].centers([ 3, 4 ]).line → 点と線の中心線を引く centers( 1, 2.ln, [ 3, 4 ] ).line line centers [ 1, 2.ln ],nil,[ 3, 4 ] [ 1, 2.ln ].centers([ 3, 4 ]).line → 点と円の中心線を引く centers( 1, 2.ci, [ 3, 4 ] ).line line centers [ 1, 2.ci ],nil,[ 3, 4 ] [ 1, 2.ci ].centers([ 3, 4 ]).line → 線と線の中心線を引く centers( 1.ln, 2.ln, [ 3, 4 ] ).line line centers [ 1.ln, 2.ln ],nil,[ 3, 4 ] [ 1.ln, 2.ln ].centers([ 3, 4 ]).line → 線と円の中心線を引く centers( 1.ln, 2.ci, [ 3, 4 ] ).line line centers [ 1.ln, 2.ci ],nil,[ 3, 4 ] [ 1.ln, 2.ci ].centers([ 3, 4 ]).line → 円と円の中心線を引く centers( 1.ci, 2.ci, [ 3, 4 ] ).line [ 1.ci, 2.ci ].centers([ 3, 4 ]).line

    先頭へ戻る


    ▼FA::fukusens(x,y)

    ・線、円、文字列 および 曲線 の 複線を返す → 曲線は1セットを扱い、範囲選択のとき x = 1.pl のようにできる。 fukusens(x, y) [x, y].fukusens

    先頭へ戻る


    ▼FAS::suisens(x,y)

    ・線、円、文字列 および 曲線 の 垂線あるいは法線を返す → 曲線は1セットごと扱う。範囲選択のとき x = 1.pl のようにできる。 x : 線、円、文字、曲線 y : 点 suisens(x, y) あるいは suisens(y, x) [x, y].suisens ○点y が 指示線、円周、文字上なら、その点の垂線を返す suisens(x, y, l)  l : 垂線の片側の長さ    [l1, l2] で 始点と終点の距離を与えることができる ○指示データがあるとき  suisens  x.suisens(y, l) x : 線、円、文字 y : 垂線の位置を :p1, :p2, :c, :pt で与える   省略したときは :c となる  l : 垂線の片側の長さ

    先頭へ戻る


    interdeg(s1,s2,err=0)

    ・線と線の交角( ゚ )を返す interdeg(s1, s2) → 線と線の交角( ゚ )を返す interdeg [s1, s2]  左回り(反時計回り)が正 → s1 = [ln1, hp1] → s2 = [ln2, hp2] → 鋭角を返す( -180゚〜180゚ ) → 線と線の交角をコメントする interdeg( 1.ln, 2.ln ).comment →→ interdeg( [ 1.ln, 1 ], [ 2.ln, 2 ] ) とすべきところ、上記の表現も許している。

    先頭へ戻る


    area(hp)

    ・多角形の面積と図心および図心まわりの2次モーメントを返す。  閉鎖形であれば円弧があっても単独円でも構わない。 return ax,[ gx,gy ],[ ix,iy ],[xmax, xmin, ymax, ymin],lr,jxy  計算結果は精算値(有効桁数15桁程度)を返します。  ax : 断面積  gx,gy : 図心  ix : 図心(Y軸)まわりの2次モーメント  iy : 図心(X軸)まわりの2次モーメント  xmin,xmax : X軸方向の最縁端座標値 ← Ver.1.07.32 から 仕様を変更しています  ymin,ymax : Y軸方向の最縁端座標値 ← Ver.1.07.32 から 仕様を変更しています  lr : 周長(線長)  jxy : 図心まわりの相乗モーメント  右回りが正となります。返り値を次のように補正すると慣用値となります。 jxy = jxy * sgn(ax) ax = ax.abs sx = ax * gx → X軸方向の1次モーメント sy = ax * gy → Y軸方向の1次モーメント  jx = iy.abs → X軸まわりの2次モーメント  jy = ix.abs → Y軸まわりの2次モーメント  主軸の角度 α = (atan2(2.0 * jxy, jy - jx) + PI) / 2.0 [ 使用例 ]
    #& cls & ruby -Ks -r/jww/Lite/pro/ruby/lib/jw %0 & pause & exit
    pt = [0, 0], [0, 2], [1, 2], [1, 0] #多角形の頂点の座標
    __a = area pt
    jxy = __a[5] * sgn(ax) #図心まわりの相乗モーメント
    ax = __a[0].abs #断面積
    pg = __a[1] #図心の座標
    jx = __a[2][1].abs #図心(X軸)まわりの2次モーメント
    jy = __a[2][0].abs #図心(Y軸)まわりの2次モーメント
    α = (atan2(2.0 * jxy, jy - jx) + PI) / 2.0
        α -= PI if α > PI / 2.0
        α += PI if α <= -PI / 2.0
        α = 0.0 if angle_eq?(α.abs, 0.0, 1e-12)
    p ["断面積:", ax]
    p ["図心の座標:", pg]
    p ["図心(X軸)まわりの2次モーメント:", jx]
    p ["図心(Y軸)まわりの2次モーメント:", jy]
    p ["図心まわりの相乗モーメント:", jxy]
    p ["図心のX軸からの主軸の角度:", α.deg]
    __END__
    

    先頭へ戻る


    ln_hptrack(ln,hp=nil,a=nil)

    ・指示線 ln の 指示点 hp の近傍端点から 距離 a の点を返す。  a は 線の内側に向かうのが負で 外側に向かうほうが正。

    先頭へ戻る


    ci_hptrack(ci,hp=nil,a=nil)

    ・指示円弧 ci の 指示点 hp の近傍端点から 距離 a の点を返す。  a は 円弧の内側に向かうのが負で 外側に向かうほうが正。

    先頭へ戻る


    ch_hptrack(ci,hp=nil,a=nil)

    ・指示文字 ch の 指示点 hp の近傍端点から 距離 a の点を返す。  a は 文字の内側に向かうのが負で 外側に向かうほうが正。

    先頭へ戻る


    lnchamfer(x,y=nil,l1=0,l2=l1,l3=0)

    ・指示線 x と y を 面取りする。 return 面取り後の x, 面取り後の y, 面取り面の線データ Ver.1.03.03 から return 面取り面の線データ, 面取り後の x, 面取り後の y Ver.1.03.02 以前 任意の線データ x , y は 1.ln あるいは [[x1, y1, x2, y2], [x3, y3]] で与える。 このとき [x3, y3] は 指示点の座標値とする。 指示点の座標値を与えないとき その位置は 線データの中心点となる。

    先頭へ戻る


    lnfillet(x,y=nil,r=0,flg=nil)

    ・指示線 x と y を 丸面取りする。 return 丸面取りの円弧データ, 面取り後の x, 面取り後の y 任意の線データ x , y は 1.ln あるいは [[x1, y1, x2, y2], [x3, y3]] で与える。 このとき [x3, y3] は 指示点の座標値とする。 指示点の座標値を与えないとき その位置は 線データの中心点となる。

    先頭へ戻る


    hatch(x=nil, y=nil, d=PI/4, s=10.scale, n=1, a=1.scale, o=1, mode=1)

    ・平行な2線間にハッチを描く  hatch(x, y, d, s, n, a, o, mode)   x : 線データ   y : 線データ     x と y は 同じ長さの平行線   d : 角度 rad   s : ピッチ mm     s を [s, s2] とすると 直交方向のピッチが設定できる     ただし、s2 直交方向のピッチ mm 角度 PI / 2、o = 2 のとき 有効   n : 線数   a : 線間隔 mm   o : ハッチがけの種類 1:/ 2:×   mode : ハッチの割り付け 0,2:線端から 1,3:中央へ     mode = 2, 3 は o = 2 のとき ハッチの交角が PI / 2 となる ○多重線のハッチが可能です。

    先頭へ戻る


    ln_barplot(s,n=nil,d=nil, g=nil,__e__=nil,c=nil,ang=0,mark=nil)

    ・鉄筋記号を線状に等間隔でプロットする  ln_barplot(s,n,d,g,__e__,c,ang,mark)   s : 線データ   n : 本数 入力例 : 5/3/2   d : 主筋径   g : 線端からのずれ 内側が正   __e__ : 端部筋の記入 0=する 1=しない   c : 多段筋の間隔   ang : 記号の角度(゚)   mark : 0=記号 1=現寸 デフォルト値=scale() <= 15 ? 1 : 0

    先頭へ戻る


    bezier(hp,pl=1,dn=7)

    ・ベジェ曲線を引く。

    先頭へ戻る


    bspline(bs=3,pl=1,dn=7,c=1)

    ・Bスプライン曲線を引く。 bs 次数 = 1 〜 15 程度まで pl 曲線属性 1=曲線 0=なし dn 分割数 2 〜 99 まで c 閉鎖形の考慮 1=する 0=しない

    先頭へ戻る


    spline(bc=[0,0],end0=[0,0], endN=[0,0],pl=1,dn=7,c=1)

    ・3次のスプライン曲線を引く。 ◎自然条件  曲線属性を解除したいときは  hp.spline([0, 0], [0, 0], [0, 0], 0)  としてください。 ~  分割数 dn はデフォルト値を 7 とした。  8 とするなら  hp.spline([0, 0], [0, 0], [0, 0], 1, 8)  としてください。 ~  始点と終点が同じなら、自動的に閉鎖形となる。  閉鎖形としないなら  hp.spline([0, 0], [0, 0], [0, 0], 1, 7, 0)  とする。 ~  始点と終点が同じとき、閉鎖形に戻すなら  hp.spline([0, 0], [0, 0], [0, 0], 1, 7, 1)  とする。 ~ ◎固定条件  曲線属性を解除するなら  hp.spline([1, 1], [0, 0], [0, 0], 0)  とする。  分割数 dn はデフォルト値を 7 とした。  8 とするなら  hp.spline([1, 1], [0, 0], [0, 0], 1, 8)  とする。 ~  始点と終点が同じなら、自動的に閉鎖形となる。  閉鎖形としないなら  hp.spline([1, 1], [0, 0], [0, 0], 1, 7, 0) とする。 ~  始点と終点が同じとき、閉鎖形に戻すなら  hp.spline([1, 1], [0, 0], [0, 0], 1, 7, 1) とする。 ~ ◎線→点  開始線を指示したのち、必ず、始点〜終点を指示してください。  JW_CAD では 中間点〜終点 を指示する仕様となっていますが、始点を入力する必要が  あります。  また、開始線の指示点の近傍端点 と 始点 は一致するように入力してください。  → 入力仕様は冗長なものとなっています。お許しください。 ◎点→線  終了線を指示したのち、必ず、始点〜終点を指示してください。  JW_CAD では 終了線は最後に指示しますが、終了線 → 始点〜終点 を指示する仕様と  しています。終点を入力する必要があります。  また、終了線の指示点の近傍端点 と 終点 は一致するように入力してください。  → 入力仕様は冗長なものとなっています。お許しください。 ◎線→点→線  開始線と終了線を指示したのち、必ず、始点〜終点を指示してください。  JW_CAD では 中間点 を指示する仕様となっていますが、始点〜終点を入力する必要が  あります。  開始線の指示点の近傍端点 と 始点 は一致するように入力してください。  終了線の指示点の近傍端点 と 終点 は一致するように入力してください。  → 入力仕様は冗長なものとなっています。お許しください。

    先頭へ戻る



     健康第一!! またお会いいたしましょう。

    | 前へ | 表紙へ |いろはにruby外部変形|rubyJWW ライブラリ プログラム例|