を使用できます。 http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#Surfacesurface()
を参照してください。外部スクリプトで高さマップを計算し、その値を「surface.dat」などのファイルに書き込みます。結果のサーフェスを移動および回転し、 で使用できます。difference()
このコードとドキュメントの「surface.dat」で試しました
difference() {
translate([0,0,5])cube([10,10,10], center =true);
rotate([0,0,90])surface(file = "surface.dat", center = true, convexity = 5);}
編集 28.10.2014: 別の方法では、行列でピクセルデータを使用して、for ループと行列の反復によってブレスレットの円周にピクセルごとに配置できます。マトリックス内のベクトルには、彫刻の深さの寸法として、ピクセル (x)、ピクセル (y)、およびグレー値/255 が含まれます。形状の数を減らすために、1 つの列のピクセルをプールして、この列の深度プロファイルを表すポリゴンを作成し、それを線形押し出します。この場合、ベクトルにはピクセル (x) とポリゴンのポイント マトリックスが含まれます。Cheの既知のグラフィックで試してみました。マトリックスを生成するには、python3.4、PyQt5、および Qt.QtGui.QImage を使用します。デフォルトでは、openscad は 2000 要素でレンダリングをオフにします。編集/設定/詳細で必要な数に設定できます
openscad スクリプト:
include <./matrix_p.scad>;
difference() {
translate([-b,0,0]) rotate([0,90,0]) difference() {
cylinder(h = hb, r = rb, center = false);
translate([0,0,-0.5]) cylinder(h = hb+1, r = rb-tb, center = false);
}
for (val = m)
rotate([-ap*val[0],0,0]) translate([0,-rb-0.1,-ps/2]) linear_extrude(height = ps) polygon(points = val[1]);
}
matrix_p.scad で設定されたパラメーター:
// userinput
rb = 50; //radius bracelet
tb = 5; //thickness of b.
hb = 80; //height of b.
b = 10; //borderwidth beside engraving
// input from Qt.QtGui.QImage
iw = 590; //imagewidth in pixel
ih = 726; //height in pixel
ps = (hb-2*b)/ih; //scaling of pixel to fill the free place
ap = (ps*180)/(PI*rb); //angle per pixel
すべてのスクリプトをダウンロード