jw_cad 外部変形 - (867) pythonで階段を割り付ける -

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

 

pythonで階段を割り付ける

:pythonで階段を割り付ける
@echo off
if not exist %~dpn0.py (
  for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
    more +%%n %0 > %~dpn0.py
  )
)
set n=%1
if defined n (
  echo ^%1> %~dpn0.txt
) else (
  if exist %~dpn0.txt (
    for /f "tokens=*" %%a in (%~dpn0.txt) do set n=%%a
  )
)
copy jwc_temp.txt myfiles > nul
python %~dpn0.py > jwc_temp.txt
goto:eof

REM #jww
REM #1-%d 始点を指示してください
REM #2%d 終点を指示してください
REM #c 段数 = 
REM #e

#!この次の行からプログラムを書いてください
# coding: shift_jis
def step(p1, p2, n, d):
  x1, y1 = p1
  x2, y2 = p2
  if n <= 0 : n = 12
  d *= pi / 180
  co = cos(d)
  si = sin(d)
  dx = x2 - x1
  dy = y2 - y1
  ww = dx * co + dy * si
  hh =-dx * si + dy * co
  aa = hh / n
  bb = n > 1 and ww / (n - 1) or ww
  xx = bb * co - aa * si
  yy = bb * si + aa * co
  x2, y2 = (x1 - aa * si, y1 + aa * co)
  x3, y3 = (x1, y1)
  for i in range(1,n+1):
    x3 += xx
    y3 += yy
    print("%s %s %s %s" % (x1, y1, x2, y2))
    print("%s %s %s %s" % (x2, y2, x3, y3))
    x1, y1 = (x3, y3)
    x2 += xx
    y2 += yy


import sys,re,os
from math import *

try :
  f = open("myfiles", "r")
  for line in f:
    F = line.split()
    if re.compile("^hk").search(line): hk = float(F[1])
    if re.compile("^hp1").search(line): p1 = tuple(map(float, F[1:3]))
    if re.compile("^hp2").search(line): p2 = tuple(map(float, F[1:3]))
  f.close()
except :
  sys.exit()

n = int(os.environ['n'])

step(p1, p2, n, hk)