jw_cad 外部変形 - (850) pythonで2重線を引く(2sen) -

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

 

pythonで2重線を引く(2sen)

:pythonで2重線を引く(2sen)
@echo off
if not exist %~dpn0.py (
  for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
    more +%%n %0 > %~dpn0.py
  )
)
set w=%1
python %~dpn0.py
goto:eof

REM #jww
REM #1-%d 始点を指示して下さい
REM #2%d 終点を指示して下さい
REM #k 線の幅| 200(L) | 400(R) | 120 | 150 | 180 | 220 | 250 | 300 | 350 |
REM #e

#!この次の行からプログラムを書いてください
# coding: shift_jis
import sys,re,os
from math import *

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

x1, y1, x2, y2 = map(float, p1 + p2)
a = "200 200 400 120 150 180 220 250 300 350".split(" ")
w = float(a[int(os.environ['w'])])
d = atan2(y2 - y1, x2 - x1)
yw = w / 2.0 * cos(d)
xw =-w / 2.0 * sin(d)

mode = 1

sys.stdout = open("jwc_temp.txt", "w")
print("%s %s %s %s" % (x1 + xw, y1 + yw, x2 + xw, y2 + yw))
if w > 0 :
  print("%s %s %s %s" % (x1 - xw, y1 - yw, x2 - xw, y2 - yw))
if mode == 1 and w > 0 :
  p = d * 180 / pi + 90
  r = w / 2
  print("ci %s %s %s %s %s 1 0" % (x1, y1, r, p, p + 180))
  print("ci %s %s %s %s %s 1 0" % (x2, y2, r, p - 180, p))