2018.06.27
3Dプリンターで多重交差するプラレールをDIY(OpenSCAD出力スクリプトあり)
↓3DなプラレールのDIYが行き詰っているので楽しい方向で遊び中
3Dプリンターで作ったDIYレールで、プラレールを高い位置まで導く試み(失敗) /usePocket.com別館 最小半径で上に登っていくDIYプラレールを3Dプリンターで作る試み(その2) /usePocket.com別館
作りたい形を指定するだけでプラレールのレールの3Dプリントデータを作成するOpenSCADスクリプト /usePocket.com別館 1 users 半径5cmの急カーブを楽々曲がれる改造プラレールのレールをOpenSCADと3DプリンターでDIY /usePocket.com別館
少しは動画作り成長してる?
以下、技術的説明です。
↓先日紹介したDIYプラレールのスクリプトを1本設置したところ。

↓もちろん重ねて設置出来ますが、交差部分に壁があり通れません。

↓そこで複数のレールを設置後に、レールの軌跡から車輪走行部分のオブジェクトを作ります(プラレールは両面走行可なので、裏表分作っています。この部分をOpenSCADのdifferenceで差し引きます。

↓完成。

↓こんなメチャクチャに交差しているレールも問題無しです。

スクリプトはこのようになります。複雑になりすぎて正確にプレビューされないし、高速なPC使わないとレンダリングにものすごく時間かかるのは仕様です。
----------------------------------------------------
$fn=10;
pitch=1/72;
wall_body=8; // normal=8
innerwall_body=8; //normal=8
wall=8; //normal=8
width=38; //normal=38
//main /////////////////////////////////////////////
difference(){
body1();
body2();
}
in(t2xyz(1),t2xyz(1+pitch));
out(t2xyz(0+pitch),t2xyz(0));
in(t2xyz2(1),t2xyz2(1+pitch));
out(t2xyz2(0+pitch),t2xyz2(0));
in(t2xyz3(1),t2xyz3(1+pitch));
out(t2xyz3(0+pitch),t2xyz3(0));
in(t2xyz4(1),t2xyz4(1+pitch));
out(t2xyz4(0+pitch),t2xyz4(0));
module body1(){
for (t=[0:pitch:1-pitch]){body(t2xyz(t),t2xyz(t+pitch),t2xyz(t+pitch*2),t);}
for (t=[0:pitch:1-pitch]){body(t2xyz2(t),t2xyz2(t+pitch),t2xyz2(t+pitch*2),t);}
for (t=[0:pitch:1-pitch]){body(t2xyz3(t),t2xyz3(t+pitch),t2xyz3(t+pitch*2),t);}
for (t=[0:pitch:1-pitch]){body(t2xyz4(t),t2xyz4(t+pitch),t2xyz4(t+pitch*2),t);}
}
module body2(){
for (t=[0:pitch:1-pitch]){bodyDelete(t2xyz(t),t2xyz(t+pitch),t2xyz(t+pitch*2),t);}
for (t=[0:pitch:1-pitch]){bodyDelete(t2xyz2(t),t2xyz2(t+pitch),t2xyz2(t+pitch*2),t);}
for (t=[0:pitch:1-pitch]){bodyDelete(t2xyz3(t),t2xyz3(t+pitch),t2xyz3(t+pitch*2),t);}
for (t=[0:pitch:1-pitch]){bodyDelete(t2xyz4(t),t2xyz4(t+pitch),t2xyz4(t+pitch*2),t);}
}
////////////////////////////////////////////////////
function t2xyz(temp)=[temp*100-50,temp,0];
function t2xyz2(temp)=[temp*70-35,temp*70-35,0];
function t2xyz3(temp)=[temp,temp*100-50,0];
function t2xyz4(temp)=[temp*70-35,-temp*70+35,0];
function XY(angle,Ddis,Vdis)=[
sign(Ddis*angle[0])*sqrt(pow(Ddis,2)/(1+pow(angle[1]/angle[0],2)))+sign(Vdis*-angle[1])*sqrt(pow(Vdis,2)/(1+pow(angle[0]/angle[1],2))),
sign(Ddis)*angle[1]/abs(angle[0])*sqrt(pow(Ddis,2)/(1+pow(angle[1]/angle[0],2)))+sign(Vdis)*angle[0]/abs(angle[1])*sqrt(pow(Vdis,2)/(1+pow(angle[0]/angle[1],2)))];
module body(pos1,pos2,pos3,tt){
Dir1=pos2-pos1;
Dir2=pos3-pos2;
translate([0,0,pos1[2]]){
linear_extrude(height = 1.5,center=true){
polygon(points=[pos1+XY(Dir1,0,width/2),pos1+XY(Dir1,0,9.5),pos2+XY(Dir2,0,9.5),pos2+XY(Dir2,0,width/2)]);
polygon(points=[pos1+XY(Dir1,0,-9.5),pos1+XY(Dir1,0,-width/2),pos2+XY(Dir2,0,-width/2),pos2+XY(Dir2,0,-9.5)]);
polygon(points=[pos1+XY(Dir1,0,8),pos1+XY(Dir1,0,-8),pos2+XY(Dir2,0,-8),pos2+XY(Dir2,0,8)]);
}
linear_extrude(height = wall_body,center=true){
polygon(points=[pos1+XY(Dir1,0,width/2),pos1+XY(Dir1,0,width/2-1.5),pos2+XY(Dir2,0,width/2-1.5),pos2+XY(Dir2,0,width/2)]);
polygon(points=[pos1+XY(Dir1,0,-width/2),pos1+XY(Dir1,0,-width/2+1.5),pos2+XY(Dir2,0,-width/2+1.5),pos2+XY(Dir2,0,-width/2)]);
}
linear_extrude(height = innerwall_body,center=true){
polygon(points=[pos1+XY(Dir1,0,9.5),pos1+XY(Dir1,0,8),pos2+XY(Dir2,0,8),pos2+XY(Dir2,0,9.5)]);
polygon(points=[pos1+XY(Dir1,0,-9.5),pos1+XY(Dir1,0,-8),pos2+XY(Dir2,0,-8),pos2+XY(Dir2,0,-9.5)]);
}
}
}
module bodyDelete(pos1,pos2,pos3,tt){
Dir1=pos2-pos1;
Dir2=pos3-pos2;
train=5;
translate([0,0,pos1[2]]){
translate([0,0,(train+1.5)/2]){linear_extrude(height = train,center=true){
polygon(points=[pos1+XY(Dir1,0,width/2-1.5),pos1+XY(Dir1,0,9.5),pos2+XY(Dir2,0,9.5),pos2+XY(Dir2,0,width/2-1.5)]);
polygon(points=[pos1+XY(Dir1,0,-9.5),pos1+XY(Dir1,0,-width/2+1.5),pos2+XY(Dir2,0,-width/2+1.5),pos2+XY(Dir2,0,-9.5)]);
}}
translate([0,0,-(train+1.5)/2]){linear_extrude(height = train,center=true){
polygon(points=[pos1+XY(Dir1,0,width/2-1.5),pos1+XY(Dir1,0,9.5),pos2+XY(Dir2,0,9.5),pos2+XY(Dir2,0,width/2-1.5)]);
polygon(points=[pos1+XY(Dir1,0,-9.5),pos1+XY(Dir1,0,-width/2+1.5),pos2+XY(Dir2,0,-width/2+1.5),pos2+XY(Dir2,0,-9.5)]);
}}
}
}
module out (pos1,pos2){
//start out
Dir1=pos2-pos1;
//hiraban
translate([pos2[0],pos2[1],pos2[2]]){
linear_extrude(height = 1.5,center=true){
polygon(points=[XY(Dir1,0,-3),XY(Dir1,7.5,-5),XY(Dir1,7.5,-1),XY(Dir1,1,-1),XY(Dir1,1,1),XY(Dir1,7.5,1),XY(Dir1,7.5,5),XY(Dir1,0,3)]);
}
linear_extrude(height = wall,center=true){
polygon(points=[XY(Dir1,0,3),XY(Dir1,-1.5,3),XY(Dir1,-1.5,8),XY(Dir1,0,8),XY(Dir1,0,4.5),XY(Dir1,9,6.5),XY(Dir1,9,1),XY(Dir1,7.5,1),XY(Dir1,7.5,5)]);
polygon(points=[XY(Dir1,0,-3),XY(Dir1,-1.5,-3),XY(Dir1,-1.5,-8),XY(Dir1,0,-8),XY(Dir1,0,-4.5),XY(Dir1,9,-6.5),XY(Dir1,9,-1),XY(Dir1,7.5,-1),XY(Dir1,7.5,-5)]);
}}
}
module in (pos1,pos2,pos3,pos4){
//start in
Dir1=pos2-pos1;
pos3=[pos1[0]+XY(Dir1,9,0)[0],pos1[1]+XY(Dir1,9,0)[1],pos1[2]];
pos4=[pos1[0]+XY(Dir1,9+pitch,0)[0],pos1[1]+XY(Dir1,9+pitch,0)[1],pos1[2]];
Dir2=pos4-pos3;
linear_extrude(height = wall,center=true){
polygon(points=[pos3+XY(Dir2,-9,-8),pos3+XY(Dir2,0,-4.5),pos3+XY(Dir2,0,-9.5),pos3+XY(Dir2,-12,-9.5),pos3+XY(Dir2,-12,9.5),pos3+XY(Dir2,0,9.5),pos3+XY(Dir2,0,4.5),pos3+XY(Dir2,-9,8)]);
polygon(points=[pos3+XY(Dir2,0,width/2-1.5),pos3+XY(Dir2,0,width/2),pos1+XY(Dir1,0,width/2),pos1+XY(Dir1,0,width/2-1.5)]);
polygon(points=[pos3+XY(Dir2,0,-width/2+1.5),pos3+XY(Dir2,0,-width/2),pos1+XY(Dir1,0,-width/2),pos1+XY(Dir1,0,-width/2+1.5)]);
}
linear_extrude(height = 1.5,center=true){
polygon(points=[pos1+XY(Dir1,0,11),pos3+XY(Dir2,0,11),pos3+XY(Dir2,0,width/2-1.5),pos1+XY(Dir1,0,width/2-1.5)]);
polygon(points=[pos1+XY(Dir1,0,-11),pos3+XY(Dir2,0,-11),pos3+XY(Dir2,0,-width/2+1.5),pos1+XY(Dir1,0,-width/2+1.5)]);
}
}
----------------------------------------------------
↓以下にすぐ出力出来る.stlファイルも置いておきます。
↓息子も大喜びで使ってくれています。

楽しく遊べますように
Category:#DIYプラレール
Follow @fetuin
■ ■ ■ コメント ■ ■ ■
この記事のアクセス数:2462本カテゴリーで直近コメントが書かれた記事
04/29 10:41:DIYカスタムプラレール売りに出しました!484393分前
03/23 01:08:お花見仕様のピンク水玉カスタム幾何学プラレール。by多色3Dプリンター。ちゃんと走るよ動画373日前
03/04 20:54:ピンクの水玉プラレールを大量製造中391日前
02/17 12:54:Bambulab A1 miniの多色出力でピンクの水玉のプラレール!408日前
→カテゴリー:#DIYプラレール(記事数:26)
本カテゴリーの最近の記事(コメント数)
2024.04.28DIYカスタムプラレール売りに出しました!11コメ
2024.03.22お花見仕様のピンク水玉カスタム幾何学プラレール。by多色3Dプリンター。ちゃんと走るよ動画38コメ
2024.03.02ピンクの水玉プラレールを大量製造中5コメ
2024.02.16Bambulab A1 miniの多色出力でピンクの水玉のプラレール!26コメ
2022.02.18俺のゴーストがこれを3Dプリンターとプラレールで再現しろと言っている8コメ
2021.04.05DIY幾何学プラレール第3弾【出力データあり】。これも美しいなぁ♪2コメ
2021.01.11DIY幾何学プラレール第2弾(メルカリに出品中)91コメ
2020.12.24幾何学DIYプラレール2020年12月最新版【3Dプリンタ用データ(stl)有り】21コメ
2020.03.05DIY幾何学プラレール3Dプリント用データ(.stl)公開(ver.2020.02.29)。完璧じゃないけど56コメ
2019.12.19DIY幾何学プラレールの外周部脱線多発ゾーンの要因分析71コメ
最近の常連さん 774(←半角のひと)★83 白★53 らむ★32 ふぇちゅいんさんふぁん(ゆるりゆラリー)★101 うにゃ(emでネクサス5→�)★38 10年選手★48 トクメー★17 F★52 ポコ★346 酔もぐら★41 ななしさそ★72 さてさて★30 ☆★45 名古屋関西人 TW★25 ふぇちゅいん(年度末まったり) TW★95 うぃ(滅茶苦茶久しぶり)★70 Dcd★83 JP★26 特命さん★79 orz★38 すきやき★77 ω★105 謎★80 umomo★2 ふぇいちゅん★2 匿名?★28 knob★2 τ(はじめてのすまほ) TW★52 とくめい★82 京ポン3B(意地でもエッジ)★40 |