あしたから本気出す
利用価値のあるものを工作し、情報発信してみる。
工作
新・自作キーボード
Jw_cadの外部変形の作り方2
Jw_cadの外部変形の作り方
戦前のタイプライターをUSB化してみる。
工作記事をもっと見る
ブログ:最近やっていること
かっこいい電卓発見。
ノートPCのディスプレイが昇天ス
アルミのロウ付けに挑戦
ブログをもっと見る
ダウンロード
JW_WIN外部変形Kiefer
JW_WIN外部変形FastMeasure
お知らせ
2009/9/4 twitter始めました。
2009/7/14 サイトのタイトル変更しました
2008/4/30 サーバーダウンについて

管理者プロフィール (-)
GRAFZ.NET 27歳男
神奈川県生まれ
職業:GRAFZ.NETという屋号でプログラム制作してます。
一言:実用性を形にする。工作の日々。
コンタクトは以下までお願いします
suda@grafz.net
RSS
ブログをRSS配信してます。

最近やってること:
ŋ߂Ă邱
    follow me on Twitter

    © GRAFZ.NET 2008-2009
    3月4日
    Jw_cadの外部変形の作り方2



    Jw_cadの外部変形の作り方
    ぽやっとしているまに冬が終わってしまった。この冬の思い出といえば、正月に貧血で卒倒したことくらいしか思い出せない。お父さんお母さん、僕は歳をとってしまっただよ。

    さて、前回の約束のとおり、線を描画する Jw_win用の外部変形をVC++で作成してみよう。
    さっそくソースコードを。

    randomCircle.cpp
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    26:
    27:
    28:
    29:
    30:
    31:
    32:
    33:
    34:
    35:
    36:
    37:
    38:
    39:
    40:
    41:
    42:
    43:
    44:
    45:
    46:
    
    #pragma comment(lib, "winmm.lib")
    
    #include <windows.h>
    #include <mmsystem.h>
    #include <string>
    
    #define MAX_BUFFER 256
    
    std::string strFilename = "JWC_TEMP.TXT";
    
    int main(int argc,char *argv[]){
        //コマンド引数
        int nParam = atoi(argv[1]);
    
        FILE *fp = fopen(strFilename.c_str(),"r");
        if(!fp)return 0;
        char strBuffer[MAX_BUFFER];
        std::string strLine;
        while(fgets(strBuffer,MAX_BUFFER,fp) != NULL){
            strLine = strBuffer;
            if(strLine.find("hp1",0) != std::string::npos){
                //指定点座標に該当するとき。座標を実数で取得。
                std::string str2 = strLine.substr(3);
                while(str2.at(0) == ' ')str2 = str2.substr(1);
                std::string strX = str2.substr(0,str2.find(" ",0));
                std::string strY = str2.substr(str2.find(" ",0) + 1);
                double nX = atof(strX.c_str());
                double nY = atof(strY.c_str());
                fclose(fp);
    
                //出力
                fp = fopen(strFilename.c_str(),"w");
                //擬似乱数により半径を計算
                timeBeginPeriod(1);
                srand((unsigned)timeGetTime());
                double nRadius = nParam + nParam * (0.01 * (rand() % 100));
                timeEndPeriod(1);
                //円を出力する
                sprintf(strBuffer,"ci %lf %lf %d 0 360 1 0\n",nX,nY,nRadius);
                fputs(strBuffer,fp);
                fclose(fp);
                return 0;
            }
        }
        return 0;
    }
    
    システムのミリ秒を乱数の種に使っているので、winmm.libをリンクしている。
    外部変形の実行に必要なbatファイルの内容は以下。

    trandomCircle.bat
    1:
    2:
    3:
    4:
    5:
    6:
    
    @REM ランダムな大きさの円を描画
    REM #jww
    REM #1
    REM #hr
    REM #e
    randomCircle.exe 100
    6行目の末尾の数値は、半径(単位:メートル)で、コマンド引数として実行ファイルに渡す。

    ダウンロードページ
    「あしたから本気出す」オリジナル外部変形

    RSS:記事の購読
    RSSリーダー等で記事をご購読できます。

    これからもどんどん面白くなるGRAFZ.NETをよろしくお願いします。