過去ログ

                                Page      39
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼伸縮コマンドで直角に交わらない線の突出寸法について  mori 15/07/07(火) 17:24
   ┣Re(1):伸縮コマンドで直角に交わらない線の突出寸法について  96saka 15/07/07(火) 18:57
   ┣Re(1):伸縮コマンドで直角に交わらない線の突出寸法について  kojima 15/07/08(水) 14:54
   ┗Re(1):伸縮コマンドで直角に交わらない線の突出寸法について  cozy 15/07/09(木) 9:15
      ┣Re(2):伸縮コマンドで直角に交わらない線の突出寸法について  住職 15/07/09(木) 19:35
      ┗1本ずつの伸縮時と一括伸縮時で突出寸法が相違  kojima 15/07/09(木) 21:01

 ───────────────────────────────────────
 ■題名 : 伸縮コマンドで直角に交わらない線の突出寸法について
 ■名前 : mori
 ■日付 : 15/07/07(火) 17:24
 -------------------------------------------------------------------------
   初めての投稿となります。よろしくお願いいたします。

右ダブルクリックで基準線を指定し、突出寸法を100mmとした場合
伸縮線は基準線を複線で100mmスライドさせた分延長されますが、
これを伸縮線を基準線から100mm延長させた値にすることはできな
いのでしょうか?直角で交わる場合は良いのですが、それ以外の
角度で交わる場合は突出し値が当方目的値と異なります。

具体的にいうと
基準線を0°で引き(真横方向)、伸縮したい線を45°で引いた
(右斜め上方向)、突出し距離を100mmとして伸縮した場合
突出した線の端点の距離は基準線からの垂直距離は100mmですが
伸縮線自体は基準線から141.421mm突き出します。
これを100mmとしたいのですが、、、(基準線から70.71mmなので
そうすれば良いのですが種類が多い為)

 ───────────────────────────────────────  ■題名 : Re(1):伸縮コマンドで直角に交わらない線の突出寸法について  ■名前 : 96saka  ■日付 : 15/07/07(火) 18:57  ■Web : http://homepage3.nifty.com/kuro_kk/  -------------------------------------------------------------------------
   ▼moriさん:

> 右ダブルクリックで基準線を指定し、突出寸法を100mmとした場合
> 伸縮線は基準線を複線で100mmスライドさせた分延長されますが、
> これを伸縮線を基準線から100mm延長させた値にすることはできな
> いのでしょうか?直角で交わる場合は良いのですが、それ以外の
> 角度で交わる場合は突出し値が当方目的値と異なります。

残念ながら右ダブルクリックの基準線先指定の操作では
直交している線も直交していない線も一律となる仕様のようですので
mirrorさんが紹介されている、交点を指定する方法によるのが良いと思います。

---ヘルプより抜粋---
!基準線までの伸縮では基準線が指定寸法分平行移動した位置に対して伸縮される。したがって、円と基準線と直交していない線は、その線と基準線との交点から端部までの距離が突出寸法とはならない。

 ───────────────────────────────────────  ■題名 : Re(1):伸縮コマンドで直角に交わらない線の突出寸法について  ■名前 : kojima  ■日付 : 15/07/08(水) 14:54  -------------------------------------------------------------------------
   Rubyの外部変形が使える環境下であれば、以下のbatファイルで可能です。
(batファイルにRubyスクリプトを記述するタイプの外部変形)

以下の文をコピペ後、全角スペースを半角スペースに一括置換して
適当なフォルダに保存してください。
ファイル名:一括伸縮.bat

↓この下から(この行はコピペしない)

@REM 直線を基準線との交点まで一括伸縮(突出寸法指定)
@echo off
REM #jww
REM #cd
REM #zz
REM #zw
REM #c突出寸法の入力 無指定:0 /_/a
REM #1ln基準線を指示してください
REM #2ln伸縮線を指示してください
REM #99#
REM #e
copy jwc_temp.txt temp.txt> nul
ruby -x %~f0 temp.txt %1> jwc_temp.txt
exit
#!ruby -Ks
t_sun=0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            t_sun=argument[2..-1].to_f
    end
end
puts "hd"
include Math
#sen1の線上とsen2の延長線上の交点を返す
def sen_sen_kouten(sen1,sen2)
    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
    y=y1_1-y2_1
    dx=y/delta
    kouten_x=x2_1+dx
    kouten_y=y1_1
    if x1_1<kouten_x && x1_2>kouten_x
        x=kouten_x-x1_1
        kouten_xt=x1_1+x*cos(sen1_arg)
        kouten_yt=y1_1+x*sin(sen1_arg)
        return [kouten_xt,kouten_yt]
    else
        return nil
    end
end
def ika3(x)
    a=(((x.to_f)*1000).to_i/1000.to_f)
    return a
end
hp=[];n=0
while ARGF.gets
    xy=$_.split
    if xy[0] =~ /^hq/
    elsif xy[0]=~/^hp(\d+)ln/
        hp<<[xy[1].to_f,xy[2].to_f]
    elsif xy[0]=~/^\d|^-/
        n += 1
        xy.collect!{|item|item.to_f}
        if n==1
            print $_
            ki_sen=xy
        else
            if sen_sen_kouten(ki_sen,xy)
                x,y=hp[n-1]
                l=hypot(y-xy[1],x-xy[0])
                arg=atan2(y-xy[1],x-xy[0])
                sen_arg=atan2(xy[3]-xy[1],xy[2]-xy[0])
                l2=l*cos(arg-sen_arg)
                hp_x=xy[0]+l2*cos(sen_arg)
                hp_y=xy[1]+l2*sin(sen_arg)
                kouten_x,kouten_y=sen_sen_kouten(ki_sen,xy)            
                arg1=atan2(hp_y-kouten_y,hp_x-kouten_x)
                if ika3(arg1)==ika3(sen_arg)
                    x1=kouten_x-t_sun*cos(sen_arg)
                    y1=kouten_y-t_sun*sin(sen_arg)
                    x2,y2=xy[2],xy[3]
                else
                    x1,y1=xy[0],xy[1]
                    x2=kouten_x+t_sun*cos(sen_arg)
                    y2=kouten_y+t_sun*sin(sen_arg)
                end
                printf(" %.11f %.11f %.11f %.11f\n",x1,y1,x2,y2)
            else
                print $_
            end
        end
    else
        print $_
    end
end

↑この上まで(この行はコピペしない)

Rubyは以下でダウンロードできます。
http://rubyinstaller.org/

 ───────────────────────────────────────  ■題名 : Re(1):伸縮コマンドで直角に交わらない線の突出寸法について  ■名前 : cozy  ■日付 : 15/07/09(木) 9:15  -------------------------------------------------------------------------
   いつも大変お世話になっております。

▼moriさん:

伸縮コマンドから、突出寸法を記入(100mm)、45°線を選択(任意の位置左1クリック)後、
伸縮したい先端を右クリックで、45°右斜め上方向に(100mm)伸びました。
(突出寸法と、45°線の選択を逆に操作しても同じ結果です。)

外していたらすみません。
応用で操作していたら出来ました。

 ───────────────────────────────────────  ■題名 : Re(2):伸縮コマンドで直角に交わらない線の突出寸法について  ■名前 : 住職  ■日付 : 15/07/09(木) 19:35  ■Web : http://homepage2.nifty.com/siegel/  -------------------------------------------------------------------------
   ▼cozyさん:

>伸縮コマンドから、突出寸法を記入(100mm)、45°線を選択(任意の位置左1クリック)後、
>伸縮したい先端を右クリックで、45°右斜め上方向に(100mm)伸びました。
>(突出寸法と、45°線の選択を逆に操作しても同じ結果です。)
>
>外していたらすみません。
>応用で操作していたら出来ました。

動作、確認しました。
端点右クリックは、お見事です。

 ───────────────────────────────────────  ■題名 : 1本ずつの伸縮時と一括伸縮時で突出寸法が相違  ■名前 : kojima  ■日付 : 15/07/09(木) 21:01  -------------------------------------------------------------------------
   1本ずつの伸縮時と一括伸縮時では、突出寸法に相違があるようです。
一括伸縮または、基準線右ダブルクリックの時は、基準線の仮想複線(突出寸法相当)まで伸縮されるようです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 39