Index: src_plugins/import_hyp/parser.c =================================================================== --- src_plugins/import_hyp/parser.c (revision 6814) +++ src_plugins/import_hyp/parser.c (revision 6815) @@ -680,7 +680,7 @@ end_angle = pcb_normalize_angle(end_angle); if (Clockwise) - while (start_angle <= end_angle) + while (start_angle < end_angle) start_angle += 360; else while (end_angle <= start_angle) Index: src_plugins/import_hyp/tests/gensamp =================================================================== --- src_plugins/import_hyp/tests/gensamp (nonexistent) +++ src_plugins/import_hyp/tests/gensamp (revision 6815) @@ -0,0 +1,116 @@ +#!/usr/bin/python +""" + Generate sample hyperlynx file + Copyright 2017 Koen De Vleeschauwer. + + This file is part of pcb-rnd. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +""" + +from math import pi, sin, cos + +print "{VERSION=2.0}" +print "{UNITS=METRIC LENGTH}" +print "{BOARD" +print " (PERIMETER_SEGMENT X1=1.0 Y1=0.0 X2=19.0 Y2=0.0)" +print " (PERIMETER_SEGMENT X1=20.0 Y1=1.0 X2=20.0 Y2=9.0)" +print " (PERIMETER_SEGMENT X1=19.0 Y1=10.0 X2=1.0 Y2=10.0)" +print " (PERIMETER_SEGMENT X1=0.0 Y1=9.0 X2=0.0 Y2=1.0)" +print " (PERIMETER_ARC X1=0.0 Y1=1.0 X2=1.0 Y2=0.0 XC=1.0 YC=1.0 R=1.0)" +print " (PERIMETER_ARC X1=1.0 Y1=10.0 X2=0.0 Y2=9.0 XC=1.0 YC=9.0 R=1.0)" +print " (PERIMETER_ARC X1=20.0 Y1=9.0 X2=19.0 Y2=10.0 XC=19.0 YC=9.0 R=1.0)" +print " (PERIMETER_ARC X1=19.0 Y1=0.0 X2=20.0 Y2=1.0 XC=19.0 YC=1.0 R=1.0)" +print "" +print " (PERIMETER_SEGMENT X1=2.0 Y1=1.0 X2=3.0 Y2=1.0)" +print " (PERIMETER_SEGMENT X1=3.0 Y1=9.0 X2=2.0 Y2=9.0)" +print " (PERIMETER_ARC X1=2.0 Y1=9.0 X2=1.0 Y2=8.0 XC=2.0 YC=8.0 R=1.0)" +print " (PERIMETER_SEGMENT X1=1.0 Y1=8.0 X2=1.0 Y2=2.0)" +print " (PERIMETER_ARC X1=1.0 Y1=2.0 X2=2.0 Y2=1.0 XC=2.0 YC=2.0 R=1.0)" +print " (PERIMETER_SEGMENT X1=4.0 Y1=2.0 X2=4.0 Y2=8.0)" +print " (PERIMETER_ARC X1=3.0 Y1=1.0 X2=4.0 Y2=2.0 XC=3.0 YC=2.0 R=1.0)" +print " (PERIMETER_ARC X1=4.0 Y1=8.0 X2=3.0 Y2=9.0 XC=3.0 YC=8.0 R=1.0)" + +print " (PERIMETER_ARC X1=5.5 Y1=5.0 X2=5.5 Y2=5.0 XC=5.0 YC=5.0 R=0.5)" + +print " (PERIMETER_ARC X1=5.5 Y1=6.0 X2=4.5 Y2=6.0 XC=5.0 YC=6.0 R=0.5)" +print " (PERIMETER_SEGMENT X1=4.5 Y1=6.0 X2=5.5 Y2=6.0)" + +print " (PERIMETER_ARC X1=4.5 Y1=7.5 X2=5.5 Y2=7.5 XC=5.0 YC=7.5 R=0.5)" +print " (PERIMETER_SEGMENT X1=4.5 Y1=7.5 X2=5.5 Y2=7.5)" + +print " (PERIMETER_ARC X1=5.5 Y1=8.5 X2=5.0 Y2=8.0 XC=5.0 YC=8.5 R=0.5)" +print " (PERIMETER_SEGMENT X1=5.0 Y1=8.0 X2=5.5 Y2=8.5)" + +print "}" +print "{STACKUP" +print " (SIGNAL T=0.000700 L=1)" +print " (DIELECTRIC T=0.002000 C=4.000000)" +print " (PLANE T=0.000700 L=2 PS=0.001000)" +print "}" +print "{DEVICES" +print "}" + +# +# SEG line segments +# + +x0 = 6 +y0 = 3 +r1 = 0.5 +r2 = 2 +max = 12 + +print "{NET=segtst" + +for x in range (0, max): + alpha = x * 2 * pi / max + x1 = x0 + r1 * cos (alpha) + y1 = y0 + r1 * sin (alpha) + r = r1 + (r2 - r1) * (x + 1) / max + x2 = x0 + r * cos (alpha) + y2 = y0 + r * sin (alpha) + w = (x + 1) * 0.1 / max + print " (SEG X1=%f Y1=%f X2=%f Y2=%f W=%f L=1)" % ( x1, y1, x2, y2, w) + +print "}" + +# +# ARC arc segments +# + +max = 8 +x0 = 9 +y0 = 1 +r = 0.1 +w = r / 4 + +print "{NET=arctst" + +for a in range (0, max): + for b in range (0, max): + alpha = 2 * pi * a / max + beta = 2 * pi * b / max + xc = x0 + 4 * r * a + yc = y0 + 4 * r * b + x1 = xc + r * cos (alpha) + y1 = yc + r * sin (alpha) + x2 = xc + r * cos (beta) + y2 = yc + r * sin (beta) + print " (ARC X1=%f Y1=%f X2=%f Y2=%f XC=%f YC=%f R=%f W=%f L=1)" % ( x1, y1, x2, y2, xc, yc, r, w) + +print "}" + + +print "{END}" Property changes on: src_plugins/import_hyp/tests/gensamp ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: src_plugins/import_hyp/tests/samp.hyp =================================================================== --- src_plugins/import_hyp/tests/samp.hyp (nonexistent) +++ src_plugins/import_hyp/tests/samp.hyp (revision 6815) @@ -0,0 +1,116 @@ +{VERSION=2.0} +{UNITS=METRIC LENGTH} +{BOARD + (PERIMETER_SEGMENT X1=1.0 Y1=0.0 X2=19.0 Y2=0.0) + (PERIMETER_SEGMENT X1=20.0 Y1=1.0 X2=20.0 Y2=9.0) + (PERIMETER_SEGMENT X1=19.0 Y1=10.0 X2=1.0 Y2=10.0) + (PERIMETER_SEGMENT X1=0.0 Y1=9.0 X2=0.0 Y2=1.0) + (PERIMETER_ARC X1=0.0 Y1=1.0 X2=1.0 Y2=0.0 XC=1.0 YC=1.0 R=1.0) + (PERIMETER_ARC X1=1.0 Y1=10.0 X2=0.0 Y2=9.0 XC=1.0 YC=9.0 R=1.0) + (PERIMETER_ARC X1=20.0 Y1=9.0 X2=19.0 Y2=10.0 XC=19.0 YC=9.0 R=1.0) + (PERIMETER_ARC X1=19.0 Y1=0.0 X2=20.0 Y2=1.0 XC=19.0 YC=1.0 R=1.0) + + (PERIMETER_SEGMENT X1=2.0 Y1=1.0 X2=3.0 Y2=1.0) + (PERIMETER_SEGMENT X1=3.0 Y1=9.0 X2=2.0 Y2=9.0) + (PERIMETER_ARC X1=2.0 Y1=9.0 X2=1.0 Y2=8.0 XC=2.0 YC=8.0 R=1.0) + (PERIMETER_SEGMENT X1=1.0 Y1=8.0 X2=1.0 Y2=2.0) + (PERIMETER_ARC X1=1.0 Y1=2.0 X2=2.0 Y2=1.0 XC=2.0 YC=2.0 R=1.0) + (PERIMETER_SEGMENT X1=4.0 Y1=2.0 X2=4.0 Y2=8.0) + (PERIMETER_ARC X1=3.0 Y1=1.0 X2=4.0 Y2=2.0 XC=3.0 YC=2.0 R=1.0) + (PERIMETER_ARC X1=4.0 Y1=8.0 X2=3.0 Y2=9.0 XC=3.0 YC=8.0 R=1.0) + (PERIMETER_ARC X1=5.5 Y1=5.0 X2=5.5 Y2=5.0 XC=5.0 YC=5.0 R=0.5) + (PERIMETER_ARC X1=5.5 Y1=6.0 X2=4.5 Y2=6.0 XC=5.0 YC=6.0 R=0.5) + (PERIMETER_SEGMENT X1=4.5 Y1=6.0 X2=5.5 Y2=6.0) + (PERIMETER_ARC X1=4.5 Y1=7.5 X2=5.5 Y2=7.5 XC=5.0 YC=7.5 R=0.5) + (PERIMETER_SEGMENT X1=4.5 Y1=7.5 X2=5.5 Y2=7.5) + (PERIMETER_ARC X1=5.5 Y1=8.5 X2=5.0 Y2=8.0 XC=5.0 YC=8.5 R=0.5) + (PERIMETER_SEGMENT X1=5.0 Y1=8.0 X2=5.5 Y2=8.5) +} +{STACKUP + (SIGNAL T=0.000700 L=1) + (DIELECTRIC T=0.002000 C=4.000000) + (PLANE T=0.000700 L=2 PS=0.001000) +} +{DEVICES +} +{NET=segtst + (SEG X1=6.500000 Y1=3.000000 X2=6.625000 Y2=3.000000 W=0.008333 L=1) + (SEG X1=6.433013 Y1=3.250000 X2=6.649519 Y2=3.375000 W=0.016667 L=1) + (SEG X1=6.250000 Y1=3.433013 X2=6.437500 Y2=3.757772 W=0.025000 L=1) + (SEG X1=6.000000 Y1=3.500000 X2=6.000000 Y2=4.000000 W=0.033333 L=1) + (SEG X1=5.750000 Y1=3.433013 X2=5.437500 Y2=3.974279 W=0.041667 L=1) + (SEG X1=5.566987 Y1=3.250000 X2=4.917468 Y2=3.625000 W=0.050000 L=1) + (SEG X1=5.500000 Y1=3.000000 X2=4.625000 Y2=3.000000 W=0.058333 L=1) + (SEG X1=5.566987 Y1=2.750000 X2=4.700962 Y2=2.250000 W=0.066667 L=1) + (SEG X1=5.750000 Y1=2.566987 X2=5.187500 Y2=1.592709 W=0.075000 L=1) + (SEG X1=6.000000 Y1=2.500000 X2=6.000000 Y2=1.250000 W=0.083333 L=1) + (SEG X1=6.250000 Y1=2.566987 X2=6.937500 Y2=1.376202 W=0.091667 L=1) + (SEG X1=6.433013 Y1=2.750000 X2=7.732051 Y2=2.000000 W=0.100000 L=1) +} +{NET=arctst + (ARC X1=9.100000 Y1=1.000000 X2=9.100000 Y2=1.000000 XC=9.000000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=1.400000 X2=9.070711 Y2=1.470711 XC=9.000000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=1.800000 X2=9.000000 Y2=1.900000 XC=9.000000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=2.200000 X2=8.929289 Y2=2.270711 XC=9.000000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=2.600000 X2=8.900000 Y2=2.600000 XC=9.000000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=3.000000 X2=8.929289 Y2=2.929289 XC=9.000000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=3.400000 X2=9.000000 Y2=3.300000 XC=9.000000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.100000 Y1=3.800000 X2=9.070711 Y2=3.729289 XC=9.000000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=1.070711 X2=9.500000 Y2=1.000000 XC=9.400000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=1.470711 X2=9.470711 Y2=1.470711 XC=9.400000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=1.870711 X2=9.400000 Y2=1.900000 XC=9.400000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=2.270711 X2=9.329289 Y2=2.270711 XC=9.400000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=2.670711 X2=9.300000 Y2=2.600000 XC=9.400000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=3.070711 X2=9.329289 Y2=2.929289 XC=9.400000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=3.470711 X2=9.400000 Y2=3.300000 XC=9.400000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.470711 Y1=3.870711 X2=9.470711 Y2=3.729289 XC=9.400000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=1.100000 X2=9.900000 Y2=1.000000 XC=9.800000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=1.500000 X2=9.870711 Y2=1.470711 XC=9.800000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=1.900000 X2=9.800000 Y2=1.900000 XC=9.800000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=2.300000 X2=9.729289 Y2=2.270711 XC=9.800000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=2.700000 X2=9.700000 Y2=2.600000 XC=9.800000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=3.100000 X2=9.729289 Y2=2.929289 XC=9.800000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=3.500000 X2=9.800000 Y2=3.300000 XC=9.800000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=9.800000 Y1=3.900000 X2=9.870711 Y2=3.729289 XC=9.800000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=1.070711 X2=10.300000 Y2=1.000000 XC=10.200000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=1.470711 X2=10.270711 Y2=1.470711 XC=10.200000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=1.870711 X2=10.200000 Y2=1.900000 XC=10.200000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=2.270711 X2=10.129289 Y2=2.270711 XC=10.200000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=2.670711 X2=10.100000 Y2=2.600000 XC=10.200000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=3.070711 X2=10.129289 Y2=2.929289 XC=10.200000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=3.470711 X2=10.200000 Y2=3.300000 XC=10.200000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.129289 Y1=3.870711 X2=10.270711 Y2=3.729289 XC=10.200000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=1.000000 X2=10.700000 Y2=1.000000 XC=10.600000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=1.400000 X2=10.670711 Y2=1.470711 XC=10.600000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=1.800000 X2=10.600000 Y2=1.900000 XC=10.600000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=2.200000 X2=10.529289 Y2=2.270711 XC=10.600000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=2.600000 X2=10.500000 Y2=2.600000 XC=10.600000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=3.000000 X2=10.529289 Y2=2.929289 XC=10.600000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=3.400000 X2=10.600000 Y2=3.300000 XC=10.600000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.500000 Y1=3.800000 X2=10.670711 Y2=3.729289 XC=10.600000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=0.929289 X2=11.100000 Y2=1.000000 XC=11.000000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=1.329289 X2=11.070711 Y2=1.470711 XC=11.000000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=1.729289 X2=11.000000 Y2=1.900000 XC=11.000000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=2.129289 X2=10.929289 Y2=2.270711 XC=11.000000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=2.529289 X2=10.900000 Y2=2.600000 XC=11.000000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=2.929289 X2=10.929289 Y2=2.929289 XC=11.000000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=3.329289 X2=11.000000 Y2=3.300000 XC=11.000000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=10.929289 Y1=3.729289 X2=11.070711 Y2=3.729289 XC=11.000000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=0.900000 X2=11.500000 Y2=1.000000 XC=11.400000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=1.300000 X2=11.470711 Y2=1.470711 XC=11.400000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=1.700000 X2=11.400000 Y2=1.900000 XC=11.400000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=2.100000 X2=11.329289 Y2=2.270711 XC=11.400000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=2.500000 X2=11.300000 Y2=2.600000 XC=11.400000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=2.900000 X2=11.329289 Y2=2.929289 XC=11.400000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=3.300000 X2=11.400000 Y2=3.300000 XC=11.400000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.400000 Y1=3.700000 X2=11.470711 Y2=3.729289 XC=11.400000 YC=3.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=0.929289 X2=11.900000 Y2=1.000000 XC=11.800000 YC=1.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=1.329289 X2=11.870711 Y2=1.470711 XC=11.800000 YC=1.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=1.729289 X2=11.800000 Y2=1.900000 XC=11.800000 YC=1.800000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=2.129289 X2=11.729289 Y2=2.270711 XC=11.800000 YC=2.200000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=2.529289 X2=11.700000 Y2=2.600000 XC=11.800000 YC=2.600000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=2.929289 X2=11.729289 Y2=2.929289 XC=11.800000 YC=3.000000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=3.329289 X2=11.800000 Y2=3.300000 XC=11.800000 YC=3.400000 R=0.100000 W=0.025000 L=1) + (ARC X1=11.870711 Y1=3.729289 X2=11.870711 Y2=3.729289 XC=11.800000 YC=3.800000 R=0.100000 W=0.025000 L=1) +} +{END}