设计木管乐器,用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,默认值为假
可选择将仪器的外径定义为孔直径之外的直径,而不是独立于孔直径之外的直径。
请参见示例/简单的示例。