Indexへ
(19056)//【19061】→(19062)
------------------------
【タイトル】寸法位置変更2.bat
【記事番号】 19061 (*)
【 日時 】07/02/11 13:17
【 発言者 】青いウサギ

上記外変、大変、便利に、使わせていただいております。

わかる方に、教えたいただきたいのですが、

@REM 寸法値位置の一括変更(寸法図形)
@echo off
REM #jww
REM #cd
REM #ht10
REM #zz
REM #zw
REM #c寸法値と寸法線の距離(図寸) 無指定:1/_/a
REM #h1
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks 寸法値位置変更2.rb temp.txt %1> jwc_temp.txt

無指定:1を0.3にしたいのですが、どのようにしたら良いのでしょうか?

外変に疎い私が、1を0.3にしたのですが、変化が、無かったものですから。


Indexへ
(19061)←【19062】→(19065)
------------------------
【タイトル】Re(1):寸法位置変更2.bat
【記事番号】 19062 (19061)
【 日時 】07/02/11 13:36
【 発言者 】スター

▼青いウサギさん:
>上記外変、大変、便利に、使わせていただいております。
>
>わかる方に、教えたいただきたいのですが、
>
>@REM 寸法値位置の一括変更(寸法図形)
>@echo off
>REM #jww
>REM #cd
>REM #ht10
>REM #zz
>REM #zw
>REM #c寸法値と寸法線の距離(図寸) 無指定:1/_/a
>REM #h1
>REM #e
>copy jwc_temp.txt temp.txt > nul
>ruby -Ks 寸法値位置変更2.rb temp.txt %1> jwc_temp.txt
>
>無指定:1を0.3にしたいのですが、どのようにしたら良いのでしょうか?
>
>外変に疎い私が、1を0.3にしたのですが、変化が、無かったものですから。

無指定とは、%1 になにも入らない状態です。
たとえば、0.5 と入力すると %1 に/a0.5 と入力されます。
いつも0.3に固定するなら
REM #c寸法値と寸法線の距離(図寸) 無指定:1/_/a
を削除し
ruby -Ks 寸法値位置変更2.rb temp.txt /a0.3> jwc_temp.txt
に変更するという方法もあります。


では修正は、バッチではなく
◎スクリプトファイル(ファイル名 寸法値位置変更2.rb)の

include Math
kyori=1

これを
kyori=0.3
にしてみてください。


Indexへ
(19062)←【19065】→(19068)
------------------------
【タイトル】Re(2):出来ました!もう一つ質問が、あるのですが
【記事番号】 19065 (19062)
【 日時 】07/02/11 14:28
【 発言者 】青いウサギ

▼スターさん:

下記で、出来ました。ありがとう御座います。

質問は、90度の寸法値で、3ミリ以下の寸法が、動かないのですが、

どうしたら、宜しいでしょうか?0度の寸法値は、動くのですかが。

度々お手数かけます。

include Math
kyori=0.3
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      kyori=eval(argument[2..-1])
  end
end

by=[]
puts "hd"
while ARGF.gets
  xy=split
  if xy[0]=~/^hq/
  elsif xy[0]=~/^hs/
    xy[1..-1].each{|item|by<  elsif xy[0]=~/^lg/
    print $_
    lg=xy[0][2,1]
    zusun=by[lg.hex]
  elsif xy[0]=~/^msg/ or xy[0]=~/^\#/
    print $_
    msg=xy[0]
  elsif xy[0]=~/^\d|^-/
    print $_
    if msg=="msg"
      xy.collect!{|item|item.to_f}
      if xy[0]>xy[2]
        xy[0],xy[2],xy[1],xy[3]=xy[2],xy[0],xy[3],xy[1]
      elsif xy[0]==xy[2]
        if xy[1]>xy[3]
          xy[1],xy[3]=xy[3],xy[1]
        end
      end
      sen=xy
    end
  elsif xy[0]=~/^cs/
    if msg=="msg"
      if $_=~/\"/
        moji=$'.chop
      end
      moji_arg=atan2(xy[4].to_f,xy[3].to_f)
      x=xy[1].to_f-sen[0]
      y=xy[2].to_f-sen[1]
      l=sqrt(x**2+y**2)
      moji_sen_arg=atan2(y,x)
      sen_arg=atan2(sen[3]-sen[1],sen[2]-sen[0])
      moji_x=sen[0]+(l*cos(moji_sen_arg-sen_arg))*cos(sen_arg)
      moji_y=sen[1]+(l*cos(moji_sen_arg-sen_arg))*sin(sen_arg)
      if sen_arg        xy[1]=moji_x-kyori*zusun*sin(sen_arg)
        xy[2]=moji_y+kyori*zusun*cos(sen_arg)
      end
      puts xy[0,5].join("\s")+"\s\""+moji
    else
      print $_
    end
  else
    print $_
  end
end


Indexへ
(19065)←【19068】→(19071)
------------------------
【タイトル】Re(3):出来ました!もう一つ質問が、あるのですが
【記事番号】 19068 (19065)
【 日時 】07/02/11 20:24
【 発言者 】スター

▼青いウサギさん:
>▼スターさん:
>
>下記で、出来ました。ありがとう御座います。
>
>質問は、90度の寸法値で、3ミリ以下の寸法が、動かないのですが、
>

3ミリではなく文字が寸法線をはみ出した時にでるようですね。

>どうしたら、宜しいでしょうか?0度の寸法値は、動くのですかが。
>
>度々お手数かけます。
>
>      moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>      x=xy[1].to_f-sen[0]
>      y=xy[2].to_f-sen[1]
>      l=sqrt(x**2+y**2)
>      moji_sen_arg=atan2(y,x)

応急処置です。
上記の下に以下の3行を追加してください。
   if moji_sen_arg<0
    moji_sen_arg=atan2(y,x)+2*PI
   end

作者のコジマさん勝手にすいません。


Indexへ
(19068)←【19071】→(19072)
------------------------
【タイトル】Re(4):ありがとう御座います
【記事番号】 19071 (19068)
【 日時 】07/02/11 22:09
【 発言者 】青いウサギ

▼スターさん:


>
>>下記で、出来ました。ありがとう御座います。
>>
>>質問は、90度の寸法値で、3ミリ以下の寸法が、動かないのですが、
>>
>
>3ミリではなく文字が寸法線をはみ出した時にでるようですね。

私は寸法図形に3ミリを使っているから、そうなるのですね。納得しました。


>
>>どうしたら、宜しいでしょうか?0度の寸法値は、動くのですかが。
>>
>>度々お手数かけます。
>>
>>      moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>>      x=xy[1].to_f-sen[0]
>>      y=xy[2].to_f-sen[1]
>>      l=sqrt(x**2+y**2)
>>      moji_sen_arg=atan2(y,x)
>
>応急処置です。
>上記の下に以下の3行を追加してください。
>   if moji_sen_arg<0
>    moji_sen_arg=atan2(y,x)+2*PI
>   end
>
>作者のコジマさん勝手にすいません。

上記追加で、出来ました。

お手数かけました。


Indexへ
(19071)←【19072】→(19302)
------------------------
【タイトル】Re(4):フォロー有難うございます。
【記事番号】 19072 (19068)
【 日時 】07/02/11 23:34
【 発言者 】コジマ

▼スターさん:
>>
>>      moji_arg=atan2(xy[4].to_f,xy[3].to_f)
>>      x=xy[1].to_f-sen[0]
>>      y=xy[2].to_f-sen[1]
>>      l=sqrt(x**2+y**2)
>>      moji_sen_arg=atan2(y,x)
>
>応急処置です。
>上記の下に以下の3行を追加してください。
>   if moji_sen_arg<0
>    moji_sen_arg=atan2(y,x)+2*PI
>   end
>
>作者のコジマさん勝手にすいません。


今日は、完全オフでした。
(この外変も自作であることを忘れていました。)

以下のスレッドとも、フォローしていただきまして、有難うございます。
http://hpcgi2.nifty.com/jw_cad/c-board.cgi?cmd=one;no=19064;id=004

蛇足ですが、
rubyの場合、式がひとつだけのif文は、1行にできます。
moji_sen_arg += 2*PI if moji_sen_arg<0


Indexへ
(19072)←【19302】//(19067)
------------------------
【タイトル】Re(4):本来の原因
【記事番号】 19302 (19068)
【 日時 】07/02/20 18:22
【 発言者 】コジマ

▼スターさん:
>応急処置です。
>上記の下に以下の3行を追加してください。
>   if moji_sen_arg<0
>    moji_sen_arg=atan2(y,x)+2*PI
>   end
>
>作者のコジマさん勝手にすいません。

本来の原因は、以下の条件式でした。(スクリプトファイル 50行目)
寸法線の下側に、「寸法値」で移動したものには、手を加えない為の条件式でしたが。(正確には、文字高さの割り出しが必要)
寸法線と重なった寸法線も移動しないので、とりあえず無条件で移動するようにします。

if sen_arg  xy[1]=moji_x-kyori*zusun*sin(sen_arg)
  xy[2]=moji_y+kyori*zusun*cos(sen_arg)
end

xy[1]=moji_x-kyori*zusun*sin(sen_arg)
xy[2]=moji_y+kyori*zusun*cos(sen_arg)