外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
pythonでソリッド図形のH形鋼断面を描く
:pythonでソリッド図形のH形鋼断面を描く
@echo off
if not exist %~dpn0.py (
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
more +%%n %0 > %~dpn0.py
)
)
set s=%*
if defined s (
echo ^%*> %~dpn0.txt
) else (
if exist %~dpn0.txt (
for /f "tokens=*" %%a in (%~dpn0.txt) do set s=%%a
)
)
if not defined s set s=400 200 8 13 16
copy jwc_temp.txt myfiles > nul
python %~dpn0.py > jwc_temp.txt
goto:eof
REM #jww
REM #1%d 位置を指示して下さい
REM #99#
REM #c H B T1 T2 R =
REM #e
#!この次の行からプログラムを書いてください
# coding: shift_jis
def mov(p1, p2):
x1, y1 = p1
x2, y2 = p2
return (x1 + x2, y1 + y2)
def rot(p1, d):
x1, y1 = p1
co = cos(d)
si = sin(d)
return (x1 * co - y1 * si, x1 * si + y1 * co)
def offset(w, h, pt, opt = 5):
return (w * ( (9 - pt) % 3 - (9 - opt) % 3) / 2, h * (int( (9 - pt) / 3) - int( (9 - opt) / 3)) / 2)
def jish(hp, A, B, Tw, Tf, r, d, pt = 5):
x0, y0 = offset(B, A, pt)
p = [(0, 0)] * 5
p[0] = (Tw / 2.0 , A / 2.0 - Tf - r*0)
p[1] = (Tw / 2.0 + r, A / 2.0 - Tf - r)
p[2] = (Tw / 2.0 + r, A / 2.0 - Tf)
p[3] = (B / 2.0 , A / 2.0 - Tf)
p[4] = (B / 2.0 , A / 2.0)
u = 5
print("pl")
pp = [(0, 0)] * 20
sc = "sc" + " %s" * 8
drad = d * pi / 180
for j in range(0, 4):
a = 90 * ( (1 - j) % 4)
for i in range(0, u):
if j % 2 == 0:
k = i
else:
k = u - i - 1
x, y = p[k]
if j % 3 > 0 : x = -x
if j > 1 : y = -y
pc = mov(rot( (x + x0, y + y0), drad), hp)
if k == 1 and r > 0:
print(sc % (pc + (r, 1, drad, a * pi / 180, pi / 2, -1)))
pp[i + j * u] = pc
sl = "sl" + " %s" * 8
print(sl % (pp[0] + pp[9] + pp[10] + pp[19]))
print(sl % (pp[3] + pp[4] + pp[5] + pp[6]))
print(sl % (pp[13] + pp[14] + pp[15] + pp[16]))
print("#")
import sys,re,os
from math import *
h, b, t1, t2, r = map(float, str(os.environ['s']).split())
red, g, blue = (0, 128, 128)
print("lc10 %s" % (red + 256 * g + 256 * 256 * blue))
try :
f = open("myfiles", "r")
for a in f:
F = a.split()
if re.compile("^hk").search(a): hk = float(F[1])
if re.compile("^hp[1-9][0-9]?").search(a):
p1 = tuple(map(float, F[1:3]))
jish(p1, h, b, t1, t2, r, hk, pt = 5)
f.close()
except :
sys.exit()