Jw_cad 相談室−その2 New

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

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

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


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

動かない外部変形を動かしたい。 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:動かない外部変形を動かしたい。
 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:動かない外部変形を動かしたい。
 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>
・ツリー全体表示

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

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