FreeCAD

Форк
0
/
generate.py 
95 строк · 2.5 Кб
1
#! python
2
# -*- coding: utf-8 -*-
3
# (c) 2006 Jürgen Riegel  GPL
4

5
import os, sys, getopt
6
import generateBase.generateModel_Module
7
import generateTemplates.templateModule
8
import generateTemplates.templateClassPyExport
9

10
Usage = """generate - generates a FreeCAD Module out of an XML model
11

12
Usage:
13
   generate [Optionen] Model.xml Model2.xml Model3.xml ...
14

15
Options:
16
 -h, --help          print this help
17
 -o, --outputPath    specify the output path if differs from source path
18

19
Generate source code out of an model definition.
20

21
Author:
22
  (c) 2006 Juergen Riegel
23
  juergen.riegel@web.de
24
    Licence: GPL
25

26
Version:
27
  0.2
28
"""
29

30

31
# Globals
32

33

34
def generate(filename, path):
35
    # load model
36
    GenerateModelInst = generateBase.generateModel_Module.parse(filename)
37

38
    if len(GenerateModelInst.Module) != 0:
39
        Module = generateTemplates.templateModule.TemplateModule()
40
        Module.path = path
41
        Module.module = GenerateModelInst.Module[0]
42
        Module.Generate()
43
        print("Done generating: " + GenerateModelInst.Module[0].Name)
44
    else:
45
        Export = generateTemplates.templateClassPyExport.TemplateClassPyExport()
46
        Export.path = path + "/"
47
        Export.dirname = os.path.dirname(filename) + "/"
48
        Export.export = GenerateModelInst.PythonExport[0]
49
        Export.Generate()
50
        print("Done generating: " + GenerateModelInst.PythonExport[0].Name)
51

52

53
def main():
54
    defaultPath = ""
55

56
    class generateOutput:
57
        def write(self, data):
58
            pass
59

60
        def flush(self):  # mandatory for file-like objects
61
            pass
62

63
    sys.stdout = generateOutput()
64

65
    try:
66
        opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "outputPath="])
67
    except getopt.GetoptError:
68
        # print help information and exit:
69
        sys.stderr.write(Usage)
70
        sys.exit(2)
71

72
    # checking on the options
73
    for o, a in opts:
74
        if o in ("-h", "--help"):
75
            sys.stderr.write(Usage)
76
            sys.exit()
77
        if o in ("-o", "--outputPath"):
78
            defaultPath = a
79

80
    # running through the files
81
    if len(args) == 0:
82
        sys.stderr.write(Usage)
83
    else:
84
        for i in args:
85
            filename = os.path.abspath(i)
86
            if defaultPath == "":
87
                head, tail = os.path.split(filename)
88
                print(head, tail)
89
                generate(filename, head)
90
            else:
91
                generate(filename, defaultPath)
92

93

94
if __name__ == "__main__":
95
    main()
96

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.