Jw_cad 相談室−その2 New

 Jw_cad についての相談の場としてお使いください
情報の交換には Jw_cad 情報交換室 をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
142 / 313 ツリー    ←次へ | 前へ→

動かない外部変形を動かしたい。 hide 23/12/7(木) 21:00
Re:動かない外部変形を動かしたい。 sugi 23/12/9(土) 5:57
Re:動かない外部変形を動かしたい。 sugi 23/12/9(土) 8:01
Re:動かない外部変形を動かしたい。 R.N 23/12/9(土) 8:05
Re:動かない外部変形を動かしたい。 sugi 23/12/9(土) 9:53
Re:動かない外部変形を動かしたい。 R.N 23/12/9(土) 12:55
Re:動かない外部変形を動かしたい。 sugi 23/12/9(土) 18:27
Re:動かない外部変形を動かしたい。 ban 23/12/9(土) 21:39
Re:動かない外部変形を動かしたい。 sugi 23/12/10(日) 5:45
Re:動かない外部変形を動かしたい。 hide 23/12/9(土) 16:50
Re:動かない外部変形を動かしたい。 sugi 23/12/10(日) 5:53
Re:動かない外部変形を動かしたい。 hide 23/12/10(日) 16:40
Re:動かない外部変形を動かしたい。 sugi 23/12/11(月) 6:13
Re:動かない外部変形を動かしたい。 hide 23/12/11(月) 12:12
Re:動かない外部変形を動かしたい。 sugi 23/12/11(月) 13:34
Re:動かない外部変形を動かしたい。 sugi 23/12/11(月) 15:30
Re:動かない外部変形を動かしたい。 hide 23/12/11(月) 22:14
Re:動かない外部変形を動かしたい。 sugi 23/12/13(水) 8:54
Re:動かない外部変形を動かしたい。 ban 23/12/13(水) 10:38
Re:動かない外部変形を動かしたい。 sugi 23/12/13(水) 11:03
Re:動かない外部変形を動かしたい。 hide 23/12/13(水) 21:10

動かない外部変形を動かしたい。
 hide  - 23/12/7(木) 21:00 -
こんな外部変形を発見しましたが、動きません。使えるようにしたいです。お願いします。
作成者 コジマ 様


◎バッチファイル(ファイル名 ‰.bat)
コピペ後、全角スペースを半角スペースに一括置換してください。

REM 勾配を‰表示
echo off
REM #jww
REM #cd
REM #h0
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #0測定値の記入位置を指示してください free(L)
REM #1ln線を指示してください free(L)
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks ‰.rb temp.txt %1 > jwc_temp.txt


◎スプリプトファイル(ファイル名 ‰.rb)
コピペ後、全角スペースを半角スペースに一括置換してください。

include Math
$keta=2
while ARGV.size>1
    case argument=ARGV.pop
        when /\/b/
            $keta=argument[2..-1].to_i
    end
end
def ika(x)
    a=((x.to_f*10**$keta).round).to_f/(10**$keta)
    a=a.to_i if a.to_s =~/^0\.0$/
    return a
end
while ARGF.gets
    xy=split
    if xy[0]=~/^\d|^-/
        xy.collect!{|item|item.to_f}
        if xy[0]>xy[2]
            xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
        elsif xy[0]==xy[2]
            xy[3],xy[1]=xy[1],xy[3] if xy[3]        end
        x,y=xy[2]-xy[0],xy[3]-xy[1]
        l=sqrt(y**2+x**2)
        kakudo=atan2(y,x)
        koubai=y/x*1000

        if koubai<0
            koubai_moji= "i=#{ika(koubai).abs}‰ 右下り"

        elsif koubai==0
            koubai_moji= "i=#{ika(koubai).abs}‰"
        else
            koubai_moji= "i=#{ika(koubai).abs}‰ 右上り"
        end
        printf("ch %.10f %.10f %.10f %.10f \"%s\n",0,0,1,0,koubai_moji)
    end
end
printf("h##{koubai_moji}\n")

data=[]
open($0,"r"){|f|
    while line=f.gets
        data<    end
}

data.collect!{|item|item=~/^\$keta=/ ? item=$&+$keta.to_s : item=item}
open($0,"w"){|f|data.each{|item|f.puts item};}

data=[]
open("‰.bat","r"){|f|
    while line=f.gets
        data<    end
}

data.collect!{|item|
    if item=~/^REM #c小数点以下有効桁数 無指定:/
        item=$&+$'.gsub(/^\d+/,$keta.to_s)
    else
        item
    end
}
open("‰.bat","w"){|f|data.each{|item|f.puts item};}


以下のようなエラーが出ます。


C:\JWW\外変寸法\勾配を‰表示>echo off
‰.rb:30: syntax error, unexpected tIDENTIFIER, expecting kEND
‰.rb:52: syntax error, unexpected kEND
‰.rb:71: syntax error, unexpected kEND
‰.rb:85: syntax error, unexpected $end, expecting kEND
open("‰.bat","w"){|f|data.each{|item|f.puts item};}
^
続行するには何かキーを押してください . . .

私の環境では、その他の外部変形は、ほぼ動作しています。

※【タイトル】Re(4):測定で角度を%表示(追伸)
【記事番号】 8634 (8615)
【 日時 】06/02/17 09:02
【 発言者 】コジマ

より、抜粋しています。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0@133088090235.mcat.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/9(土) 5:57 -
スクリプトの意図はだいたい読み取れたように思います
うちの環境でも動くように修正してみました
インデントが崩れてしまったらごめんなさい

REM 勾配を‰表示.bat
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #0測定値の記入位置を指示してください free(L)
REM #1ln線を指示してください free(L)
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 %1
GOTO END
REM #~

◎コメント
◎バッチファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペースに一括置換してください。

#! ruby
# encoding: SJIS

$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")

include Math

keta=(ARGV[0] ? ARGV[0].gsub("/b","").to_i : 2)

def ika(x,keta)
begin
a=((x.to_f*10**keta).round).to_f/(10**keta)
a=a.to_i if a.to_s =~/^0\.0$/
return a
rescue
puts "he 垂直線が選ばれたようです"
exit
end
end

open("temp.txt").readlines.each{|e|
puts e unless /^hq/=~e
xy=e.split(" ")
if xy[0]=~/^\d|^-/
xy.collect!{|item|item.to_f}
if xy[0]>xy[2]
xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
elsif xy[0]==xy[2]
xy[3],xy[1]=xy[1],xy[3] if xy[3]
end
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(y**2+x**2)
kakudo=atan2(y,x)
koubai=y/x*1000
if koubai<0
koubai_moji= "i=#{ika(koubai,keta).abs}‰ 右下り"
elsif koubai==0
koubai_moji= "i=#{ika(koubai,keta).abs}‰"
else
koubai_moji= "i=#{ika(koubai,keta).abs}‰ 右上り"
end
printf("ch %.10f %.10f %.10f %.10f \"%s\n",0,0,1,0,koubai_moji)
end
}
puts "h##{koubai_moji}"
__END__
:END

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/9(土) 8:01 -
わたしの場合 cmd は標準で文字コード utf-8 を使ってるんですが
外部変形の場合は sjis なので「CHCP 932」と教えてやらないと
うまく動作してくれません

インデントが崩れる問題について
半角スペースのままだとインデントが崩れるから
アップするときに全角スペースに直してるって
ことに気が付きませんでした
ということでやり直し

REM 勾配を‰表示.bat
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #0測定値の記入位置を指示してください free(L)
REM #1ln線を指示してください free(L)
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 %1
GOTO END
REM #~

◎コメント
◎バッチファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペース2個に一括置換してください。

#! ruby
# encoding: SJIS

$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")

include Math

keta=(ARGV[0] ? ARGV[0].gsub("/b","").to_i : 2)

def ika(x,keta)
 begin
  a=((x.to_f*10**keta).round).to_f/(10**keta)
  a=a.to_i if a.to_s =~/^0\.0$/
  return a
 rescue
  puts "he 垂直線が選ばれたようです"
  exit
 end
end

open("temp.txt").readlines.each{|e|
 puts e unless /^hq/=~e
 xy=e.split(" ")
 if xy[0]=~/^\d|^-/
  xy.collect!{|item|item.to_f}
  if xy[0]>xy[2]
   xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
  elsif xy[0]==xy[2]
   xy[3],xy[1]=xy[1],xy[3] if xy[3]
  end
  x,y=xy[2]-xy[0],xy[3]-xy[1]
  l=sqrt(y**2+x**2)
  kakudo=atan2(y,x)
  koubai=y/x*1000
  if koubai<0
   koubai_moji= "i=#{ika(koubai,keta).abs}‰ 右下り"
  elsif koubai==0
   koubai_moji= "i=#{ika(koubai,keta).abs}‰"
  else
   koubai_moji= "i=#{ika(koubai,keta).abs}‰ 右上り"
  end
  printf("ch %.10f %.10f %.10f %.10f \"%s\n",0,0,1,0,koubai_moji)
 end
}
puts "h##{koubai_moji}"
__END__
:END

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 R.N  - 23/12/9(土) 8:05 -
▼sugiさん:こんにちは

スクリプトの提供、ありがとうございます。

>puts "h##{koubai_moji}"

koubai_moji ⇒ $koubai_moji
に、全て置換してみましたが?

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0@flh2-125-195-63-65.osk.mesh.ad.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/9(土) 9:53 -
>> koubai_moji ⇒ $koubai_moji
>> に、全て置換してみましたが?

うまく動作しなかったということでしょうか?
この部分についてはグローバル変数は極力使うなって
以前に聞いた覚えがあってローカル変数にしてみました

rubyもバージョンにより以前は認められてた書き方が
許されなくなったとかいうこともあって
今回のもそんな一例のようで
できるだけどのバージョンでも通用するように
書き直したつもりですがうまくいってないようなら
「tmp_err.txt」にエラー内容が書き込まれてるかもしれないので
それを貼ってもらえればなんとかできるかもしれません

引用なし

パスワード


<Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 R.N  - 23/12/9(土) 12:55 -
▼sugiさん:すみません


>>> koubai_moji ⇒ $koubai_moji
>>> に、全て置換してみましたが?

それが---動作は問題ないのですが、コメント文が表示されなくて
なぜ---と思いつつ

<エラー出力内容>
‰_sugi.rb:46: undefined local variable or method `koubai_moji&#39; for main:Object (NameError)

win11_64 jww8.25a
ruby 1.8.7 (2013-06-27 patchlevel 374) [i386-mingw32]

>うまく動作しなかったということでしょうか?
>この部分についてはグローバル変数は極力使うなって
>以前に聞いた覚えがあってローカル変数にしてみました
>
>rubyもバージョンにより以前は認められてた書き方が
>許されなくなったとかいうこともあって
>今回のもそんな一例のようで
>できるだけどのバージョンでも通用するように
>書き直したつもりですがうまくいってないようなら
>「tmp_err.txt」にエラー内容が書き込まれてるかもしれないので
>それを貼ってもらえればなんとかできるかもしれません

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0@flh2-125-195-63-65.osk.mesh.ad.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 hide  - 23/12/9(土) 16:50 -
R.Nさん、sugiさん:こんにちは
質問者のhideです。
返信ありがとうございます。
外変のほううまく動作しました。
R.Nさん、sugiさんの意見を参考にして、元のスクリプトのエラー部分を削除してみたところ、
コジマ さんのスクリプトも動くようになりました。

include Math
$keta=2
while ARGV.size>1
case argument=ARGV.pop
when /\/b/
$keta=argument[2..-1].to_i
end
end
def ika(x)
a=((x.to_f*10**$keta).round).to_f/(10**$keta)
a=a.to_i if a.to_s =~/^0\.0$/
return a
end
while ARGF.gets
xy=split
if xy[0]=~/^\d|^-/
xy.collect!{|item|item.to_f}
if xy[0]>xy[2]
xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
elsif xy[0]==xy[2]
xy[3],xy[1]=xy[1],xy[3] if xy[3] end
x,y=xy[2]-xy[0],xy[3]-xy[1]
l=sqrt(y**2+x**2)
kakudo=atan2(y,x)
koubai=y/x*1000

if koubai<0
koubai_moji= "i=#{ika(koubai).abs}‰ 右下り"

elsif koubai==0
koubai_moji= "i=#{ika(koubai).abs}‰"
else
koubai_moji= "i=#{ika(koubai).abs}‰ 右上り"
end
printf("ch %.10f %.10f %.10f %.10f \"%s\n",0,0,1,0,koubai_moji)
end
end
printf("h##{koubai_moji}\n")


data.collect!{|item|
if item=~/^REM #c小数点以下有効桁数 無指定:/
item=$&+$'.gsub(/^\d+/,$keta.to_s)
else
item
end
}


しかし、勾配を‰表示の一括記入の外部変形は、いまだうまく動きません。
厚かましいお願いですが、線上に平行で一括で線上側には勾配(1:n,%)、線下側には線長(m)、
が記入できる外部変形があれば、ありがたいです。計画図面、施工図のチェックに使います。
よろしくお願いします。


※過去ログ抜粋


【タイトル】Re(6):一括記入なら
【記事番号】 8686 (8683)
【 日時 】06/02/17 20:47
【 発言者 】コジマ

線上に一括記入するなら、以下の外変のほうが速いです。
(線を寸法線に見立てて、寸法値のように記述します。)

◎バッチファイル(ファイル名 ‰2.bat)
以下の文をコピペ後、全角スペースを半角スペースに一括置換。


REM 勾配を‰表示の一括記入
echo off
REM #jww
REM #cd
REM #h0
REM #c線と文字の離れ(図寸) 無指定:1.0 /_/a
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #1ln線を指示してください free(L)
REM #99#
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks ‰2.rb temp.txt %1 %2 > jwc_temp.txt


◎スクリプトファイル(ファイル名 ‰2.rb)
以下の文をコピペ後、全角スペースを半角スペースに一括置換。


include Math;by=[]
hanare=1.0
$keta=2
puts "cc1"
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            hanare=argument[2..-1].to_f
        when /\/b/
            $keta=argument[2..-1].to_i
    end
end

def ika(x)
    a=((x.to_f*10**$keta).round).to_f/(10**$keta)
    a=a.to_i if a.to_s =~/^0\.0$/
    return a
end
while ARGF.gets
    xy=split
    if xy[0]=~/^hs/
        xy[1..-1].each{|item|by<    end
    if xy[0]=~/^lg/
        lg=xy[0][2,1];zusun=by[lg.hex]
    end
    if xy[0]=~/^\d|^-/
        xy.collect!{|item|item.to_f}
        if xy[0]>xy[2]
            xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
        elsif xy[0]==xy[2]
            xy[3],xy[1]=xy[1],xy[3] if xy[3]        end
        x,y=xy[2]-xy[0],xy[3]-xy[1]
        l=sqrt(y**2+x**2)
        kakudo=atan2(y,x)
        koubai=y/x*1000

        if koubai<0
            koubai_moji= "i=#{ika(koubai).abs}‰→"
        elsif koubai==0
            koubai_moji= "i=#{ika(koubai).abs}‰"
        else
            koubai_moji= "←i=#{ika(koubai).abs}‰"
        end
        printf("ch %.10f %.10f %.10f %.10f \"%s\n",
            xy[0]+l/2*cos(kakudo)-hanare*zusun*sin(kakudo),
            xy[1]+l/2*sin(kakudo)+hanare*zusun*cos(kakudo),
            l*cos(kakudo),l*sin(kakudo),koubai_moji)
    end
end

data=[]
open($0,"r"){|f|
    while line=f.gets
        data<    end
}

data.collect!{|item|
    if item=~/^hanare=/
        item=$&+hanare.to_s
    elsif item=~/^\$keta=/
        item=$&+$keta.to_s
    else
        item
    end
}

open($0,"w"){|f|data.each{|item|f.puts item};}

data=[]
open("‰2.bat","r"){|f|
    while line=f.gets
        data<    end
}

data.collect!{|item|
    if item=~/^REM #c線と文字の離れ\(図寸\) 無指定:/
        item=$&+$'.gsub(/\d+\.*\d*/,hanare.to_s)
    elsif item=~/^REM #c小数点以下有効桁数 無指定:/
        item=$&+$'.gsub(/\d+/,$keta.to_s)
    else
        item
    end
}
open("‰2.bat","w"){|f|data.each{|item|f.puts item};}

引用なし

パスワード


<Mozilla/5.0 (Android 10; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0@sp49-98-48-246.mse.spmode.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/9(土) 18:27 -
puts "h##{koubai_moji}"
のところで koubai_moji なんて変数やメソッドは定義されてませんよって
怒られてるようですがすぐ上で koubai_moji のローカル変数に値を入力してるので
なんでこんなメッセージが出るのかちょっとよく分かりません

dos窓のメッセージが文字化けする問題が関係してるなら
CHCP 932
を先頭に持ってくれば直るかもしれないです
ただこれでは jwwから選択しようとした場合のコメントが
意味不明になりそうで2行目に控えさせてみました

引用なし

パスワード


<Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 ban  - 23/12/9(土) 21:39 -
$stderr=open("tmp_err.txt","w") と include Math の間に、 koubai_moji= "" を記述したらコメント文も表示されました。 $stderr=open("tmp_err.txt","w") koubai_moji= "" include Math
引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0@p1176159-ipxg04501morioka.iwate.ocn.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/10(日) 5:45 -
ようやく理解が追いつきました。
ローカル変数 koubai_moji にちゃんと初期値を設定してやれば良いので
ban さんの方法が正解
グローバル変数にしてもエラーは消えるのですが、あまり使いたくないです

他にも選択した線が二重になるという不具合があったりして修正しました
コジマさんのオリジナルのものには有効桁数を入力すると
次からその数値を引き継ぐようBATファイルを書き換える
機能がついてましたがこれは省きました

REM 勾配を‰表示.bat
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #0測定値の記入位置を指示してください free(L)
REM #1ln線を指示してください free(L)
REM #e
copy jwc_temp.txt temp.txt
ruby -x %~f0 %1
GOTO END
REM #~

◎コメント
◎バッチファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペース2個に一括置換してください

#! ruby
# encoding: SJIS

$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")

include Math

koubai_moji=""
keta=(ARGV[0] ? ARGV[0].gsub("/b","").to_i : 2)

def ika(x,keta)
 begin
  a=((x.to_f*10**keta).round).to_f/(10**keta)
  a=a.to_i if a.to_s =~/^0\.0$/
  return a
 rescue
  return "垂直"
 end
end

open("temp.txt").readlines.each{|e|
 xy=e.split(" ")
 if xy[0]=~/^\d|^-/
  xy.collect!{|item|item.to_f}
  if xy[0]>xy[2]
   xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
  elsif xy[0]==xy[2]
   xy[3],xy[1]=xy[1],xy[3] if xy[3]
  end
  x,y=xy[2]-xy[0],xy[3]-xy[1]
  l=sqrt(y**2+x**2)
  kakudo=atan2(y,x)
  koubai=y/x*1000
  a=ika(koubai,keta)
  if a=="垂直"
   koubai_moji= "i=垂直"
  elsif koubai<0
   koubai_moji= "i=#{a.abs}‰ 右下り"
  elsif koubai==0
   koubai_moji= "i=#{a.abs}‰"
  elsif koubai>0
   koubai_moji= "i=#{a.abs}‰ 右上り"
  end
  printf("ch %.10f %.10f %.10f %.10f \"%s\n",0,0,1,0,koubai_moji)
 elsif /^hq/!~e
  puts e unless /^hq/=~e
 end
}
__END__
:END

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/10(日) 5:53 -
> 線上に平行で一括で線上側には勾配(1:n,%)、線下側には線長(m)

というのには対応できてませんが
取り敢えず勾配の入力だけはできるようになりました
線長入力はひとまず宿題ということで

REM 一括記入.bat
REM 勾配を‰表示の一括記入
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c線と文字の離れ(図寸) 無指定:1.0 /_/a
REM #c小数点以下有効桁数 無指定:2 /_/b
REM #1ln線を指示してください free(L)
REM #99#
REM #e
copy jwc_temp.txt temp.txt
ruby -Ks -x %~f0 %1 %2
GOTO END
REM #~

◎コメント
◎スクリプトファイル(ファイル名は自由)
◎コピペ後、全角スペースを半角スペース2個に一括置換してください

#! ruby
# encoding: SJIS

$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")

include Math

by,zusun=[],1.0
koubai_moji=""
hanare=(ARGV[0] ? ARGV[0].gsub("/a","").to_f : 1.0)
keta=(ARGV[1] ? ARGV[1].gsub("/b","").to_i : 2)
puts "cc1"

def ika(x,keta)
 begin
  a=((x.to_f*10**keta).round).to_f/(10**keta)
  a=a.to_i if a.to_s =~/^0\.0$/
  return a
 rescue
  return "垂直"
 end
end

open("temp.txt").readlines.each{|e|
 xy=e.split(" ")
 if /^hs/=~xy[0]
  xy[1..-1].each{|item|by << item}
  puts e
 elsif /^lg/=~xy[0]
  lg=xy[0][2,1]
  zusun=by[lg.hex].to_f
  puts e
 elsif /^\d|^-/=~xy[0]
  xy.collect!{|item|item.to_f}
  if xy[0]>xy[2]
   xy[2],xy[0],xy[3],xy[1]=xy[0],xy[2],xy[1],xy[3]
  elsif xy[0]==xy[2]
   xy[3],xy[1]=xy[1],xy[3] if xy[3]
  end
  x,y=xy[2]-xy[0],xy[3]-xy[1]
  l=sqrt(y**2+x**2)
  kakudo=atan2(y,x)
  koubai=y/x*1000
  a=ika(koubai,keta)
  if a=="垂直"
   koubai_moji= "i=垂直"
  elsif koubai<0
   koubai_moji= "i=#{a.abs}‰→"
  elsif koubai==0
   koubai_moji= "i=#{a.abs}‰"
  else
   koubai_moji= "←i=#{a.abs}‰"
  end
  printf("ch %.10f %.10f %.10f %.10f \"%s\n",
   xy[0]+l/2*cos(kakudo)-hanare*zusun*sin(kakudo),
   xy[1]+l/2*sin(kakudo)+hanare*zusun*cos(kakudo),
   l*cos(kakudo),l*sin(kakudo),koubai_moji)
 elsif /^hq/!~e
  puts e unless /^hq/=~e
 end
}
__END__
:END

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 hide  - 23/12/10(日) 16:40 -
質問者のhideです。sugiさん、こんにちは。質問者のhideです。要望に応えていただいて
大変感謝しています。なんか、徹夜されたみたいで、大変恐縮しています。お体大切にしてください。
プログラム、走らせてみましたが、
‰表示のほうは、
桁表示のほうが、無理数ではうまくいくが、切りの良い数値のときは、小数点1位表示となります。

また、一括記入のほうは、
小数点有効桁数を打ちかえても2桁のままで、また、切りの良い数値の
ときは、小数点1位表示となります。(例:i=301.59‰→、←i=20.0‰)

小数点有効桁数が、うまく機能していません。
桁数2桁用、3桁用などのbatファイルを複数作って対応してもよいのですが、プログラム内のどの部分を書き換えてよいのかわかりません。気長に返答お待ちしています。健康第1です。
よろしくお願いします。

引用なし

パスワード


<Mozilla/5.0 (Linux; Android 10; SO-02L Build/53.1.B.0.348; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.86 Mobile Safari/537.36@sp49-98-48-246.mse.spmode.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/11(月) 6:13 -
機械屋には夜勤というものがあって
昼夜転倒の生活をしている人間もいるのです

桁表示の方は sprintf とか使えば直せると思うのですが
ちょっと待ってください

一括記入の方は調整は必要でしょうが大枠はできた気がする

REM 一括記入.bat
REM 勾配を‰表示の一括記入
CHCP 932
echo off
REM #jww
REM #cd
REM #h0
REM #c線と文字の離れ(図寸) 無指定:1.0 /_/a
REM #c勾配有効桁数 無指定:2 /_/b
REM #c長さ有効桁数 無指定:3 /_/c
REM #1ln線を指示してください free(L)
REM #99#
REM #e
copy jwc_temp.txt temp.txt
ruby -Ks -x %~f0 %1 %2 %3
GOTO END
REM #~

◎コメント
◎スクリプトファイル(ファイル名は自由)
◎以下の文をコピペ後、全角スペースを半角スペース二個に一括置換

#! ruby
# encoding: SJIS

$stdout=open("jwc_temp.txt","w")
$stderr=open("tmp_err.txt","w")

include Math
require "matrix"

hch,hs,by,zusun,takasa,l,mk,ml=[],[],[],0,0,0,"",""
hanare=(ARGV[0] ? ARGV[0].gsub("/a","").to_f : 1.0)
kketa=(ARGV[1] ? ARGV[1].gsub("/b","").to_i : 2)
nketa=(ARGV[2] ? ARGV[2].gsub("/c","").to_i : 3)

puts "cc4"
open("temp.txt").readlines.each{|e|
 xy=e.split(" ")
 puts e unless /^hq|^ [\d-]/=~e
 if /^hs/=~e
  xy[1..-1].each{|item|by << item}
 elsif /^lg/=~e
  lg=xy[0][2,1]
  zusun=by[lg.hex].to_f
 elsif /^hch/=~e
  hch=xy
 elsif /^cn0/=~e
  takasa=xy[2].to_f*0.5*zusun
 elsif /^cn\d/=~e
  takasa=hch[e.gsub("cn","").to_i].to_f*0.5*zusun
 elsif /^ [\d-]/=~e
  xy=xy.map{|f|f.to_f}
  vs=Vector[xy[0],xy[1]]
  ve=Vector[xy[2],xy[3]]
  v1=ve-vs
  v2=Matrix[[0,-1.0],[1.0,0]]*v1*(1.0/v1.r)*(hanare+takasa)
  p1=(vs+v1*0.5+v2)
  p2=(vs+v1*0.5-v2)
  begin
   a=(v1[1]/v1[0]*1000).round(kketa)
  rescue
   a="垂直"
  end
  l=v1.r
  if a=="垂直"
   mk="i=垂直"
  elsif a<0
   mk=%Q|i=#{sprintf("%.#{kketa}f",a.abs)}‰→|
  elsif a==0
   mk=%Q|i=#{sprintf("%.#{kketa}f",a.abs)}‰|
  else
   mk=%Q|←i=#{sprintf("%.#{kketa}f",a.abs)}‰|
  end
  ml=sprintf("%.#{nketa}f",l.round(nketa))
  puts %Q|ch #{p1[0]} #{p1[1]} #{v1[0]} #{v1[1]} "#{mk}|
  puts %Q|ch #{p2[0]} #{p2[1]} #{v1[0]} #{v1[1]} "#{ml}|
 end
}
__END__
:END

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 hide  - 23/12/11(月) 12:12 -
質問者のhideです。sugiさん、返信ありがとうございます。感謝感激感動です!

うーん、動きませでした。
GOTO ENDの前にpauseを記入すると

C:\JWW\外変寸法\勾配%>REM 一括記入.bat
C:\JWW\外変寸法\勾配%>REM 勾配を‰表示の一括記入
C:\JWW\外変寸法\勾配%>CHCP 932
現在のコード ページ: 932
C:\JWW\外変寸法\勾配%>echo off
1 個のファイルをコピーしました。
続行するには何かキーを押してください . . .

と、DOS窓に表示。

tmp_err.txt

C:/JWW/外変寸法/勾配%/一括記入.bat:76:in `round': wrong number of arguments (1 for 0) (ArgumentError)
from C:/JWW/外変寸法/勾配%/一括記入.bat:76
from C:/JWW/外変寸法/勾配%/一括記入.bat:39:in `each'
from C:/JWW/外変寸法/勾配%/一括記入.bat:39


当方PC環境は、win7

現在のディレクトリは C:/JWW/便利外変/jwruby
ruby のバージョンは
ruby 1.8.7 (2013-06-27 patchlevel 374) [i386-mingw32]
ruby のロードパスは
c:/ruby/lib/ruby/site_ruby/1.8
c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt
c:/ruby/lib/ruby/site_ruby
c:/ruby/lib/ruby/vendor_ruby/1.8
c:/ruby/lib/ruby/vendor_ruby/1.8/i386-msvcrt
c:/ruby/lib/ruby/vendor_ruby
c:/ruby/lib/ruby/1.8
c:/ruby/lib/ruby/1.8/i386-mingw32

です。
できれば、範囲選択で線を複数選択できたほうが大変便利と思います。
よろしくお願いします。

引用なし

パスワード


<Mozilla/5.0 (Android 10; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0@sp49-104-46-133.msf.spmode.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/11(月) 13:34 -
次の修正で範囲選択で一度に複数選択出来るようにしてみようと思います

私の環境は
ruby 2.6.5p114 (2019-10-01 revision 67812) [x64-mingw32]
調べてみたら roundの仕様が変わっていました
取り敢えず次の二箇所を探して変更してみてください

(誤):a=(v1[1]/v1[0]*1000).round(kketa)
(正):a=((v1[1]/v1[0]*1000)*10.0**kketa).round*0.1**kketa

(誤):ml=sprintf("%.#{nketa}f",l.round(nketa))
(正):ml=sprintf("%.#{nketa}f",(l*10.0**nketa).round*0.1**nketa)

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/11(月) 15:30 -
修正のたびにバッチファイルをアップするのはちょっとうるさいので
ホームページに準備してみました
現状、ここまでできました
要望とかあれば引き続きこちらの掲示板に書き込んでください

http://pansy.s1010.xrea.com/2023/12/11/%e9%95%b7%e3%81%95%e5%8b%be%e9%85%8d%e8%a8%98%e5%85%a5/

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 hide  - 23/12/11(月) 22:14 -
掲示板のスクリプトをスマフォ経由でPCのterapadエディターに取り込んだところ、改行がありませんでしたので、独自に改行を追加編集しました。。また、なぜか、67行目、69行目、102行目付近の
\dが
\d に、文字化けしていましたが、プログラムは、うまく動作しました。


wo--
ほぼ完ぺきです。これは使えます。数限りない厚かましい要望に応えていただき、大変感謝感激感動です。
これは、断面図のチェック、施工図の作成などに威力を発揮します。

実行結果です。


長さ勾配一括を実行したとき、
線と文字の離れ(図寸)   に 数値 を入力すると、勾配や長さがが 整数 になったりします。
例:入力 1 1 1  結果 勾配 整数(異常) 長さ 整数(異常)
例:入力 2 2 2  結果 勾配 整数(異常) 長さ 整数(異常)
例:入力 1 無指定 無指定  結果 勾配 整数(異常) 長さ 正常
例:入力 2 無指定 無指定  結果 勾配 整数(異常) 長さ 正常


線と文字の離れ(図寸)   に 100 を入力しても、文字は離れていないような気がします。

また、単位ですが、勾配は%、長さはmのほうが土木系には使いやすいです。
法勾配1:nの範囲選択バージョンも追加していただきたいです。続きこちらの掲示板に書き込んでください
>
>http://pansy.s1010.xrea.com/2023/12/11/%e9%95%b7%e3%81%95%e5%8b%be%e9%85%8d%e8%a8%98%e5%85%a5/

引用なし

パスワード


<Mozilla/5.0 (Android 10; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0@sp49-104-46-133.msf.spmode.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi WEB  - 23/12/13(水) 8:54 -
ホームページの外部変形を更新しました
外部変形の右上のバッチファイル名からコピーできるので
terapadで直接コピーして SJIS で保存し直すとやりやすいかと思います

\dは正規表現の数字のことであれば文字化けでなくてこれで合っています

久しぶりに外部変形を作ってオプションの処理の仕方を間違えてました
#R.Nさん、ご指摘ありがとうございます

法勾配については馴染みがなくって調べながら作ってみました

充分にチェックしていないので他にもまだ動作がおかしい点が
あれば教えてください

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 ban  - 23/12/13(水) 10:38 -
▼sugiさん: >ホームページの外部変形を更新しました >外部変形の右上のバッチファイル名からコピーできるので >terapadで直接コピーして SJIS で保存し直すとやりやすいかと思います > >\dは正規表現の数字のことであれば文字化けでなくてこれで合っています > >久しぶりに外部変形を作ってオプションの処理の仕方を間違えてました >#R.Nさん、ご指摘ありがとうございます > >法勾配については馴染みがなくって調べながら作ってみました > >充分にチェックしていないので他にもまだ動作がおかしい点が >あれば教えてください 改良有難うございます。 ruby 1.8.6でも動作しています。 表示単位が%になっています。(‰でない) 長さの単位がmとなっています。(数値はmm)
引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0@p1176159-ipxg04501morioka.iwate.ocn.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 sugi  - 23/12/13(水) 11:03 -
>> 表示単位が%になっています。(‰でない)
>> 長さの単位がmとなっています。(数値はmm)

この辺はhideさんの要望に応えた積りだったのですが
機械民には馴染みがなくって見当外れだったかも
土木系の方は日常的にm単位で図面を描くのか
なんて思ったりしてました

引用なし

パスワード


<Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36@global221-160-094.aitai.ne.jp>
・ツリー全体表示

Re:動かない外部変形を動かしたい。
 hide  - 23/12/13(水) 21:10 -
新しいbatファイルありがとうございます。
大変うれしいです。
実行してみました。
  未実行
35と39行目の
C:\ruby187b\bin\ruby -Ks -x %~f0 %1 %2 %3 %4

#C:\ruby187b\bin\
ruby -Ks -x %~f0 %1 %2 %3 %4
に変更、動作確認。(ほっ)
書き出された数値を見ると
傾きは、  数値は‰で単位は%。
長さは、  数値はmmで単位はm。
よって、
112、114行目の
a=((v1[1]/v1[0]*1000)*10.0**kke).round*0.1**kke

# a=((v1[1]/v1[0]*1000)*10.0**kke).round*0.1**kke
a=((v1[1]/v1[0]*100)*10.0**kke).round*0.1**kke
に変更、

101、141、15行目の
l=v1.r

# l=v1.r
l=0.001*v1.r
に変更、

有効桁数を無指定3.0にしたいので
76行目を kke=(opt==2 ? 3 :3)に変更、

単位%、m  全角を、半角に変更、

2行目、‰を%
に変更、

動作確認。(ほっ)
とってもいいものを作っていただきました。rubyのプログラムも勉強させていただきました。
私のわがままに、長々付き合っていただきありがとうございます。
スギさんのこのスキル以上に、精神力がすごいと思います。

引用なし

パスワード


<Mozilla/5.0 (Android 10; Mobile; rv:120.0) Gecko/120.0 Firefox/120.0@sp49-104-46-133.msf.spmode.ne.jp>
・ツリー全体表示

142 / 313 ツリー    ←次へ | 前へ→
新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
 1164262
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b5
Jw_cad Copyright (C)1997-2021 Jiro Shimizu & Yoshifumi Tanaka