jw_cad 外部変形 - (1005) gccで指示円を確認する(ci) -

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

 

gccで指示円を確認する(ci)

:gccで指示円を確認する(ci)
@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 #1%dci 円を指示してください
REM #99#
REM #bz
REM #e

#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
  FILE *f, *g;
  int i, n, NF, cin;
  char S_[256], *F[20];
  char SS[256];
  char s[256], t[256];
  double ci[101][7];
  double x, y;
  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, "bz\n"); 
      }
      if (strncmp(S_, "hhp", 3) == 0) {
        n = strlen(S_);
        substr(S_, n-2, 3, s); // s => 末尾2文字
        if (strcmp(s, "ci") == 0) { // hhp([1-9][0-9]?)ci
          substr(S_, 3, n-3-2, t);  // t => $1
          cin = atoi(t);
        }
      }
      if (strncmp(S_, "ci", 2) == 0 && (NF == 4 || NF == 8)) {
        if (NF == 4) {
          for (i = 1; i < 4; i++) { ci[cin][i-1] = atof(F[i]); }
        } else if (NF == 8) {
          for (i = 1; i < 8; i++) { ci[cin][i-1] = atof(F[i]); }
        }
        x = ci[cin][0];
        y = ci[cin][1];
        fprintf(g, "pt %.15lg %.15lg\n", x, y);
      }
    }
  } else {
    exit(MISSING_JWC_TEMP_TXT);
  }
  fclose(g);
  fclose(f);
  remove("jwc_temp.txt");
  rename("myfiles", "jwc_temp.txt");
  return 0;
}