Материал: Проектирование автоматизированной установки объёмной печати моделей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Н.Л. Попова. Безопасности и экологичность проекта. Методические указания к выполнению раздела «Безопасность и экологичность проекта» в дипломных проектах для студентов специальности 210200. - Курган: Курганский государственный университет. - 27 с.

Безопасность и охрана труда: Учебное пособие для вузов / Под ред. О.Н.Русака. - СПб.: Изд-во МАНЭБ, 2001.

Об утверждении норм пожарной безопасности «Обучение мерам пожарной безопасности работников организаций»: Приказ МЧС РФ от 12.12.2007 № 645.

Об утверждении методики определения расчётных величин пожарного риска в зданиях, сооружениях и строениях различных классов функциональной пожарной опасности: Приказ МЧС РФ от 30.06.2009 № 382 (ред. От 12.12.2011).

ГОСТ 12.1.007-76 (1999) ССБТ. Вредные вещества. Классификация и общие требования безопасности.

ГОСТ 12.1.004-91. Пожарная безопасность. Общие требования.

ГОСТ 12.4.011-89. Система стандартов безопасности труда. Средства защиты работающих. Общие требования и классификация.

Приложение А

Управляющая программа контроллера. Функция начального позиционирования экструдера.

#include <Stepper.h>

//Здесь определяются выводы, к которым подключены шаговики и количество шагов на оборот для них

#define AStpStep 14

#define AStpDir 13

#define BStpStep 12

#define BStpDir 11

#define CStpStep 10

#define CStpDir 9

#define StepsPerRevolution 200

//Здесь определено подключение концевиков

#define AEndSwitch 1

#define BEndSwitch 2

#define CEndSwitch 3

//Стандартные скоростные режимы двигателей привода

#define open_circuit_speed 100

#define pretravel_speed 50

//Здесь создаётся класс для каждого шаговика (число шагов на оборот, первый пин, второй пин)

//============================================================AStepper = Stepper(StepsPerRevolution, AStpStep, AStpDir);BStepper = Stepper(StepsPerRevolution, BStpStep, BStpDir);CStepper = Stepper(StepsPerRevolution, CStpStep, CStpDir);

//============================================================

//Функция установки экструдера в начало координат

void Stepper_init()

{AES;BES;CES;

{= digitalRead(AEndSwitch);= digitalRead(BEndSwitch);= digitalRead(CEndSwitch);(AES<1)

{.step(1);

}(BES<1)

{.step(1);

}(CES<1)

{.step(1);

}

}while (AES<1 || BES<1 || CES<1);

}setup() {

//Установка скорости вращения двгателей на 100 оборотов в минуту (в дальнейшем уточнится)

AStepper.setSpeed(open_circuit_speed);.setSpeed(open_circuit_speed);.setSpeed(open_circuit_speed);

//Установка портов, к которым подключены концевики на ввод

pinMode(AEndSwitch, INPUT);(BEndSwitch, INPUT);

pinMode(CEndSwitch, INPUT);

//Установка портов, к которым подключены двигатели на вывод

pinMode(AStpStep, OUTPUT);(AStpDir, OUTPUT);(BStpStep, OUTPUT);(BStpDir, OUTPUT);(CStpStep, OUTPUT);(CStpDir, OUTPUT);

Stepper_init();

}

Приложение Б

Диспетчерская программа. Функции открытия и валидации 3D-модели в формате STL.

package Slic3r::Format::STL;Moo;Slic3r::Geometry qw(X Y Z triangle_normal);read_file {$self = shift;($file) = @_;

Slic3r::open(\my $fh, '<', $file) or die "Failed to open $file\n";

# let's detect whether file is ASCII or binary$mode;

{$size = +(stat $fh)[7];

$mode = 'ascii' if $size < 80 + 4;

# skip binary header$fh, 80, 0;$fh, my $buf, 4;$triangle_count = unpack 'L', $buf;"STL file seems invalid, could not read facet count\n" if !defined $triangle_count;$expected_size =

+ 80 # header

+ 4 # count

+ $triangle_count * (

+ 4 # normal, pt,pt,pt (vectors)

* 4 # bytes per value

* 3 # values per vector

+ 2 # the trailing 'short'

);

$mode = ($size == $expected_size) ? 'binary' : 'ascii';

}

my $facets = [];$vertices = [];

$mode eq 'ascii'

? _read_ascii($fh, $facets, $vertices)

: _read_binary($fh, $facets, $vertices);$fh;

my $model = Slic3r::Model->new;$object = $model->add_object(vertices => $vertices);$volume = $object->add_volume(facets => $facets);$model;

}_read_ascii {($fh, $facets, $vertices) = @_;

my $point_re = qr/(([^ ]+)\s+([^ ]+)\s+([^ ]+))/;

my $facet;%vertices_map = ();$fh, 0, 0;(my $_ = <$fh>) {(!$facet) {

/^\s*facet\s+normal\s+/ or next;

$facet = []; # ignore normal

} else {(/^\s*endfacet/) {@$facets, $facet;$facet;

} else {

/^\s*vertex\s+$point_re/o or next;$vertex_id = $1;$vertex_idx;(exists $vertices_map{$vertex_id}) {

$vertex_idx = $vertices_map{$vertex_id};

} else {@$vertices, [map $_ * 1, $2, $3, $4];

$vertex_idx = $vertices_map{$vertex_id} = $#$vertices;

}@$facet, $vertex_idx;

}

}

}($facet) {"STL file seems invalid\n";

}

}_read_binary {($fh, $facets, $vertices) = @_;

die "bigfloat" unless length(pack "f", 1) == 4;

my %vertices_map = ();$fh;$fh, 80 + 4, 0;(read $fh, my $_, 4*4*3+2) {@$facets, my $facet = [];(unpack 'x[f3](a[f3])3') { # ignore normal$vertex_idx;(exists $vertices_map{$_}) {

$vertex_idx = $vertices_map{$_};

} else {@$vertices, [ unpack 'f<3', $_ ];

$vertex_idx = $vertices_map{$_} = $#$vertices;

}@$facet, $vertex_idx;

}

}

}write_file {$self = shift;($file, $model, %params) = @_;

Slic3r::open(\my $fh, '>', $file);

$params{binary}

? _write_binary($fh, $model->mesh)

: _write_ascii($fh, $model->mesh);

close $fh;

}_write_binary {($fh, $mesh) = @_;

die "bigfloat" unless length(pack "f", 1) == 4;

binmode $fh;$fh pack 'x80';$fh pack 'L', scalar(@{$mesh->facets});my $facet (@{$mesh->facets}) {$fh pack '(f<3)4S',

@{_facet_normal($mesh, $facet)},

(map @{$mesh->vertices->[$_]}, @$facet[-3..-1]),

;

}

}_write_ascii {($fh, $mesh) = @_;

printf $fh "solid\n";my $facet (@{$mesh->facets}) {$fh " facet normal %f %f %f\n", @{_facet_normal($mesh, $facet)};$fh " outer loop\n";$fh " vertex %f %f %f\n", @{$mesh->vertices->[$_]} for @$facet[-3..-1];$fh " endloop\n";$fh " endfacet\n";

}$fh "endsolid\n";

}_facet_normal {($mesh, $facet) = @_;triangle_normal(map $mesh->vertices->[$_], @$facet[-3..-1]);

}