JWW専用掲示板
(現在 過去ログ152 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 発言ランク ファイル一覧 検索 過去ログ

No33117 の記事


■33117 / )  NO TITLE
□投稿者/ HIDE 5回-(2006/10/26(Thu) 00:20:49)

    記事内容:[|] 

    下記のような外部変形を作成していますが、数式を計算してくれません。
    いろいろ試したのですが、値を数値として扱ってないような感じです。
    どなたか知恵をを貸してください。
     実行する前に、一本の線と4点の標高値を線上付近に書いておく必要がありま
    す。
    標高Z値とZ値の水平距離から、4点交点計算をして,点を書き出そうというもので
    す。
    4GH交点.awk内にある
         #線、文字書き出しによる取得値のチェック
    で、いろいろ試したのですが、値を数値として扱ってないような感じなので、X,Y
    値が
    0を吐き出して、画面中央へ、点を書き出してしまいます。
    どなたか知恵をを貸してください。

    ーーーーーーーーーーーー4GH交点.awkーーーーーーーーーーーーーーーーーーー
    ーーー
    # 【4GH交点】断面指示線上の標高文字4点から交点を書き出す

    #断面方向指示線のXY座標取得

    (/^hhp5ln/){
    getline
    LX1=substr($1,1)*1;
    LY1=substr($2,1)*1;
    LX2=substr($3,1)*1;
    LY2=substr($4,1)*1
    }

    #A面標高値のXYZ座標取得
    (/^hhp1ch/){
    getline
    AX1=substr($2,1); AY1=$3; AZ1=substr($6,2)*1}
    (/^hhp2ch/){
    getline
    AX2=$2; AY2=$3; AZ2=substr($6,2)*1}

    #B面標高値のXYZ座標取得
    (/^hhp3ch/){
    getline
    BX1=$2; BY1=$3; BZ1=substr($6,2)*1}
    (/^hhp4ch/){
    getline
    BX2=$2; BY2=$3; BZ2=substr($6,2)*1}

    BIGIN{
    #X-Y面による標高値の垂線補正計算

    M3=(LY2-LY1)*(LX2-LX1); #交点計算

    LAX1=(AY1-LY1+M3*LX1+1/M3*AX1)/(M3+1/M3) ; LAY1=LY1+M3*(LAX1-LX1);
    LAX2=(AY2-LY1+M3*LX1+1/M3*AY2)/(M3+1/M3) ; LAY2=LY1+M3*(LAX2-LX1);
    LBX1=(BY1-LY1+M3*LX1+1/M3*BY1)/(M3+1/M3) ; LBY1=LY1+M3*(LBX1-LX1);
    LBX2=(BY2-LY1+M3*LX1+1/M3*BY1)/(M3+1/M3) ; LBY2=LY1+M3*(LBX2-LX1);

    #方向線平面座標計算
    LA1=sqrt(((LAX1-LX1)^2+(LAY1-LY1)^2)) #指示線方向累加距離
    LA2=sqrt(((LAX2-LX1)^2+(LAY2-LY1)^2))
    LB1=sqrt(((LBX1-LX1)^2+(LBY1-LY1)^2))
    LB2=sqrt(((LBX2-LX1)^2+(LBY2-LY1)^2))

    #XYZの算出
    M1=(ZA2-ZA1)/(LA2-LA1); #交点計算
    M2=(ZB2-ZB1)/(LB2-LB1);
    LL=(ZB1-ZA1+M1*LA1-M2*LB1)/(M1-M2)

    Z=ZA1+M1*(LL-LA1)

    A=atan2(LY2-LY1,LX2-LX1)

    X=LX1+LL*COS(A)

    Y=LY1+LL*SIN(A)
    }
    #XYZの転送

    END { {printf"pt %e %e\n",X,Y}

    #線、文字書き出しによる取得値のチェック
    { printf("ch %e %e %e %e \"L=%1.3f\n",LX1,LY1,0,1,lx1)
    printf("ch %e %e %e %e \"FH=%1.3f\n",LX2,LY2,1,0,m3)
    }
    { print "lc1"
    print "lt1"
    printf "%e %e %e %e\n",AX1,AY1,AX2,AY2;
    print "lc2"
    printf "%e %e %e %e\n",AX2,AY2,BX1,BY1;
    print "lc1"
    print "lt2"
    printf "%e %e %e %e\n",BX1,BY1,BX2,BY2;
    print "lc4"
    printf "%e %e %e %e\n",BX2,BY2,AX1,AY1;
    }


    {
    printf "%e %e %e %e\n", LX1,LY1,LX2,LY1;
    printf "%e %e %e %e\n", LX2,LY1,LX2,LY2;
    printf "%e %e %e %e\n", LX2,LY2,LX1,LY2;
    printf "%e %e %e %e\n", LX1,LY2,LX1,LY1;
    }
    }

    ーーーーーーーーーーーーー4GH交点.BATーーーーーーーーーーーーーーーーーー

    @REM 【4標高交点】断面指示線上の標高文字4点から交点を書き出す
    @echo off
    goto er%1

    REM #jw
    REM #cd
    REM #hcあらかじめ標高文字間の結線が必要です
    REM #hm【4標高交点】|1L)4字指示|2R)工事中|3)工事中|4)工事中|

    REM #:1
    REM #h0
    REM #hc【線交点標高】
    REM #g1
    REM #1ch 標高文字 A面(1)を指示してください(レイヤ不問)
    REM #2ch 標高文字 A面(2)を指示してください(レイヤ不問)
    REM #3ch 標高文字 B面(1)を指示してください(レイヤ不問)
    REM #4ch 標高文字 B面(2)を指示してください(レイヤ不問)
    REM #5ln 断面線を指示してください
    REM #e

    REM #:2
    REM #h1
    REM #hc【線交点標高】標高文字と結線を選択してください(始点マウス右)
    REM #g1
    REM #1ln 断面線を指示してください
    REM #e

    REM #:3
    REM #h0
    REM #e
    REM #:4
    REM #h0
    REM #e

    :er1
    :er2
    jgawk -f 4GH交点.awk jwc_temp.txt > temp.txt
    del jwc_temp.txt
    ren temp.txt jwc_temp.txt
    pause
    goto END
    :er3
    call qzset /e qzlib
    goto END
    :er4
    call qzset /e qztool.awk
    goto END

    :END
    cls
    call qzset /d qztmp?.tmp


返信/引用返信 [メール受信/OFF] 削除キー/


Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 発言ランク ファイル一覧 検索 過去ログ

- Child Tree -