openjscad-aurora-webapp

Форк
0
59 строк · 1.7 Кб
1
// title: Jar barrel
2
// author: Eduard Bespalov
3
// license: MIT License
4
// description: testing solidFromSlices()
5

6
// Here we define the user editable parameters:
7
function getParameterDefinitions() {
8
  return [
9
    { name: 'diameter', caption: 'Jar diameter:', type: 'float', default: 35 },
10
    { name: 'height', caption: 'Jar height:', type: 'float', default: 35 },
11
    { name: 'wallThick', caption: 'Jar wall thick:', type: 'float', default: 1 }
12
  ];
13
}
14

15
function main(params)
16
{
17
  var radius = params.diameter / 2;
18
  var thick = params.wallThick;
19
  var height = params.height;
20
  var bottomThick = 2 * thick;
21

22
  var jar = hexTwisted(radius, height, 60).subtract(
23
    hexTwisted( radius - thick, height - bottomThick, 60)
24
    	 //rotate because jar is already rotated on that level
25
    	 //otherwise will get holes
26
    	.rotateZ(60 * (bottomThick / height))
27
    	.translate([0,0,bottomThick]) //make jar bottom
28
  );
29
  return jar;
30
}
31

32
function hexTwisted(radius, height, twistangle) {
33
  twistangle = twistangle || 0;
34
  var sqrt3 = Math.sqrt(3) / 2;
35
  var cag = CAG.fromPoints([
36
      [radius, 0, 0],
37
      [radius / 2, radius * sqrt3, 0],
38
      [-radius / 2, radius * sqrt3, 0],
39
      [-radius, 0, 0],
40
      [-radius / 2, -radius * sqrt3, 0],
41
      [radius / 2, -radius * sqrt3, 0]
42
   ]).expand(4, CSG.defaultResolution2D);
43

44
	var flatBottom = CSG.Polygon.createFromPoints(
45
		cag.getOutlinePaths()[0].points
46
	);
47

48
  var hex = flatBottom.solidFromSlices({
49
	numslices: height
50
	,callback: function(t) {
51
		var coef = (t > 0.5 ? 1 - t : t) + 0.8;
52
		var polygon = this.rotateZ(t * twistangle)
53
						.translate([0, 0, height * t])
54
						.scale([coef, coef, 1]);
55
		return polygon;
56
    }
57
  });
58
   return hex;
59
}
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.