Jw_cad 相談室−その2 New

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

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

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


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

動かない外部変形を動かしたい。 hide 23/12/7(木) 21:00

Re:動かない外部変形を動かしたい。 hide 23/12/9(土) 16:50
Re:動かない外部変形を動かしたい。 sugi 23/12/10(日) 5:53

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/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>
・ツリー全体表示

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

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