jw_cad 外部変形 - (971) gccで点マーカを描く -

外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。

 

gccで点マーカを描く

:gccで点マーカを描く
@echo off
if not exist %~dpn0.exe (
  for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
    more +%%n %0 > %~dpn0.c
    gcc -Os %~dpn0.c -o %~dpn0.exe -s
  )
)
set c=%*
if defined c call:set %c%
if exist %~dpn0.txt (
  for /f "tokens=*" %%a in (%~dpn0.txt) do call:set %%a
)
if not defined code set code=0
if not defined size set size=1
if defined c (
  echo %code% %size% > %~dpn0.txt
)
%~dpn0
goto:eof

REM #jww
REM #1%d 点位置を指示して下さい
REM #99#
REM #c マーカコード番号, 倍率
REM #e

:set
if not defined code set code=%1
if not defined size set size=%2
if "%1" == "/" set code=
if "%2" == "/" set size=
goto:eof

#!この次の行からプログラムを書いてください
#include "jw.h"

int main(void)
{
  FILE *f, *g;
  char S_[256], *F[20];
  double x1, y1, hk;
  double size;
  int code;
  size = atof(getenv("size"));
  code = atoi(getenv("code"));
  if (size == 0) size = 1;
  if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
    g = fopen("myfiles", "w");
    while (fgets(S_, 256, f) != NULL) {
      split(chomp(S_), F);
      if (strncmp(S_, "hk", 2) == 0) hk = atof(F[1]);
      if (strncmp(S_, "hp", 2) == 0) {
        x1 = atof(F[1]); y1 = atof(F[2]);
        fprintf(g, "pt %.15g %.15g %.15g %.15g %d\n", x1, y1, size, hk, code);
      }
    }
  } else {
    exit(MISSING_JWC_TEMP_TXT);
  }
  fclose(g);
  fclose(f);
  remove("jwc_temp.txt");
  rename("myfiles", "jwc_temp.txt");
  return 0;
}