外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
clispで点データを確認する(pt)
:clispで点データを確認する(pt)
@echo off
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
copy jwc_temp.txt myfiles > nul
more +%%n %0 | clisp -q > nul
)
goto:eof
REM #jww
REM #h1
REM #bz
REM #e
#!この次の行からプログラムを書いてください
;ユーザ定義関数
( ;文字列 "x" を 数値 xd0 (倍精度 double-float) に変換
defun to_f (x)
(if (equal x nil) (setq x "0"))
(if (listp x)
(mapcar #'to_f x)
(progn
(if (typep x 'double-float)
x
(progn
(if (stringp x) nil (setq x (write-to-string x)))
(if (search "e" x)
(progn
(setq s (search "e" x))
(read-from-string
(concatenate 'string (subseq x 0 s) "d" (subseq x (+ 1 s) (length x)))
)
) ;progn (search "e" x)
(if (search "d" x)
x
(read-from-string
(concatenate 'string x "d0")
)
)
)
) ;progn (typep x 'double-float)
)
) ;progn (listp x)
)
)
(defun pt (i &optional j)
(if (equal j "x") (setq j 0))
(if (equal j "y") (setq j 1))
(if j (if (> (abs j) 1) (setq j nil)))
(if j (elt (elt pt i) j) (elt pt i))
)
;本文
(setq pt '( (0 0)))
(setq ptn 0)
( ;jwc_temp.txt へ 出力
with-open-file (g "jwc_temp.txt" :direction :output)
( ;myfiles から 入力
with-open-file (f "myfiles" :direction :input)
(loop for line = (read-line f nil) while line do
(setq a (regexp:regexp-split " \\+" line))
(if (regexp:match "^hq" line)
(progn
(write-line "hd" g)
(write-line "bz" g)
)
)
(if (regexp:match "^hk" line) (setq hk (cadr a)))
;点、点マーカデータ
(if (regexp:match "^pt" line)
(progn
(if (= ptn 0) (setq ptn (length pt)))
(if (>= (- ptn (length pt)) 0)
(loop for i to (- ptn (length pt)) do
(setq pt (append pt '( (0 0))))
)
)
(setf (elt pt ptn) (cdr a))
;選択した点の位置に文字を書く
(write-line "cc4" g)
(write-line "cn0 5 5 0.5 2" g)
(setq x (nth 0 (pt ptn)))
(setq y (nth 1 (pt ptn)))
(setq lx (cos (* (to_f hk) (/ pi 180))))
(setq ly (sin (* (to_f hk) (/ pi 180))))
(setq str "ようこそ ありがとう")
(format g "ch ~f ~f ~f ~f \"~a~%" x y lx ly str)
;選択した点を戻す
(write-line line g)
(setq ptn 0)
)
)
(if (or (regexp:match "^hq" line) (regexp:match "^hk" line))
(progn
)
;データを戻す
(write-line line g)
)
)
)
)