Page 1701 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼倍面積 rp 22/8/2(火) 9:19 ┣Re:倍面積 sugi 22/8/2(火) 11:33 ┃ ┣Re:倍面積 ban 22/8/2(火) 13:32 ┃ ┃ ┣Re:倍面積 somem 22/8/2(火) 23:22 ┃ ┃ ┃ ┣Re:倍面積 ban 22/8/3(水) 8:15 ┃ ┃ ┃ ┃ ┗Re:倍面積 ban 22/8/3(水) 8:51 ┃ ┃ ┃ ┃ ┗Re:倍面積 rp 22/8/4(木) 7:59 ┃ ┃ ┃ ┗Re:倍面積 rp 22/8/3(水) 8:42 ┃ ┃ ┃ ┗Re:倍面積 somem 22/8/3(水) 18:48 ┃ ┃ ┃ ┗Re:倍面積 ban 22/8/3(水) 22:57 ┃ ┃ ┃ ┗Re:倍面積 rp 22/8/4(木) 9:15 ┃ ┃ ┃ ┣Re:倍面積 ban 22/8/4(木) 10:43 ┃ ┃ ┃ ┣Re:倍面積 ban 22/8/4(木) 10:44 ┃ ┃ ┃ ┗Re:倍面積 ban 22/8/4(木) 12:48 ┃ ┃ ┃ ┣Re:倍面積 somem 22/8/4(木) 14:53 ┃ ┃ ┃ ┗Re:倍面積 rp 22/8/4(木) 17:16 ┃ ┃ ┗Re:倍面積 rp 22/8/3(水) 8:38 ┃ ┗Re:倍面積 rp 22/8/3(水) 8:19 ┗Re:倍面積 somem 22/8/2(火) 23:13 ┗Re:倍面積 rp 22/8/4(木) 9:25 ─────────────────────────────────────── ■題名 : 倍面積 ■名前 : rp ■日付 : 22/8/2(火) 9:19 -------------------------------------------------------------------------
確認申請の面積計算表(倍面積)を作るのによい外部変形がありましたら 教えていただきたいです。 現在はWindows10の64bitのPCで 牛渡 浩様のgHeron for JWW Ver.1.41を使用しているのですが、 微小誤差がでてしまいます。 (J_GARUで設定) 誤差の出ない設定方法、もしくは微小誤差の出ない類似の外部変形が ございましたら教えていただきたいです。 gHeronの設定は下記にしています。 辺長精度3、面積精度7、合計精度2 敷地形態ソリッド図形 求積法 底辺×高さ÷2 表を作図する 誤差の例としては 底辺 4.896 高さ 0.145 の際に、 倍面積が 0.7099199 となるような状態です。 ※0.70992になってほしい あげた例の場合、Excelに書き出す設定にしてみてみると、 0.70992になります。 Excelに書き出したのちにEcxcel to Jw_winでjwに張り付ける 方法をとったりもするのですが、 Excelにも浮動小数点演算の誤差があるので、 結局電卓で全て確認となっています。 ※微小誤差があると確認申請が通らず、 担当者の方から誤差の指摘が入り訂正となります。 よろしくお願いいたします。 |
倍面積の計算結果を小数点以下7桁で四捨五入して丸めてやればいいのかな? だとすると倍面積の計算結果(仮にnumとする)を探して num.round(7)に置き換えればいけそうですが gHeron for JWW Ver.1.41 ってどこからダウンロードできるでしょうか? |
▼sugiさん: >倍面積の計算結果を小数点以下7桁で四捨五入して丸めてやればいいのかな? >だとすると倍面積の計算結果(仮にnumとする)を探して >num.round(7)に置き換えればいけそうですが >gHeron for JWW Ver.1.41 ってどこからダウンロードできるでしょうか? スレ主さんの設定で、いくつか作図し、 gHeron for JWW Ver.1.41で計算してみました。 四捨五入、切捨、他に2つの設定有り。 四捨五入の場合 0.7099200 切捨の場合 0.7099199 数例試してみた限りでは、 四捨五入の場合 0.7099199 と表示されるケースはありませんでした。 ※絶対に無いとは断言できませんが。 |
▼banさん: >切捨の場合 0.7099199 底辺 4.896/高さ 0.145の直角三角形の面積を外部変形で測定した時、上記数字になるのでしょうか? |
▼somemさん: >▼banさん: > >>切捨の場合 0.7099199 > >底辺 4.896/高さ 0.145の直角三角形の面積を外部変形で測定した時、上記数字になるのでしょうか? 再度検証して見ました。 mm単位で作図 底辺 4896 底辺に対して複線間隔 145 で複線を作図 作図された複線の任意の点で三角形を作図 外部変形起動 辺長精度3、面積精度7、合計精度2 四捨五入指定 底辺 4.896 高さ 0.145 倍面積 0.7099200 面積 0.3549600 敷地面積 0.35m2 ケース1 切捨指定 底辺 4.896 高さ 0.145 倍面積 0.7099199 面積 0.3549599 敷地面積 0.35m2 ケース2(ケース1とは、別の位置で作図した) 切捨指定 底辺 4.896 高さ 0.144 倍面積 0.7050240 面積 0.3525120 敷地面積 0.35m2 ケース2の場合、 何故か、高さが 0.144 となった どちらも間隔 145 で作図したのだが、 作図位置によって、ケース2の場合があった。 四捨五入の場合は、 最初の四捨五入の結果と同じでした。 |
検証結果の追加 計算結果を、図面内に書き込む他に、 エクセルファイルを出力出来る様になっていますが、 四捨五入指示の場合は、 図面表示と同じ内容になっていたが、 切捨て指示の場合、 底辺桁数 小数点以下2位 高さ桁数 小数点以下2位 倍面積桁数 小数点以下6位 面積桁数 小数点以下6位 敷地面積桁数 小数点以下1位 となり、図面表示とは異なる内容になっている。 私の場合は、四捨五入しか使用していないので、 問題は無いように思います。 |
▼banさん: ご確認ありがとうございます。 私の使用しているものですとエクセル上の数字の桁数はあっていて、 セルの表示形式の桁数指定がずれている状態でした。 ※セルをクリックするとセルに表示されてない隠れた数字が (表示されているものより小数点以下で1個分多い)数式バーに表示されます。 セルの表示形式で桁数を指定したら全部表示するようにできます。 |
▼somemさん: 確認申請に使用する敷地形状のうちの一部です。 ※敷地に関しては確認申請用に実測したものと、 以前隣地で使用したという確認申請の敷地形状 (PDFでーたでいただきました)が多少ずれがあり合わず 補正をいれて変形させた箇所があります。 |
rpさん、banさん >確認申請に使用する敷地形状のうちの一部です。 > >※敷地に関しては確認申請用に実測したものと、 >以前隣地で使用したという確認申請の敷地形状 >(PDFでーたでいただきました)が多少ずれがあり合わず >補正をいれて変形させた箇所があります。 この質問の意図は、単純な掛け算となる形状でも計算誤差が出るのか知りたかったのです。 当方、外部変形を所有していないので、確認できません。 もっと簡単な数値でもかまいません。例えば、底辺5m、高さ2mとか。 |
▼somemさん: >rpさん、banさん > >>確認申請に使用する敷地形状のうちの一部です。 >> >>※敷地に関しては確認申請用に実測したものと、 >>以前隣地で使用したという確認申請の敷地形状 >>(PDFでーたでいただきました)が多少ずれがあり合わず >>補正をいれて変形させた箇所があります。 > >この質問の意図は、単純な掛け算となる形状でも計算誤差が出るのか知りたかったのです。 >当方、外部変形を所有していないので、確認できません。 >もっと簡単な数値でもかまいません。例えば、底辺5m、高さ2mとか。 下記手順で三角形を作図 底辺 5000 複線間隔 2000 複線上の任意の点と底辺の両端で三角形作図 外部変形起動 四捨五入の場合 5.000 2.000 10.0000000 5.0000000 5.00m2 切捨の場合 5.000 1.999 9.9950000 4.9975000 4.99m2 切捨の時に不具合が発生 この外部変形は、基本的にはヘロンの公式で三角形の面積を求める ことが基本となっているようです。 (ヘロン公式及び三斜方式が選択出来ます) 高さは3辺の長さから求めているのでしょうか。 その為、高さに僅かな誤差が出て、切捨時に不具合が出たのでしょうか。 転載条件は下記の通りとなっています。 (3) 転載及び配布 転載・配布の際は,下記の条件を守って下さい. 1)プログラムを改変しないこと. 2)このファイル内のアーカイブファイルの内容をまとめて配布すること. 書籍・雑誌等への収録および他のネットへの転載については,あらかじめ ご相談下さい. rubyのscriptになっています。 ruby script fileは6個構成になっています。 解凍した物しかありませんが、再圧縮して配布して良いならば、 用意出来ます。 但し、私は普段アップロードはしていませんので、 アップロードの方法を教えてくれれば可能です。 |
▼banさん: 目的を説明できておらず申し訳ございません。 「確認申請の担当者の方が電卓で検算した際に、 計算が合わない状態を解消したい」というのが目的です。 敷地面積は切り捨てで減る分には問題ありませんし、 表の式を電卓で計算して合っていれば申請が通るので 計算があえばいいと考えています。 (審査の方は距離を測って計算するわけではないので) ※敷地図面で正確な矩形に出会ったことがないのですが、 建物形状が正確な矩形の場合は誤差がでないように 縦の長さ×横の長さで計算するように指導を受けたので、 実際にはそのように算出するようになるのではないかとは思います。 5000×2000の敷地の場合、表ですと 底辺 5.385 高さ 1.856 倍面積 9.9945600 面積 4.9972800 となり、電卓計算と一致するのでその場合は問題ないです。 底辺×高さを電卓で計算した際に、 倍面積が電卓の計算結果と異なる場合や、 倍面積を÷2した際の面積が電卓の計算結果と異なる場合に、 差し戻しになります。 |
以前(2009)、hayabusa さんがUPしていた三斜計算のソースを上げます。 JWW_SMPL.EXEと連携して動作するので、JWW_SMPL.EXEのある場所に保存します。 ファイル名は 三斜計算.bat とする。 但し、ソリッドには対応していません。 ソースが長いので2回に分けてUPします。 -----この下から---------- @REM 三斜計算CB出力 @echo off goto do%1 rem rem ---------------------------------------------------------------- rem ※このファイルを編集した場合は上書き保存して閉じてください。 rem ※ファイルを閉じなくても編集は反映されます。 rem ※作図設定はこのバッチファイルの82行目からです。 rem ---------------------------------------------------------------- rem ※概要 rem 1.この外部変形はJWW_SMPL.EXEと連携して三斜計算データをクリップ rem ボードにコピーするものです。 rem タブ区切りですのでエクセル側に於いて右クリックからセル単位で rem 貼付できます。(他の表計算ソフトでも可能) rem 2.全てのオプションをコマンドラインに設定してありますので環境に rem 応じて適宜修正して下さい。 rem ---------------------------------------------------------------- REM #jww REM #cd REM #hm |三斜計算 L|Excel 起動 R|BAT 編集| REM #:1 REM #h1 REM #g0 書込みグループのみ選択対象 REM #hc 【 三 斜 計 算 】 三角形を選択(三角形の辺 200 まで) REM #0 数値書き込み位置指示 (L)free (R)Read REM #f 敷地名称(無指定 無) : /_$1" REM #c 番号の前に追加する文字(無指定 無) : /_$2" REM #ht10 ブロック図形の書出しをしない REM #ht40 ソリッドの書出しをしない REM #hr REM #e REM #:2 REM #:3 REM #h0 REM #hr REM #e rem --------------------------------------------------------------------------- rem ※JWW_SMPL.EXEオプション(JWW_SMPL.BATより抜粋)※ rem rem 起動オプション(IME ON) rem #f 敷 地 名 称 : /_$1" rem 起動オプション(IME OFF) rem #c 番号の前に追加する文字 : /_$2" rem rem オプション説明(指定レイヤに作図) rem /N* :初期番号指定 「*」 は初期No[1〜8001] (無指定:1) rem /L* :レイヤ指定 「*」 はレイヤNo[0〜F] (無指定:書込レイヤ) rem /M* :文字種類を指定 「*」 は文字種類No[1〜10] (無指定:2) rem /K* :小数点以下有効桁数を指定 「*」 は桁数No[1〜3] (無指定:2) rem /T* :三角形頂点に点を作図 「*」 は点種類No[1〜6] (無指定:1) rem /E*.*:三角形頂点に円を作図 「*.*」 は円半径[図寸 mm] (無指定:1.0) rem /H* :三角形の辺を作図 「*」 は線色No[1〜6] (無指定:1) rem rem /C :指定小数点以下桁数未満を切捨で寸法値作図 (無指定:四捨五入) rem /S :敷地面積(小数点以下3桁を切捨)を作図 rem rem ※頂点点種、辺線色はNo[1〜9]の範囲内で再設定できます。 rem ---------------------------------------------------------------------------- :do1 JWW_SMPL.EXE /N1 /LF /M3 /K3 /T /E1.5 /C /S /C3 %1 %2 %3 copy jwc_temp.txt temp.txt > nul ruby -x %~f0 temp.txt > jwc_temp.txt del temp.txt rem pause goto END :do2 start excel.exe > jwc_temp.txt rem ※コマンドラインにファイルを設定する場合 rem ---カレントの場合--- rem start excel.exe sample.xls > jwc_temp.txt rem ---絶対パスの場合(パスに空白がある場合は""で囲む)--- rem start excel.exe "C:\my excel\sample.xls" > jwc_temp.txt goto END :do3 start notepad.exe 三斜計算.BAT ruby -e 'puts "h# ruby #{RUBY_VERSION} "' > jwc_temp.txt goto END #!ruby -Ks def main #============= 設 定 ============================================= # waku_en = "1" #番号枠種類(楕円枠 → 0 : 円枠 → 1 : 枠無 → 2) waku_lc = "0" #番号枠線色(1〜9) 0の場合は既定線色 waku_lt = "0" #番号枠線種(1〜9) 0の場合は既定線種 waku_br = "0.8" #番号枠半径補正倍率(0.5〜2) 1の場合は元半径 # line_lc = "0" #高さ垂直線線色(1〜9) 0の場合は既定線色 line_lt = "0" #高さ垂直線線種(1〜9) 0の場合は既定線種 # apex_lc = "0" #頂点円線色(1〜9) 0の場合は既定線色 apex_lt = "0" #頂点円線種(1〜9) 0の場合は既定線種 # apex_pn = "0" #頂点点種(1〜9) 0の場合は既定点種 # shen_lc = "0" #三角形の辺線色(1〜9) 0の場合は既定線色 shen_lt = "0" #三角形の辺線種(1〜9) 0の場合は既定線種 # hyou_lc = "0" #面積表線色(1〜9) 0の場合は既定線色 hyou_lt = "0" #面積表線種(1〜9) 0の場合は既定線種 # |
#================================================================= if waku_br.to_f < 0.5 or waku_br.to_f > 2.0 puts "he 番号枠半径補正値設定エラー。"; exit end msg0 = "区画の三斜データをClipboardにコピーしました。" datas,hens,all,lcs,lts,msg = [],[],[],[],[],"" while ARGF.gets datas << $_ end (datas.reverse).each{|data| if data =~ /^h#/ msg = data elsif data =~ /^\s[0-9-]/ hens << data else break end } datas -= hens datas.each{|data| all << data if data =~ /^ci/ en = data.split; en[3] = waku_br.to_f*en[3].to_f if en.size == 8 if waku_lc == "0" puts lcs[-1] else puts "lc"+waku_lc end if waku_lt == "0" puts lts[-1] else puts "lt"+waku_lt end if waku_en == "1" puts en[0,4].join("\s") elsif waku_en == "0" puts en.join("\s") elsif waku_en == "2" else puts "he 枠種類設定エラー"; exit end else if apex_lc == "0" puts lcs[-1] else puts "lc"+apex_lc end if apex_lt == "0" puts lts[-1] else puts "lt"+apex_lt end puts data end elsif data =~ /^pt/ if apex_pn != "0" puts "pn"+apex_pn end puts data elsif data =~ /^\s[0-9-]/ if all[-2] =~ /^z3/ if line_lc == "0" puts lcs[-1] else puts "lc"+line_lc end if line_lt == "0" puts lts[-1] else puts "lt"+line_lt end else if hyou_lc == "0" puts lcs[-1] else puts "lc"+hyou_lc end if hyou_lt == "0" puts lts[-1] else puts "lt"+hyou_lt end end puts data elsif data =~ /^lc/ puts data lcs << data elsif data =~ /^lt/ puts data lts << data else puts data end } if hens.size >= 3 if shen_lc != "0" puts "lc"+shen_lc end if shen_lt != "0" puts "lt"+shen_lt end hens.each{|hen| puts hen } end henms = []; ii,ll = 0,datas.size-1 for idx in ii .. ll if datas[idx] =~ /^cs/ iidx = idx + 1 ele = [] while datas[iidx] =~ /^ch/ no = datas[iidx].index(/\"/) ele << datas[iidx][no+1..-1].strip iidx += 1 end if ele.size == 5 henms << ele.join("\t") end ii = iidx end end setValue(henms.join("\n")) puts "h# #{henms.size} #{msg0}#{msg}\n" end def setValue(string) require 'Win32API' openClipboard = Win32API.new('user32','OpenClipboard',['I'],'I') emptyClipboard = Win32API.new('user32','EmptyClipboard',[],'I') setClipboardData = Win32API.new('user32','SetClipboardData',['I','I'],'I') closeClipboard = Win32API.new('user32','CloseClipboard',[],'I') globalAlloc = Win32API.new('kernel32','GlobalAlloc',['I','I'],'I') globalLock = Win32API.new('kernel32','GlobalLock',['I'],'I') globalUnlock = Win32API.new('kernel32','GlobalUnlock',['I'],'I') lstrlen = Win32API.new('kernel32','lstrlenA',['P'],'I') lstrcpy = Win32API.new('kernel32','lstrcpyA',['I','P'],'P') if openClipboard.Call(0) != 0 emptyClipboard.Call() ll = lstrlen.Call(string) gMEM = globalAlloc.Call(0x2000, ll+1) pMEM = globalLock.Call(gMEM) lstrcpy.Call(pMEM, string) setClipboardData.Call(1, gMEM) globalUnlock.Call(gMEM) closeClipboard.Call end end main() __END__ :END |
gHeron for JWW Ver.1.41 一応の解決策 heron.rb 内の次のか所を変更する。 740行目: area = h * b を area = h * b + 0.0000000001 746行目: area = h * b * 0.5 を area = h * b * 0.5 + 0.0000000001 上記2か所を変更する。 但し、切捨指定時のエクセルファイル出力は、 指定桁数になっていない。 AFsoft さん、ありがとうございました! |
▼banさん >gHeron for JWW Ver.1.41 >一応の解決策 > >heron.rb 内の次のか所を変更する。 > >740行目: >area = h * b >を >area = h * b + 0.0000000001 > >746行目: >area = h * b * 0.5 >を >area = h * b * 0.5 + 0.0000000001 > >上記2か所を変更する。 > >但し、切捨指定時のエクセルファイル出力は、 >指定桁数になっていない。 > >AFsoft さん、ありがとうございました! プログラム上の問題だったのですね。 検証、スプリクト修正、お疲れさまでした。 |
▼banさん: 希望の結果になりました、 banさんAFsoftさんありがとうございます。 エクセルの表示に関しては、基本的に使用しておらず、 使用した場合でもセルの表示形式を変更することで対応できていますので、 そのままでも気にならないため、質問に関しては終了とさせていただきます。 ありがとうございました。 ※私にはどうすればいいのかわからなかったのですが、 table.rbをNumberFormatLocalで検索したところ、 760行、817行、825行、859行に記述があり、 そちらから追っていくと場所を特定しやすいかもしれません。 |
▼banさん: 確認していただきありがとうございます。 説明不足で申し訳ありません、 確認申請の敷地の面積は切り捨てで、 途中の式も切り捨てするようにと指導を受け、 四捨五入の使用はできません。 |
▼sugiさん: すみません、サイトが閉鎖されてしまっていて、 入手先を見つけることができませんでした。 私は昔に入手したものをずっと使用しています。 拡張子rbの宝石みたいな赤いマークのアイコンが6個あって、 その中にプログラミングがありそうなのですが、 私では内容を把握して書き換えることは難しそうです。 |
▼rpさん: >誤差の例としては >底辺 4.896 >高さ 0.145 >の際に、 >倍面積が 0.7099199 >となるような状態です。 上記、底辺/高さの値と外部変形が取得した値に相違があるからでしょう。 三角形の頂点の一つを原点とし、他の2点の座標値を座標ファイルに書出し、底辺と高さを計算してください。 |
▼somemさん: ありがとうございます。 数値に関しては、外部変形で取得した数値になります。 外部変形を使用してjww内に自動出力した表に >>底辺 4.896 >>高さ 0.145 と記載されているのですが、 >>倍面積 0.7099199 となり、計算部分で誤差が出る状態です。 計算の際には1桁多い数字を使用して計算している等あるかもしれませんが、 どのように計算しているかわからないです。 |