Indexへ
(3488)// 【3318】→(3337) ------------------------ 【タイトル】要望:連続寸法時の文字重なり解消できませんか?
【記事番号】 3318 (*)
【 日時 】05/09/10 15:03
【 発言者 】kawaguti
お世話になります。
小さい間隔が連続するような部分に、連続して寸法を入れていたら、
寸法文字が重なってしまいます。R-AM1時で寸法文字を移動できますが
数があると結構大変なんです。
寸法文字を小さくすることで解消できることもあるんですが、
昨今の老朽化が進んでいる現場の職人さんには 少しでも目に優しい
なるべく大きな文字の図面を渡したい(施工図なんで)
Vup直後で恐縮ですが これ、もし何とかなるなら、将来のVup時にでも
ご考慮のほど よろしくお願いします。≫作者様
Indexへ
(3318)← 【3337】→(3355) ------------------------ 【タイトル】Re(1):要望:連続寸法時の文字重なり解消できませんか?
【記事番号】 3337 (3318 )
【 日時 】05/09/12 09:57
【 発言者 】rj
▼kawagutiさん:
便乗でちょっと気づいたことを・・・。
込み入った寸法値を、[寸法値 移動]または[寸法値【変更】]する時
狙った寸法値の隣の寸法値が対象になってしまうことがあります。
込み入っている部分なので、操作を誤って隣の寸法線を指示しちゃったんだろうなぁと思っていたのですが、そうでもなかったようです。
込み入った寸法で、寸法線より寸法値の表示の方が長い場合は、寸法値が隣まではみ出します。
その為、寸法線を指示したつもりが、はみ出した隣の寸法値の文字端点を読み取ってしまう為、起こる現象のようです。
S_SET4 で
# | | | |5.寸法コマンドのとき文字端点を読取らない設定
は
1:読取らない
にしていますが、[寸法値 移動]や[寸法値【変更】]の時にはこの設定でも文字端点が読み取られるようですね。
Indexへ
(3337)← 【3355】→(3407) ------------------------ 【タイトル】Re(2):要望:連続寸法時の文字重なり解消できませんか?
【記事番号】 3355 (3337 )
【 日時 】05/09/13 09:21
【 発言者 】kawaguti
▼rjさん: こんにちは
ぐちゃぐちゃになった寸法値を入れ違いにしたり、指示線を引いて移動したり
と、いつも、面倒だなぁ、、なんとかならんのかなぁ、と、ぶつぶつ
(心の中で)言いながらやってたんで、とくに意識したことはなかったんですが、
なるほど、言われてみれば、ご指摘のように、同じ箇所を何度か
やり直したりしてました。 充分に拡大してやれば問題ないのでしょうけけど、
つい、そのままやってしまいますね。
こちらの方が優先順位が高いのかなぁ、でも手動で寸法文字移動するのが
最小限になったほうが嬉しいんだけど。。
Indexへ
(3355)← 【3407】→(3408) ------------------------ 【タイトル】Re(1):外部変形で
【記事番号】 3407 (3318 )
【 日時 】05/09/16 23:23
【 発言者 】コジマ
▼kawagutiさん:
>小さい間隔が連続するような部分に、連続して寸法を入れていたら、
>寸法文字が重なってしまいます。R-AM1時で寸法文字を移動できますが
>数があると結構大変なんです。
外部変形でチャレンジしてみました。
(バッチファイル1、テキストファイル1、スクリプトファイル2)
3回に分けて送信します。
この外部変形の実行には mswin32 版 Ruby のインストールが必要です。
以下でDLできます。
http://www61.tok2.com/home2/gravelroad/libraries.html
◎バッチファイル(ファイル名 連続寸法.bat)
以下をコピペしたあと、全角スペースを半角スペースに一括置換してください。
@REM 寸法値が重ならないように作図する
@echo off
goto do%1
REM #jww
REM #cd
rem #hm |1)作図(L) |2)設定(R)|
rem #:1
rem #mc
REM #zz
REM #zc
REM #h0
REM #0寸法線位置を指示してください
REM #1ln寸法線角度決定の基準線を指示してください
REM #2開始点(最左側・・垂直の場合は最下部)を指示してください
REM #3次の測定点を指示してください
REM #99#
rem #c
REM #e
:do1
copy jwc_temp.txt temp.txt > nul
del jwc_temp.txt
ruby -Ks 連続寸法.rb temp.txt > jwc_temp.txt
goto end
:do2
notepad 寸法.txt
echo h#寸法.txtを開きました > jwc_temp.txt
:end
◎テキストファイル(ファイル名 寸法.txt)
以下をコピペしたあと、全角スペースを半角スペースに一括置換してください。
文字種______________________________3
半角=0・全角=1の選択________________1
寸法線色・引出線色__________________1
矢印色・実点色________________________1
矢印=0・実点=1の選択__________________1
矢印の長さ__________________________2.5
引出線の位置________________________1
引出線の突き出し長さ________________1
寸法線の位置________________________0
寸法線と文字の離れ__________________1
寸法単位・mm=0:m=1__________________0
寸法単位表示・・無=0:有=1___________0
小数点以下有効桁数______________1
Indexへ
(3407)← 【3408】→(3409) ------------------------ 【タイトル】Re(2):スクリプトファイル1
【記事番号】 3408 (3407 )
【 日時 】05/09/16 23:39
【 発言者 】コジマ
◎スクリプトファイル(ファイル名 連続寸法.rb)
コピペ後、全角スペースを半角スペースに一括置換してください。
include Math
BEGIN{
$by=[];$date=[]
open("寸法.txt","r"){|f|
while line=f.gets
date=line.split(/\_+/)
$date << date[1].chop
end}
}
def main
$moji="cn"+$date[0]
$han_zen=$date[1]
$sen_lc="lc"+$date[2]
$ya_lc="lc"+$date[3]
$ten_lc="pn"+$date[3]
$ya_ten=$date[4]
$ya=$date[5].to_f
$yb=$ya*0.536/2
$hiki_iti=$date[6].to_f
$hiki_tuki=$date[7].to_f
$sun_iti=$date[8].to_f
$hanare=$date[9].to_f
$tani=$date[10]
$umu=$date[11]
$keta=$date[12]
ax=[];ay=[];$array=[];$hcw=[];$hch=[];$hcd=[]
while ARGF.gets
xy =split
if xy[0] =~ /^hs/
xy[1..-1].each{|item|$by< end
if xy[0] =~ /^hcw/
xy[1..-1].each{|item|$hcw< end
if xy[0] =~ /^hch/
xy[1..-1].each{|item|$hch< end
if xy[0] =~ /^hcd/
xy[1..-1].each{|item|$hcd< end
if xy[0] =~ /^lg/
$lg=xy[0].delete("lg")
$zusun=$by[$lg.hex]
end
if xy[0] =~ /^hp/ && xy[0] =~ /[0-9]$/
ax< ay< end
if xy[0] =~ /^[0-9]/ or xy[0] =~ /^-/
xy.collect!{ |item| item.to_f }
if xy[2] < xy[0]
xy[0],xy[2]=xy[2],xy[0]
xy[1],xy[3]=xy[3],xy[1]
elsif xy[2] == xy[0]
if xy[3] < xy[1]
xy[1],xy[3]=xy[3],xy[1]
end
end
x=xy[2]-xy[0]
y=xy[3]-xy[1]
$xy=sqrt(x**2+y**2)
sen_kakudo=atan2(y,x)
sendx=x/$xy;sendy=y/$xy
sen=xy
end
end
if ax[0]>ax[-1] or x==0 && ay[0]>ay[-1]
ax.reverse!
ay.reverse!
end
puts $sen_lc
print"z3\n"
l1=sqrt(ax[0]**2+ay[0]**2)
sen_kakudo1=atan2(ay[0],ax[0])
l11=l1*sin(sen_kakudo-sen_kakudo1)
tenx=-sen[0]
teny=-sen[1]
tenxy=sqrt(tenx**2+teny**2)
kakudo1=atan2(teny,tenx)
$y=tenxy*sin(kakudo1-sen_kakudo)
if $y<0
$hiki_iti=-1*$hiki_iti
$hiki_tuki=-1*$hiki_tuki
end
sen(ax[0]-$hiki_iti*$zusun*sendy,
ay[0]+($hiki_iti*$zusun)*sendx,
ax[0]-(($sun_iti+$hiki_tuki)*$zusun+l11)*sendy,
ay[0]+(($sun_iti+$hiki_tuki)*$zusun+l11)*sendx)
n=0
while n sen_kakudo1=atan2(ay[n],ax[n])
sen_kakudo2=atan2(ay[n+1],ax[n+1])
l1=sqrt(ax[n]**2+ay[n]**2)
l2=sqrt(ax[n+1]**2+ay[n+1]**2)
l11=l1*sin(sen_kakudo-sen_kakudo1)
l22=l2*sin(sen_kakudo-sen_kakudo2)
sunpo(ax[n]-($sun_iti*$zusun+l11)*sendy,
ay[n]+($sun_iti*$zusun+l11)*sendx,
ax[n+1]-($sun_iti*$zusun+l22)*sendy,
ay[n+1]+($sun_iti*$zusun+l22)*sendx)
sun_moji(ax[n]-($sun_iti*$zusun+l11)*sendy,
ay[n]+($sun_iti*$zusun+l11)*sendx,
ax[n+1]-($sun_iti*$zusun+l22)*sendy,
ay[n+1]+($sun_iti*$zusun+l22)*sendx)
print"z3\n"
sen(ax[n+1]-$hiki_iti*$zusun*sendy,
ay[n+1]+($hiki_iti*$zusun)*sendx,
ax[n+1]-(($sun_iti+$hiki_tuki)*$zusun+l22)*sendy,
ay[n+1]+(($sun_iti+$hiki_tuki)*$zusun+l22)*sendx)
n+=1
end
end
def sun_moji(x1,y1,x2,y2)
puts $moji
print"cc1\n"
print"z3\n"
kakudo=atan2(y2-y1,x2-x1)
senx=x2-x1;seny=y2-y1;senxy=sqrt(senx**2+seny**2)
dx=senx/senxy;dy=seny/senxy
if $tani=="1"
senxyl=senxy/1000
else
senxyl=senxy
end
hash={"0"=>"0","1"=>"1","2"=>"2","3"=>"3","4"=>"4",
"5"=>"5","6"=>"6","7"=>"7","8"=>"8","9"=>"9","."=>"."}
if $han_zen=="1"
tango=ika(senxyl).split('')
tango.collect!{|item| hash[item]}
ward=tango.join('')
else
ward=ika(senxyl)
end
if $umu =="1"
if $tani =="1"
if $han_zen=="1"
ward=ward+"m"
elsif $han_zen=="0"
ward=ward+"m"
end
elsif $tani =="0"
if $han_zen=="1"
ward=ward+"mm"
elsif $han_zen=="0"
ward=ward+"mm"
end
end
end
mojiw=mojisyu_array($moji,$han_zen)[0]
mojih=mojisyu_array($moji,$han_zen)[1]
mojid=mojisyu_array($moji,$han_zen)[2]
moji_a=ward.split('')
mojil=(moji_a.size*mojiw+(moji_a.size-1)*mojid)*$zusun
$y<0 ? hanare=-$hanare*2-mojih : hanare=$hanare
while moji_kasanari?(
x1+(x2-x1)/2-mojil/2*dx*$zusun-hanare*dy*$zusun,
y1+(y2-y1)/2-mojil/2*dy*$zusun+hanare*dx*$zusun,
ward,$moji,$han_zen,kakudo,$array)
$y<0 ? hanare -=mojih+0.5 : hanare +=mojih+0.5
end
printf("ch %e %e %e %e \"%s\n",
x1+(x2-x1)/2-hanare*dy*$zusun,
y1+(y2-y1)/2+hanare*dx*$zusun,
dx,dy,ward)
$array< x1+(x2-x1)/2-mojil/2*dx*$zusun-hanare*dy*$zusun, y1+(y2-y1)/2-mojil/2*dy*$zusun+hanare*dx*$zusun, ward,$moji,$han_zen,kakudo)
end
require "sun_lib.rb"
main()
Indexへ
(3408)← 【3409】→(3415) ------------------------ 【タイトル】Re(3):スクリプトファイル2
【記事番号】 3409 (3408 )
【 日時 】05/09/16 23:42
【 発言者 】コジマ
▼コジマさん:
◎スクリプトファイル(ファイル名 sun_lib.rb)
以下の文章をコピペ後、全角スペースを半角スペースに一括置換してください。
def sunpo(x1,y1,x2,y2)
kakudo=atan2(y2-y1,x2-x1)
senx=x2-x1;seny=y2-y1;senxy=sqrt(senx**2+seny**2)
dx=senx/senxy;dy=seny/senxy
print"z3\n"
puts $sen_lc
printf("%e %e %e %e \n",x1,y1,x2,y2)
if $ya_ten=="1"
puts $ten_lc
print"z3\n"
printf("pt %e %e\n",x1,y1)
print"z3\n"
printf("pt %e %e\n",x2,y2)
elsif $ya_ten=="0"
puts $sen_lc
print"z3\n"
sen(x1,y1,
x1+$ya*dx*$zusun+$yb*dy*$zusun,
y1+$ya*dy*$zusun-$yb*dx*$zusun)
print"z3\n"
sen(x1,y1,
x1+$ya*dx*$zusun-$yb*dy*$zusun,
y1+$ya*dy*$zusun+$yb*dx*$zusun)
print"z3\n"
sen(x2,y2,
x2-$ya*dx*$zusun+$yb*dy*$zusun,
y2-$ya*dy*$zusun-$yb*dx*$zusun)
print"z3\n"
sen(x2,y2,
x2-$ya*dx*$zusun-$yb*dy*$zusun,
y2-$ya*dy*$zusun+$yb*dx*$zusun)
end
end
def ika(x)
if $keta=="0"
a=((x.to_f).round).to_s
return a
else
keta=$keta.to_i
a=(((x.to_f)*(10**keta)).round/(10**keta).to_f).to_s
if a=~ /.0$/
a=(a.to_i).to_s
end
return a
end
end
def sen(x1,y1,x2,y2)
printf("%e %e %e %e \n",x1,y1,x2,y2)
end
#指定文字種の幅、高さ、間隔の配列を返す
def mojisyu_array(mojisyu,han_zen)
if mojisyu=~/^cn0/
mojisyu_a=mojisyu.split
if han_zen=="0"
mojiw=mojisyu_a[1].to_f/2
mojih=mojisyu_a[2].to_f
mojid=mojisyu_a[3].to_f/2
else
mojiw=mojisyu_a[1].to_f
mojih=mojisyu_a[2].to_f
mojid=mojisyu_a[3].to_f
end
else
if han_zen=="0"
mojiw=$hcw[mojisyu[2,1].to_i-1]/2
mojih=$hch[mojisyu[2,1].to_i-1]
mojid=$hcd[mojisyu[2,1].to_i-1]/2
else
mojiw=$hcw[mojisyu[2,1].to_i-1]
mojih=$hch[mojisyu[2,1].to_i-1]
mojid=$hcd[mojisyu[2,1].to_i-1]
end
end
return [mojiw,mojih,mojid]
end
#寸法値文字を囲んだときの線の配列を返す。(二重配列)
def mojiwaku(x,y,moji,mojisyu,han_zen,kakudo)
mojiw=mojisyu_array(mojisyu,han_zen)[0]
mojih=mojisyu_array(mojisyu,han_zen)[1]
mojid=mojisyu_array(mojisyu,han_zen)[2]
a=moji.split('')
mojil=(a.size*mojiw+(a.size-1)*mojid)*$zusun
sita_sen=[x,y,x+mojil*cos(kakudo),y+mojil*sin(kakudo)]
ue_sen=[x-mojih*$zusun*sin(kakudo),
y+mojih*$zusun*cos(kakudo),
x+mojil*cos(kakudo)-mojih*$zusun*sin(kakudo),
y+mojil*sin(kakudo)+mojih*$zusun*cos(kakudo)]
hidari_tatesen=[x,y,x-mojih*$zusun*sin(kakudo),
y+mojih*$zusun*cos(kakudo)]
migi_tatesen=[x+mojil*cos(kakudo),y+mojil*sin(kakudo),
x+mojil*cos(kakudo)-mojih*$zusun*sin(kakudo),
y+mojil*sin(kakudo)+mojih*$zusun*cos(kakudo)]
return [sita_sen,ue_sen,hidari_tatesen,migi_tatesen]
end
#寸法値文字の長さが、寸法線より短い(true)長い(false)
def moji_sunsen_area?(moji,mojisyu,han_zen)
mojiw=mojisyu_array(mojisyu,han_zen)[0]
mojih=mojisyu_array(mojisyu,han_zen)[1]
mojid=mojisyu_array(mojisyu,han_zen)[2]
a=moji.split('')
mojil=(a.size*mojiw+(a.size-1)*mojid)*$zusun
sunsen_l=moji.to_f
(sunsen_l>mojil) ? (return true) : (return false)
end
#寸法値文字の重なりの有(true)無(false)
def moji_kasanari?(x,y,moji,mojisyu,han_zen,kakudo,mojiwaku_array)
n=0
a=mojiwaku(x,y,moji,mojisyu,han_zen,kakudo)
mojiwaku_array.each{|item|
item.each{|item2|
a.each{|item3|
b=sen_sen_kouten(item2,item3)
if b!=nil
n+=1
end
}
}
}
(n>0) ? (return true) : (return false)
end
def sen_sen_kouten(sen1,sen2)
sen1.to_a
sen2.to_a
sen1.collect!{|item|item.to_f}
sen2.collect!{|item|item.to_f}
if sen1[0]>sen1[2]
sen1[0],sen1[2]=sen1[2],sen1[0]
sen1[1],sen1[3]=sen1[3],sen1[1]
elsif sen1[0]==sen1[2]
if sen1[1]>sen1[3]
sen1[1],sen1[3]=sen1[3],sen1[1]
end
end
if sen2[0]>sen2[2]
sen2[0],sen2[2]=sen2[2],sen2[0]
sen2[1],sen2[3]=sen2[3],sen2[1]
elsif sen2[0]==sen2[2]
if sen2[1]>sen2[3]
sen2[1],sen2[3]=sen2[3],sen2[1]
end
end
sen1x=sen1[2]-sen1[0]
sen1y=sen1[3]-sen1[1]
sen1xy=sqrt(sen1x**2+sen1y**2)
sen1_arg=atan2(sen1y,sen1x)
x1_1=sen1[0]
x1_2=sen1[0]+sen1xy
y1_1=sen1[1]
y1_2=sen1[1]
x=sen2[0]-sen1[0]
y=sen2[1]-sen1[1]
xy=sqrt(x**2+y**2)
arg=atan2(y,x)
henkaku=arg-sen1_arg
x2_1=sen1[0]+xy*cos(henkaku)
y2_1=sen1[1]+xy*sin(henkaku)
x=sen2[2]-sen1[0]
y=sen2[3]-sen1[1]
xy=sqrt(x**2+y**2)
arg=atan2(y,x)
henkaku=arg-sen1_arg
x2_2=sen1[0]+xy*cos(henkaku)
y2_2=sen1[1]+xy*sin(henkaku)
x=x2_2-x2_1
y=y2_2-y2_1
delta=y/x
if ika3(y2_1)>=ika3(y1_1) &&
ika3(y2_2)<=ika3(y1_1) or
ika3(y2_1)<=ika3(y1_1) &&
ika3(y2_2)>=ika3(y1_1)
y=y1_1-y2_1
dx=y/delta
kouten_x=x2_1+dx
kouten_y=y1_1
if kouten_x>=x1_1 && kouten_x<=x1_2
x=kouten_x-x1_1
y=kouten_y-y1_1
xy=sqrt(x**2+y**2)
kouten_xt=x1_1+xy*cos(sen1_arg)
kouten_yt=y1_1+xy*sin(sen1_arg)
return [kouten_xt,kouten_yt]
end
end
end
def ika3(x)
a=(((x.to_f)*1000).to_i/1000.to_f)
return a
end
Indexへ
(3409)← 【3415】→(3432) ------------------------ 【タイトル】Re(2):外部変形で
【記事番号】 3415 (3407 )
【 日時 】05/09/17 11:44
【 発言者 】kawaguti
コジマ 様
こんにちは お世話になります。
外部変形というと、範囲選択いっぱつ というイメージがあったんですが、
違うようで、jwの寸法入力の感じでやるのですね。
で、やってみましたところ、うまくいったところと、そうでもなくて、
たぶん私が作者想定外の使い方をしているのだと思うんですが、
うまく行かなかったところができましたので、結果をレポートさせていただ
きます。
文章で書くより、結果を見ていただいた方が解りやすいと思うので
↓ここにファイルを置きます、お手数ですが、dlお願いします。
(あつかましく要望もかいてしまいました。)
http://www.kawaguti.org/guest/test.jww
−−
おかげで、よくわからなかった Rubyのインストールが
完璧に出来ました。それはさておき、なんとか環境を整えて、ありがたいバッチを
動かしています。
Indexへ
(3415)← 【3432】→(3433) ------------------------ 【タイトル】Re(3):修正版 バッチファイル
【記事番号】 3432 (3415 )
【 日時 】05/09/18 21:31
【 発言者 】コジマ
▼kawagutiさん:
>で、やってみましたところ、うまくいったところと、そうでもなくて、
>たぶん私が作者想定外の使い方をしているのだと思うんですが、
>うまく行かなかったところができましたので、結果をレポートさせていただ
>きます。
図寸と、実寸をゴッチャにしていました。(^_^;
>引き出し線位置フリーでいつも使ってるんですが、そのようなモードは出来ないでしょうか?
寸法線位置と引出線の始点を指定するようにしました。
但し、寸法線位置決定後、引出線の始点を指示です。
(標準機能と逆。逆にするには書き換える箇所が多すぎるので)
>また、寸法は、寸法図形にならないでしょうか、後でその属性を付与しようとしても寸法線と離れていたら、寸法図形にならないのです.
寸法図形にしました。
>文字を交互にするのは無理でしょうか?
交互にするようにしましたが、やや過剰に反応する傾向があります。
実行する度に、結果が変わるので、「戻る」後、再実行すると、希望の処理になるようです。
どこに原因があるのか、自分でも分かりません。
(場当たり的に、いじくりまわしたのでコンガラってしまいました)
◎バッチファイル(ファイル名 連続寸法.bat)
@REM 寸法値が重ならないように作図する
@echo off
goto do%1
REM #jww
REM #cd
rem #hm |1)作図(L) |2)設定(R)|
rem #:1
rem #mc
REM #zz
REM #zc
REM #h0
REM #0寸法線位置を指示してください
REM #1引出線の始点を指示してください
REM #2ln寸法線角度決定の基準線を指示してください
REM #3開始点(最左側・・垂直の場合は最下部)を指示してください
REM #4次の測定点を指示してください
REM #99#
rem #c
REM #e
:do1
copy jwc_temp.txt temp.txt > nul
del jwc_temp.txt
ruby -Ks 連続寸法.rb temp.txt > jwc_temp.txt
goto end
:do2
notepad 寸法.txt
echo h#寸法.txtを開きました > jwc_temp.txt
:end
Indexへ
(3432)← 【3433】→(3434) ------------------------ 【タイトル】Re(4):修正版 スクリプトファイル1
【記事番号】 3433 (3432 )
【 日時 】05/09/18 21:35
【 発言者 】コジマ
◎スクリプトファイル(ファイル名 連続寸法.rb)
include Math
BEGIN{
$by=[];$date=[]
open("寸法.txt","r"){|f|
while line=f.gets
date=line.split(/\_+/)
$date << date[1].chop
end}
}
def main
$moji="cn"+$date[0]
$han_zen=$date[1]
$sen_lc="lc"+$date[2]
$ya_lc="lc"+$date[3]
$ten_lc="pn"+$date[3]
$ya_ten=$date[4]
$ya=$date[5].to_f
$yb=$ya*0.536/2
$hiki_iti=$date[6].to_f
$hiki_tuki=$date[7].to_f
$sun_iti=$date[8].to_f
$hanare=$date[9].to_f
$tani=$date[10]
$umu=$date[11]
$keta=$date[12]
ax=[];ay=[];$array=[];$hcw=[];$hch=[];$hcd=[]
while ARGF.gets
xy =split
if xy[0] =~ /^hs/
xy[1..-1].each{|item|$by< end
if xy[0] =~ /^hcw/
xy[1..-1].each{|item|$hcw< end
if xy[0] =~ /^hch/
xy[1..-1].each{|item|$hch< end
if xy[0] =~ /^hcd/
xy[1..-1].each{|item|$hcd< end
if xy[0] =~ /^lg/
$lg=xy[0].delete("lg")
$zusun=$by[$lg.hex]
end
if xy[0] == "hp1"
sitenx=xy[1].to_f
siteny=xy[2].to_f
end
if xy[0] =~ /^hp/ && xy[0] =~ /[0-9]$/ && xy[0] != "hp1" && xy[0] != "hp2"
ax< ay< end
if xy[0] =~ /^[0-9]/ or xy[0] =~ /^-/
xy.collect!{ |item| item.to_f }
if xy[2] < xy[0]
xy[0],xy[2]=xy[2],xy[0]
xy[1],xy[3]=xy[3],xy[1]
elsif xy[2] == xy[0]
if xy[3] < xy[1]
xy[1],xy[3]=xy[3],xy[1]
end
end
x=xy[2]-xy[0]
y=xy[3]-xy[1]
$xy=sqrt(x**2+y**2)
sen_kakudo=atan2(y,x)
sendx=x/$xy;sendy=y/$xy
sen=xy
end
end
if ax[0]>ax[-1] or x==0 && ay[0]>ay[-1]
ax.reverse!
ay.reverse!
end
puts $sen_lc
print"z3\n"
l1=sqrt(ax[0]**2+ay[0]**2)
sen_kakudo1=atan2(ay[0],ax[0])
l11=l1*sin(sen_kakudo-sen_kakudo1)
tenx=-sen[0]
teny=-sen[1]
tenxy=sqrt(tenx**2+teny**2)
kakudo1=atan2(teny,tenx)
$y=tenxy*sin(kakudo1-sen_kakudo)
if $y<0
$hiki_iti=-1*$hiki_iti
$hiki_tuki=-1*$hiki_tuki
end
sitenl=sqrt((sitenx-ax[0])**2+(siteny-ay[0])**2)
sen_kakudo2=atan2(siteny-ay[0],sitenx-ax[0])
sitenl1=sitenl*cos(sen_kakudo2-(sen_kakudo+PI/2))
sen(ax[0]+sitenl1*cos(sen_kakudo+PI/2),
ay[0]+sitenl1*sin(sen_kakudo+PI/2),
ax[0]-(($sun_iti+$hiki_tuki)*$zusun+l11)*sendy,
ay[0]+(($sun_iti+$hiki_tuki)*$zusun+l11)*sendx)
n=0
while n sen_kakudo1=atan2(ay[n],ax[n])
sen_kakudo2=atan2(ay[n+1],ax[n+1])
l1=sqrt(ax[n]**2+ay[n]**2)
l2=sqrt(ax[n+1]**2+ay[n+1]**2)
l11=l1*sin(sen_kakudo-sen_kakudo1)
l22=l2*sin(sen_kakudo-sen_kakudo2)
puts("msg")
sunpo(ax[n]-($sun_iti*$zusun+l11)*sendy,
ay[n]+($sun_iti*$zusun+l11)*sendx,
ax[n+1]-($sun_iti*$zusun+l22)*sendy,
ay[n+1]+($sun_iti*$zusun+l22)*sendx)
sun_moji(ax[n]-($sun_iti*$zusun+l11)*sendy,
ay[n]+($sun_iti*$zusun+l11)*sendx,
ax[n+1]-($sun_iti*$zusun+l22)*sendy,
ay[n+1]+($sun_iti*$zusun+l22)*sendx)
puts("\#")
ten_ya(ax[n]-($sun_iti*$zusun+l11)*sendy,
ay[n]+($sun_iti*$zusun+l11)*sendx,
ax[n+1]-($sun_iti*$zusun+l22)*sendy,
ay[n+1]+($sun_iti*$zusun+l22)*sendx)
sitenl=sqrt((sitenx-ax[n+1])**2+(siteny-ay[n+1])**2)
sen_kakudo2=atan2(siteny-ay[n+1],sitenx-ax[n+1])
sitenl1=sitenl*cos(sen_kakudo2-(sen_kakudo+PI/2))
print"z3\n"
sen(ax[n+1]+sitenl1*cos(sen_kakudo+PI/2),
ay[n+1]+sitenl1*sin(sen_kakudo+PI/2),
ax[n+1]-(($sun_iti+$hiki_tuki)*$zusun+l22)*sendy,
ay[n+1]+(($sun_iti+$hiki_tuki)*$zusun+l22)*sendx)
n+=1
end
end
def sun_moji(x1,y1,x2,y2)
puts $moji
kakudo=atan2(y2-y1,x2-x1)
senx=x2-x1;seny=y2-y1;senxy=sqrt(senx**2+seny**2)
dx=senx/senxy;dy=seny/senxy
if $tani=="1"
senxyl=senxy/1000
else
senxyl=senxy
end
hash={"0"=>"0","1"=>"1","2"=>"2","3"=>"3","4"=>"4",
"5"=>"5","6"=>"6","7"=>"7","8"=>"8","9"=>"9","."=>"."}
if $han_zen=="1"
tango=ika(senxyl).split('')
tango.collect!{|item| hash[item]}
ward=tango.join('')
else
ward=ika(senxyl)
end
if $umu =="1"
if $tani =="1"
if $han_zen=="1"
ward=ward+"m"
elsif $han_zen=="0"
ward=ward+"m"
end
elsif $tani =="0"
if $han_zen=="1"
ward=ward+"mm"
elsif $han_zen=="0"
ward=ward+"mm"
end
end
end
mojiw=mojisyu_array($moji,$han_zen)[0]
mojih=mojisyu_array($moji,$han_zen)[1]
mojid=mojisyu_array($moji,$han_zen)[2]
moji_a=ward.split('')
mojil=(moji_a.size*mojiw+(moji_a.size-1)*mojid)*$zusun
hanare=$hanare;m=1;i1=1;i2=1
while moji_kasanari?(
x1+(x2-x1)/2-(mojil/2)*dx-hanare*dy*$zusun,
y1+(y2-y1)/2-(mojil/2)*dy+hanare*dx*$zusun,
ward,$moji,$han_zen,kakudo,$array)
m *= -1
if m<0
hanare = -i1*(mojih+$hanare)
i1 +=1
else
hanare =$hanare+i2*(mojih+$hanare)
i2 +=1
end
end
$array< x1+(x2-x1)/2-(mojil/2)*dx-hanare*dy*$zusun,y1+(y2-y1)/2-(mojil/2)*dy+hanare*dx*$zusun,ward,$moji,$han_zen,kakudo)
printf("cs %e %e %e %e \"%s\n",
x1+(x2-x1)/2-(mojil/2)*dx-hanare*dy*$zusun,
y1+(y2-y1)/2-(mojil/2)*dy+hanare*dx*$zusun,
dx,dy,ward)
end
require "sun_lib.rb"
main()
Indexへ
(3433)← 【3434】→(3443) ------------------------ 【タイトル】Re(5):修正版 スクリプトファイル2
【記事番号】 3434 (3433 )
【 日時 】05/09/18 21:38
【 発言者 】コジマ
▼コジマさん:
◎スクリプトファイル(ファイル名 sun_lib.rb)
def sunpo(x1,y1,x2,y2)
kakudo=atan2(y2-y1,x2-x1)
senx=x2-x1;seny=y2-y1;senxy=sqrt(senx**2+seny**2)
dx=senx/senxy;dy=seny/senxy
puts $sen_lc
sen(x1,y1,x2,y2)
end
def ten_ya(x1,y1,x2,y2)
if $ya_ten=="1"
puts $ten_lc
print"z3\n"
printf("pt %.11f %.11f\n",x1,y1)
print"z3\n"
printf("pt %.11f %.11f\n",x2,y2)
elsif $ya_ten=="0"
puts $sen_lc
print"z3\n"
sen(x1,y1,
x1+$ya*dx*$zusun+$yb*dy*$zusun,
y1+$ya*dy*$zusun-$yb*dx*$zusun)
print"z3\n"
sen(x1,y1,
x1+$ya*dx*$zusun-$yb*dy*$zusun,
y1+$ya*dy*$zusun+$yb*dx*$zusun)
print"z3\n"
sen(x2,y2,
x2-$ya*dx*$zusun+$yb*dy*$zusun,
y2-$ya*dy*$zusun-$yb*dx*$zusun)
print"z3\n"
sen(x2,y2,
x2-$ya*dx*$zusun-$yb*dy*$zusun,
y2-$ya*dy*$zusun+$yb*dx*$zusun)
end
end
def ika(x)
if $keta=="0"
a=((x.to_f).round).to_s
return a
else
keta=$keta.to_i
a=(((x.to_f)*(10**keta)).round/(10**keta).to_f).to_s
if a=~ /.0$/
a=(a.to_i).to_s
end
return a
end
end
def sen(x1,y1,x2,y2)
printf("%.11f %.11f %.11f %.11f \n",x1,y1,x2,y2)
end
#指定文字種の幅、高さ、間隔の配列を返す
def mojisyu_array(mojisyu,han_zen)
if mojisyu=~/^cn0/
mojisyu_a=mojisyu.split
if han_zen=="0"
mojiw=mojisyu_a[1].to_f/2.0
mojih=mojisyu_a[2].to_f
mojid=mojisyu_a[3].to_f/2.0
else
mojiw=mojisyu_a[1].to_f
mojih=mojisyu_a[2].to_f
mojid=mojisyu_a[3].to_f
end
else
if han_zen=="0"
mojiw=$hcw[mojisyu[2,1].to_i-1]/2.0
mojih=$hch[mojisyu[2,1].to_i-1]
mojid=$hcd[mojisyu[2,1].to_i-1]/2.0
else
mojiw=$hcw[mojisyu[2,1].to_i-1]
mojih=$hch[mojisyu[2,1].to_i-1]
mojid=$hcd[mojisyu[2,1].to_i-1]
end
end
return [mojiw,mojih,mojid]
end
#寸法値文字を囲んだときの線の配列を返す。(二重配列)
def mojiwaku(x,y,moji,mojisyu,han_zen,kakudo)
mojiw=mojisyu_array(mojisyu,han_zen)[0]
mojih=mojisyu_array(mojisyu,han_zen)[1]
mojid=mojisyu_array(mojisyu,han_zen)[2]
a=moji.split('')
mojil=(a.size*mojiw+(a.size-1)*mojid)*$zusun
sita_sen=[x,y,x+mojil*cos(kakudo),y+mojil*sin(kakudo)]
ue_sen=[x-mojih*$zusun*sin(kakudo),
y+mojih*$zusun*cos(kakudo),
x+mojil*cos(kakudo)-mojih*$zusun*sin(kakudo),
y+mojil*sin(kakudo)+mojih*$zusun*cos(kakudo)]
hidari_tatesen=[x,y,x-mojih*$zusun*sin(kakudo),
y+mojih*$zusun*cos(kakudo)]
migi_tatesen=[x+mojil*cos(kakudo),y+mojil*sin(kakudo),
x+mojil*cos(kakudo)-mojih*$zusun*sin(kakudo),
y+mojil*sin(kakudo)+mojih*$zusun*cos(kakudo)]
return [sita_sen,ue_sen,hidari_tatesen,migi_tatesen]
end
#寸法値文字の重なりの有(true)無(false)
def moji_kasanari?(x,y,moji,mojisyu,han_zen,kakudo,mojiwaku_array)
n=0
a=mojiwaku(x,y,moji,mojisyu,han_zen,kakudo)
if mojiwaku_array.size>0
mojiwaku_array.each{|item|
item.each{|item2|
a.each{|item3|
b=sen_sen_kouten(item2,item3)
if b!=nil
n+=1
else
break
end
}
}
}
end
(n>0) ? (return true) : (return false)
end
def sen_sen_kouten(sen1,sen2)
sen1.to_a
sen2.to_a
sen1.collect!{|item|item.to_f}
sen2.collect!{|item|item.to_f}
if sen1[0]>sen1[2]
sen1[0],sen1[2]=sen1[2],sen1[0]
sen1[1],sen1[3]=sen1[3],sen1[1]
elsif sen1[0]==sen1[2]
if sen1[1]>sen1[3]
sen1[1],sen1[3]=sen1[3],sen1[1]
end
end
if sen2[0]>sen2[2]
sen2[0],sen2[2]=sen2[2],sen2[0]
sen2[1],sen2[3]=sen2[3],sen2[1]
elsif sen2[0]==sen2[2]
if sen2[1]>sen2[3]
sen2[1],sen2[3]=sen2[3],sen2[1]
end
end
sen1x=sen1[2]-sen1[0]
sen1y=sen1[3]-sen1[1]
sen1xy=sqrt(sen1x**2+sen1y**2)
sen1_arg=atan2(sen1y,sen1x)
x1_1=sen1[0]
x1_2=sen1[0]+sen1xy
y1_1=sen1[1]
y1_2=sen1[1]
x=sen2[0]-sen1[0]
y=sen2[1]-sen1[1]
xy=sqrt(x**2+y**2)
arg=atan2(y,x)
henkaku=arg-sen1_arg
x2_1=sen1[0]+xy*cos(henkaku)
y2_1=sen1[1]+xy*sin(henkaku)
x=sen2[2]-sen1[0]
y=sen2[3]-sen1[1]
xy=sqrt(x**2+y**2)
arg=atan2(y,x)
henkaku=arg-sen1_arg
x2_2=sen1[0]+xy*cos(henkaku)
y2_2=sen1[1]+xy*sin(henkaku)
x=x2_2-x2_1
y=y2_2-y2_1
delta=y/x
if ika3(y2_1)>=ika3(y1_1) &&
ika3(y2_2)<=ika3(y1_1) or
ika3(y2_1)<=ika3(y1_1) &&
ika3(y2_2)>=ika3(y1_1)
y=y1_1-y2_1
dx=y/delta
kouten_x=x2_1+dx
kouten_y=y1_1
if kouten_x>=x1_1 && kouten_x<=x1_2
x=kouten_x-x1_1
y=kouten_y-y1_1
xy=sqrt(x**2+y**2)
kouten_xt=x1_1+xy*cos(sen1_arg)
kouten_yt=y1_1+xy*sin(sen1_arg)
return [kouten_xt,kouten_yt]
else
return nil
end
else
return nil
end
end
def ika3(x)
a=(((x.to_f)*1000).to_i/1000.to_f)
return a
end
Indexへ
(3434)← 【3443】→(3447) ------------------------ 【タイトル】うホッ!
【記事番号】 3443 (3432 )
【 日時 】05/09/19 22:26
【 発言者 】kawaguti
いつものことなんですが
よせばいいのに、余計なことをして、システムをクラッシュさせてしまい
復旧に手間取って、ご報告が遅れました。すみません。
いろいろ願いを叶えていただいてありがとうございます。
寸法図形と文字交互書き込み、また、自由引き出し線など、確認させていただきました。
こうしてできあがったモノをみてみると、いろいろな条件があり、複雑ですね。
寸法文字が2段目になるのは、なるべく避けたいところですが、それだと、
寸法線から平行にオフセットしなければならなくなるし、やりすぎると
次の寸法文字があるし、、
過剰反応というか、思わぬ挙動(寸法文字が3段目になったり)もありますが、
いままで全部手動でやってたことを思えばかなり省力化できそうです。
と、ここまで書いてですが、おおむね寸法が混んでるところって、
平行線の連続だったりします。これ、jwwの 寸法の一括処理
(対象線をがばっと、範囲指定)のようなことが出来れば最強のような気が
するんですが、如何でしょう?゛ムズイですかねぇ|ω・`)
なにはともあれ、いまのままでも充分実用になるとおもいます。
もう少し使い込んでみます。ありがとうございます。
...ただいまシステム復旧率70パーセントくらい_| ̄|○
Indexへ
(3443)← 【3447】→(3449) ------------------------ 【タイトル】Re(1):一括処理
【記事番号】 3447 (3443 )
【 日時 】05/09/20 09:36
【 発言者 】コジマ
▼kawagutiさん:
>と、ここまで書いてですが、おおむね寸法が混んでるところって、
>平行線の連続だったりします。これ、jwwの 寸法の一括処理
>(対象線をがばっと、範囲指定)
線角度1 線角度2 角度指定 一括処理 を一つのバッチファイルにまとめて登録しました。
以下でDLできます。
http://forum.nifty.com/farchi/download/cad/jw/tan_sun.htm
「寸法」コマンドの一括処理は、右クリックで属性を指定できますが、
これはできません。
属性を指定する場合は、範囲選択後、コントロールバーの「属性選択」か、クロックメニューで属性選択します。
その後、一括処理のバグがみつかりました。
「連続寸法4.rb」を開いて、98行目を以下のように修正してください。
sen2=sen.sort{|a,b|a[0]==b[0] ? a[1]<=>b[1]: a[0]<=>b[0]}
修正する
↓
sen2=sen.sort{|a,b|ika3(a[0])==ika3(b[0]) ? a[1]<=>b[1]: a[0]<=>b[0]}
「連続寸法.rb」「連続寸法2.rb」「連続寸法3.rb」「連続寸法4.rb」とも
文末から4行めに $array.shift if $array.size>3 を挿入すると、やや安定するようです。
例
$array.shift if $array.size>3 #←挿入する文。
end
require "sun_lib.rb"
main()
但し、図寸1mm以 の間隔が連続すると、重なりがでます。
>3 を >4 ... >5 などに変えてみてください。
Indexへ
(3447)← 【3449】→(3450) ------------------------ 【タイトル】Re(2):一括処理
【記事番号】 3449 (3447 )
【 日時 】05/09/20 13:50
【 発言者 】kawaguti
コジマ様
こんにちは お世話になります。
システムの復旧もおおむね終わったので、
指示のあったところ、修正して、早速使わせていただいております。
特に、4)一括処理 これはすばらしい。使い方は人それぞれでしょうが、
私の場合、一番使用頻度が多くなりそうな予感が、、
で、早速実務使用しているうちに、少し気になる挙動がでましたので
ご報告させていただきます。
↓お手数ですが、dlのほどよろしくお願いします。
http://www.kawaguti.org/guest/test2.jww
Indexへ
(3449)← 【3450】→(3451) ------------------------ 【タイトル】Re(3):再修正
【記事番号】 3450 (3449 )
【 日時 】05/09/20 14:44
【 発言者 】コジマ
>で、早速実務使用しているうちに、少し気になる挙動がでましたので
>ご報告させていただきます。
線が重なっていると、そこで計算不能になるようです。
さきほど修正した、「連続寸法4.rb」 の98行目を再度修正してください。
sen2=sen.sort{|a,b|ika3(a[0])==ika3(b[0]) ? a[1]<=>b[1]: a[0]<=>b[0]}
↓修正
↓
sen2=(sen.sort{|a,b|ika3(a[0])==ika3(b[0]) ? a[1]<=>b[1]: a[0]<=>b[0]}).uniq
Indexへ
(3450)← 【3451】→(3452) ------------------------ 【タイトル】ぐっどです。ヽ(´ー`)ノ
【記事番号】 3451 (3450 )
【 日時 】05/09/20 15:37
【 発言者 】kawaguti
▼コジマさん:
すばやい対応ありがとうこざいます。
言い忘れましたが、引き出し線のところも 前回すっきりと修正されてましたね。
場合によっては処理後にも手動で移動しなければならないところが残っても
ここまでやっていただければ、相当手順が減ることに間違いありません。
一括で、寸法文字がすっきりと入ったときには、快感すら覚えます。
本当にお世話になりました。ありがたく使わせていただきます。
蛇足ですが、使用頻度からいうと、私の場合 1)線角度と、4)一括処理 が
一番多そうなんですが、省エネルギーの観点から、このあたりを
マウスのL,Rで使いたいんです。これ、バッチ内部の順番を変えると、
何とかなりますよね、
Indexへ
(3451)← 【3452】→(3453) ------------------------ 【タイトル】Re(1):バッチファイルの書き換え
【記事番号】 3452 (3451 )
【 日時 】05/09/20 16:54
【 発言者 】コジマ
▼kawagutiさん:
>蛇足ですが、使用頻度からいうと、私の場合 1)線角度と、4)一括処理 が
>一番多そうなんですが、省エネルギーの観点から、このあたりを
>マウスのL,Rで使いたいんです。これ、バッチ内部の順番を変えると、
>何とかなりますよね、
バッチファイルを以下のように書き換えてください。
@REM 寸法値が重ならないように作図する
@echo off
goto do%1
REM #jww
REM #cd
rem #hm |1)線角度1(L)|2)一括処理(R)|3)角度指定|4)線角度2|5)設定|
rem #:1
rem #mc
REM #hp
REM #1引出線の始点を指示してください
REM #2寸法線位置を指示してください
REM #3ln寸法線角度決定の基準線を指示してください
REM #4開始点(最左側・・垂直の場合は最下部)を指示してください
REM #5次の測定点を指示してください
REM #99#
rem #c
REM #e
rem #:2
rem #mc
REM #hp
REM #h2
REM #hc寸法を一括作図する線を選択してください。
REM #1引出線の始点を指示してください
REM #2寸法線位置を指示してください
rem #c
REM #e
rem #:3
rem #mc
REM #hp
REM #h0
REM #k寸法線の角度を指示してください |1)0度(L)|2)90度(R)|3)45度|4)-45度|5)30度|6)-30度|7)60度|8)-60度|/_/a
REM #1引出線の始点を指示してください
REM #2寸法線位置を指示してください
REM #3開始点(最左側・・垂直の場合は最下部)を指示してください
REM #4次の測定点を指示してください
REM #99#
rem #c
REM #e
rem #:4
rem #mc
REM #hp
REM #1寸法線位置を指示してください
REM #2ln寸法線角度決定の基準線を指示してください
REM #3開始点(最左側・・垂直の場合は最下部)を指示してください
REM #4次の測定点を指示してください
REM #99#
rem #c
REM #e
:do1
copy jwc_temp.txt temp.txt > nul
del jwc_temp.txt
ruby -Ks 連続寸法.rb temp.txt > jwc_temp.txt
goto end
:do2
copy jwc_temp.txt temp.txt > nul
del jwc_temp.txt
ruby -Ks 連続寸法4.rb temp.txt > jwc_temp.txt
goto end
:do3
copy jwc_temp.txt temp.txt > nul
del jwc_temp.txt
ruby -Ks 連続寸法3.rb temp.txt %2 > jwc_temp.txt
goto end
:do4
copy jwc_temp.txt temp.txt > nul
del jwc_temp.txt
ruby -Ks 連続寸法2.rb temp.txt > jwc_temp.txt
goto end
:do5
notepad 寸法.txt
echo h#寸法.txtを開きました > jwc_temp.txt
:end
Indexへ
(3452)← 【3453】→(3456) ------------------------ 【タイトル】Re(2):バッチファイルの書き換え
【記事番号】 3453 (3452 )
【 日時 】05/09/20 17:37
【 発言者 】kawaguti
▼コジマさん:
素早い対応 何度もありがとうごさいます。
つい先日のことなんですが、同業の友人と話をしていて、
1/50くらいでコンクリートの図面を書くと、何もないところはスカスカで、
込み入ったところは 寸法がぐちゃぐちゃになって、
後が大変だよねって話をしていたところだったんです
変更が付きものの施工図に、寸法図形は必須だし、ぐちゃぐちゃしてるところは
文字をひとつひとつ移動して、指示線をいれてみたり、するんですが
量があるので それだけのために 結構エネルギーを消耗してました。
その友人にも紹介させていただきたく思いますが、
たぶんそのような悩みを抱えてる人は他にもいて、
それなりの需要はあると思われます
ありがたく使わせていただきます。本当にお世話になりました。。
Indexへ
(3453)← 【3456】→(3459) ------------------------ 【タイトル】寸法線端部が・・・
【記事番号】 3456 (3452 )
【 日時 】05/09/22 08:54
【 発言者 】nori-nori romeo@js2.so-net.ne.jp
コジマ様 何時もながら貴重な外変 有難うございます。
感謝しております。
私の設定がまずいのか 使用法が不正なのか
寸法先端部を矢印に設定すると巧く動いてくれません。
実点に設定した場合は完璧に動いています。
どこが拙いのでしょうか?
設定方法等ありましたら ご教授お願い致します。
Indexへ
(3456)← 【3459】→(3460) ------------------------ 【タイトル】Re(1):寸法線端部が・・・
【記事番号】 3459 (3456 )
【 日時 】05/09/22 14:18
【 発言者 】kawaguti
▼nori-noriさん:
こんにちは
たしかに、矢印にすると、なんかエラーになってるようですね。
自分は矢印使わなかったので 全然気がつかなかったです
ご報告のみですけど、
Indexへ
(3459)← 【3460】→(3461) ------------------------ 【タイトル】Re(1):矢印に設定しない。
【記事番号】 3460 (3456 )
【 日時 】05/09/22 14:19
【 発言者 】コジマ
▼nori-noriさん:
>>寸法先端部を矢印に設定すると巧く動いてくれません。
>実点に設定した場合は完璧に動いています。
寸法が混みいっているところは、実点でないと都合が悪いので、
矢印には対応させていません。
ただ、寸法.txt は他の外部変形に使っているものを
そのまま兼用したので
矢印=0・実点=1の選択________________1
の部分を修正していませんでした。
(私の環境では修正すると都合が悪い)
まぎらわしいようでしたら、
寸法線端部(実点=1)________________1
とでも修正してください。
Indexへ
(3460)← 【3461】→(3484) ------------------------ 【タイトル】ご指導 了解です。
【記事番号】 3461 (3460 )
【 日時 】05/09/22 20:38
【 発言者 】nori-nori romeo@js2.so-net.ne.jp
▼コジマさん:
早速の回答 有難うございました。
>寸法が混みいっているところは、実点でないと都合が悪いので、
>矢印には対応させていません。
>
>まぎらわしいようでしたら、
>寸法線端部(実点=1)________________1
>とでも修正してください。
ご指導の通りに致します。
Indexへ
(3461)← 【3484】→(3493) ------------------------ 【タイトル】Re(2):寸法値位置安定版の登録
【記事番号】 3484 (3452 )
【 日時 】05/09/25 22:56
【 発言者 】コジマ
やっと、寸法値位置を安定させることが出来ました。
(文字の重なりの検出を、文字枠斜線と右縦線だけの交差判定にしたら安定しました。)
以下でDLできます。
http://forum.nifty.com/farchi/download/cad/jw/tan_sun.htm
■前回との変更点
寸法値の位置が不安定な(実行の度に変わる)バグを修正。
一括処理においてデータのソートが不完全だったバグを修正。
矢印に対応(但し、寸法線の長さが 矢印長さ*2 未満の時は
矢印長さを 寸法線の長さ/2.2 とする。)
Indexへ
(3484)← 【3493】→(3494) ------------------------ 【タイトル】矢印設定について
【記事番号】 3493 (3484 )
【 日時 】05/09/27 07:38
【 発言者 】koshi
コジマ様
はじめまして
とても素晴らしい外変、有難う御座います。
あつかましいお願いだとは思いますが、下記の設定が出来ないでしょうか?
1:矢印の角度を任意に設定
2:設定した矢印長さ×2.5倍より短い寸法線の場合は実点になる
ご検討頂ければ幸いです。
どうぞ宜しくお願い致します。
Indexへ
(3493)← 【3494】→(3501) ------------------------ 【タイトル】Re追加要望
【記事番号】 3494 (3493 )
【 日時 】05/09/27 10:27
【 発言者 】ハマグチ hama@mb.i-chubu.ne.jp
▼koshiさん:
>コジマ様
>
>はじめまして
>とても素晴らしい外変、有難う御座います。
>あつかましいお願いだとは思いますが、下記の設定が出来ないでしょうか?
>
>1:矢印の角度を任意に設定
>2:設定した矢印長さ×2.5倍より短い寸法線の場合は実点になる
>
>ご検討頂ければ幸いです。
>どうぞ宜しくお願い致します。
私もあつかましいお願いですが お暇なときにお考えいただければ
ありがたいです
3:桁数表(,)の表示機能の追加をお願いできませんか
Indexへ
(3494)← 【3501】→(3502) ------------------------ 【タイトル】Re(1):修正版登録
【記事番号】 3501 (3494 )
【 日時 】05/09/27 20:00
【 発言者 】コジマ
▼ハマグチさん:
>1:矢印の角度を任意に設定
>2:設定した矢印長さ×2.5倍より短い寸法線の場合は実点になる
>3:桁数表(,)の表示機能の追加をお願いできませんか
修正版登録を登録しました。
以下でDLしてください。
http://forum.nifty.com/farchi/download/cad/jw/tan_sun.htm
■前回との変更点
矢印の角度を任意に設定できるようにした。
寸法線の長さが 矢印長さ*2.5 未満の時は、端点は実点とする。
但し、前後の寸法線の矢印と重なるときは、無印とする。
3桁の区切り文字(コンマ・スペース)が挿入できるようにした。
Indexへ
(3501)← 【3502】→(3503) ------------------------ 【タイトル】Re(2):修正版登録
【記事番号】 3502 (3501 )
【 日時 】05/09/27 21:51
【 発言者 】かず
すばらしい外変ありがとうございます。
例えば、壁芯からの仕上寸法の振り分け等を記入するとき、寸法値を上下に動かして重なりを解消するのでなく、左右に動かす方が好みです。動かす方向を選択できればうれしいです。
あつかましい要望ですが、お時間が取れたときにでも対応していただければ幸いです。
Indexへ
(3502)← 【3503】→(3504) ------------------------ 【タイトル】Re(2):修正版登録
【記事番号】 3503 (3501 )
【 日時 】05/09/27 22:04
【 発言者 】ハマグチ hama@mb.i-chubu.ne.jp
早々いただきました 大変便利です。
色々な寸法記入の外部変形を利用しておりますが
最強です 大切に利用させていただきます。
本当に ありがとうございます。
Indexへ
(3503)← 【3504】→(3505) ------------------------ 【タイトル】Re(2):修正版登録
【記事番号】 3504 (3501 )
【 日時 】05/09/27 22:28
【 発言者 】koshi
コジマ様
修正版有難う御座います。
早速使ってみて感激しました。
矢印と実点が重なった場合に無印にできたらいいなと
考えていたところで、そこまで可能になっていて驚きました。
本当に有難う御座いました。
Indexへ
(3504)← 【3505】→(3507) ------------------------ 【タイトル】Re(2):修正版登録
【記事番号】 3505 (3501 )
【 日時 】05/09/27 22:43
【 発言者 】makoto
▼コジマさん:
>
これはすばらしいものが完成されました。
しかしながらコジマさんには、いろいろ便利なものを
提供して頂き、jwwの使い勝手向上賞が有れば
差し上げたい思いです.
個人としては自分で何とかできればしたいですが、
外変は敷居が高くrubyは全く?でして、
今後とも宜しくお願いします。
早速ctrl+sに割付られて常用ものでありがたく使わせて頂きます
Indexへ
(3505)← 【3507】→(3509) ------------------------ 【タイトル】引き出し線位置について
【記事番号】 3507 (3501 )
【 日時 】05/09/28 08:12
【 発言者 】koshi
コジマ様
度々のお願いで大変恐縮ですが、下記の設定は可能でしょうか?
1:引き出し線の開始位置を指示点から一定にする
引出線の位置____________________________2
(この場合、引き出し線の開始位置の指示はしない)
2:通常寸法と寸法図形を選択可能
お手数をお掛けして申し訳有りません。
ご検討のほど宜しくお願い致します。
Indexへ
(3507)← 【3509】→(3531) ------------------------ 【タイトル】追加要望
【記事番号】 3509 (3507 )
【 日時 】05/09/28 09:20
【 発言者 】koshi
コジマ様
もう一点気づきましたので合わせてご検討頂ければ幸いです。
3:寸法線の線種を線色同様設定したい
本当にお手数をお掛けしまして申し訳ありません。
どうぞ宜しくお願い致します。
Indexへ
(3509)← 【3531】→(3532) ------------------------ 【タイトル】Re(1):追加要望
【記事番号】 3531 (3509 )
【 日時 】05/09/28 21:35
【 発言者 】コジマ
▼koshiさん:
>3:寸法線の線種を線色同様設定したい
線種設定というより、実線固定ですね。
うっかり、実線固定を忘れていました。
スクリプトファイルの文頭の
puts "lt1"
と記述すれば、実線固定になります。
例
puts "lt1" #挿入する
include Math
$by=[];$date=[];$sen=[]
・・・・・・・・・・
Indexへ
(3531)← 【3532】→(3583) ------------------------ 【タイトル】Re(2):追加要望
【記事番号】 3532 (3531 )
【 日時 】05/09/29 07:25
【 発言者 】koshi
▼コジマさん:
実線固定、確認させて頂きました。
早々に対応して頂き、本当に有難う御座います。
Indexへ
(3532)← 【3583】→(3598) ------------------------ 【タイトル】ありがとうございます
【記事番号】 3583 (3507 )
【 日時 】05/10/03 08:35
【 発言者 】koshi
コジマ様
新機能確認させて頂きました。感謝いたします。
こちらの要望通りにして頂き、本当に有難う御座います。
もう一つだけ教えて頂きたいのですが
寸法値(文字)の基点が左下になりますが
中下に固定したい場合はどこを修正すればいいですか?
自分で修正できるようであれば行いますので。
どうぞ宜しくお願いいたします。
Indexへ
(3583)← 【3598】→(3600) ------------------------ 【タイトル】Re(1):左下?
【記事番号】 3598 (3583 )
【 日時 】05/10/04 18:58
【 発言者 】コジマ
▼koshiさん:
>寸法値(文字)の基点が左下になりますが
>中下に固定したい場合はどこを修正すればいいですか?
どのような、操作をされるのでしょうか?
スクリプトは確かに、基点左下で座標計算していますが、文字位置は
寸法線に対して中下で作図されるはずですが?
移動する時の文字基点は、
その時の「文字」コマンドで設定されている文字基点です。
(スクリプトでは固定できません)
Indexへ
(3598)← 【3600】→(3601) ------------------------ 【タイトル】左下になるんです・・・
【記事番号】 3600 (3598 )
【 日時 】05/10/04 20:11
【 発言者 】koshi
▼コジマさん:
ご連絡ありがとうございます。
>どのような、操作をされるのでしょうか?
いただいた外変で矢印付きの普通寸法で作図した文字(寸法値)を
変更または移動させようとした時に基点が左下になります。
>移動する時の文字基点は、
>その時の「文字」コマンドで設定されている文字基点です。
文字コマンドで基点を中下に設定した状態で寸法値をクリックしても
基点は左下に変わります。
これは「MOFST設定」で文字の基準点を記憶させているからだと思いますが
左下に変わると言うことは作図される時点での基点は左下になっているの
ではないでしょうか?(私だけでしたらすみません)
どうぞ宜しくお願い致します。
Indexへ
(3600)← 【3601】→(3602) ------------------------ 【タイトル】左下NI
【記事番号】 3601 (3598 )
【 日時 】05/10/04 22:50
【 発言者 】koshi
▼コジマさん:
>▼koshiさん:
>>寸法値(文字)の基点が左下になりますが
>>中下に固定したい場合はどこを修正すればいいですか?
>
>どのような、操作をされるのでしょうか?
>
>スクリプトは確かに、基点左下で座標計算していますが、文字位置は
>寸法線に対して中下で作図されるはずですが?
>
>移動する時の文字基点は、
>その時の「文字」コマンドで設定されている文字基点です。
>(スクリプトでは固定できません)
Indexへ
(3601)← 【3602】→(3647) ------------------------ 【タイトル】上のは間違いです・・・寸法図形無しの場合が左下基点になります
【記事番号】 3602 (3601 )
【 日時 】05/10/04 23:06
【 発言者 】koshi
▼コジマさん:
寸法図形で作図した寸法を解除して寸法値を変更すると
基点はちゃんと中下になっていました。
しかし寸法図形無しで作図するとやはり左下基点となるようです。
寸法図形無しで作図することがほとんどなので・・・
わがままを言って申し訳ありませんが、どうぞ宜しくお願い致します。
Indexへ
(3602)← 【3647】→(3534) ------------------------ 【タイトル】バージョンアップ 感謝です。
【記事番号】 3647 (3598 )
【 日時 】05/10/09 09:42
【 発言者 】koshi
▼コジマさん:
お世話になっております。
バージョンアップありがとうございました。
文字基点が中下に設定されて私にとっては最強のものに
なりました。
また並列寸法もよく使うので本当に感謝、感謝です。
いろいろとご無理を聞いて頂き本当に
ありがとうございました。
Indexへ
(3647)← 【3534】→(3536) ------------------------ 【タイトル】感謝と要望です。
【記事番号】 3534 (3501 )
【 日時 】05/09/29 09:45
【 発言者 】ひでと
私も使わせていただきます。すばらしいと思います。
本当は外変よりも、JW本体でこんなすばらしい機能をつけて欲しかったと思います。
寸法は、これ一本で済みそうです。ありがとうございました。
さらに要望させていただきたいのは
連続寸法線の両端が狭い時、寸法文字を横(寸法線方向)にずらして、
(点を描画するのでなく)、矢印線を引く機能です。
結構良く使う機能ではないでしょうか。
Indexへ
(3534)← 【3536】→(3539) ------------------------ 【タイトル】ps.文字種の設定について教えてください
【記事番号】 3536 (3534 )
【 日時 】05/09/29 10:50
【 発言者 】ひでと
文字種__________________________________0 3.4 3.4 0.1 1
の意味について教えていただけないでしょうか。
文字色、文字高さ、文字幅、文字間隔と想像していますが、
最後の1が良く解らないのですが、よろしくお願いします。
Indexへ
(3536)← 【3539】→(3540) ------------------------ 【タイトル】Re(1):任意文字色です。
【記事番号】 3539 (3536 )
【 日時 】05/09/29 14:55
【 発言者 】コジマ
▼ひでとさん:
>文字種__________________________________0 3.4 3.4 0.1 1
>
>の意味について教えていただけないでしょうか。
>文字色、文字高さ、文字幅、文字間隔と想像していますが、
>最後の1が良く解らないのですが、よろしくお願いします。
任意文字の設定になっています。
任意文字種指定(0) 文字幅(3.4) 文字高さ(3.4) 文字間隔(0.1) 文字色(1)
正確には、cn0 3.4 3.4 0.1 1
(但し、正確に記入すると、書き込み文字種になります。cnは省略)
文字種1〜10 ならば 1〜10 の番号を記入してください。
Indexへ
(3539)← 【3540】→(3543) ------------------------ 【タイトル】Re(2):任意文字色です。
【記事番号】 3540 (3539 )
【 日時 】05/09/29 15:29
【 発言者 】ym
▼コジマさん:
>任意文字の設定になっています。
>任意文字種指定(0) 文字幅(3.4) 文字高さ(3.4) 文字間隔(0.1) 文字色(1)
>正確には、cn0 3.4 3.4 0.1 1
> (但し、正確に記入すると、書き込み文字種になります。cnは省略)
>文字種1〜10 ならば 1〜10 の番号を記入してください。
いつも実用的な外変ソフト提供ありがとうございます。
上記通り文字色3(green)を設定したのですが変わりません。
設定が間違っているのでしょうか。
ご教示ください。
Indexへ
(3540)← 【3543】→(3545) ------------------------ 【タイトル】Re(3):任意文字色です。
【記事番号】 3543 (3540 )
【 日時 】05/09/29 20:35
【 発言者 】コジマ
▼ymさん:
>上記通り文字色3(green)を設定したのですが変わりません。
0 3.4 3.4 0.1 3 です。
3 3.4 3.4 0.1 1 にすると、文字種3、 2列目以降の数値は無視されます。
Indexへ
(3543)← 【3545】→(3548) ------------------------ 【タイトル】Re(4):任意文字色です。
【記事番号】 3545 (3543 )
【 日時 】05/09/29 22:06
【 発言者 】ym
▼コジマさん:
>>上記通り文字色3(green)を設定したのですが変わりません。
>0 3.4 3.4 0.1 3 です。
>3 3.4 3.4 0.1 1 にすると、文字種3、 2列目以降の数値は無視されます。
上記設定にしたのですが文字色変化ありません。(紺色のまま)
基本設定の問題でしょうか。その他設定確認事項
ございませんか。(-_-;)
寸法図作成後属性変更で修正しようと思いましたが
属性変更もできません、図面中ほかの文字は属性変更可です。
よろしくお願いします。・・・
Indexへ
(3545)← 【3548】→(3552) ------------------------ 【タイトル】Re(5):任意文字色です。
【記事番号】 3548 (3545 )
【 日時 】05/09/30 14:06
【 発言者 】コジマ
▼ymさん:
>上記設定にしたのですが文字色変化ありません。(紺色のまま)
青色のことですか?
書込文字種ではないですか?
数字の区切りが全角スペース、または、
Jwwが理解できない文字種を設定すると、
書込文字種になりますが。
>基本設定の問題でしょうか。その他設定確認事項
>ございませんか。(-_-;)
>寸法図作成後属性変更で修正しようと思いましたが
>属性変更もできません、図面中ほかの文字は属性変更可です。
寸法図形なので、そのままでは、属性変更では
文字色の変更はできません。
寸法図形を解除すれば、変更はできます。
寸法図形をパラメトリック変形すると、
「寸法」コマンドの「寸法設定」で指定した文字種に変わります。
Indexへ
(3548)← 【3552】→(3553) ------------------------ 【タイトル】Re(6):任意文字色です。
【記事番号】 3552 (3548 )
【 日時 】05/09/30 17:53
【 発言者 】ym
▼コジマさん:
>>上記設定にしたのですが文字色変化ありません。(紺色のまま)
>青色のことですか?
はいその通りです。
下記設定で間違いないと思うのですが?
文字種__________________________________0 3.0 3.0 0.1 3
半角=0・全角=1の選択____________________0
寸法線色・引出線色______________________0
矢印色・実点色__________________________3
矢印=0・実点=1の選択____________________0
矢印の長さ______________________________3
矢印角度________________________________15
引出線の位置____________________________1
引出線の突き出し長さ____________________1
寸法線の位置____________________________0
寸法線と文字の離れ______________________1
寸法単位・mm=0:m=1______________________0
寸法単位表示・・無=0:有=1_______________0
小数点以下有効桁数______________________1
3桁区切り 無=0・,=1・スペース=2____________1
>寸法図形なので、そのままでは、属性変更では
>文字色の変更はできません。
>寸法図形を解除すれば、変更はできます。
寸法図形を解除と同時にGREEN(3)に
変わります。
文字種は最初の0を変更することで動作しています。
環境の問題でしょうか。・・・
最後の数字3でも他の数字でも青のままです
何度も同じような質問でごめん
よろしくお願いします。
Indexへ
(3552)← 【3553】→(3565) ------------------------ 【タイトル】Re(7):任意文字色です。
【記事番号】 3553 (3552 )
【 日時 】05/09/30 18:37
【 発言者 】koshi
▼ymさん:
寸法図形として作図されるため文字色は何色に
設定していても青色になりますよ。
>寸法図形を解除と同時にGREEN(3)に変わります。
と言うことは正常に動作しているのではないですか?
逆に普通に書いた寸法を寸法図形に変換したら
青色に変わりませんか?
Indexへ
(3553)← 【3565】→(3580) ------------------------ 【タイトル】寸法図形の文字色は「S_COMM_8」の設定です
【記事番号】 3565 (3553 )
【 日時 】05/10/01 09:23
【 発言者 】mmmmmhara
koshiさん、ymさん 初めまして
コジマさん、大変ありがたい外変大切に使わせて頂きます。
>寸法図形として作図されるため文字色は何色に
>設定していても青色になりますよ。
これは題名通りで、環境設定ファイル S_COMM_8 の4番目の設定で変わります。
私の環境では、環境設定ファイルが優先されています。
きっと、その設定が青色に設定されていたのではないでしょうか?
ちなみに私は青色ではありません。
これは、図面上数多ある「数字」から寸法図形の存在を浮き上がらせる為と、
私は理解しています。
S_COMM_8 の4番目の設定を、初期値「0」にすればご希望通りになるのではと思いますが。
>>寸法図形を解除と同時にGREEN(3)に変わります。
>と言うことは正常に動作しているのではないですか?
>
>逆に普通に書いた寸法を寸法図形に変換したら
>青色に変わりませんか?
大変に分かり安いコメントですね。
Indexへ
(3565)← 【3580】→(3563) ------------------------ 【タイトル】Re(1):寸法図形の文字色は「S_COMM_8」の設定です
【記事番号】 3580 (3565 )
【 日時 】05/10/02 08:53
【 発言者 】koshi
▼mmmmmharaさん:
はじめまして
>これは題名通りで、環境設定ファイル S_COMM_8 の4番目の設定で変わります。
そうだったんですね・・・
寸法図形にした時の文字色が青色になるのは都合がよかったので
あまり気にしてなかったと言うか、気づきませんでした。
>これは、図面上数多ある「数字」から寸法図形の存在を浮き上がらせる為と、
>私は理解しています。
私もそう思います。
貴重なコメント有難う御座いました。
Indexへ
(3580)← 【3563】→(3544) ------------------------ 【タイトル】Re(6):任意文字色です。
【記事番号】 3563 (3548 )
【 日時 】05/10/01 06:06
【 発言者 】ハマグチ hama@mb.i-chubu.ne.jp
▼コジマさん:
>▼ymさん:
>>上記設定にしたのですが文字色変化ありません。(紺色のまま)
>
>青色のことですか?
>書込文字種ではないですか?
>数字の区切りが全角スペース、または、
>Jwwが理解できない文字種を設定すると、
>書込文字種になりますが。
>
>>基本設定の問題でしょうか。その他設定確認事項
>>ございませんか。(-_-;)
>>寸法図作成後属性変更で修正しようと思いましたが
>>属性変更もできません、図面中ほかの文字は属性変更可です。
>
>寸法図形なので、そのままでは、属性変更では
>文字色の変更はできません。
>
>寸法図形を解除すれば、変更はできます。
>
>寸法図形をパラメトリック変形すると、
>「寸法」コマンドの「寸法設定」で指定した文字種に変わります。
コジマ様 すばらしい外部変形ありがとうございます
ym 様の設定を当方で実行しました (縦に線を複数作成し横方向の寸法を記入)
最初の引き出し線(左)以外の線色がグリーン
表示になります又最初(左)の寸法線以外もグリーンに教示しております
ym 様の設定で矢印を使用した場合にこの現象が現れます
実点使用の場合では問題がありません
パラメトリック変形を実行いたしましても寸法設定しました文字種に変わらないようです この文字種に変わる機能があるのでしたら 寸法図形解除時に変わってくれるとありがたいです
このコマンドを公表していただきましてから
当方寸法図形文字色と一般文字色(同サイズ文字)と分けて作図をしております
私は 矢印記入をしていませんので問題はないのですが
少し設定の違いにより異なった状態になるようです
Indexへ
(3563)← 【3544】→(3581) ------------------------ 【タイトル】レイヤの固定、又は書き込みレイヤ
【記事番号】 3544 (3501 )
【 日時 】05/09/29 20:49
【 発言者 】my_
▼コジマさん:
はじめまして
勝手なこと書いて申し訳ありません。
よくなるとどんどん欲が出てきて、レイヤの固定、又は書き込みレイヤ
の選択が出来ないかと思いました。(私はいつも固定で使用)
今後のバージョンでご一考いただければ幸いです。
有用な外変ありがとうございます。
Indexへ
(3544)← 【3581】→(3590) ------------------------ 【タイトル】Re(1):レイヤの固定、又は書き込みレイヤ
【記事番号】 3581 (3544 )
【 日時 】05/10/03 08:00
【 発言者 】my_
▼my_さん:
>▼コジマさん:
早速希望を叶えていただきありがとうがざいます。
tan_sun05 レイヤ指定確認の動作確認いたしました。
又、その他機能もありがとうございます。
Indexへ
(3581)← 【3590】→(3591) ------------------------ 【タイトル】局所作図用の外部変形を追加について
【記事番号】 3590 (3501 )
【 日時 】05/10/03 22:46
【 発言者 】かず
素早いご対応ありがとうございました。
わがままついでに要望を出させていただくと、左右振り分け時に左右方向への文字の移動量を設定できないでしょうか?
個人的には、もうすこし実点の近くに寸法値を記入したいものですから。(概ね0.5mm程度)
重ね重ねの要望で恐縮ですが、ご対応いただければ幸いです。
Indexへ
(3590)← 【3591】//(3320) ------------------------ 【タイトル】要望:複数のレイヤーグループの選択
【記事番号】 3591 (3590 )
【 日時 】05/10/03 23:42
【 発言者 】かず
さらに、要望をもう一つお願いいたします。
異なるレイヤーグループの線を選択する場合、最初のグループで線を選択した後、
書き込みグループを移動して、線を選択するという操作になっていますが、複数グループを選択するか、単独グループを選択するかを設定できるようにできないでしょうか?
あまりにすばらしい外変のため、使用頻度も多く、要望がどんどん出てきてしまいました。わがままで申し訳ありませんが、よろしくお願いいたします。