あしたから本気出す
いろいろ工作して情報発信してみる。自作キーボードとか。
開発ブログ
自作キーボード「TypingTrigger-SDZERO」
自作スマートフォン緊急充電器
プログラマブルな自動化キーボード実装編
プログラマブルな自動化キーボード(プロトタイプ編)を作ってみる-後編
開発ブログをもっと見る
ブログなど
ブログはこちら
ダウンロード
JW_WIN外部変形Kiefer
JW_WIN外部変形FastMeasure
お知らせ
2010/10/1 ブログを新しくした
2009/9/4 twitter始めた
2009/7/14 サイトのタイトル変更した

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


© GRAFZ.NET 2008-2010
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をよろしくお願いします。