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

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

 

javaで点マーカを描く

:javaで点マーカを描く
@echo off
if not exist %~dp0PointMarkDraw.class (
  for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
    more +%%n %0 > %~dpn0.java
    javac -encoding shift_jis %~dpn0.java
  )
)

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
)

copy jwc_temp.txt myfiles > nul
java -Dfile.encoding=shift_jis -classpath %~dp0 PointMarkDraw > jwc_temp.txt
goto:eof

:set
if not defined code set code=%1
if not defined size set size=%2
if /%1 == /by (
  set size=%2
  if /%3 == /mk (set code=%4) else set code=
)
if /%1 == /mk (
  set code=%2
  if /%3 == /by (set size=%4) else set size=
)
if "%1" == "/" set code=
if "%2" == "/" set size=
goto:eof

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

#!この次の行からプログラムを書いてください
import java.io.*;
import java.util.regex.Pattern;

class PointMarkDraw {
  public static void main(String args) {
    int code = Integer.parseInt(System.getenv("code"));
    double size = Double.parseDouble(System.getenv("size"));
    try {
      BufferedReader f = new BufferedReader(new FileReader("myfiles"));
      String line;
      double hk = 0;
      while ( (line = f.readLine()) != null) {
        if (Pattern.compile("^hk").matcher(line).find()) {
          String
str = line.split(" ", 2);
          hk = Double.parseDouble(str[1].trim());
        }
        if (Pattern.compile("^hp[1-9][0-9]*").matcher(line).find()) {
          String[] str = line.split(" ", 2);
          System.out.printf("pt %s %.15f %.15f %d%n", str[1].trim(), size, hk, code);
         }
      }
      f.close();
    } catch (IOException e) {
      System.out.println(e);
    }
  }
}