mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Add support for line width and infill types to LayerData::Polygon
Contributes to #52
This commit is contained in:
parent
ad88506325
commit
75fff176f4
2 changed files with 31 additions and 17 deletions
|
@ -98,34 +98,26 @@ class Polygon():
|
||||||
SkinType = 3
|
SkinType = 3
|
||||||
SupportType = 4
|
SupportType = 4
|
||||||
SkirtType = 5
|
SkirtType = 5
|
||||||
|
InfillType = 6
|
||||||
|
SupportInfillType = 7
|
||||||
|
|
||||||
def __init__(self, mesh, type, data):
|
def __init__(self, mesh, type, data, line_width):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._mesh = mesh
|
self._mesh = mesh
|
||||||
self._type = type
|
self._type = type
|
||||||
self._data = data
|
self._data = data
|
||||||
|
self._line_width = line_width / 1000
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
self._begin = self._mesh._vertex_count
|
self._begin = self._mesh._vertex_count
|
||||||
self._mesh.addVertices(self._data)
|
self._mesh.addVertices(self._data)
|
||||||
self._end = self._begin + len(self._data) - 1
|
self._end = self._begin + len(self._data) - 1
|
||||||
|
|
||||||
color = None
|
color = self.getColor()
|
||||||
if self._type == self.Inset0Type:
|
color[3] = 2.0
|
||||||
color = [1, 0, 0, 1]
|
|
||||||
elif self._type == self.InsetXType:
|
|
||||||
color = [0, 1, 0, 1]
|
|
||||||
elif self._type == self.SkinType:
|
|
||||||
color = [1, 1, 0, 1]
|
|
||||||
elif self._type == self.SupportType:
|
|
||||||
color = [0, 1, 1, 1]
|
|
||||||
elif self._type == self.SkirtType:
|
|
||||||
color = [0, 1, 1, 1]
|
|
||||||
else:
|
|
||||||
color = [1, 1, 1, 1]
|
|
||||||
|
|
||||||
colors = [color for i in range(len(self._data))]
|
colors = [color for i in range(len(self._data))]
|
||||||
self._mesh.addColors(numpy.array(colors, dtype=numpy.float32))
|
self._mesh.addColors(numpy.array(colors, dtype=numpy.float32) * 0.5)
|
||||||
|
|
||||||
indices = []
|
indices = []
|
||||||
for i in range(self._begin, self._end):
|
for i in range(self._begin, self._end):
|
||||||
|
@ -136,6 +128,24 @@ class Polygon():
|
||||||
indices.append(self._begin)
|
indices.append(self._begin)
|
||||||
self._mesh.addIndices(numpy.array(indices, dtype=numpy.int32))
|
self._mesh.addIndices(numpy.array(indices, dtype=numpy.int32))
|
||||||
|
|
||||||
|
def getColor(self):
|
||||||
|
if self._type == self.Inset0Type:
|
||||||
|
return [1.0, 0.0, 0.0, 1.0]
|
||||||
|
elif self._type == self.InsetXType:
|
||||||
|
return [0.0, 1.0, 0.0, 1.0]
|
||||||
|
elif self._type == self.SkinType:
|
||||||
|
return [1.0, 1.0, 0.0, 1.0]
|
||||||
|
elif self._type == self.SupportType:
|
||||||
|
return [0.0, 1.0, 1.0, 1.0]
|
||||||
|
elif self._type == self.SkirtType:
|
||||||
|
return [0.0, 1.0, 1.0, 1.0]
|
||||||
|
elif self._type == self.InfillType:
|
||||||
|
return [1.0, 1.0, 0.0, 1.0]
|
||||||
|
elif self._type == self.SupportInfillType:
|
||||||
|
return [0.0, 1.0, 1.0, 1.0]
|
||||||
|
else:
|
||||||
|
return [1.0, 1.0, 1.0, 1.0]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def type(self):
|
def type(self):
|
||||||
return self._type
|
return self._type
|
||||||
|
@ -146,4 +156,8 @@ class Polygon():
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def elementCount(self):
|
def elementCount(self):
|
||||||
return (self._end - self._begin) * 2 #The range of vertices multiplied by 2 since each vertex is used twice
|
return ((self._end - self._begin) + 1) * 2 #The range of vertices multiplied by 2 since each vertex is used twice
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lineWidth(self):
|
||||||
|
return self._line_width
|
||||||
|
|
|
@ -57,8 +57,8 @@ class ProcessSlicedObjectListJob(Job):
|
||||||
center = [settings.getSettingValueByKey("machine_width") / 2, 0.0, -settings.getSettingValueByKey("machine_depth") / 2]
|
center = [settings.getSettingValueByKey("machine_width") / 2, 0.0, -settings.getSettingValueByKey("machine_depth") / 2]
|
||||||
points -= numpy.array(center)
|
points -= numpy.array(center)
|
||||||
|
|
||||||
|
layerData.addPolygon(layer.id, polygon.type, points, polygon.line_width)
|
||||||
|
|
||||||
layerData.addPolygon(layer.id, polygon.type, points)
|
|
||||||
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
||||||
layerData.build()
|
layerData.build()
|
||||||
mesh.layerData = layerData
|
mesh.layerData = layerData
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue