设计木管乐器,用3D打印机或数控铣床制作。

demakein的Python项目详细描述



demakein
=


http://www.对数.net/pfh/design


paul harrison-pfh@对数.net




demakein是一套用于设计和制作木管乐器的python工具。

是一个数值优化,它选择
孔的形状和指孔的位置、大小和深度,以便
仪器为给定的一组
指孔生成正确的注释。

-"make"阶段进行设计并将其转换为三维对象,然后
将对象切割成可以进行数控铣削或三维打印的片段。

demakein可以通过命令"demakein"使用,也可以作为python中的
库使用。Demakein被设计成可扩展的,
,我希望您会发现编写代码来创建自己的新工具相对容易。您可以创建现有类的子类
,以便调整一些参数,或者使用现有示例作为模板创建
全新的类。




requirements
===



-linux:
使用包管理器安装python 2以及pip.

-os x
据报道是可能的,但我无法给出确切的说明。

-windows:
在虚拟机(如virtualbox)中运行linux。
(已确认工作)

"设计"工具需要nesoni。它们应该在所有运行python的平台上工作。


-nesoni



"make"工具还需要cgal和相关的paraphenalia。
我只在linux上测试过它,但我听说在OSX上也有可能。

-g++
-cmake
-libcffi
-cgal


sudo apt get install g++cmake libffi dev libcgal dev

-cffi

sudo pip install--upgrade cffi


最简单的方法是在debian或ubuntu linux系统上安装sudo apt get install g++cmake libffi dev libcgal dev python pip geeqie

然后,可以通过键入:

或:
python-m demakein



===


使用pypy将使demakein运行得更快。

sudo apt get install g++cmake libffi dev libcgal dev python pip geeqiemyenv/bin/python-m demakein



-cffi

是在一个名为mylute的目录中创建的。

我们刚刚制作了用于3d打印的stl文件。如果我们想用数控铣床加工长笛呢?

demakein make filte:myfilte--mill yes--open yes--prefix milling


如果要创建自己的自定义乐器,可以创建所提供乐器的子类。可以在"examples"目录中找到一些如何执行
操作的示例。您可以使用这些
作为起点。




仪器设计工具是demakein.design.instru的子类。mentu designer.
这些工具定义了一组类属性,这些属性约束了仪器的设计。

closed\u top
-bool
仪器的顶部是否关闭?
簧片和黄铜风格的吹口有效地闭合。
鼻腔有一个开口端。
一个笛子可以近似为一个开口端,也可以将鼻腔的孔视为一个孔,并将末端设置为闭合。
请参见示例/simple_reedpipe.py,例如closed_top=true。
请参阅examples/simple_fleet.py以获取一个示例,其中closed_top=false。


inital_length
-优化开始时仪器的float
长度。
根据--transpose参数自动调整。
只需提供一个大致合理的值,
eg使用demakein.design.wavelength函数


n个孔
-int
指孔数。


fingerings
-元组列表(注,[0/1,……])
生成每个所需音符的所需指法模式。
<;note>;通过--transpose参数自动调整。
列表从乐器底部开始。
并非所有指法模式都是实际可行的,
这可能需要进行一些实验。

浮子
指孔之间的最小间距(mm)。

值应在0到1的范围内。
较小的值将强制连续孔之间的间距更相似。


孔角度
-n孔列表浮动
每个孔的垂直角度。
斜角孔可能允许更舒适的孔间距。

内径
-浮动列表[高级:或元组(低,高)]
第一个元素是仪器底部的孔径。
最后一个元素是仪器顶部的孔径。
孔是分段线性的,
中间元素是工件之间的孔径边界(扭结)。
精确的位置取决于数值优化。

示例/stepped_shawm.py例如。


孔,
作为总长度的一部分。

外径
初始外径
最小外径
-至于内径,
但是定义仪器外部的形状
(因此每个手指孔的深度)。


outer_add
-bool,默认值为假
可选择将仪器的外径定义为孔直径之外的直径,而不是独立于孔直径之外的直径。
请参见示例/简单的示例。








欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java游戏!框架伪造应用程序它实际上做什么?   java如何在JavaFx中显示表视图中的即时更改?   对象类的equals()方法的java重载   xpages介绍如何部署java。IBM Notes中的策略更改   java如何访问侦听器中的另一个视图?   java getDefaultDisplay()的替代方法是什么   java opencv匹配模板   java Android Firebase写入数据时的常量超时   在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。   带有GUI的swing Java模拟无法运行模拟   java NoSuchElementException在特定的Web端上使用无头铬和硒   java对文件进行迭代,即使文件在目录中也会出现“未找到文件”异常。你能告诉我为什么吗?谢谢   递归Java 8,匿名递归嵌套方法   java为什么我看到枚举常量的字段值会被序列化/反序列化?在哪种情况下,枚举中哪些内容没有序列化?   java在运行sonar scanner和Spotbugs规则时出错,用于单片项目?   java如何检查硬件键盘是否可用?(黑莓)   tile游戏动作侦听器循环中的java错误   sockets Java线程池与高请求场景中的新线程   java如何使用Hibernate注释在联接表上创建索引?