Contact me: hankecnc@gmail.com

[建议] 使.bCNC 模块化 #424

推推 grbl 3年前 (2023-02-01) 288次浏览
打开
onekk 打开了这个问题 2016 年 9 月 10 日 · 6条评论
打开

[建议] 使.bCNC 模块化#424

onekk 打开了这个问题 2016 年 9 月 10 日 · 6条评论

注释

[建议] 使.bCNC 模块化 #424
贡献者

维护 .bCNC 与跨版本更改的自定义同步变得越来越困难。

在 1.0 版本的预演中,建议使 .bCNC 文件仅包含界面自定义,并将通行费、材料和其他设置放在外部文件中,可能在单独的目录中,名称(bCNC 设置?)

可能有一个 toll.ini 和 material.ini,也许还有一个 machine.ini

以这种方式,相关定制将在 bCNC 版本更改中保留,并且可以制作一个脚本来在版本之间转换表格

我在我的一个项目中成功地使用了这种方法,它对我很有帮助,如果程序在第一次启动时找不到合适的目录,它会创建它们,否则它会利用目录中存在的文件。

问候

[建议] 使.bCNC 模块化 #424

一种选择是在 .ini 文件中使用#include 命令。
所以任何人都可以打破它,因为他希望包含多少。

2016-09-10 10:46 GMT-03:00 Carlo notifications@github.com

维护 .bCNC 与
跨版本更改的自定义同步变得越来越困难。

在 1.0 版本的预演中,建议使 .bCNC
文件仅包含界面自定义,并将通行费、材料和
其他设置放在外部文件中,可能在单独的目录中,
名称(bCNC 设置?)

可能有一个 toll.ini 和 material.ini,也许还有一个 machine.ini

以这种方式,相关定制将在 bCNC
版本更改中保留,并且可以制作一个脚本来
在版本之间转换表格

我在我的一个项目中成功地使用了这种方法,它对
我很有帮助,如果程序在第一次启动时找不到
合适的目录,它会创建它们,否则它会利用目录中存在
的文件。

问候


您收到此消息是因为您订阅了此线程。
直接回复此电子邮件,在 GitHub
#424上查看它,或将线程静音
https://github.com/notifications/unsubscribe-auth/AK4bcfestjh0IXA8BasNcdJbPEi57Ajqks5qorTCgaJpZM4J5uXJ

[建议] 使.bCNC 模块化 #424
贡献者作者

我正在尝试在 Linux 中的 ~/.config/bCNC/ 目录下或 Windows 中的 $User/%AppData%/bCNC 中实现模块化配置目录。

但是由于加载配置相当简单,您将文件名放在读取配置文件的行中,最后读取的配置变量就是它所使用的。

为了保存,似乎所有配置都保存在 .bCNC 文件中。

我试图从代码中猜测如何从不同的文件加载 Buttons Machine 和 Tools 配置,并在执行保存时或在程序关闭时自动将它们保存在同一个文件中。

[建议] 使.bCNC 模块化 #424
贡献者作者

在查看 bCNC 的代码后,修改 ini 文件 .bCNC 以拆分为不同的文件将是一项困难的练习,无需与@vlachoudis很难集成到bCNC的结构中。

[建议] 使.bCNC 模块化 #424 vlachoudis 添加了 增强 标签 2016 年 9 月 15 日
[建议] 使.bCNC 模块化 #424
所有者

@onekk模块化的方法肯定更好。乞讨的时候没想到会膨胀这么多。我将不得不考虑如何是最简单的方法,并提供一些读取旧文件的兼容性。

[建议] 使.bCNC 模块化 #424

我相信添加#Include 选项将是最简单的方法。

2016-09-15 2:13 GMT-03:00 Vasilis Vlachoudis notifications@github.com

@onekk https://github.com/onekk一种模块化方法当然
更好。乞讨的时候没想到会膨胀这么
多。我将不得不考虑如何是最简单的方法,并
提供一些读取旧文件的兼容性。


你收到这个是因为你发表了评论。
直接回复此电子邮件,在 GitHub
#424(评论)上查看,
或将线程静音
https://github.com/notifications/unsubscribe-auth/AK4bcQ-hCf31MvZ0Q_dCM445AECLBjMqks5qqNP8gaJpZM4J5uXJ

[建议] 使.bCNC 模块化 #424
贡献者作者

我做了一个方法,对于我开始编写但现在被放弃的 CAM 程序来说很容易。

我已经定义了一个 python 模块,它保存名为 glb.py 的全局变量并定义了一些空字典。

另外,对于每个文件,我都编写了规则来检查文件的存在并声明两个预定义的位置,这些位置在基于 os 标识符的程序的 init 例程中定义。

Linux 将数据保存在 .config 隐藏目录中

Windows 可能在 $user 目录中我不记得它是否在 %APPDATA% 或类似目录中

def check_tool_table(self):
    if glb.f_tooltable is None:
        if glb.localini == 1:
            EC_L.create_toolfile(self, "./EuroCAM")
        else:
            EC_L.create_toolfile(self, "~/.config/EuroCAM")
    else:
        pass

    read_tool_table(self)        

此函数读取工具表并填充

def read_tool_table(self):
    '''
    Read the tools config file and populate the tools dictionary
    '''
    config = ConfigParser.SafeConfigParser()
    config.read(glb.f_tooltable)
    if config.sections() is not []:
        glb.Tools={}
        tdata = []
        for name in config.sections():
            for data in glb.Tooldata:
                tdata.append(config.get(name, data))
            if glb.debug[4] == 1:
                print "ec_logic:read_tool_table > tdata = {0} ".format(tdata)

            glb.Tools[str(name)] = tdata
            tdata = []

必要时,字典会用这个例程转储到文件中,甚至还有一个更新例程,可以写入工具表并在必要时重新读取。


def write_tool_table(self):
    config = ConfigParser.SafeConfigParser()

    for k,v in glb.Tools.iteritems():
        config.add_section(k)
        for i,d in enumerate(glb.Tooldata):
            if glb.debug[4] == 1:
                print "ec_logic:write_tool_table > k,v,str(i) = ", k,d,str(v[i])
            config.set(k,d,str(v[i]))
    with open(glb.f_tooltable, 'wb') as configfile:
        config.write(configfile)

def update_tool_table(self):
    write_tool_table(self)
    self.Log.append("Re Writing ToolTable")
    read_tool_table(self)
    self.Log.append("Re Read ToolTable")

使用这种方法,每个变量都用一个名称定义,并且在代码中寻址更紧凑

在 glb.py 中

def ini_search_paths(file_name):
    paths = map(
        lambda path: os.path.join(path, file_name),
        (
            '~/.config/EuroCAM/',
            './EuroCAM/'
        ),
    )
    for path in paths:
        if os.path.isfile(path):
            return path

# These variable are defined here to be used in all the modules.
# Some of them are translated in the main loop

inif_name = "eurocam.ini"
toolf_name = "tooltable.ini"
machf_name = "machtable.ini"
wp_name = "wptable.ini"

inifile = ini_search_paths(inif_name)
f_tooltable = ini_search_paths(toolf_name)
f_machtable = ini_search_paths(machf_name)
f_wptable = ini_search_paths(wp_name)

变量保存每个工具项下的字段:

Tooldata = ["sha","dia","rad","len","ovl","shd","flu","cc","opt"]

但也许还有另一种更好的方法。

以这种方式导入和“传播”字典,仅导入 glb 模块(全局变量模块)。

但我不是专业程序员。

问候

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
项目

还没有

发展

没有分支机构或拉取请求

3人参加
[建议] 使.bCNC 模块化 #424[建议] 使.bCNC 模块化 #424[建议] 使.bCNC 模块化 #424

喜欢 (0)