jw_cad 外部変形 - (1006) gccで点データを確認する(pt) -

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

 

gccで点データを確認する(pt)

:gccで点データを確認する(pt)
@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
  )
)
%~dpn0
goto:eof

REM #jww
REM #h1
REM #bz
REM #e

#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
  FILE *f, *g;
  int i, n, NF, ptn = 0;
  char S_[256], *F[20];
  char SS[256];
  char s[256], t[256];
  double pt[101][5];
  double hk, x, y, lx, ly;
  char str[256];
  if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
    g = fopen("myfiles", "w");
    while (fgets(S_, 256, f) != NULL) {
      strcpy(SS, chomp(S_));
      NF = split(SS, F);
      if (strncmp(S_, "hq", 2) == 0) { 
        fprintf(g, "hd\n");
        fprintf(g, "bz\n");
        continue;
      }
      if (strncmp(S_, "hk", 2) == 0) { 
        hk = atof(F[1]); 
        continue;
      }
      if (strncmp(S_, "pt", 2) == 0 && (NF == 3 || NF == 6)) {
        ptn++;
        if (NF == 3) {
          for (i = 1; i < 3; i++) { pt[ptn][i-1] = atof(F[i]); }
        } else if (NF == 6) {
          for (i = 1; i < 6; i++) { pt[ptn][i-1] = atof(F[i]); }
        }
        x = pt[ptn][0];
        y = pt[ptn][1];
        lx = cos(hk * PI / 180);
        ly = sin(hk * PI / 180);
        strcpy(str, "ようこそ ありがとう"); // str = "~"
        fprintf(g, "cc4\n");
        fprintf(g, "cn0 5 5 0.5 2\n");
        fprintf(g, "ch %.15lg %.15lg %.15lg %.15lg \"%s\n", x, y, lx, ly, str);
        fprintf(g, "%s\n", S_);
      } else {
        fprintf(g, "%s\n", S_);
      }
    }
  } else {
    exit(MISSING_JWC_TEMP_TXT);
  }
  fclose(g);
  fclose(f);
  remove("jwc_temp.txt");
  rename("myfiles", "jwc_temp.txt");
  return 0;
}