femagtools 1.6.5__py3-none-any.whl → 1.6.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,74 @@
1
+
2
+
3
+ if __name__ == '__main__':
4
+ import pathlib
5
+ import argparse
6
+ import logging
7
+ import logging.config
8
+ from femagtools.dxfsl.converter import convert
9
+
10
+ logger = logging.getLogger(__name__)
11
+ argparser = argparse.ArgumentParser(
12
+ description='Process SVG file and create a plot or FSL file.')
13
+ argparser.add_argument('svgfile',
14
+ help='name of SVG file')
15
+ argparser.add_argument('--rotor',
16
+ help='rotor without airgap in/out',
17
+ dest='rotor',
18
+ default='')
19
+ argparser.add_argument('--stator',
20
+ help='stator without airgap in/out',
21
+ dest='stator',
22
+ default='')
23
+ argparser.add_argument('-p', '--plot',
24
+ help='show plots',
25
+ dest='show_plots',
26
+ action="store_true")
27
+ argparser.add_argument('--areas',
28
+ help='show all areas',
29
+ dest='show_areas',
30
+ action="store_true")
31
+ argparser.add_argument('--id',
32
+ help='write id of areas',
33
+ dest='write_id',
34
+ action="store_true")
35
+ argparser.add_argument('-f', '--fsl',
36
+ help='create fsl',
37
+ dest='write_fsl',
38
+ action="store_true")
39
+ argparser.add_argument('-v', '--view',
40
+ help='show a view only',
41
+ dest='view',
42
+ action="store_true")
43
+ args = argparser.parse_args()
44
+
45
+ loglevel = logging.INFO
46
+ logging.basicConfig(level=loglevel,
47
+ format='%(asctime)s %(message)s',
48
+ filemode='w')
49
+ part = ()
50
+ if args.stator:
51
+ if args.rotor:
52
+ logger.error("Stator or Rotor expected")
53
+ sys.exit(1)
54
+ part = ('stator', args.stator)
55
+ elif args.rotor:
56
+ part = ('rotor', args.rotor)
57
+
58
+ if not args.write_fsl:
59
+ if not (args.show_plots or args.show_areas or args.view):
60
+ args.write_fsl = True
61
+
62
+ res = convert(args.svgfile, # SVG-Filename
63
+ part=part,
64
+ view_only=args.view,
65
+ show_plots=args.show_plots,
66
+ show_areas=args.show_areas,
67
+ write_fsl=args.write_fsl,
68
+ write_id=args.write_id)
69
+
70
+ if args.write_fsl:
71
+ if res is not None:
72
+ p = pathlib.Path(args.svgfile)
73
+ basename = p.stem
74
+ pathlib.Path(basename + '.fsl').write_text('\n'.join(res['fsl']))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: femagtools
3
- Version: 1.6.5
3
+ Version: 1.6.6
4
4
  Summary: Python API for FEMAG
5
5
  Author-email: Ronald Tanner <tar@semafor.ch>, Dapu Zhang <dzhang@gtisoft.com>, Beat Holm <hob@semafor.ch>, Günther Amsler <amg@semafor.ch>, Nicolas Mauchle <mau@semafor.ch>
6
6
  License: Copyright (c) 2016-2023, Semafor Informatik & Energie AG, Basel
@@ -49,6 +49,10 @@ Provides-Extra: meshio
49
49
  Requires-Dist: meshio ; extra == 'meshio'
50
50
  Provides-Extra: mplot
51
51
  Requires-Dist: matplotlib ; extra == 'mplot'
52
+ Provides-Extra: svgfsl
53
+ Requires-Dist: dxfgrabber ; extra == 'svgfsl'
54
+ Requires-Dist: networkx ; extra == 'svgfsl'
55
+ Requires-Dist: lxml ; extra == 'svgfsl'
52
56
  Provides-Extra: test
53
57
  Requires-Dist: pytest ; extra == 'test'
54
58
  Provides-Extra: vtk
@@ -1,4 +1,4 @@
1
- femagtools/__init__.py,sha256=B9tZzH3ORCUozphDSn_oKOTNXTXuJl8AOzcIsxSzohw,1615
1
+ femagtools/__init__.py,sha256=lJNqlV6QzIM5MGG7uASKr5ZDeIiKRDYFtLqJu1GYyRQ,1615
2
2
  femagtools/airgap.py,sha256=ZCIZTYf6BbuNYx68y9fUDBQo3taN8RuGl8q-jJ7ygiA,1577
3
3
  femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
4
4
  femagtools/amela.py,sha256=pHjfXzpANI-7oz8MtrqNcyDZ6PxVM91vCJuvYhHy1rk,13891
@@ -23,7 +23,7 @@ femagtools/gmsh.py,sha256=IKhNiviIBji4cMxAhxaYXNqBRMNAPSKsBGdnGyxkyQw,3903
23
23
  femagtools/google.py,sha256=ugRyHY1zBjHR4aNfbA7GeF-ZU_NgleuVTZaWpi_XLT4,17144
24
24
  femagtools/grid.py,sha256=s7LfKKLm2H4-cza2kSEANq6vwxq10Su3TJl3kHShHRA,1561
25
25
  femagtools/hxy.py,sha256=PkiZ_-CRhtvtpkmLAP8iMtwvzh7CjKGGcAbOhFb4Nls,6275
26
- femagtools/isa7.py,sha256=cUZx9fpxZgkw2G-cnveR-X-_lWP7Z1Q88MCysLl9MFI,58336
26
+ femagtools/isa7.py,sha256=HnD_NZ5-Oj98kw8e3o3tdHt07kfEL-d0N6KmqkoeTeU,58332
27
27
  femagtools/jhb.py,sha256=stJxkmzHpfUIBVcFw7jWbV5KN9_EFqzOCgacyhUqWvM,1779
28
28
  femagtools/job.py,sha256=dOatzr10nIda76CjVRSS0SfEWC8_BAw0kowli523qbY,11320
29
29
  femagtools/losscoeffs.py,sha256=dlSYDS13RqpPHLdv_EPWIA9liwhqjbxUiN7t7GFPZhw,5397
@@ -47,28 +47,31 @@ femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
47
47
  femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
48
48
  femagtools/windings.py,sha256=6ioABZRWQ3xA4kmEz2NUkXh-C-FmW9YYkjQKs5YakQs,22197
49
49
  femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
50
- femagtools/dxfsl/area.py,sha256=iwJEiUc1gPprHBXFhG4Qa9K-IeanzIe6qs68llO99EE,58173
51
- femagtools/dxfsl/areabuilder.py,sha256=Mcs0IhbSADfbjkWbnhw82bmrzpJ6Xed_Ja62i80aG_Q,20849
52
- femagtools/dxfsl/concat.py,sha256=8jtFFOSWslr9I3RCemsvzHyypSI_P2Y8QQgDlgmbcts,13381
50
+ femagtools/dxfsl/area.py,sha256=cbg3Vi3UUutiofvX9-L0OGmW4u1XmI8PjnY54Lq372M,58872
51
+ femagtools/dxfsl/areabuilder.py,sha256=gaSdJe-LImcn-rCe-9hXTVO6uJZMMEnV9hzft-MDTHs,26928
52
+ femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
53
53
  femagtools/dxfsl/conv.py,sha256=j17gjZ7XjoP6QmEO50ZMA-jyYrcMQEgpDH0hZN26RbM,9236
54
- femagtools/dxfsl/converter.py,sha256=6BCwlVp0PiSZ4Wj-YDgl7ynWNN2SBuwxw5VnNQ55Y9w,20821
54
+ femagtools/dxfsl/converter.py,sha256=41eyMSMad8YXiYSrTGrr9YuTPXHRIczh1fGX0MT9NZ8,21322
55
55
  femagtools/dxfsl/corner.py,sha256=UI1MLlVmiTBURywsOnXnXV7eBABoENc6ortkW_3GYH8,1266
56
56
  femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
57
+ femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
58
+ femagtools/dxfsl/femparser.py,sha256=DKRGzrJ4LFFsaNmxl6kiRR4A2y_Xv9Wp6jGYSg0Dz10,2120
57
59
  femagtools/dxfsl/fslrenderer.py,sha256=C4oonLPzKb_9IKvpm-fMvbhQZqtP_7xWG5bzpq8P1CY,23377
58
60
  femagtools/dxfsl/functions.py,sha256=bQftVRqGVndG48SPkjkOIULjcnB40Voz0lgDQ4uBMk8,11705
59
- femagtools/dxfsl/geom.py,sha256=ymXZS9kQfWkAC-ZFduz--flQOH3BydonqpjhbH4VBcU,164336
60
- femagtools/dxfsl/journal.py,sha256=VlbKKQr29UKDyz3DXFulLjHZcrMbPscHIgFZ4Vgl5PI,3567
61
+ femagtools/dxfsl/geom.py,sha256=m7IaejPCPDXHAaa2qE0YWLB3FjBVvnP9peeVikPdXWY,149449
62
+ femagtools/dxfsl/journal.py,sha256=7PQ4TZ5uKX1c_Xo7JvGdyw7PH_6ydqxgHdElqTBVSds,3239
61
63
  femagtools/dxfsl/machine.py,sha256=a6kq7SXRp_u8sIH-aSRT_tnr3bpdvZItLvhNVm_TC5s,42548
62
64
  femagtools/dxfsl/plotrenderer.py,sha256=dIOM8p3UNTlqypxuPcLCegOaK19j3-ahelZ8hneLJ6k,12710
63
- femagtools/dxfsl/shape.py,sha256=Tc3RrC9scFnhSjXzJC4gdB9I_dWuCtwlQrMZBisydO4,48608
64
- femagtools/dxfsl/symmetry.py,sha256=qdgl_1tFuWShs9pp7B0Sf1mPvPV5puUapBg3PI5ShZw,8959
65
+ femagtools/dxfsl/shape.py,sha256=5M5vbT-W_nZCamlbuCixi0hlAOOUIlubsJT57TB-jS0,48608
66
+ femagtools/dxfsl/svgparser.py,sha256=R8V2V5jE6JyVfzshJVaPgsSuMlQf_pwJTFvrTrKDxZ0,2905
67
+ femagtools/dxfsl/symmetry.py,sha256=pLuGLPRCHLSQiMe7HeDcZr7IR-QJqJX49Rag_S408T8,13835
65
68
  femagtools/machine/__init__.py,sha256=U8W65K7jr7jDdC1KnJh0WjYd8DFaLnIFVvlh-TKcV94,7174
66
69
  femagtools/machine/afpm.py,sha256=hNyDFRLGmCuWRPZl_u1ztJ4pA-Y_mxLaVvg3UJkzRuE,24766
67
- femagtools/machine/effloss.py,sha256=I8s2Fog6klhgcRYw3448qfGvzaQ0AQUJXFdNoeDyhfE,13138
68
- femagtools/machine/im.py,sha256=2GkWS6bju2isl1Ng-4uldq4Wdmk-2PgSpgNQ3an8AcM,37882
69
- femagtools/machine/pm.py,sha256=-mPkUY4-og1blVeIdipSx6Ff178gtZnU6A6oDDvoUQk,56229
70
+ femagtools/machine/effloss.py,sha256=630JZnLBCIo_XKXkhXWg74hxHv18wy4f8hXNv5xiDwc,13151
71
+ femagtools/machine/im.py,sha256=8cA7aNr-OkrMlmFaqtnZkDrCQtqSKOFYePwcmZW3oAM,37925
72
+ femagtools/machine/pm.py,sha256=CpJpZDsbVXbJZSyxByI-DH1C9CFJZQ2zCDgIuXxsmR8,58517
70
73
  femagtools/machine/sizing.py,sha256=aN_OahewjTTBHnpRNfLh1AGFhqnoeZVuMBeb_3MCIVI,23096
71
- femagtools/machine/sm.py,sha256=pkik913kU41PPiUpwDy_6BEKfCIhvY6FEp-fbU2Lqew,34320
74
+ femagtools/machine/sm.py,sha256=3QBnufKiQe85ELWyD9HwnXxvMmoYi-w7rpvCXAXOw10,34398
72
75
  femagtools/machine/utils.py,sha256=rZNqrw0VkwEhexd_idffHyoodaID5cIDmteyIVF1MJ8,18621
73
76
  femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
74
77
  femagtools/moo/algorithm.py,sha256=lNEf0Bur4yFpIJeLtAC3oIus8sOMWTb7jepFlD28YzE,5445
@@ -84,9 +87,10 @@ femagtools/plot/fieldlines.py,sha256=QtKF4nhnQ_FHHGh9Qez3GVmym0CLhW1ZyIKtk4pzos4
84
87
  femagtools/plot/fluxdens.py,sha256=NlexRJ3f_8CgKoWrV82ZIsAXPrLhwj98uOe8_fUks7A,1082
85
88
  femagtools/plot/forcedens.py,sha256=37FQLViGsjCh20tSlWlVfLTsvtjzdK_pEQGC2KcQ-xI,2996
86
89
  femagtools/plot/mcv.py,sha256=AKbWhJd20Kcec8Hv9dX32G5yTLPkcWorQS7-3P6m-mQ,2960
87
- femagtools/plot/nc.py,sha256=CU-6420EYq6S4ZzyqxCOyxrbHIeJ8_aBVxDPM3E2oD4,9516
90
+ femagtools/plot/nc.py,sha256=yq-uYppAEUePbo1SAaBKNKla3cyqdLh5z9ArhtwPYZY,9548
88
91
  femagtools/plot/phasor.py,sha256=5iqxCQi_idkdqYALJjQb6YFr_Zv5xsUayDoKL5HzsdE,4765
89
92
  femagtools/plot/wdg.py,sha256=UooR1K8JDoVjKWEox_AfkBY40L87jk2L9OdIFz4O-OY,8462
93
+ femagtools/svgfsl/converter.py,sha256=EKPQZwvV-jFDOceitt_sMhF5IxbWflj-4QU1xZrkwQM,2738
90
94
  femagtools/templates/FE-losses.mako,sha256=Rql5_8Q6_uthpr-uFXMUo7tdHehfZYND-7M-ohJXVU8,874
91
95
  femagtools/templates/afm_rotor.mako,sha256=fY-dlZvRLN9UAy5V6Q_inWghkSUe8pzrCYjJdNgfNXs,3112
92
96
  femagtools/templates/afm_stator.mako,sha256=l1xEwxffZ1jyx5wuJ3rhVbVlZirJzD2K8n4i5Dvbxuc,5344
@@ -164,6 +168,7 @@ tests/test_asm.py,sha256=NAMJ2Km4zi6byhooq5E7GZbkFeSNSTaLpJWt-jQF5cE,1398
164
168
  tests/test_bchreader.py,sha256=byqjDa_329cCgQFhLHLOgxiwZ0UMzvWb-rVjvN9wFQA,15497
165
169
  tests/test_conductor.py,sha256=T7bmuSdI2Fowwm2Ht-8D0Qnfs1_lx1aoi9RhC2p5nYU,332
166
170
  tests/test_convert.py,sha256=oseuhm3Iw-9b4WzBjA_Og2lgXPqKYicLUnfadq5Yick,6497
171
+ tests/test_dxfsl.py,sha256=DBAjtwNAwcB7VYZBjul7xf4ovu14n3Z0fxyreVzAW4A,383
167
172
  tests/test_effloss.py,sha256=-kJJNgS5c6saHXjNuhAe5GdWfr9mEYpPo8fE8OtjsNA,1142
168
173
  tests/test_erg.py,sha256=kRVzpXa6JDdbxTss18HUWKny9Dx8IMx9uGTrbQCnHwg,523
169
174
  tests/test_femag.py,sha256=55cCx90tJ1BEeu_-DOit37y26hFGVSYwkT81s9-p28E,1934
@@ -204,9 +209,9 @@ tests/moo/__init__.py,sha256=l8HD-AY8EwxOoo_VrG3HgEZb2MaHypvnhKCVSkR-DTA,808
204
209
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
205
210
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
206
211
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
207
- femagtools-1.6.5.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
208
- femagtools-1.6.5.dist-info/METADATA,sha256=sIg7QXptjJdMbqK8Bnx630dwvdUEQKowAY2SXrBZDgc,5685
209
- femagtools-1.6.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
210
- femagtools-1.6.5.dist-info/entry_points.txt,sha256=UXpu6KnrykN89sCUaFAIIzn_dYwuxizUS0GcPdoekro,195
211
- femagtools-1.6.5.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
212
- femagtools-1.6.5.dist-info/RECORD,,
212
+ femagtools-1.6.6.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
213
+ femagtools-1.6.6.dist-info/METADATA,sha256=cBqOE9Ki2As_lrqQtRRHaOlUzo8FqxihyLNB7SdGjxU,5838
214
+ femagtools-1.6.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
215
+ femagtools-1.6.6.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
216
+ femagtools-1.6.6.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
217
+ femagtools-1.6.6.dist-info/RECORD,,
@@ -3,3 +3,4 @@ femagtools-bchxml = femagtools.bchxml:main
3
3
  femagtools-convert = femagtools.convert:main
4
4
  femagtools-dxfsl = femagtools.dxfsl.conv:main
5
5
  femagtools-plot = femagtools.plot.bch:main
6
+ femagtools-svgfsl = femagtools.svgfsl.converter:main
tests/test_dxfsl.py ADDED
@@ -0,0 +1,12 @@
1
+ import pathlib
2
+ from femagtools.dxfsl.converter import convert
3
+
4
+ def test_convert():
5
+ p = pathlib.Path(__file__).parent / 'data' / 'IPM-130-4.dxf'
6
+ r = convert(str(p))
7
+
8
+ assert r['num_poles'] == 4
9
+ assert r['tot_num_slot'] == 12
10
+ totnumsl = [l for l in r['fsl'] if l.startswith('m.tot_num_slot')]
11
+ assert len(totnumsl) == 1
12
+ assert totnumsl[0].split()[-1] == '12'