jenncad 1.0.0.pre.alpha10 → 1.0.0.pre.alpha11
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e77957381ff8c5d69c62508dad6309d647b56377085319443b6938c2bf88ce2
|
4
|
+
data.tar.gz: 0f1893fcea231e2009fc6a3b5f6224483e413e648f7681d6ae0e85be64bba92e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '047058746e5a8bb3c44995c5ea21edf308272844722f02820300de08493bfc24bec0cd74e26c4343d9fe2ffe514f9c8c57a3ba0981c871c0b161f18705099652'
|
7
|
+
data.tar.gz: 724cbde8c1efa685b3762b7a51c27efd0812a8839d7147e832bede775a695b9e05af0dfbc996b139c531b5f78af26e6560a27efc99024fbbda54f8cf2835e3ef
|
@@ -8,7 +8,6 @@ module JennCad::Primitives
|
|
8
8
|
@parts = parts
|
9
9
|
end
|
10
10
|
@parent = @parts.first.parent
|
11
|
-
|
12
11
|
after_add
|
13
12
|
end
|
14
13
|
|
@@ -30,10 +29,17 @@ module JennCad::Primitives
|
|
30
29
|
def after_add
|
31
30
|
@parts.flatten!
|
32
31
|
@parts.compact!
|
32
|
+
inherit_debug
|
33
33
|
inherit_z
|
34
34
|
inherit_zref
|
35
35
|
end
|
36
36
|
|
37
|
+
def inherit_debug
|
38
|
+
if @parts.map{|l| l.option(:debug)}.include? true
|
39
|
+
set_option(:debug, true)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
37
43
|
def inherit_z
|
38
44
|
heights = @parts.map{|l| l.calc_z.to_f}.uniq
|
39
45
|
if heights.size > 1
|
@@ -77,6 +83,8 @@ module JennCad::Primitives
|
|
77
83
|
when Array
|
78
84
|
res << obj.map{|l| only_additives_of(l)}
|
79
85
|
when SubtractObject
|
86
|
+
# include the thing that something was subtracted from to get the Z height if that is behind another layer of SubtractObject
|
87
|
+
res << only_additives_of(obj.parts.first)
|
80
88
|
when IntersectionObject
|
81
89
|
else
|
82
90
|
res << obj
|
@@ -2,6 +2,7 @@ module JennCad::Primitives
|
|
2
2
|
class Cube < Primitive
|
3
3
|
extend JennCad::Features::Cuttable
|
4
4
|
|
5
|
+
attr_accessor :corners, :sides
|
5
6
|
|
6
7
|
def feed_opts(args)
|
7
8
|
# FIXME: this doesn't seem to work
|
@@ -47,6 +48,7 @@ module JennCad::Primitives
|
|
47
48
|
@h = @z.dup
|
48
49
|
@calc_h = @z.dup
|
49
50
|
|
51
|
+
|
50
52
|
set_anchors
|
51
53
|
end
|
52
54
|
|
@@ -56,28 +58,91 @@ module JennCad::Primitives
|
|
56
58
|
if @opts[:center] || @opts[:center_x]
|
57
59
|
left = -@opts[:x] / 2.0
|
58
60
|
right = @opts[:x] / 2.0
|
61
|
+
mid_x = 0
|
59
62
|
else
|
60
63
|
left = 0
|
61
64
|
right = @opts[:x]
|
65
|
+
mid_x = @opts[:x] / 2.0
|
62
66
|
end
|
63
67
|
if @opts[:center] || @opts[:center_y]
|
64
68
|
bottom = -@opts[:y] / 2.0
|
65
69
|
top = @opts[:y] / 2.0
|
70
|
+
mid_y = 0
|
66
71
|
else
|
67
72
|
bottom = 0
|
68
73
|
top = @opts[:y]
|
74
|
+
mid_y = @opts[:y] / 2.0
|
69
75
|
end
|
70
76
|
|
71
|
-
set_anchor :left, x: left
|
72
|
-
set_anchor :right, x: right
|
73
|
-
set_anchor :top, y: top
|
74
|
-
set_anchor :bottom, y: bottom
|
77
|
+
set_anchor :left, x: left, y: mid_y
|
78
|
+
set_anchor :right, x: right, y: mid_y
|
79
|
+
set_anchor :top, x: mid_x, y: top
|
80
|
+
set_anchor :bottom, x: mid_x, y: bottom
|
75
81
|
set_anchor :top_left, x: left, y: top
|
76
82
|
set_anchor :top_right, x: right, y: top
|
77
83
|
set_anchor :bottom_left, x: left, y: bottom
|
78
84
|
set_anchor :bottom_right, x: right, y: bottom
|
85
|
+
|
86
|
+
# we need to re-do the inner ones, if they were defined
|
87
|
+
if @inner_anchor_defs && @inner_anchor_defs.size > 0
|
88
|
+
@inner_anchor_defs.each do |anch|
|
89
|
+
inner_anchors(anch[:dist], anch[:prefix], true)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
self
|
79
94
|
end
|
80
95
|
|
96
|
+
def inner_anchors(dist, prefix=:inner_, recreate=false)
|
97
|
+
@inner_anchor_defs ||= []
|
98
|
+
@inner_anchor_defs << { "dist": dist, "prefix": prefix } unless recreate
|
99
|
+
|
100
|
+
# $log.info "dist: #{dist}, prefix: #{prefix}"
|
101
|
+
sides = {
|
102
|
+
left: {x: dist, y: 0},
|
103
|
+
right: {x: -dist, y: 0},
|
104
|
+
top: {x: 0, y: -dist},
|
105
|
+
bottom: {x: 0, y: dist},
|
106
|
+
}
|
107
|
+
corners = {
|
108
|
+
top_left: {x: dist, y: -dist},
|
109
|
+
top_right: {x: -dist, y: -dist},
|
110
|
+
bottom_left: {x: dist, y: dist},
|
111
|
+
bottom_right: {x: -dist, y: dist},
|
112
|
+
}
|
113
|
+
new_sides = []
|
114
|
+
new_corners = []
|
115
|
+
|
116
|
+
sides.merge(corners).each do |key, vals|
|
117
|
+
new_dist = anchor(key).dup
|
118
|
+
new_dist[:x] += vals[:x]
|
119
|
+
new_dist[:y] += vals[:y]
|
120
|
+
name = [prefix, key].join.to_sym
|
121
|
+
# $log.info "Set anchor #{name} , new dist #{new_dist}"
|
122
|
+
set_anchor name, new_dist
|
123
|
+
if sides.include? key
|
124
|
+
new_sides << name
|
125
|
+
end
|
126
|
+
if corners.include? key
|
127
|
+
new_corners << name
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
sides_name = [prefix, "sides"].join
|
132
|
+
corners_name = [prefix, "corners"].join
|
133
|
+
all_name = [prefix, "all"].join
|
134
|
+
self.class.__send__(:attr_accessor, sides_name.to_sym)
|
135
|
+
self.class.__send__(:attr_accessor, corners_name.to_sym)
|
136
|
+
self.class.__send__(:attr_accessor, all_name.to_sym)
|
137
|
+
self.__send__("#{sides_name}=", new_sides)
|
138
|
+
self.__send__("#{corners_name}=", new_corners)
|
139
|
+
self.__send__("#{all_name}=", new_corners+new_sides)
|
140
|
+
|
141
|
+
|
142
|
+
self
|
143
|
+
end
|
144
|
+
|
145
|
+
|
81
146
|
# used for openscad export
|
82
147
|
def size
|
83
148
|
[@x, @y, z+z_margin]
|
@@ -3,10 +3,16 @@ module JennCad::Primitives
|
|
3
3
|
def inherit_z
|
4
4
|
@z = 0
|
5
5
|
@calc_z = parts.first.calc_z.to_f
|
6
|
+
|
6
7
|
only_additives_of(@parts).each do |p|
|
8
|
+
if option(:debug)
|
9
|
+
$log.debug "inherit_z checks for: #{p}"
|
10
|
+
end
|
7
11
|
z = p.z.to_f
|
8
12
|
@z = z if z > @z
|
9
13
|
end
|
14
|
+
$log.debug "inherit_z called, biggest z found: #{@z}" if option(:debug)
|
15
|
+
|
10
16
|
end
|
11
17
|
|
12
18
|
def get_heights(obj)
|
@@ -58,7 +64,7 @@ module JennCad::Primitives
|
|
58
64
|
when JennCad::Circle
|
59
65
|
when JennCad::BooleanObject
|
60
66
|
else
|
61
|
-
|
67
|
+
$log.debug part if part.opts[:debug]
|
62
68
|
part.opts[:margins][:z] ||= 0.0
|
63
69
|
unless part.opts[:margins][:z] == 0.2
|
64
70
|
part.opts[:margins][:z] = 0.2
|
@@ -66,7 +72,7 @@ module JennCad::Primitives
|
|
66
72
|
end
|
67
73
|
end
|
68
74
|
elsif part.z == compare_h
|
69
|
-
|
75
|
+
$log.debug "fixing possible z fighting: #{part.class} #{part.z}" if part.opts[:debug]
|
70
76
|
part.opts[:margins][:z] += 0.008
|
71
77
|
part.mz(-0.004)
|
72
78
|
elsif part.calc_z == compare_z
|
data/lib/jenncad/thing.rb
CHANGED
data/lib/jenncad/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jenncad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.
|
4
|
+
version: 1.0.0.pre.alpha11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jennifer Glauche
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: geo3d
|