commit 12c76e3e5adde5b084973a7ddca3a0cdc4d05fcc Author: Jakub Kaniecki Date: Sun May 18 16:23:03 2025 +0200 init diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..b947859 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d71624 --- /dev/null +++ b/README.md @@ -0,0 +1,81 @@ +# Izaac 2.1 Project + +This project consists of a Django backend and a React/TypeScript frontend. Below are instructions for setting up and running both parts in development mode. + +## Prerequisites + +- Python 3.x +- Node.js (LTS version recommended) +- npm or yarn +- SQLite (included with Python) + +## Backend Setup + +1. Navigate to the backend directory: +```bash +cd backend +``` + +2. Create and activate a virtual environment: +```bash +python -m venv venv +source venv/bin/activate # On Windows use: venv\Scripts\activate +``` + +3. Install dependencies: +```bash +pip install -r requirements.txt +``` + +4. Run database migrations: +```bash +python manage.py migrate +``` + +5. Start the development server: +```bash +python manage.py runserver +``` + +The backend will be available at `http://localhost:8000` + +## Frontend Setup + +1. Navigate to the frontend directory: +```bash +cd frontend +``` + +2. Install dependencies: +```bash +npm install +# or if you use yarn: +yarn install +``` + +3. Start the development server: +```bash +npm run dev +# or if you use yarn: +yarn dev +``` + +The frontend will be available at `http://localhost:5173` + +## Development + +- Backend API documentation is available at `http://localhost:8000/api/docs/` when the server is running +- Frontend hot-reloading is enabled by default +- Backend hot-reloading is enabled by default with Django's development server + +## Project Structure + +- `/backend` - Django backend application +- `/frontend` - React/TypeScript frontend application +- `/nginx` - Nginx configuration files + +## Additional Notes + +- Make sure both backend and frontend servers are running simultaneously for full functionality +- The backend uses SQLite as the database by default +- Frontend is built with Vite and uses Tailwind CSS for styling \ No newline at end of file diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..7248e84 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,9 @@ +# Created by venv; see https://docs.python.org/3/library/venv.html +/bin +/lib +/include +/share +/man +/doc +/html +pyvenv.cfg \ No newline at end of file diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..e69de29 diff --git a/backend/content/__init__.py b/backend/content/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/content/__pycache__/__init__.cpython-313.pyc b/backend/content/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..0e31d53 Binary files /dev/null and b/backend/content/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/content/__pycache__/admin.cpython-313.pyc b/backend/content/__pycache__/admin.cpython-313.pyc new file mode 100644 index 0000000..24c2fe2 Binary files /dev/null and b/backend/content/__pycache__/admin.cpython-313.pyc differ diff --git a/backend/content/__pycache__/apps.cpython-313.pyc b/backend/content/__pycache__/apps.cpython-313.pyc new file mode 100644 index 0000000..c6fa9cf Binary files /dev/null and b/backend/content/__pycache__/apps.cpython-313.pyc differ diff --git a/backend/content/__pycache__/models.cpython-313.pyc b/backend/content/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000..f551d2a Binary files /dev/null and b/backend/content/__pycache__/models.cpython-313.pyc differ diff --git a/backend/content/__pycache__/serializers.cpython-313.pyc b/backend/content/__pycache__/serializers.cpython-313.pyc new file mode 100644 index 0000000..507460a Binary files /dev/null and b/backend/content/__pycache__/serializers.cpython-313.pyc differ diff --git a/backend/content/__pycache__/urls.cpython-313.pyc b/backend/content/__pycache__/urls.cpython-313.pyc new file mode 100644 index 0000000..f8078b9 Binary files /dev/null and b/backend/content/__pycache__/urls.cpython-313.pyc differ diff --git a/backend/content/__pycache__/views.cpython-313.pyc b/backend/content/__pycache__/views.cpython-313.pyc new file mode 100644 index 0000000..9db71bf Binary files /dev/null and b/backend/content/__pycache__/views.cpython-313.pyc differ diff --git a/backend/content/admin.py b/backend/content/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/content/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/content/apps.py b/backend/content/apps.py new file mode 100644 index 0000000..273d169 --- /dev/null +++ b/backend/content/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ContentConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'content' diff --git a/backend/content/migrations/0001_initial.py b/backend/content/migrations/0001_initial.py new file mode 100644 index 0000000..bac6df8 --- /dev/null +++ b/backend/content/migrations/0001_initial.py @@ -0,0 +1,59 @@ +# Generated by Django 4.2 on 2025-05-01 18:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('slug', models.SlugField(unique=True)), + ], + ), + migrations.CreateModel( + name='Comment', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('content', models.TextField(max_length=2000)), + ('approved', models.BooleanField(default=False)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Page', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('content', models.TextField()), + ('status', models.CharField(choices=[('draft', 'Draft'), ('pending', 'Pending Review'), ('published', 'Published')], default='draft', max_length=10)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Post', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('content', models.TextField()), + ('status', models.CharField(choices=[('draft', 'Draft'), ('pending', 'Pending Review'), ('published', 'Published')], default='draft', max_length=10)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/backend/content/migrations/0002_initial.py b/backend/content/migrations/0002_initial.py new file mode 100644 index 0000000..b8f4882 --- /dev/null +++ b/backend/content/migrations/0002_initial.py @@ -0,0 +1,53 @@ +# Generated by Django 4.2 on 2025-05-01 18:16 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('content', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='post', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='post', + name='category', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='content.category'), + ), + migrations.AddField( + model_name='page', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='page', + name='category', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='content.category'), + ), + migrations.AddField( + model_name='comment', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='comment', + name='page', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='content.page'), + ), + migrations.AddField( + model_name='comment', + name='post', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='content.post'), + ), + ] diff --git a/backend/content/migrations/0002_initial_categories.py b/backend/content/migrations/0002_initial_categories.py new file mode 100644 index 0000000..ddb110e --- /dev/null +++ b/backend/content/migrations/0002_initial_categories.py @@ -0,0 +1,30 @@ +from django.db import migrations + +def create_initial_categories(apps, schema_editor): + Category = apps.get_model('content', 'Category') + default_categories = [ + {'name': 'General', 'slug': 'general'}, + {'name': 'Technology', 'slug': 'technology'}, + {'name': 'Science', 'slug': 'science'}, + {'name': 'Programming', 'slug': 'programming'}, + {'name': 'News', 'slug': 'news'}, + ] + + for category in default_categories: + Category.objects.get_or_create( + name=category['name'], + slug=category['slug'] + ) + +def remove_initial_categories(apps, schema_editor): + Category = apps.get_model('content', 'Category') + Category.objects.filter(slug__in=['general', 'technology', 'science', 'programming', 'news']).delete() + +class Migration(migrations.Migration): + dependencies = [ + ('content', '0001_initial'), + ] + + operations = [ + migrations.RunPython(create_initial_categories, remove_initial_categories), + ] \ No newline at end of file diff --git a/backend/content/migrations/0003_uploadedimage.py b/backend/content/migrations/0003_uploadedimage.py new file mode 100644 index 0000000..0271658 --- /dev/null +++ b/backend/content/migrations/0003_uploadedimage.py @@ -0,0 +1,31 @@ +# Generated by Django 4.2 on 2025-05-01 19:05 + +from django.conf import settings +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('content', '0002_initial'), + ] + + operations = [ + migrations.CreateModel( + name='UploadedImage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('image', models.ImageField(upload_to='uploads/%Y/%m/%d/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['jpg', 'jpeg', 'png', 'gif', 'webp'])])), + ('title', models.CharField(max_length=255)), + ('uploaded_at', models.DateTimeField(auto_now_add=True)), + ('file_size', models.PositiveIntegerField()), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-uploaded_at'], + }, + ), + ] diff --git a/backend/content/migrations/0004_merge_0002_initial_categories_0003_uploadedimage.py b/backend/content/migrations/0004_merge_0002_initial_categories_0003_uploadedimage.py new file mode 100644 index 0000000..1ad4310 --- /dev/null +++ b/backend/content/migrations/0004_merge_0002_initial_categories_0003_uploadedimage.py @@ -0,0 +1,14 @@ +# Generated by Django 4.2 on 2025-05-01 19:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('content', '0002_initial_categories'), + ('content', '0003_uploadedimage'), + ] + + operations = [ + ] diff --git a/backend/content/migrations/0005_tag_page_tags_post_tags.py b/backend/content/migrations/0005_tag_page_tags_post_tags.py new file mode 100644 index 0000000..bdf19f2 --- /dev/null +++ b/backend/content/migrations/0005_tag_page_tags_post_tags.py @@ -0,0 +1,31 @@ +# Generated by Django 4.2 on 2025-05-04 10:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('content', '0004_merge_0002_initial_categories_0003_uploadedimage'), + ] + + operations = [ + migrations.CreateModel( + name='Tag', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('slug', models.SlugField(unique=True)), + ], + ), + migrations.AddField( + model_name='page', + name='tags', + field=models.ManyToManyField(blank=True, to='content.tag'), + ), + migrations.AddField( + model_name='post', + name='tags', + field=models.ManyToManyField(blank=True, to='content.tag'), + ), + ] diff --git a/backend/content/migrations/0006_page_slug_post_slug.py b/backend/content/migrations/0006_page_slug_post_slug.py new file mode 100644 index 0000000..d84866c --- /dev/null +++ b/backend/content/migrations/0006_page_slug_post_slug.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2 on 2025-05-10 23:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('content', '0005_tag_page_tags_post_tags'), + ] + + operations = [ + migrations.AddField( + model_name='page', + name='slug', + field=models.SlugField(blank=True, unique=True), + ), + migrations.AddField( + model_name='post', + name='slug', + field=models.SlugField(blank=True, unique=True), + ), + ] diff --git a/backend/content/migrations/__init__.py b/backend/content/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/content/migrations/__pycache__/0001_initial.cpython-313.pyc b/backend/content/migrations/__pycache__/0001_initial.cpython-313.pyc new file mode 100644 index 0000000..37db4f7 Binary files /dev/null and b/backend/content/migrations/__pycache__/0001_initial.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0002_initial.cpython-313.pyc b/backend/content/migrations/__pycache__/0002_initial.cpython-313.pyc new file mode 100644 index 0000000..a550f0c Binary files /dev/null and b/backend/content/migrations/__pycache__/0002_initial.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0002_initial_categories.cpython-313.pyc b/backend/content/migrations/__pycache__/0002_initial_categories.cpython-313.pyc new file mode 100644 index 0000000..fdec546 Binary files /dev/null and b/backend/content/migrations/__pycache__/0002_initial_categories.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0003_uploadedimage.cpython-313.pyc b/backend/content/migrations/__pycache__/0003_uploadedimage.cpython-313.pyc new file mode 100644 index 0000000..444eb19 Binary files /dev/null and b/backend/content/migrations/__pycache__/0003_uploadedimage.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0004_merge_0002_initial_categories_0003_uploadedimage.cpython-313.pyc b/backend/content/migrations/__pycache__/0004_merge_0002_initial_categories_0003_uploadedimage.cpython-313.pyc new file mode 100644 index 0000000..9c2aa7a Binary files /dev/null and b/backend/content/migrations/__pycache__/0004_merge_0002_initial_categories_0003_uploadedimage.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0005_tag_page_tags_post_tags.cpython-313.pyc b/backend/content/migrations/__pycache__/0005_tag_page_tags_post_tags.cpython-313.pyc new file mode 100644 index 0000000..f7bc055 Binary files /dev/null and b/backend/content/migrations/__pycache__/0005_tag_page_tags_post_tags.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0006_page_slug_post_slug.cpython-313.pyc b/backend/content/migrations/__pycache__/0006_page_slug_post_slug.cpython-313.pyc new file mode 100644 index 0000000..a4df19d Binary files /dev/null and b/backend/content/migrations/__pycache__/0006_page_slug_post_slug.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/0007_alter_page_slug_alter_post_slug.cpython-313.pyc b/backend/content/migrations/__pycache__/0007_alter_page_slug_alter_post_slug.cpython-313.pyc new file mode 100644 index 0000000..213a24b Binary files /dev/null and b/backend/content/migrations/__pycache__/0007_alter_page_slug_alter_post_slug.cpython-313.pyc differ diff --git a/backend/content/migrations/__pycache__/__init__.cpython-313.pyc b/backend/content/migrations/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..5b4aec6 Binary files /dev/null and b/backend/content/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/content/models.py b/backend/content/models.py new file mode 100644 index 0000000..bbc0545 --- /dev/null +++ b/backend/content/models.py @@ -0,0 +1,88 @@ +from django.db import models +from users.models import User +from django.conf import settings +from django.utils import timezone +from django.core.validators import FileExtensionValidator + +class Category(models.Model): + name = models.CharField(max_length=255) + slug = models.SlugField(unique=True) + + def __str__(self): + return self.name + +class AbstractContent(models.Model): + STATUS_CHOICES = ( + ('draft', 'Draft'), + ('pending', 'Pending Review'), + ('published', 'Published'), + ) + title = models.CharField(max_length=255) + slug = models.SlugField(unique=True, blank=True) + content = models.TextField() + status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft') + author = models.ForeignKey(User, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + category = models.ForeignKey('Category', on_delete=models.CASCADE) + tags = models.ManyToManyField('Tag', blank=True) + class Meta: + abstract = True + + def __str__(self): + return self.title + +class Post(AbstractContent): + pass + +class Page(AbstractContent): + pass + +class Comment(models.Model): + content = models.TextField(max_length=2000) + approved = models.BooleanField(default=False) + author = models.ForeignKey(User, on_delete=models.CASCADE) + post = models.ForeignKey(Post, null=True, blank=True, on_delete=models.CASCADE) + page = models.ForeignKey(Page, null=True, blank=True, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True) + +class UploadedImage(models.Model): + user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) + image = models.ImageField( + upload_to='uploads/%Y/%m/%d/', + validators=[FileExtensionValidator(allowed_extensions=['jpg', 'jpeg', 'png', 'gif', 'webp'])] + ) + title = models.CharField(max_length=255) + uploaded_at = models.DateTimeField(auto_now_add=True) + file_size = models.PositiveIntegerField() # Size in bytes + + class Meta: + ordering = ['-uploaded_at'] + + def __str__(self): + return f"{self.title} - {self.user.username}" + + @property + def url(self): + return self.image.url if self.image else None + + def save(self, *args, **kwargs): + if not self.file_size and self.image: + self.file_size = self.image.size + super().save(*args, **kwargs) + + @classmethod + def get_user_daily_upload_size(cls, user): + today = timezone.now().date() + tomorrow = today + timezone.timedelta(days=1) + return cls.objects.filter( + user=user, + uploaded_at__gte=today, + uploaded_at__lt=tomorrow + ).aggregate(total_size=models.Sum('file_size'))['total_size'] or 0 + +class Tag(models.Model): + name = models.CharField(max_length=255) + slug = models.SlugField(unique=True) + def __str__(self): + return self.name \ No newline at end of file diff --git a/backend/content/serializers.py b/backend/content/serializers.py new file mode 100644 index 0000000..24c6b21 --- /dev/null +++ b/backend/content/serializers.py @@ -0,0 +1,115 @@ +from rest_framework import serializers +from .models import Post, Comment, Page, Category, UploadedImage, Tag +from users.models import User + +class TagSerializer(serializers.ModelSerializer): + class Meta: + model = Tag + fields = ['id', 'name', 'slug'] + read_only_fields = ['id'] + +class CategorySerializer(serializers.ModelSerializer): + class Meta: + model = Category + fields = ['id', 'name', 'slug'] + read_only_fields = ['id'] + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ['id', 'username', 'first_name', 'last_name'] + read_only_fields = ['id'] + +class CommentSerializer(serializers.ModelSerializer): + author = UserSerializer(read_only=True) + + class Meta: + model = Comment + fields = ['id', 'content', 'author', 'post', 'page', 'approved', 'created_at'] + read_only_fields = ['id', 'created_at', 'author'] + +class PostSerializer(serializers.ModelSerializer): + author = UserSerializer(read_only=True) + category = CategorySerializer(read_only=True) + category_id = serializers.PrimaryKeyRelatedField( + queryset=Category.objects.all(), + source='category', + write_only=True + ) + comments = CommentSerializer(many=True, read_only=True) + tags = TagSerializer(many=True, read_only=True) + tag_ids = serializers.PrimaryKeyRelatedField( + queryset=Tag.objects.all(), + source='tags', + many=True, + write_only=True, + required=False + ) + slug = serializers.SlugField(required=True) + + class Meta: + model = Post + fields = [ + 'id', 'title', 'content', 'status', 'author', + 'category', 'category_id', 'comments', + 'created_at', 'updated_at', 'tags', 'tag_ids', 'slug' + ] + read_only_fields = ['id', 'created_at', 'updated_at', 'author', 'slug'] + lookup_field = 'slug' + extra_kwargs = { + 'url': {'lookup_field': 'slug'} + } + +class PageSerializer(serializers.ModelSerializer): + author = UserSerializer(read_only=True) + category = CategorySerializer(read_only=True) + category_id = serializers.PrimaryKeyRelatedField( + queryset=Category.objects.all(), + source='category', + write_only=True + ) + comments = CommentSerializer(many=True, read_only=True) + slug = serializers.SlugField(required=True) + class Meta: + model = Page + fields = [ + 'id', 'title', 'content', 'status', 'author', + 'category', 'category_id', 'comments', + 'created_at', 'updated_at', 'slug' + ] + read_only_fields = ['id', 'created_at', 'updated_at', 'author', 'slug'] + lookup_field = 'slug' + extra_kwargs = { + 'url': {'lookup_field': 'slug'} + } + +class UploadedImageSerializer(serializers.ModelSerializer): + url = serializers.SerializerMethodField() + file_size_display = serializers.SerializerMethodField() + image = serializers.ImageField(required=True) + + class Meta: + model = UploadedImage + fields = ['id', 'title', 'image', 'url', 'uploaded_at', 'file_size', 'file_size_display'] + read_only_fields = ['file_size', 'uploaded_at', 'url'] + + def get_url(self, obj): + request = self.context.get('request') + if obj.image and hasattr(obj.image, 'url'): + return request.build_absolute_uri(obj.image.url) if request else obj.image.url + return None + + def get_file_size_display(self, obj): + """Convert bytes to human readable format""" + for unit in ['B', 'KB', 'MB', 'GB']: + if obj.file_size < 1024.0: + return f"{obj.file_size:.1f} {unit}" + obj.file_size /= 1024.0 + return f"{obj.file_size:.1f} TB" + + def validate_image(self, value): + if not value: + raise serializers.ValidationError("Image file is required.") + return value + + diff --git a/backend/content/tests.py b/backend/content/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/content/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/content/urls.py b/backend/content/urls.py new file mode 100644 index 0000000..30c77fc --- /dev/null +++ b/backend/content/urls.py @@ -0,0 +1,14 @@ +from rest_framework.routers import DefaultRouter +from django.urls import path, include +from .views import PostViewSet, CommentViewSet, PageViewSet, CategoryViewSet, UploadedImageViewSet, TagViewSet + +router = DefaultRouter() +router.register(r'posts', PostViewSet, basename='post') +router.register(r'comments', CommentViewSet, basename='comment') +router.register(r'pages', PageViewSet, basename='page') +router.register(r'categories', CategoryViewSet, basename='category') +router.register(r'images', UploadedImageViewSet, basename='image') +router.register(r'tags', TagViewSet, basename='tag') +urlpatterns = [ + path('', include(router.urls)), +] diff --git a/backend/content/views.py b/backend/content/views.py new file mode 100644 index 0000000..1d51143 --- /dev/null +++ b/backend/content/views.py @@ -0,0 +1,202 @@ +from rest_framework import viewsets, status, filters +from rest_framework.response import Response +from rest_framework.decorators import action +from django_filters.rest_framework import DjangoFilterBackend +from .models import Post, Comment, Page, Category, UploadedImage, Tag +from .serializers import PostSerializer, CommentSerializer, PageSerializer, CategorySerializer, UploadedImageSerializer, TagSerializer +from users.permissions import IsAuthorOrReadOnly, IsEditorOrAdmin +from rest_framework.permissions import IsAuthenticatedOrReadOnly +from rest_framework.parsers import MultiPartParser, FormParser +from django.conf import settings +from rest_framework import serializers + +class PostViewSet(viewsets.ModelViewSet): + """ + API endpoint for managing blog posts. + + list: + Return a list of all posts. Results can be filtered by: + - status (draft/pending/published) + - author + - category + - created_at (date range) + + create: + Create a new post. Requires authentication and appropriate permissions. + + retrieve: + Return the details of a specific post by ID. + + update: + Update all fields of a specific post. Requires authentication and appropriate permissions. + + partial_update: + Update one or more fields of a specific post. Requires authentication and appropriate permissions. + + destroy: + Delete a specific post. Requires authentication and appropriate permissions. + """ + queryset = Post.objects.all() + serializer_class = PostSerializer + permission_classes = [IsAuthorOrReadOnly] + filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter] + filterset_fields = ['status', 'author', 'category'] + search_fields = ['title', 'content'] + ordering_fields = ['created_at', 'updated_at', 'title'] + ordering = ['-created_at'] + lookup_field = 'slug' + + def perform_create(self, serializer): + serializer.save(author=self.request.user) + + def get_queryset(self): + queryset = Post.objects.all() + if not self.request.user.is_authenticated: + queryset = queryset.filter(status='published') + elif not self.request.user.role in ['admin', 'moderator']: + queryset = queryset.filter( + status='published' + ) | Post.objects.filter( + author=self.request.user + ) + return queryset + def perform_update(self, serializer): + print(serializer.validated_data) + return super().perform_update(serializer) +class CommentViewSet(viewsets.ModelViewSet): + """ + API endpoint for managing comments on posts and pages. + + list: + Return a list of all comments. Results can be filtered by: + - post_id + - page_id + - author + - approved status + + create: + Create a new comment. Requires authentication. + + retrieve: + Return the details of a specific comment by ID. + + update: + Update all fields of a specific comment. Requires authentication and appropriate permissions. + + partial_update: + Update one or more fields of a specific comment. Requires authentication and appropriate permissions. + + destroy: + Delete a specific comment. Requires authentication and appropriate permissions. + """ + queryset = Comment.objects.all() + serializer_class = CommentSerializer + permission_classes = [IsAuthorOrReadOnly] + filter_backends = [DjangoFilterBackend, filters.OrderingFilter] + filterset_fields = ['post', 'page', 'author', 'approved'] + ordering_fields = ['created_at'] + ordering = ['-created_at'] + + def perform_create(self, serializer): + serializer.save(author=self.request.user) + + def get_queryset(self): + queryset = Comment.objects.all() + if not self.request.user.is_authenticated: + queryset = queryset.filter(approved=True) + elif not self.request.user.role in ['admin', 'moderator']: + queryset = queryset.filter( + approved=True + ) | Comment.objects.filter( + author=self.request.user + ) + return queryset + +class PageViewSet(viewsets.ModelViewSet): + queryset = Page.objects.all() + serializer_class = PageSerializer + permission_classes = [IsEditorOrAdmin] + filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter] + filterset_fields = ['status', 'author', 'category'] + search_fields = ['title', 'content'] + ordering_fields = ['created_at', 'updated_at', 'title'] + ordering = ['-created_at'] + + def perform_create(self, serializer): + serializer.save(author=self.request.user) + + def get_queryset(self): + queryset = Page.objects.all() + if not self.request.user.is_authenticated: + queryset = queryset.filter(status='published') + elif not self.request.user.role in ['admin', 'moderator']: + queryset = queryset.filter( + status='published' + ) | Page.objects.filter( + author=self.request.user + ) + return queryset + +class CategoryViewSet(viewsets.ModelViewSet): + queryset = Category.objects.all() + serializer_class = CategorySerializer + permission_classes = [IsAuthenticatedOrReadOnly] + filter_backends = [filters.SearchFilter] + search_fields = ['name', 'slug'] + + def get_queryset(self): + return Category.objects.all() + +class UploadedImageViewSet(viewsets.ModelViewSet): + serializer_class = UploadedImageSerializer + parser_classes = (MultiPartParser, FormParser) + + def get_queryset(self): + return UploadedImage.objects.filter(user=self.request.user) + + def get_serializer_context(self): + context = super().get_serializer_context() + context['request'] = self.request + return context + + def perform_create(self, serializer): + # Check daily upload quota (5MB = 5 * 1024 * 1024 bytes) + DAILY_UPLOAD_LIMIT = 5 * 1024 * 1024 # 5MB in bytes + + # Get current daily upload size + current_size = UploadedImage.get_user_daily_upload_size(self.request.user) + file_size = self.request.FILES['image'].size + + # Check if upload would exceed daily limit + if current_size + file_size > DAILY_UPLOAD_LIMIT: + raise serializers.ValidationError({ + 'image': 'Daily upload limit (5MB) exceeded. Please try again tomorrow.' + }) + + try: + instance = serializer.save(user=self.request.user, file_size=file_size) + + except Exception as e: + raise + + @action(detail=False, methods=['get']) + def quota(self, request): + DAILY_UPLOAD_LIMIT = 5 * 1024 * 1024 # 5MB in bytes + current_size = UploadedImage.get_user_daily_upload_size(request.user) + remaining = max(0, DAILY_UPLOAD_LIMIT - current_size) + + return Response({ + 'daily_limit': DAILY_UPLOAD_LIMIT, + 'used': current_size, + 'remaining': remaining, + 'daily_limit_display': f"{DAILY_UPLOAD_LIMIT / (1024 * 1024):.1f}MB", + 'used_display': f"{current_size / (1024 * 1024):.1f}MB", + 'remaining_display': f"{remaining / (1024 * 1024):.1f}MB" + }) + +class TagViewSet(viewsets.ModelViewSet): + queryset = Tag.objects.all() + serializer_class = TagSerializer + permission_classes = [IsAuthenticatedOrReadOnly] + filter_backends = [filters.SearchFilter] + search_fields = ['name', 'slug'] \ No newline at end of file diff --git a/backend/core/__init__.py b/backend/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/core/__pycache__/__init__.cpython-313.pyc b/backend/core/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..e8552b1 Binary files /dev/null and b/backend/core/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/core/__pycache__/admin.cpython-313.pyc b/backend/core/__pycache__/admin.cpython-313.pyc new file mode 100644 index 0000000..bff7a1c Binary files /dev/null and b/backend/core/__pycache__/admin.cpython-313.pyc differ diff --git a/backend/core/__pycache__/apps.cpython-313.pyc b/backend/core/__pycache__/apps.cpython-313.pyc new file mode 100644 index 0000000..013c6e8 Binary files /dev/null and b/backend/core/__pycache__/apps.cpython-313.pyc differ diff --git a/backend/core/__pycache__/models.cpython-313.pyc b/backend/core/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000..9557ffa Binary files /dev/null and b/backend/core/__pycache__/models.cpython-313.pyc differ diff --git a/backend/core/admin.py b/backend/core/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/core/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/core/apps.py b/backend/core/apps.py new file mode 100644 index 0000000..8115ae6 --- /dev/null +++ b/backend/core/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CoreConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'core' diff --git a/backend/core/migrations/__init__.py b/backend/core/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/core/migrations/__pycache__/__init__.cpython-313.pyc b/backend/core/migrations/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..fb7b33b Binary files /dev/null and b/backend/core/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/core/models.py b/backend/core/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/backend/core/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/backend/core/settings.py b/backend/core/settings.py new file mode 100644 index 0000000..7c767b1 --- /dev/null +++ b/backend/core/settings.py @@ -0,0 +1,60 @@ +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'rest_framework', + 'rest_framework_simplejwt', + 'rest_framework_simplejwt.token_blacklist', + 'corsheaders', + 'django_filters', + 'users', + 'content', +] + +REST_FRAMEWORK = { + 'DEFAULT_AUTHENTICATION_CLASSES': [ + 'rest_framework_simplejwt.authentication.JWTAuthentication', + ], + 'DEFAULT_PERMISSION_CLASSES': [ + 'rest_framework.permissions.IsAuthenticated', + ], + 'DEFAULT_FILTER_BACKENDS': [ + 'django_filters.rest_framework.DjangoFilterBackend', + 'rest_framework.filters.SearchFilter', + 'rest_framework.filters.OrderingFilter', + ], + 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', + 'PAGE_SIZE': 10 +} + +from datetime import timedelta +SIMPLE_JWT = { + 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60), + 'REFRESH_TOKEN_LIFETIME': timedelta(days=1), + 'ROTATE_REFRESH_TOKENS': True, + 'BLACKLIST_AFTER_ROTATION': True, + 'UPDATE_LAST_LOGIN': False, + + 'ALGORITHM': 'HS256', + 'SIGNING_KEY': SECRET_KEY, + 'VERIFYING_KEY': None, + 'AUDIENCE': None, + 'ISSUER': None, + 'JWK_URL': None, + 'LEEWAY': 0, + + 'AUTH_HEADER_TYPES': ('Bearer',), + 'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION', + 'USER_ID_FIELD': 'id', + 'USER_ID_CLAIM': 'user_id', + 'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule', + + 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',), + 'TOKEN_TYPE_CLAIM': 'token_type', + 'TOKEN_USER_CLASS': 'rest_framework_simplejwt.models.TokenUser', + + 'JTI_CLAIM': 'jti', +} \ No newline at end of file diff --git a/backend/core/tests.py b/backend/core/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/core/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/core/views.py b/backend/core/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/backend/core/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/backend/db.sqlite3 b/backend/db.sqlite3 new file mode 100644 index 0000000..7ac6efe Binary files /dev/null and b/backend/db.sqlite3 differ diff --git a/backend/izaac2backend/__init__.py b/backend/izaac2backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/izaac2backend/__pycache__/__init__.cpython-313.pyc b/backend/izaac2backend/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..032a5c7 Binary files /dev/null and b/backend/izaac2backend/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/izaac2backend/__pycache__/settings.cpython-313.pyc b/backend/izaac2backend/__pycache__/settings.cpython-313.pyc new file mode 100644 index 0000000..c245e8e Binary files /dev/null and b/backend/izaac2backend/__pycache__/settings.cpython-313.pyc differ diff --git a/backend/izaac2backend/__pycache__/urls.cpython-313.pyc b/backend/izaac2backend/__pycache__/urls.cpython-313.pyc new file mode 100644 index 0000000..2385d1f Binary files /dev/null and b/backend/izaac2backend/__pycache__/urls.cpython-313.pyc differ diff --git a/backend/izaac2backend/__pycache__/wsgi.cpython-313.pyc b/backend/izaac2backend/__pycache__/wsgi.cpython-313.pyc new file mode 100644 index 0000000..d422de9 Binary files /dev/null and b/backend/izaac2backend/__pycache__/wsgi.cpython-313.pyc differ diff --git a/backend/izaac2backend/asgi.py b/backend/izaac2backend/asgi.py new file mode 100644 index 0000000..03e7273 --- /dev/null +++ b/backend/izaac2backend/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for izaac2backend project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'izaac2backend.settings') + +application = get_asgi_application() diff --git a/backend/izaac2backend/settings.py b/backend/izaac2backend/settings.py new file mode 100644 index 0000000..5964504 --- /dev/null +++ b/backend/izaac2backend/settings.py @@ -0,0 +1,290 @@ +""" +Django settings for izaac2backend project. + +Generated by 'django-admin startproject' using Django 5.2. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.2/ref/settings/ +""" + +from pathlib import Path +from datetime import timedelta +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + +# Custom user model +AUTH_USER_MODEL = 'users.User' + +# Frontend URL for password reset links +FRONTEND_URL = 'http://localhost:5173' # Vite default port + +# Email Configuration +if DEBUG: + # Development email settings (console backend) + EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + DEFAULT_FROM_EMAIL = 'noreply@izaac.com' +else: + # Production email settings (SMTP backend) + EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' + EMAIL_HOST = 'smtp.gmail.com' # Or your SMTP server + EMAIL_PORT = 587 + EMAIL_USE_TLS = True + EMAIL_HOST_USER = '' # Your email address + EMAIL_HOST_PASSWORD = '' # Your email password or app-specific password + DEFAULT_FROM_EMAIL = EMAIL_HOST_USER + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-^+2p2e93g2_1h-@u&l&j+(9n&6z02-e$pirm6(@@(4$+-zyhxr' + + + +ALLOWED_HOSTS = [] + +CORS_ALLOWED_ORIGINS = [ + "http://localhost:5173", + "http://127.0.0.1:5173", +] + +CORS_ALLOW_CREDENTIALS = True + +REST_FRAMEWORK = { + 'DEFAULT_AUTHENTICATION_CLASSES': ( + 'rest_framework_simplejwt.authentication.JWTAuthentication', + ), + 'DEFAULT_PERMISSION_CLASSES': ( + 'rest_framework.permissions.IsAuthenticated', + ), + 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', + 'DEFAULT_RENDERER_CLASSES': ( + 'rest_framework.renderers.JSONRenderer', + 'rest_framework.renderers.BrowsableAPIRenderer', + ), +} + +SIMPLE_JWT = { + 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=30), + 'REFRESH_TOKEN_LIFETIME': timedelta(days=1), + 'ROTATE_REFRESH_TOKENS': True, + 'BLACKLIST_AFTER_ROTATION': True, + 'UPDATE_LAST_LOGIN': False, + + 'ALGORITHM': 'HS256', + 'SIGNING_KEY': SECRET_KEY, + 'VERIFYING_KEY': None, + 'AUDIENCE': None, + 'ISSUER': None, + 'JWK_URL': None, + 'LEEWAY': 0, + + 'AUTH_HEADER_TYPES': ('Bearer',), + 'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION', + 'USER_ID_FIELD': 'id', + 'USER_ID_CLAIM': 'user_id', + 'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule', + + 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',), + 'TOKEN_TYPE_CLAIM': 'token_type', + 'TOKEN_USER_CLASS': 'rest_framework_simplejwt.models.TokenUser', + + 'JTI_CLAIM': 'jti', +} + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'rest_framework', + 'drf_spectacular', + 'corsheaders', + 'rest_framework_simplejwt', + 'rest_framework_simplejwt.token_blacklist', + 'core', + 'users', + 'content', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'corsheaders.middleware.CorsMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'izaac2backend.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'izaac2backend.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.2/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.2/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +# Add Spectacular settings +SPECTACULAR_SETTINGS = { + 'TITLE': 'Izaac API', + 'DESCRIPTION': ''' + API for Izaac platform - A content management system with user authentication. + + ## Authentication + This API uses JWT (JSON Web Token) for authentication. To authenticate: + 1. Use the `/api/v1/users/login/` endpoint to get your access and refresh tokens + 2. Include the access token in the Authorization header: `Bearer ` + 3. When the access token expires, use the refresh token to get a new one via `/api/v1/users/refresh/` + + ## Rate Limiting + API requests are limited to 100 requests per minute per IP address. + ''', + 'VERSION': '1.0.0', + 'SERVE_INCLUDE_SCHEMA': False, + 'SWAGGER_UI_SETTINGS': { + 'deepLinking': True, + 'persistAuthorization': True, + 'displayOperationId': True, + 'filter': True, + 'syntaxHighlight.activate': True, + 'syntaxHighlight.theme': 'monokai', + }, + 'COMPONENT_SPLIT_REQUEST': True, + 'TAGS': [ + { + 'name': 'users', + 'description': 'User management endpoints including authentication and user operations' + }, + { + 'name': 'content', + 'description': 'Content management endpoints for posts, comments, and other content types' + } + ], + 'SECURITY': [{'jwtAuth': []}], + 'SECURITY_DEFINITIONS': { + 'jwtAuth': { + 'type': 'http', + 'scheme': 'bearer', + 'bearerFormat': 'JWT', + 'description': 'JWT token obtained from the login endpoint' + } + }, + 'SERVE_AUTHENTICATION': None, # Allow public access to documentation + 'SERVE_PERMISSIONS': ['rest_framework.permissions.AllowAny'], # Allow public access to documentation + 'APPEND_COMPONENTS': { + 'securitySchemes': { + 'jwtAuth': { + 'type': 'http', + 'scheme': 'bearer', + 'bearerFormat': 'JWT', + 'description': 'JWT token obtained from the login endpoint' + } + } + }, + 'PREPROCESSING_HOOKS': [], + 'POSTPROCESSING_HOOKS': [], + 'SORT_OPERATIONS': True, + 'SORT_OPERATION_PARAMETERS': True, + 'ENUM_NAME_OVERRIDES': { + 'StatusEnum': 'content.models.AbstractContent.STATUS_CHOICES' + }, + 'GENERATOR_CLASS': 'drf_spectacular.generators.SchemaGenerator', + 'GENERATOR_CLASS_KWARGS': { + 'servers': [ + {'url': 'http://localhost:8000', 'description': 'Local development server'}, + {'url': 'https://api.izaac.com', 'description': 'Production server'} + ] + } +} + +# Add CORS settings +CORS_ALLOWED_ORIGINS = [ + "http://localhost:5173", # Vite default port + "http://127.0.0.1:5173", +] + +CORS_ALLOW_CREDENTIALS = True + +# Media files (Uploads) +MEDIA_URL = '/media/' +MEDIA_ROOT = BASE_DIR / 'media' + +# Maximum upload size (5MB) +MAX_UPLOAD_SIZE = 5 * 1024 * 1024 # 5MB in bytes diff --git a/backend/izaac2backend/urls.py b/backend/izaac2backend/urls.py new file mode 100644 index 0000000..2b5c6f9 --- /dev/null +++ b/backend/izaac2backend/urls.py @@ -0,0 +1,37 @@ +""" +URL configuration for izaac2backend project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include +from django.conf import settings +from django.conf.urls.static import static +from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, SpectacularRedocView +from rest_framework.permissions import AllowAny + +urlpatterns = [ + path('admin/', admin.site.urls), + path('api/users/', include('users.urls')), + path('api/content/', include('content.urls')), + # path('api/v1/core/', include('core.urls')), + + # API Documentation URLs + path('api/schema/', SpectacularAPIView.as_view(permission_classes=[AllowAny]), name='schema'), + path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema', permission_classes=[AllowAny]), name='swagger-ui'), + path('api/redoc/', SpectacularRedocView.as_view(url_name='schema', permission_classes=[AllowAny]), name='redoc'), +] + +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/backend/izaac2backend/wsgi.py b/backend/izaac2backend/wsgi.py new file mode 100644 index 0000000..e10114b --- /dev/null +++ b/backend/izaac2backend/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for izaac2backend project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'izaac2backend.settings') + +application = get_wsgi_application() diff --git a/backend/manage.py b/backend/manage.py new file mode 100755 index 0000000..9a75cfb --- /dev/null +++ b/backend/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'izaac2backend.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/backend/media/uploads/2025/05/01/471172126_884840823863129_7481652073453829414_n.jpg b/backend/media/uploads/2025/05/01/471172126_884840823863129_7481652073453829414_n.jpg new file mode 100644 index 0000000..d164d16 Binary files /dev/null and b/backend/media/uploads/2025/05/01/471172126_884840823863129_7481652073453829414_n.jpg differ diff --git a/backend/media/uploads/2025/05/10/1655072459464.jpeg b/backend/media/uploads/2025/05/10/1655072459464.jpeg new file mode 100644 index 0000000..919ab72 Binary files /dev/null and b/backend/media/uploads/2025/05/10/1655072459464.jpeg differ diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..2902576 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,8 @@ +Django==4.2.0 +djangorestframework>=3.14.0 +django-cors-headers>=4.3.0 +django-filter>=23.5 +python-dotenv>=1.0.0 +psycopg2-binary>=2.9.9 +Pillow>=10.0.0 +djangorestframework-simplejwt>=5.3.0 \ No newline at end of file diff --git a/backend/users/__init__.py b/backend/users/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/users/__pycache__/__init__.cpython-313.pyc b/backend/users/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..012b119 Binary files /dev/null and b/backend/users/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/users/__pycache__/admin.cpython-313.pyc b/backend/users/__pycache__/admin.cpython-313.pyc new file mode 100644 index 0000000..88833e3 Binary files /dev/null and b/backend/users/__pycache__/admin.cpython-313.pyc differ diff --git a/backend/users/__pycache__/apps.cpython-313.pyc b/backend/users/__pycache__/apps.cpython-313.pyc new file mode 100644 index 0000000..76ca89b Binary files /dev/null and b/backend/users/__pycache__/apps.cpython-313.pyc differ diff --git a/backend/users/__pycache__/models.cpython-313.pyc b/backend/users/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000..01ab6fd Binary files /dev/null and b/backend/users/__pycache__/models.cpython-313.pyc differ diff --git a/backend/users/__pycache__/permissions.cpython-313.pyc b/backend/users/__pycache__/permissions.cpython-313.pyc new file mode 100644 index 0000000..08613d0 Binary files /dev/null and b/backend/users/__pycache__/permissions.cpython-313.pyc differ diff --git a/backend/users/__pycache__/serializers.cpython-313.pyc b/backend/users/__pycache__/serializers.cpython-313.pyc new file mode 100644 index 0000000..a61afb9 Binary files /dev/null and b/backend/users/__pycache__/serializers.cpython-313.pyc differ diff --git a/backend/users/__pycache__/urls.cpython-313.pyc b/backend/users/__pycache__/urls.cpython-313.pyc new file mode 100644 index 0000000..1224df6 Binary files /dev/null and b/backend/users/__pycache__/urls.cpython-313.pyc differ diff --git a/backend/users/__pycache__/views.cpython-313.pyc b/backend/users/__pycache__/views.cpython-313.pyc new file mode 100644 index 0000000..4709382 Binary files /dev/null and b/backend/users/__pycache__/views.cpython-313.pyc differ diff --git a/backend/users/admin.py b/backend/users/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/users/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/users/apps.py b/backend/users/apps.py new file mode 100644 index 0000000..72b1401 --- /dev/null +++ b/backend/users/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'users' diff --git a/backend/users/migrations/0001_initial.py b/backend/users/migrations/0001_initial.py new file mode 100644 index 0000000..ef44b3c --- /dev/null +++ b/backend/users/migrations/0001_initial.py @@ -0,0 +1,62 @@ +# Generated by Django 4.2 on 2025-05-01 18:16 + +from django.conf import settings +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('role', models.CharField(choices=[('admin', 'Admin'), ('moderator', 'Moderator'), ('user', 'User')], default='user', max_length=10)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to.', related_name='custom_user_set', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='custom_user_set', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='PasswordResetToken', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('token', models.CharField(max_length=100, unique=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('expires_at', models.DateTimeField()), + ('used', models.BooleanField(default=False)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'Password Reset Token', + 'verbose_name_plural': 'Password Reset Tokens', + }, + ), + ] diff --git a/backend/users/migrations/__init__.py b/backend/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/users/migrations/__pycache__/0001_initial.cpython-313.pyc b/backend/users/migrations/__pycache__/0001_initial.cpython-313.pyc new file mode 100644 index 0000000..85e5ae3 Binary files /dev/null and b/backend/users/migrations/__pycache__/0001_initial.cpython-313.pyc differ diff --git a/backend/users/migrations/__pycache__/0002_passwordresettoken.cpython-313.pyc b/backend/users/migrations/__pycache__/0002_passwordresettoken.cpython-313.pyc new file mode 100644 index 0000000..35444d6 Binary files /dev/null and b/backend/users/migrations/__pycache__/0002_passwordresettoken.cpython-313.pyc differ diff --git a/backend/users/migrations/__pycache__/0002_token_blacklist.cpython-313.pyc b/backend/users/migrations/__pycache__/0002_token_blacklist.cpython-313.pyc new file mode 100644 index 0000000..968cc5b Binary files /dev/null and b/backend/users/migrations/__pycache__/0002_token_blacklist.cpython-313.pyc differ diff --git a/backend/users/migrations/__pycache__/0003_alter_passwordresettoken_token_alter_user_role.cpython-313.pyc b/backend/users/migrations/__pycache__/0003_alter_passwordresettoken_token_alter_user_role.cpython-313.pyc new file mode 100644 index 0000000..6273aba Binary files /dev/null and b/backend/users/migrations/__pycache__/0003_alter_passwordresettoken_token_alter_user_role.cpython-313.pyc differ diff --git a/backend/users/migrations/__pycache__/0003_merge_0002_passwordresettoken_0002_token_blacklist.cpython-313.pyc b/backend/users/migrations/__pycache__/0003_merge_0002_passwordresettoken_0002_token_blacklist.cpython-313.pyc new file mode 100644 index 0000000..e95563c Binary files /dev/null and b/backend/users/migrations/__pycache__/0003_merge_0002_passwordresettoken_0002_token_blacklist.cpython-313.pyc differ diff --git a/backend/users/migrations/__pycache__/__init__.cpython-313.pyc b/backend/users/migrations/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..998c430 Binary files /dev/null and b/backend/users/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/backend/users/models.py b/backend/users/models.py new file mode 100644 index 0000000..a6c27df --- /dev/null +++ b/backend/users/models.py @@ -0,0 +1,57 @@ +from django.db import models +from django.contrib.auth.models import AbstractUser +from django.utils import timezone +import secrets +import string + +# Create your models here. +class User(AbstractUser): + ROLES = ( + ('admin', 'Admin'), + ('moderator', 'Moderator'), + ('user', 'User'), + ) + role = models.CharField(max_length=10, choices=ROLES, default='user') + + # Add related_name to resolve clashes + groups = models.ManyToManyField( + 'auth.Group', + related_name='custom_user_set', + blank=True, + help_text='The groups this user belongs to.', + verbose_name='groups', + ) + user_permissions = models.ManyToManyField( + 'auth.Permission', + related_name='custom_user_set', + blank=True, + help_text='Specific permissions for this user.', + verbose_name='user permissions', + ) + + def __str__(self): + return self.username + +class PasswordResetToken(models.Model): + user = models.ForeignKey(User, on_delete=models.CASCADE) + token = models.CharField(max_length=100, unique=True) + created_at = models.DateTimeField(auto_now_add=True) + expires_at = models.DateTimeField() + used = models.BooleanField(default=False) + + def save(self, *args, **kwargs): + if not self.token: + # Generate a random token + alphabet = string.ascii_letters + string.digits + self.token = ''.join(secrets.choice(alphabet) for _ in range(64)) + super().save(*args, **kwargs) + + def is_valid(self): + return ( + not self.used and + self.expires_at > timezone.now() + ) + + class Meta: + verbose_name = 'Password Reset Token' + verbose_name_plural = 'Password Reset Tokens' diff --git a/backend/users/permissions.py b/backend/users/permissions.py new file mode 100644 index 0000000..219408e --- /dev/null +++ b/backend/users/permissions.py @@ -0,0 +1,17 @@ +from rest_framework.permissions import BasePermission, SAFE_METHODS + +class IsAuthorOrReadOnly(BasePermission): + """ + Pozwala edytować tylko własny wpis/komentarz. + """ + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + return obj.author == request.user + +class IsEditorOrAdmin(BasePermission): + """ + Pozwala publikować treści tylko edytorom lub adminom. + """ + def has_permission(self, request, view): + return request.user.is_authenticated and request.user.role in ['admin', 'editor'] diff --git a/backend/users/serializers.py b/backend/users/serializers.py new file mode 100644 index 0000000..6ce2bea --- /dev/null +++ b/backend/users/serializers.py @@ -0,0 +1,66 @@ +from rest_framework import serializers +from django.contrib.auth import get_user_model +from django.contrib.auth.password_validation import validate_password +from django.core.exceptions import ValidationError +from .models import PasswordResetToken + +User = get_user_model() + +class UserRegistrationSerializer(serializers.ModelSerializer): + password = serializers.CharField(write_only=True, required=True, validators=[validate_password]) + password2 = serializers.CharField(write_only=True, required=True) + + class Meta: + model = User + fields = ('username', 'password', 'password2', 'email', 'first_name', 'last_name', 'role') + extra_kwargs = { + 'first_name': {'required': True}, + 'last_name': {'required': True}, + 'email': {'required': True}, + 'role': {'default': 'user'} + } + + def validate(self, attrs): + if attrs['password'] != attrs['password2']: + raise serializers.ValidationError({"password": "Password fields didn't match."}) + return attrs + + def create(self, validated_data): + validated_data.pop('password2') + user = User.objects.create_user(**validated_data) + return user + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ('id', 'username', 'email', 'first_name', 'last_name', 'role') + read_only_fields = ('role', 'is_staff', 'is_active', 'is_superuser', 'date_joined', 'last_login', 'groups', 'user_permissions', 'id') + +class ResetPasswordSerializer(serializers.Serializer): + email = serializers.EmailField(required=True) + + def validate_email(self, value): + try: + User.objects.get(email=value) + except User.DoesNotExist: + # Don't reveal that the email doesn't exist + pass + return value + +class ResetPasswordConfirmSerializer(serializers.Serializer): + token = serializers.UUIDField(required=True) + new_password = serializers.CharField(write_only=True, required=True, validators=[validate_password]) + confirm_password = serializers.CharField(write_only=True, required=True) + + def validate(self, attrs): + if attrs['new_password'] != attrs['confirm_password']: + raise serializers.ValidationError({"new_password": "Password fields didn't match."}) + + try: + reset_token = PasswordResetToken.objects.get(token=attrs['token']) + if not reset_token.is_valid(): + raise serializers.ValidationError({"token": "Invalid or expired token."}) + except PasswordResetToken.DoesNotExist: + raise serializers.ValidationError({"token": "Invalid token."}) + + return attrs \ No newline at end of file diff --git a/backend/users/tests.py b/backend/users/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/users/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/users/urls.py b/backend/users/urls.py new file mode 100644 index 0000000..416c320 --- /dev/null +++ b/backend/users/urls.py @@ -0,0 +1,22 @@ +from django.urls import path +from rest_framework_simplejwt.views import ( + TokenObtainPairView, + TokenRefreshView, +) +from .views import ( + RegisterView, + UserDetailView, + ChangePasswordView, + ResetPasswordView, + ResetPasswordConfirmView, +) + +urlpatterns = [ + path('login/', TokenObtainPairView.as_view(), name='token_obtain_pair'), + path('refresh/', TokenRefreshView.as_view(), name='token_refresh'), + path('register/', RegisterView.as_view(), name='register'), + path('me/', UserDetailView.as_view(), name='user-detail'), + path('change-password/', ChangePasswordView.as_view(), name='change-password'), + path('reset-password/', ResetPasswordView.as_view(), name='reset-password'), + path('reset-password/confirm/', ResetPasswordConfirmView.as_view(), name='reset-password-confirm'), +] diff --git a/backend/users/views.py b/backend/users/views.py new file mode 100644 index 0000000..444733f --- /dev/null +++ b/backend/users/views.py @@ -0,0 +1,174 @@ +from django.shortcuts import render +from rest_framework import generics, status +from rest_framework.response import Response +from rest_framework.permissions import AllowAny, IsAdminUser, IsAuthenticated +from rest_framework.views import APIView +from django.contrib.auth import get_user_model +from django.contrib.auth.password_validation import validate_password +from django.core.exceptions import ValidationError +from django.utils import timezone +from datetime import timedelta +from django.core.mail import send_mail +from django.conf import settings +from .serializers import UserRegistrationSerializer, UserSerializer, ResetPasswordSerializer, ResetPasswordConfirmSerializer +from .models import User, PasswordResetToken +import secrets +import string + +User = get_user_model() + +# Create your views here. + +class RegisterView(generics.CreateAPIView): + """ + API endpoint for user registration. + + create: + Register a new user with the following fields: + - username (required) + - password (required) + - password2 (required, must match password) + - email (required) + - first_name (required) + - last_name (required) + - role (optional, defaults to 'user') + """ + permission_classes = (AllowAny,) + serializer_class = UserRegistrationSerializer + + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + self.perform_create(serializer) + headers = self.get_success_headers(serializer.data) + return Response( + {"message": "User registered successfully. Please login to continue."}, + status=status.HTTP_201_CREATED, + headers=headers + ) + +class UserViewSet(generics.ListAPIView): + """ + API endpoint for viewing and editing users. + """ + queryset = User.objects.all() + serializer_class = UserSerializer + permission_classes = [IsAdminUser] + +class UserDetailView(generics.RetrieveUpdateAPIView): + """ + API endpoint for retrieving and updating the current user's data. + """ + serializer_class = UserSerializer + permission_classes = [IsAuthenticated] + + def get_object(self): + return self.request.user + + def update(self, request, *args, **kwargs): + partial = kwargs.pop('partial', False) + instance = self.get_object() + serializer = self.get_serializer(instance, data=request.data, partial=partial) + serializer.is_valid(raise_exception=True) + self.perform_update(serializer) + return Response(serializer.data) + +class ChangePasswordView(APIView): + """ + API endpoint for changing user password. + """ + permission_classes = [IsAuthenticated] + + def post(self, request): + user = request.user + old_password = request.data.get('old_password') + new_password = request.data.get('new_password') + + if not old_password or not new_password: + return Response( + {"detail": "Both old and new password are required."}, + status=status.HTTP_400_BAD_REQUEST + ) + + if not user.check_password(old_password): + return Response( + {"detail": "Current password is incorrect."}, + status=status.HTTP_400_BAD_REQUEST + ) + + try: + validate_password(new_password, user) + except ValidationError as e: + return Response( + {"detail": list(e.messages)}, + status=status.HTTP_400_BAD_REQUEST + ) + + user.set_password(new_password) + user.save() + return Response( + {"detail": "Password successfully updated."}, + status=status.HTTP_200_OK + ) + +class ResetPasswordView(generics.GenericAPIView): + permission_classes = [AllowAny] + serializer_class = ResetPasswordSerializer + + def post(self, request): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + + email = serializer.validated_data['email'] + try: + user = User.objects.get(email=email) + # Create a new reset token + token = PasswordResetToken.objects.create( + user=user, + expires_at=timezone.now() + timedelta(hours=24) + ) + + # Send reset email + reset_url = f"{settings.FRONTEND_URL}/reset-password/{token.token}" + send_mail( + 'Password Reset Request', + f'Click the following link to reset your password: {reset_url}', + settings.DEFAULT_FROM_EMAIL, + [email], + fail_silently=False, + ) + + return Response({ + 'detail': 'If an account exists with this email, you will receive password reset instructions.' + }, status=status.HTTP_200_OK) + except User.DoesNotExist: + # Don't reveal that the email doesn't exist + return Response({ + 'detail': 'If an account exists with this email, you will receive password reset instructions.' + }, status=status.HTTP_200_OK) + +class ResetPasswordConfirmView(generics.GenericAPIView): + permission_classes = [AllowAny] + serializer_class = ResetPasswordConfirmSerializer + + def post(self, request): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + + token = serializer.validated_data['token'] + new_password = serializer.validated_data['new_password'] + + reset_token = PasswordResetToken.objects.get(token=token) + user = reset_token.user + + # Update password + user.set_password(new_password) + user.save() + + # Mark token as used + reset_token.used = True + reset_token.save() + + return Response({ + 'detail': 'Password has been reset successfully.' + }, status=status.HTTP_200_OK) \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..25fc3d1 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,56 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` + + diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100644 index 0000000..092408a --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..d0fe694 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Izaac.pl | Strona główna + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..6cafeeb --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,8419 @@ +{ + "name": "izaac_2_0", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "izaac_2_0", + "version": "0.0.0", + "dependencies": { + "@ant-design/icons": "^6.0.0", + "@uiw/react-md-editor": "^4.0.5", + "antd": "^5.24.9", + "axios": "^1.6.7", + "chart.js": "^4.4.1", + "framer-motion": "^11.0.3", + "katex": "^0.16.22", + "marked": "^12.0.0", + "motion": "^10.17.0", + "react": "^18.2.0", + "react-chartjs-2": "^5.2.0", + "react-dom": "^18.2.0", + "react-helmet": "^6.1.0", + "react-helmet-async": "^2.0.5", + "react-icons": "^5.5.0", + "react-markdown": "^9.1.0", + "react-router-dom": "^6.22.0", + "rehype-katex": "^7.0.1", + "remark-gfm": "^4.0.0", + "remark-math": "^6.0.0" + }, + "devDependencies": { + "@eslint/js": "^8.56.0", + "@tailwindcss/typography": "^0.5.16", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.17", + "eslint": "^8.56.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "globals": "^13.24.0", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "typescript": "~5.3.3", + "typescript-eslint": "^7.0.1", + "vite": "^5.1.3" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ant-design/colors": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.2.0.tgz", + "integrity": "sha512-bjTObSnZ9C/O8MB/B4OUtd/q9COomuJAR2SYfhxLyHvCKn4EKwCN3e+fWGMo7H5InAyV0wL17jdE9ALrdOW/6A==", + "license": "MIT", + "dependencies": { + "@ant-design/fast-color": "^2.0.6" + } + }, + "node_modules/@ant-design/cssinjs": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.23.0.tgz", + "integrity": "sha512-7GAg9bD/iC9ikWatU9ym+P9ugJhi/WbsTWzcKN6T4gU0aehsprtke1UAaaSxxkjjmkJb3llet/rbUSLPgwlY4w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@emotion/hash": "^0.8.0", + "@emotion/unitless": "^0.7.5", + "classnames": "^2.3.1", + "csstype": "^3.1.3", + "rc-util": "^5.35.0", + "stylis": "^4.3.4" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/cssinjs-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.3.tgz", + "integrity": "sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==", + "license": "MIT", + "dependencies": { + "@ant-design/cssinjs": "^1.21.0", + "@babel/runtime": "^7.23.2", + "rc-util": "^5.38.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@ant-design/fast-color": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-2.0.6.tgz", + "integrity": "sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@ant-design/icons": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-6.0.0.tgz", + "integrity": "sha512-o0aCCAlHc1o4CQcapAwWzHeaW2x9F49g7P3IDtvtNXgHowtRWYb7kiubt8sQPFvfVIVU/jLw2hzeSlNt0FU+Uw==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^8.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@rc-component/util": "^1.2.1", + "classnames": "^2.2.6" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz", + "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==", + "license": "MIT" + }, + "node_modules/@ant-design/icons/node_modules/@ant-design/colors": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.0.tgz", + "integrity": "sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==", + "license": "MIT", + "dependencies": { + "@ant-design/fast-color": "^3.0.0" + } + }, + "node_modules/@ant-design/icons/node_modules/@ant-design/fast-color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.0.tgz", + "integrity": "sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA==", + "license": "MIT", + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@ant-design/react-slick": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz", + "integrity": "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.4", + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "resize-observer-polyfill": "^1.5.1", + "throttle-debounce": "^5.0.0" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz", + "integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", + "integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", + "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", + "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", + "license": "MIT", + "dependencies": { + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.18.0.tgz", + "integrity": "sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==", + "license": "MIT", + "dependencies": { + "@motionone/animation": "^10.18.0", + "@motionone/generators": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", + "license": "MIT", + "dependencies": { + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", + "license": "MIT" + }, + "node_modules/@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rc-component/async-validator": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz", + "integrity": "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.4" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/@rc-component/color-picker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-2.0.1.tgz", + "integrity": "sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==", + "license": "MIT", + "dependencies": { + "@ant-design/fast-color": "^2.0.6", + "@babel/runtime": "^7.23.6", + "classnames": "^2.2.6", + "rc-util": "^5.38.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/context": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz", + "integrity": "sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mini-decimal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz", + "integrity": "sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.0" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@rc-component/mutate-observer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz", + "integrity": "sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.0", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", + "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.0", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/qrcode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.0.0.tgz", + "integrity": "sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "classnames": "^2.3.2", + "rc-util": "^5.38.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tour": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.15.1.tgz", + "integrity": "sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.0", + "@rc-component/portal": "^1.0.0-9", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/trigger": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.6.tgz", + "integrity": "sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@rc-component/portal": "^1.1.0", + "classnames": "^2.3.2", + "rc-motion": "^2.0.0", + "rc-resize-observer": "^1.3.1", + "rc-util": "^5.44.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/util": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@rc-component/util/-/util-1.2.1.tgz", + "integrity": "sha512-AUVu6jO+lWjQnUOOECwu8iR0EdElQgWW5NBv5vP/Uf9dWbAX3udhMutRlkVXjuac2E40ghkFy+ve00mc/3Fymg==", + "license": "MIT", + "dependencies": { + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz", + "integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz", + "integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz", + "integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz", + "integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz", + "integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz", + "integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz", + "integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz", + "integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz", + "integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz", + "integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz", + "integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz", + "integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz", + "integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz", + "integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz", + "integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz", + "integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz", + "integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz", + "integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz", + "integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz", + "integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@uiw/copy-to-clipboard": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@uiw/copy-to-clipboard/-/copy-to-clipboard-1.0.17.tgz", + "integrity": "sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==", + "license": "MIT", + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/@uiw/react-markdown-preview": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@uiw/react-markdown-preview/-/react-markdown-preview-5.1.4.tgz", + "integrity": "sha512-6k13WVNHCEaamz3vh54OQ1tseIXneKlir1+E/VFQBPq8PRod+gwLfYtiitDBWu+ZFttoiKPLZ7flgHrVM+JNOg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@uiw/copy-to-clipboard": "~1.0.12", + "react-markdown": "~9.0.1", + "rehype-attr": "~3.0.1", + "rehype-autolink-headings": "~7.1.0", + "rehype-ignore": "^2.0.0", + "rehype-prism-plus": "2.0.0", + "rehype-raw": "^7.0.0", + "rehype-rewrite": "~4.0.0", + "rehype-slug": "~6.0.0", + "remark-gfm": "~4.0.0", + "remark-github-blockquote-alert": "^1.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@uiw/react-markdown-preview/node_modules/react-markdown": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.3.tgz", + "integrity": "sha512-Yk7Z94dbgYTOrdk41Z74GoKA7rThnsbbqBTRYuxoe08qvfQ9tJVhmAKw6BJS/ZORG7kTy/s1QvYzSuaoBA1qfw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/@uiw/react-markdown-preview/node_modules/rehype-prism-plus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.0.tgz", + "integrity": "sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ==", + "license": "MIT", + "dependencies": { + "hast-util-to-string": "^3.0.0", + "parse-numeric-range": "^1.3.0", + "refractor": "^4.8.0", + "rehype-parse": "^9.0.0", + "unist-util-filter": "^5.0.0", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@uiw/react-md-editor": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@uiw/react-md-editor/-/react-md-editor-4.0.5.tgz", + "integrity": "sha512-x+S7ZMz1B+KwVODOZk663H2gdOZhcFsrPUF8V69K4L2BbTZ3A4sBCw/uTrBE9dHH0gajAzRAYbAYCHsUQaTcyA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.14.6", + "@uiw/react-markdown-preview": "^5.0.6", + "rehype": "~13.0.0", + "rehype-prism-plus": "~2.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", + "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antd": { + "version": "5.24.9", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.24.9.tgz", + "integrity": "sha512-liB+Y/JwD5/KSKbK1Z1EVAbWcoWYvWJ1s97AbbT+mOdigpJQuWwH7kG8IXNEljI7onvj0DdD43TXhSRLUu9AMA==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.2.0", + "@ant-design/cssinjs": "^1.23.0", + "@ant-design/cssinjs-utils": "^1.1.3", + "@ant-design/fast-color": "^2.0.6", + "@ant-design/icons": "^5.6.1", + "@ant-design/react-slick": "~1.1.2", + "@babel/runtime": "^7.26.0", + "@rc-component/color-picker": "~2.0.1", + "@rc-component/mutate-observer": "^1.1.0", + "@rc-component/qrcode": "~1.0.0", + "@rc-component/tour": "~1.15.1", + "@rc-component/trigger": "^2.2.6", + "classnames": "^2.5.1", + "copy-to-clipboard": "^3.3.3", + "dayjs": "^1.11.11", + "rc-cascader": "~3.33.1", + "rc-checkbox": "~3.5.0", + "rc-collapse": "~3.9.0", + "rc-dialog": "~9.6.0", + "rc-drawer": "~7.2.0", + "rc-dropdown": "~4.2.1", + "rc-field-form": "~2.7.0", + "rc-image": "~7.12.0", + "rc-input": "~1.8.0", + "rc-input-number": "~9.5.0", + "rc-mentions": "~2.20.0", + "rc-menu": "~9.16.1", + "rc-motion": "^2.9.5", + "rc-notification": "~5.6.4", + "rc-pagination": "~5.1.0", + "rc-picker": "~4.11.3", + "rc-progress": "~4.0.0", + "rc-rate": "~2.13.1", + "rc-resize-observer": "^1.4.3", + "rc-segmented": "~2.7.0", + "rc-select": "~14.16.6", + "rc-slider": "~11.1.8", + "rc-steps": "~6.0.1", + "rc-switch": "~4.1.0", + "rc-table": "~7.50.4", + "rc-tabs": "~15.6.1", + "rc-textarea": "~1.10.0", + "rc-tooltip": "~6.4.0", + "rc-tree": "~5.13.1", + "rc-tree-select": "~5.27.0", + "rc-upload": "~4.8.1", + "rc-util": "^5.44.4", + "scroll-into-view-if-needed": "^3.1.0", + "throttle-debounce": "^5.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ant-design" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/antd/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001716", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz", + "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chart.js": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz", + "integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.2.tgz", + "integrity": "sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.148", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.148.tgz", + "integrity": "sha512-8uc1QXwwqayD4mblcsQYZqoi+cOc97A2XmKSBOIRbEAvbp6vrqmSYs4dHD2qVygUgn7Mi0qdKgPaJ9WC8cv63A==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", + "license": "MIT", + "dependencies": { + "motion-dom": "^11.18.1", + "motion-utils": "^11.18.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "license": "MIT" + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "license": "MIT", + "dependencies": { + "string-convert": "^0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/katex": { + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/motion": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-10.18.0.tgz", + "integrity": "sha512-MVAZZmwM/cp77BrNe1TxTMldxRPjwBNHheU5aPToqT4rJdZxLiADk58H+a0al5jKLxkB0OdgNq6DiVn11cjvIQ==", + "license": "MIT", + "dependencies": { + "@motionone/animation": "^10.18.0", + "@motionone/dom": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0" + } + }, + "node_modules/motion-dom": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", + "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^11.18.1" + } + }, + "node_modules/motion-utils": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", + "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/rc-cascader": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.33.1.tgz", + "integrity": "sha512-Kyl4EJ7ZfCBuidmZVieegcbFw0RcU5bHHSbtEdmuLYd0fYHCAiYKZ6zon7fWAVyC6rWWOOib0XKdTSf7ElC9rg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.7", + "classnames": "^2.3.1", + "rc-select": "~14.16.2", + "rc-tree": "~5.13.0", + "rc-util": "^5.43.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-checkbox": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.5.0.tgz", + "integrity": "sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.3.2", + "rc-util": "^5.25.2" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-collapse": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.9.0.tgz", + "integrity": "sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.3.4", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-dialog": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.6.0.tgz", + "integrity": "sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/portal": "^1.0.0-8", + "classnames": "^2.2.6", + "rc-motion": "^2.3.0", + "rc-util": "^5.21.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-drawer": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz", + "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@rc-component/portal": "^1.1.1", + "classnames": "^2.2.6", + "rc-motion": "^2.6.1", + "rc-util": "^5.38.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-dropdown": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.1.tgz", + "integrity": "sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.6", + "rc-util": "^5.44.1" + }, + "peerDependencies": { + "react": ">=16.11.0", + "react-dom": ">=16.11.0" + } + }, + "node_modules/rc-field-form": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.7.0.tgz", + "integrity": "sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.0", + "@rc-component/async-validator": "^5.0.3", + "rc-util": "^5.32.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-image": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.12.0.tgz", + "integrity": "sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/portal": "^1.0.2", + "classnames": "^2.2.6", + "rc-dialog": "~9.6.0", + "rc-motion": "^2.6.2", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-input": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz", + "integrity": "sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.18.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/rc-input-number": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.5.0.tgz", + "integrity": "sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/mini-decimal": "^1.0.1", + "classnames": "^2.2.5", + "rc-input": "~1.8.0", + "rc-util": "^5.40.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-mentions": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.20.0.tgz", + "integrity": "sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.6", + "rc-input": "~1.8.0", + "rc-menu": "~9.16.0", + "rc-textarea": "~1.10.0", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-menu": { + "version": "9.16.1", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.16.1.tgz", + "integrity": "sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^2.0.0", + "classnames": "2.x", + "rc-motion": "^2.4.3", + "rc-overflow": "^1.3.1", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-motion": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.5.tgz", + "integrity": "sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.44.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-notification": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.4.tgz", + "integrity": "sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.9.0", + "rc-util": "^5.20.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-overflow": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.4.1.tgz", + "integrity": "sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.37.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-pagination": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-5.1.0.tgz", + "integrity": "sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.3.2", + "rc-util": "^5.38.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-picker": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.3.tgz", + "integrity": "sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.1", + "rc-overflow": "^1.3.2", + "rc-resize-observer": "^1.4.0", + "rc-util": "^5.43.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/rc-progress": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz", + "integrity": "sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-util": "^5.16.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-rate": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.1.tgz", + "integrity": "sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.0.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-resize-observer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz", + "integrity": "sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.7", + "classnames": "^2.2.1", + "rc-util": "^5.44.1", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-segmented": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.7.0.tgz", + "integrity": "sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-motion": "^2.4.4", + "rc-util": "^5.17.0" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/rc-select": { + "version": "14.16.6", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.16.6.tgz", + "integrity": "sha512-YPMtRPqfZWOm2XGTbx5/YVr1HT0vn//8QS77At0Gjb3Lv+Lbut0IORJPKLWu1hQ3u4GsA0SrDzs7nI8JG7Zmyg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^2.1.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-overflow": "^1.3.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-slider": { + "version": "11.1.8", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.8.tgz", + "integrity": "sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.36.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-steps": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", + "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.16.7", + "classnames": "^2.2.3", + "rc-util": "^5.16.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-switch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", + "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0", + "classnames": "^2.2.1", + "rc-util": "^5.30.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-table": { + "version": "7.50.4", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.4.tgz", + "integrity": "sha512-Y+YuncnQqoS5e7yHvfvlv8BmCvwDYDX/2VixTBEhkMDk9itS9aBINp4nhzXFKiBP/frG4w0pS9d9Rgisl0T1Bw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/context": "^1.4.0", + "classnames": "^2.2.5", + "rc-resize-observer": "^1.1.0", + "rc-util": "^5.44.3", + "rc-virtual-list": "^3.14.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tabs": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.6.1.tgz", + "integrity": "sha512-/HzDV1VqOsUWyuC0c6AkxVYFjvx9+rFPKZ32ejxX0Uc7QCzcEjTA9/xMgv4HemPKwzBNX8KhGVbbumDjnj92aA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "classnames": "2.x", + "rc-dropdown": "~4.2.0", + "rc-menu": "~9.16.0", + "rc-motion": "^2.6.2", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.34.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-textarea": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.10.0.tgz", + "integrity": "sha512-ai9IkanNuyBS4x6sOL8qu/Ld40e6cEs6pgk93R+XLYg0mDSjNBGey6/ZpDs5+gNLD7urQ14po3V6Ck2dJLt9SA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-input": "~1.8.0", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tooltip": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.4.0.tgz", + "integrity": "sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.3.1", + "rc-util": "^5.44.3" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tree": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.13.1.tgz", + "integrity": "sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.1" + }, + "engines": { + "node": ">=10.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-tree-select": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.27.0.tgz", + "integrity": "sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.7", + "classnames": "2.x", + "rc-select": "~14.16.2", + "rc-tree": "~5.13.0", + "rc-util": "^5.43.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-upload": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.8.1.tgz", + "integrity": "sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "classnames": "^2.2.5", + "rc-util": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-util": { + "version": "5.44.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.44.4.tgz", + "integrity": "sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-virtual-list": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.18.5.tgz", + "integrity": "sha512-1FuxVSxhzTj3y8k5xMPbhXCB0t2TOiI3Tq+qE2Bu+GGV7f+ECVuQl4OUg6lZ2qT5fordTW7CBpr9czdzXCI7Pg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.0", + "classnames": "^2.2.6", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.36.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-chartjs-2": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.3.0.tgz", + "integrity": "sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", + "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.1.1", + "react-side-effect": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/react-helmet-async": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-2.0.5.tgz", + "integrity": "sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==", + "license": "Apache-2.0", + "dependencies": { + "invariant": "^2.2.4", + "react-fast-compare": "^3.2.2", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-markdown": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.1.0.tgz", + "integrity": "sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.0.tgz", + "integrity": "sha512-D3X8FyH9nBcTSHGdEKurK7r8OYE1kKFn3d/CF+CoxbSHkxU7o37+Uh7eAHRXr6k2tSExXYO++07PeXJtA/dEhQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.0.tgz", + "integrity": "sha512-x30B78HV5tFk8ex0ITwzC9TTZMua4jGyA9IUlH1JLQYQTFyxr/ZxwOJq7evg1JX1qGVUcvhsmQSKdPncQrjTgA==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-side-effect": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", + "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/refractor": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-4.9.0.tgz", + "integrity": "sha512-nEG1SPXFoGGx+dcjftjv8cAjEusIh6ED1xhf5DG3C0x/k+rmZ2duKnc3QLpt6qeHv5fPb8uwN3VWN2BT7fr3Og==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/prismjs": "^1.0.0", + "hastscript": "^7.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/refractor/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/refractor/node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/refractor/node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/refractor/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-attr": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/rehype-attr/-/rehype-attr-3.0.3.tgz", + "integrity": "sha512-Up50Xfra8tyxnkJdCzLBIBtxOcB2M1xdeKe1324U06RAvSjYm7ULSeoM+b/nYPQPVd7jsXJ9+39IG1WAJPXONw==", + "license": "MIT", + "dependencies": { + "unified": "~11.0.0", + "unist-util-visit": "~5.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/rehype-autolink-headings": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", + "integrity": "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-ignore": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rehype-ignore/-/rehype-ignore-2.0.2.tgz", + "integrity": "sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==", + "license": "MIT", + "dependencies": { + "hast-util-select": "^6.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-prism-plus": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.1.tgz", + "integrity": "sha512-Wglct0OW12tksTUseAPyWPo3srjBOY7xKlql/DPKi7HbsdZTyaLCAoO58QBKSczFQxElTsQlOY3JDOFzB/K++Q==", + "license": "MIT", + "dependencies": { + "hast-util-to-string": "^3.0.0", + "parse-numeric-range": "^1.3.0", + "refractor": "^4.8.0", + "rehype-parse": "^9.0.0", + "unist-util-filter": "^5.0.0", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-rewrite": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rehype-rewrite/-/rehype-rewrite-4.0.2.tgz", + "integrity": "sha512-rjLJ3z6fIV11phwCqHp/KRo8xuUCO8o9bFJCNw5o6O2wlLk6g8r323aRswdGBQwfXPFYeSuZdAjp4tzo6RGqEg==", + "license": "MIT", + "dependencies": { + "hast-util-select": "^6.0.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-github-blockquote-alert": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/remark-github-blockquote-alert/-/remark-github-blockquote-alert-1.3.0.tgz", + "integrity": "sha512-cwkBA4x+VH4J2VAMzhbmSeAmK5tBd5iwesgSUUQuRtuQ48XQm6sXXNLY9PR7ohZmZiqMeoDMUGCTur5zwR4lTQ==", + "license": "MIT", + "dependencies": { + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz", + "integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.1", + "@rollup/rollup-android-arm64": "4.40.1", + "@rollup/rollup-darwin-arm64": "4.40.1", + "@rollup/rollup-darwin-x64": "4.40.1", + "@rollup/rollup-freebsd-arm64": "4.40.1", + "@rollup/rollup-freebsd-x64": "4.40.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.1", + "@rollup/rollup-linux-arm-musleabihf": "4.40.1", + "@rollup/rollup-linux-arm64-gnu": "4.40.1", + "@rollup/rollup-linux-arm64-musl": "4.40.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.1", + "@rollup/rollup-linux-riscv64-gnu": "4.40.1", + "@rollup/rollup-linux-riscv64-musl": "4.40.1", + "@rollup/rollup-linux-s390x-gnu": "4.40.1", + "@rollup/rollup-linux-x64-gnu": "4.40.1", + "@rollup/rollup-linux-x64-musl": "4.40.1", + "@rollup/rollup-win32-arm64-msvc": "4.40.1", + "@rollup/rollup-win32-ia32-msvc": "4.40.1", + "@rollup/rollup-win32-x64-msvc": "4.40.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.8" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throttle-debounce": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", + "license": "MIT", + "engines": { + "node": ">=12.22" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.18.0.tgz", + "integrity": "sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "@typescript-eslint/utils": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-filter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/unist-util-filter/-/unist-util-filter-5.0.1.tgz", + "integrity": "sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..f4d69bd --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,51 @@ +{ + "name": "izaac_2_0", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@ant-design/icons": "^6.0.0", + "@uiw/react-md-editor": "^4.0.5", + "antd": "^5.24.9", + "axios": "^1.6.7", + "chart.js": "^4.4.1", + "framer-motion": "^11.0.3", + "katex": "^0.16.22", + "marked": "^12.0.0", + "motion": "^10.17.0", + "react": "^18.2.0", + "react-chartjs-2": "^5.2.0", + "react-dom": "^18.2.0", + "react-helmet": "^6.1.0", + "react-helmet-async": "^2.0.5", + "react-icons": "^5.5.0", + "react-markdown": "^9.1.0", + "react-router-dom": "^6.22.0", + "rehype-katex": "^7.0.1", + "remark-gfm": "^4.0.0", + "remark-math": "^6.0.0" + }, + "devDependencies": { + "@eslint/js": "^8.56.0", + "@tailwindcss/typography": "^0.5.16", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.17", + "eslint": "^8.56.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "globals": "^13.24.0", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "typescript": "~5.3.3", + "typescript-eslint": "^7.0.1", + "vite": "^5.1.3" + } +} diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 0000000..387612e --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/frontend/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/.DS_Store b/frontend/src/.DS_Store new file mode 100644 index 0000000..7e490fc Binary files /dev/null and b/frontend/src/.DS_Store differ diff --git a/frontend/src/App.css b/frontend/src/App.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/frontend/src/App.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..db98217 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,116 @@ +import React, { useEffect, useState } from 'react' +import Navbar from './components/Navbar' +import Footer from './components/Footer' +import { ThemeProvider } from './context/ThemeContext' +import { AuthProvider } from './context/AuthContext' +import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; +import { HelmetProvider } from 'react-helmet-async'; +import ScienceContent from './pages/ScienceContent'; +import HomePage from './pages/HomePage'; +import ContentPage from './pages/ContentPage'; +import ContactPage from './pages/ContactPage'; +import CategoriesPage from './pages/CategoriesPage'; +import Login from './pages/Login'; +import Register from './pages/Register'; +import MyAccountPage from './pages/MyAccountPage'; +import ForgotPasswordPage from './pages/ForgotPasswordPage'; +import ProtectedRoute from './components/ProtectedRoute'; +import PostsPage from './pages/PostsPage'; +import CreatePostPage from './pages/CreatePostPage'; +import PrivateRoute from './components/PrivateRoute'; +import DashboardPage from './pages/DashboardPage'; +import './styles/editor.css'; +import TOS from './pages/TOS'; +import PrivacyPolicy from './pages/PrivacyPolicy'; +import { ConfigProvider, theme as antdTheme } from 'antd'; +import CalculatorAndChartsPage from './pages/CalculatorAndChartsPage'; +function App() { + const [isDark, setIsDark] = useState(false); + + useEffect(() => { + const checkDark = () => { + return ( + document.documentElement.classList.contains('dark') || + document.body.classList.contains('dark') + ); + }; + setIsDark(checkDark()); + const observer = new MutationObserver(() => { + setIsDark(checkDark()); + }); + observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] }); + observer.observe(document.body, { attributes: true, attributeFilter: ['class'] }); + return () => observer.disconnect(); + }, []); + + return ( + + + + + +
+ + + } /> + } /> + } /> + {/* } /> */} + } /> + + + + } /> + } /> + } /> + } /> + + + + } /> + } /> + } /> + + + + } + /> + + + + } + /> + + + + } + /> + } /> + } /> + +
+
+
+
+
+
+
+ ) +} + +export default App diff --git a/frontend/src/api/auth.ts b/frontend/src/api/auth.ts new file mode 100644 index 0000000..93d6525 --- /dev/null +++ b/frontend/src/api/auth.ts @@ -0,0 +1,38 @@ +import axios from 'axios'; + +const API_URL = 'http://localhost:8000/api/users'; + +export interface RegisterData { + username: string; + password: string; + password2: string; + email: string; + first_name: string; + last_name: string; + role?: 'admin' | 'user' | 'moderator'; +} + +export interface LoginData { + username: string; + password: string; +} + +export interface AuthResponse { + access: string; + refresh: string; +} + +export const register = async (data: RegisterData): Promise<{ message: string }> => { + const response = await axios.post(`${API_URL}/register/`, data); + return response.data; +}; + +export const login = async (data: LoginData): Promise => { + const response = await axios.post(`${API_URL}/login/`, data); + return response.data; +}; + +export const refreshToken = async (refresh: string): Promise => { + const response = await axios.post(`${API_URL}/refresh/`, { refresh }); + return response.data; +}; \ No newline at end of file diff --git a/frontend/src/api/axios.ts b/frontend/src/api/axios.ts new file mode 100644 index 0000000..8ba07ac --- /dev/null +++ b/frontend/src/api/axios.ts @@ -0,0 +1,11 @@ +import axios from 'axios'; + +const instance = axios.create({ + baseURL: 'http://localhost:8000/api', + withCredentials: true, + headers: { + 'Content-Type': 'application/json', + }, +}); + +export default instance; \ No newline at end of file diff --git a/frontend/src/api/posts.ts b/frontend/src/api/posts.ts new file mode 100644 index 0000000..4a9c343 --- /dev/null +++ b/frontend/src/api/posts.ts @@ -0,0 +1,67 @@ +import axios from 'axios'; +import { s } from 'framer-motion/client'; + +const API_URL = 'http://localhost:8000/api/content'; + +export interface Post { + id: number; + title: string; + slug: string; + content: string; + author: { + id: number; + username: string; + }; + created_at: string; + updated_at: string; + status: 'draft' | 'published'; + tags: { + id: number; + name: string; + slug: string; + }[]; +} + +export const getPosts = async (): Promise => { + const response = await axios.get(`${API_URL}/posts/`, { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + }); + return response.data; +}; + +export const getPost = async (slug: string): Promise => { + const response = await axios.get(`${API_URL}/posts/${slug}/`, { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + }); + return response.data; +}; + +export const createPost = async (data: Partial): Promise => { + const response = await axios.post(`${API_URL}/posts/`, data, { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + }); + return response.data; +}; + +export const updatePost = async (slug: string, data: Partial): Promise => { + const response = await axios.patch(`${API_URL}/posts/${slug}/`, data, { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + }); + return response.data; +}; + +export const deletePost = async (slug: string): Promise => { + await axios.delete(`${API_URL}/posts/${slug}/`, { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + }); +}; \ No newline at end of file diff --git a/frontend/src/assets/react.svg b/frontend/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/frontend/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/components/Categories.tsx b/frontend/src/components/Categories.tsx new file mode 100644 index 0000000..5e2e601 --- /dev/null +++ b/frontend/src/components/Categories.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import Category from './Category'; + +const Categories: React.FC = () => { + return ( +
+
+

Kategorie

+
+ + + + + +
+
+
+ ); +}; + +export default Categories; \ No newline at end of file diff --git a/frontend/src/components/Category.tsx b/frontend/src/components/Category.tsx new file mode 100644 index 0000000..01ecf95 --- /dev/null +++ b/frontend/src/components/Category.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +interface CategoryProps { + title: string; + description: string; + image: string; +} + +const Category: React.FC = ({ title, description, image }) => { + return ( +
+ {title} +

{title}

+

{description}

+
+ ); +}; + +export default Category; \ No newline at end of file diff --git a/frontend/src/components/CategoryManager.tsx b/frontend/src/components/CategoryManager.tsx new file mode 100644 index 0000000..f501de7 --- /dev/null +++ b/frontend/src/components/CategoryManager.tsx @@ -0,0 +1,215 @@ +import React, { useState, useEffect } from 'react'; +import { Table, Button, Modal, Form, Input, message, Popconfirm, Empty } from 'antd'; +import { EditOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons'; +import axios from 'axios'; +import { useAuth } from '../context/AuthContext'; + + +interface Category { + id: number; + name: string; + slug: string; +} + +const CategoryManager: React.FC = () => { + const [categories, setCategories] = useState([]); + const [loading, setLoading] = useState(false); + const [modalVisible, setModalVisible] = useState(false); + const [editingCategory, setEditingCategory] = useState(null); + const [form] = Form.useForm(); + const { authToken } = useAuth(); + + const fetchCategories = async () => { + setLoading(true); + try { + const response = await axios.get('/api/content/categories/', { + headers: { Authorization: `Bearer ${authToken}` } + }); + setCategories(Array.isArray(response.data) ? response.data : []); + } catch (err) { + console.error('Failed to fetch categories:', err); + message.error('Failed to fetch categories'); + setCategories([]); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchCategories(); + }, [authToken]); + + const handleAdd = () => { + setEditingCategory(null); + form.resetFields(); + setModalVisible(true); + }; + + const handleEdit = (record: Category) => { + setEditingCategory(record); + form.setFieldsValue(record); + setModalVisible(true); + }; + + const handleDelete = async (id: number) => { + try { + await axios.delete(`/api/content/categories/${id}/`, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Category deleted successfully'); + fetchCategories(); + } catch (err) { + console.error('Failed to delete category:', err); + message.error('Failed to delete category'); + } + }; + + const handleModalOk = async () => { + try { + const values = await form.validateFields(); + if (editingCategory) { + await axios.patch(`/api/content/categories/${editingCategory.id}/`, values, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Category updated successfully'); + } else { + await axios.post('/api/content/categories/', values, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Category created successfully'); + } + setModalVisible(false); + fetchCategories(); + } catch (error) { + if (axios.isAxiosError(error) && error.response?.data) { + const errors = error.response.data; + if (errors.slug) { + message.error(`Slug error: ${errors.slug[0]}`); + } else if (errors.name) { + message.error(`Name error: ${errors.name[0]}`); + } else { + message.error('Failed to save category'); + } + } else { + message.error('Failed to save category'); + } + } + }; + + const handleNameChange = (e: React.ChangeEvent) => { + // Auto-generate slug from name if we're adding a new category + if (!editingCategory) { + const slug = e.target.value + .toLowerCase() + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-+|-+$/g, ''); + form.setFieldValue('slug', slug); + } + }; + + const columns = [ + { + title: 'Name', + dataIndex: 'name', + key: 'name', + }, + { + title: 'Slug', + dataIndex: 'slug', + key: 'slug', + }, + { + title: 'Actions', + key: 'actions', + render: (_: unknown, record: Category) => ( +
+
+ ), + }, + ]; + + return ( +
+
+

Categories

+ +
+ + + No categories found. Click "Add Category" to create one. + + } + /> + ) + }} + /> + + setModalVisible(false)} + > +
+ + + + + + + +
+ + ); +}; + +export default CategoryManager; \ No newline at end of file diff --git a/frontend/src/components/CommentList.tsx b/frontend/src/components/CommentList.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/Contact.tsx b/frontend/src/components/Contact.tsx new file mode 100644 index 0000000..9003966 --- /dev/null +++ b/frontend/src/components/Contact.tsx @@ -0,0 +1,113 @@ +import React from 'react'; + +const Contact: React.FC = () => { + return ( +
+
+
+

Kontakt

+

+ Skontaktuj się z nami, jeśli masz pytania lub potrzebujesz pomocy. Odpowiemy najszybciej jak to możliwe. +

+
+ +
+ {/* Contact Information */} +
+
+

Informacje kontaktowe

+
+
+
+ + + +
+
+

Email

+

kontakt[at]izaac.pl

+
+
+ +
+
+ + + + +
+
+

Lokalizacja

+

Warszawa, Polska

+
+
+ +
+
+ + + +
+
+

Godziny pracy

+

Poniedziałek - Piątek: 9:00 - 17:00

+
+
+
+
+
+ + {/* Contact Form */} +
+

Wyślij wiadomość

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
+
+
+
+ ); +}; + +export default Contact; + + diff --git a/frontend/src/components/ContentDisplay.tsx b/frontend/src/components/ContentDisplay.tsx new file mode 100644 index 0000000..99cbeb0 --- /dev/null +++ b/frontend/src/components/ContentDisplay.tsx @@ -0,0 +1,93 @@ +import React from 'react'; +import ReactMarkdown from 'react-markdown'; +import remarkMath from 'remark-math'; +import rehypeKatex from 'rehype-katex'; +import 'katex/dist/katex.min.css'; + +interface ContentDisplayProps { + content: string; +} + +const ContentDisplay: React.FC = ({ content }) => { + return ( +
+ { + const match = /language-(\w+)/.exec(className || ''); + return !inline && match ? ( +
+
+ {match[1]} +
+
+                                    
+                                        {children}
+                                    
+                                
+
+ ) : ( + + {children} + + ); + }, + // Add custom styling for blockquotes + blockquote: ({ children }) => ( +
+ {children} +
+ ), + // Add custom styling for tables + table: ({ children }) => ( +
+
+ {children} +
+
+ ), + th: ({ children }) => ( + + {children} + + ), + td: ({ children }) => ( + {children} + ), + h1: ({ children }) => ( +

{children}

+ ), + h2: ({ children }) => ( +

{children}

+ ), + h3: ({ children }) => ( +

{children}

+ ), + h4: ({ children }) => ( +

{children}

+ ), + h5: ({ children }) => ( +
{children}
+ ), + h6: ({ children }) => ( +
{children}
+ ), + p: ({ children }) => ( +

{children}

+ ), + a: ({ children, ...props }) => ( + {children} + ), + + + }} + > + {content} + + + ); +}; + +export default ContentDisplay; \ No newline at end of file diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx new file mode 100644 index 0000000..dc74747 --- /dev/null +++ b/frontend/src/components/Footer.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { FaFacebook, FaInstagram, FaYoutube, FaTiktok } from 'react-icons/fa'; + + +const Footer: React.FC = () => { + return ( +
+
+
+
+
+

O nas

+
    +
  • + O nas +
  • +
  • + Kontakt +
  • +
  • + Blog +
  • +
+
+
+

Informacje

+
    +
  • + Polityka prywatności +
  • +
  • + Regulamin +
  • +
+
+
+

Social Media

+ +
+
+
+

+ © {new Date().getFullYear()} Izaac.pl. Wszelkie prawa zastrzeżone. +

+
+
+
+ ) +} + +export default Footer; \ No newline at end of file diff --git a/frontend/src/components/Hero.tsx b/frontend/src/components/Hero.tsx new file mode 100644 index 0000000..57d81a0 --- /dev/null +++ b/frontend/src/components/Hero.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +const Hero: React.FC = () => { + return ( +
+
+

Inżynieria mechaniczna dla każdego

+

+ Izaac jest innowacyjną platformą edukacyjną dedykowaną inżynierii mechanicznej i budowie maszyn, która zapewnia dostęp do obszernego zbioru darmowych materiałów naukowych. Niezależnie od tego, czy dopiero zaczynasz swoją przygodę z takimi zagadnieniami jak inżynieria mechaniczna, czy szukasz zaawansowanej wiedzy, Izaac oferuje szeroki zakres tematów, od podstawowych koncepcji po skomplikowane obliczenia i metody projektowania. +

+ +
+
+ ); +}; + +export default Hero; \ No newline at end of file diff --git a/frontend/src/components/ImageUploader.tsx b/frontend/src/components/ImageUploader.tsx new file mode 100644 index 0000000..52d7373 --- /dev/null +++ b/frontend/src/components/ImageUploader.tsx @@ -0,0 +1,166 @@ +import React, { useState, useEffect } from 'react'; +import axios from 'axios'; +import { Button, Input, Progress, message, Upload, Modal, List, Image as AntImage } from 'antd'; +import { UploadOutlined, PictureOutlined } from '@ant-design/icons'; +import { useAuth } from '../context/AuthContext'; + +interface ImageQuota { + daily_limit: number; + used: number; + remaining: number; + daily_limit_display: string; + used_display: string; + remaining_display: string; +} + +interface UploadedImage { + id: number; + title: string; + url: string; + uploaded_at: string; + file_size_display: string; +} + +interface ImageUploaderProps { + onImageSelect: (imageUrl: string) => void; +} + +const ImageUploader: React.FC = ({ onImageSelect }) => { + const [isModalVisible, setIsModalVisible] = useState(false); + const [images, setImages] = useState([]); + const [quota, setQuota] = useState(null); + const [uploading, setUploading] = useState(false); + const { authToken } = useAuth(); + + const fetchImages = async () => { + try { + const response = await axios.get('/api/content/images/', { + headers: { Authorization: `Bearer ${authToken}` } + }); + setImages(response.data); + } catch (error) { + message.error('Failed to fetch images'); + } + }; + + const fetchQuota = async () => { + try { + const response = await axios.get('/api/content/images/quota/', { + headers: { Authorization: `Bearer ${authToken}` } + }); + setQuota(response.data); + } catch (error) { + message.error('Failed to fetch quota information'); + } + }; + + useEffect(() => { + if (isModalVisible) { + fetchImages(); + fetchQuota(); + } + }, [isModalVisible]); + + const handleUpload = async (file: File) => { + const formData = new FormData(); + formData.append('image', file); + formData.append('title', file.name); + + try { + setUploading(true); + await axios.post('/api/content/images/', formData, { + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: `Bearer ${authToken}` + } + }); + message.success('Upload successful'); + fetchImages(); + fetchQuota(); + } catch (error: any) { + if (error.response?.data?.image) { + message.error(error.response.data.image[0]); + } else { + message.error('Upload failed'); + } + } finally { + setUploading(false); + } + }; + + const handleImageSelect = (url: string) => { + onImageSelect(url); + setIsModalVisible(false); + }; + + return ( + <> + + + setIsModalVisible(false)} + footer={null} + width={800} + > +
+ { + handleUpload(file); + return false; + }} + showUploadList={false} + > + + +
+ + {quota && ( +
+

Daily Upload Quota

+ `${quota.used_display} / ${quota.daily_limit_display}`} + /> +
+ )} + + ( + +
+
+ +
+ +
+ {item.file_size_display} +
+
+
+ )} + /> +
+ + ); +}; + +export default ImageUploader; \ No newline at end of file diff --git a/frontend/src/components/Navbar.tsx b/frontend/src/components/Navbar.tsx new file mode 100644 index 0000000..c6cc742 --- /dev/null +++ b/frontend/src/components/Navbar.tsx @@ -0,0 +1,261 @@ +import React, { useState } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { useTheme } from '../context/ThemeContext'; +import { useAuth } from '../context/AuthContext'; + +const Navbar = () => { + const [isOpen, setIsOpen] = useState(false); + const { isDarkMode, toggleDarkMode } = useTheme(); + const { isAuthenticated, logout, user } = useAuth(); + const navigate = useNavigate(); + + const isAdminOrModerator = user?.role === 'admin' || user?.role === 'moderator'; + + const handleLogout = () => { + logout(); + navigate('/login'); + }; + + return ( + + ); +}; + +export default Navbar; \ No newline at end of file diff --git a/frontend/src/components/PasswordStrengthIndicator.tsx b/frontend/src/components/PasswordStrengthIndicator.tsx new file mode 100644 index 0000000..cd79491 --- /dev/null +++ b/frontend/src/components/PasswordStrengthIndicator.tsx @@ -0,0 +1,89 @@ +import React from 'react'; + +interface PasswordStrengthIndicatorProps { + password: string; +} + +const PasswordStrengthIndicator: React.FC = ({ password }) => { + const calculateStrength = (password: string): number => { + let strength = 0; + + // Length check + if (password.length >= 8) strength += 1; + if (password.length >= 12) strength += 1; + + // Character type checks + if (/[A-Z]/.test(password)) strength += 1; // Uppercase + if (/[a-z]/.test(password)) strength += 1; // Lowercase + if (/[0-9]/.test(password)) strength += 1; // Numbers + if (/[^A-Za-z0-9]/.test(password)) strength += 1; // Special characters + + return Math.min(strength, 5); // Cap at 5 + }; + + const getStrengthColor = (strength: number): string => { + switch (strength) { + case 0: + case 1: + return 'bg-red-500'; + case 2: + return 'bg-orange-500'; + case 3: + return 'bg-yellow-500'; + case 4: + return 'bg-blue-500'; + case 5: + return 'bg-green-500'; + default: + return 'bg-gray-200'; + } + }; + + const getStrengthText = (strength: number): string => { + switch (strength) { + case 0: + case 1: + return 'Very Weak'; + case 2: + return 'Weak'; + case 3: + return 'Medium'; + case 4: + return 'Strong'; + case 5: + return 'Very Strong'; + default: + return ''; + } + }; + + const strength = calculateStrength(password); + const strengthColor = getStrengthColor(strength); + const strengthText = getStrengthText(strength); + + return ( +
+
+ {[...Array(5)].map((_, index) => ( +
+ ))} +
+ {password && ( +

+ {strengthText} +

+ )} +
+ ); +}; + +export default PasswordStrengthIndicator; \ No newline at end of file diff --git a/frontend/src/components/PostForm.tsx b/frontend/src/components/PostForm.tsx new file mode 100644 index 0000000..17f5db4 --- /dev/null +++ b/frontend/src/components/PostForm.tsx @@ -0,0 +1,212 @@ +import React, { useState, useEffect } from 'react'; +import { Form, Input, Button, Select, message } from 'antd'; +import MDEditor from '@uiw/react-md-editor'; +import axios from 'axios'; +import { useAuth } from '../context/AuthContext'; +import ImageUploader from './ImageUploader'; + +interface Category { + id: number; + name: string; + slug: string; +} + +interface Tag { + id: number; + name: string; + slug: string; +} + +interface PostFormValues { + title: string; + slug: string; + content: string; + category: number; + category_id?: number; + status: string; + tag_ids?: number[]; +} + +interface PostFormProps { + initialValues?: PostFormValues & { tags?: Tag[] }; + onSubmit: (values: PostFormValues) => void; +} + +const PostForm: React.FC = ({ initialValues, onSubmit }) => { + const [form] = Form.useForm(); + const [content, setContent] = useState(initialValues?.content || ''); + const [categories, setCategories] = useState([]); + const { authToken } = useAuth(); + + const generateSlug = (title: string): string => { + return title + .toLowerCase() + .replace(/[^a-z0-9]+/g, '-') + .replace(/(^-|-$)/g, ''); + }; + + const handleTitleChange = (e: React.ChangeEvent) => { + const title = e.target.value; + const slug = generateSlug(title); + form.setFieldValue('slug', slug); + }; + + useEffect(() => { + if (initialValues?.content) { + setContent(initialValues.content); + } + }, [initialValues]); + + useEffect(() => { + const fetchCategories = async () => { + try { + const response = await axios.get('/api/content/categories/', { + headers: { Authorization: `Bearer ${authToken}` } + }); + setCategories(response.data); + } catch { + message.error('Failed to fetch categories'); + } + }; + + fetchCategories(); + }, [authToken]); + + const [tags, setTags] = useState([]); + useEffect(() => { + const fetchTags = async () => { + try { + const response = await axios.get('/api/content/tags/'); + setTags(response.data); + } catch { + message.error('Failed to fetch tags'); + } + }; + fetchTags(); + }, []); + + useEffect(() => { + if (initialValues) { + form.setFieldsValue({ + ...initialValues, + tag_ids: Array.isArray(initialValues.tags) + ? initialValues.tags.map((tag) => tag.id) + : initialValues.tag_ids || [] + }); + } + }, [initialValues, form]); + + const handleFinish = (values: Omit) => { + onSubmit({ + ...values, + content: content, + category_id: values.category, + tag_ids: values.tag_ids || [] + }); + }; + + const handleImageSelect = (imageUrl: string) => { + const imageMarkdown = `![](${imageUrl})`; + setContent((prev: string) => prev + '\n' + imageMarkdown + '\n'); + }; + + return ( +
+ + + + + + + + + + + + + + + + + +
+ +
+ setContent(value || '')} + height={400} + /> +
+ + + + + + + + +
+ ); +}; + +export default PostForm; \ No newline at end of file diff --git a/frontend/src/components/PostList.tsx b/frontend/src/components/PostList.tsx new file mode 100644 index 0000000..9342e01 --- /dev/null +++ b/frontend/src/components/PostList.tsx @@ -0,0 +1,77 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Post } from '../api/posts'; + +interface PostListProps { + posts: Post[]; + onDelete: (id: number) => void; +} + +interface Tag { + id: number; + name: string; + slug: string; +} + +const PostList: React.FC = ({ posts, onDelete }) => { + return ( +
+ {posts.map((post) => ( +
+
+
+

+ {post.title} +

+

+ By {post.author.username} • {new Date(post.created_at).toLocaleDateString()} +

+
+ + {post.status.charAt(0).toUpperCase() + post.status.slice(1)} + + {post.tags.map((tag) => ( + + {tag.name} + + ))} +
+
+
+ + View + + + Edit + + +
+
+

+ {post.content} +

+
+ ))} +
+ ); +}; + +export default PostList; \ No newline at end of file diff --git a/frontend/src/components/PrivateRoute.tsx b/frontend/src/components/PrivateRoute.tsx new file mode 100644 index 0000000..656e6e5 --- /dev/null +++ b/frontend/src/components/PrivateRoute.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Navigate } from 'react-router-dom'; +import { useAuth } from '../context/AuthContext'; + +interface PrivateRouteProps { + children: React.ReactNode; + requiredRoles?: ('admin' | 'moderator' | 'user')[]; +} + +const PrivateRoute: React.FC = ({ children, requiredRoles }) => { + const { user } = useAuth(); + + if (!user) { + return ; + } + + if (requiredRoles && !requiredRoles.includes(user.role)) { + return ; + } + + return <>{children}; +}; + +export default PrivateRoute; \ No newline at end of file diff --git a/frontend/src/components/ProtectedRoute.tsx b/frontend/src/components/ProtectedRoute.tsx new file mode 100644 index 0000000..efe857d --- /dev/null +++ b/frontend/src/components/ProtectedRoute.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { Navigate, useLocation } from 'react-router-dom'; +import { useAuth } from '../context/AuthContext'; + +interface ProtectedRouteProps { + children: React.ReactNode; +} + +const ProtectedRoute: React.FC = ({ children }) => { + const { isAuthenticated, loading } = useAuth(); + const location = useLocation(); + + if (loading) { + return ( +
+
+
+ ); + } + + if (!isAuthenticated) { + return ; + } + + return <>{children}; +}; + +export default ProtectedRoute; \ No newline at end of file diff --git a/frontend/src/components/RichTextEditor.tsx b/frontend/src/components/RichTextEditor.tsx new file mode 100644 index 0000000..99eaad7 --- /dev/null +++ b/frontend/src/components/RichTextEditor.tsx @@ -0,0 +1,72 @@ +import React, { useState } from 'react'; +import MDEditor from '@uiw/react-md-editor'; +import '@uiw/react-md-editor/markdown-editor.css'; +import '@uiw/react-markdown-preview/markdown.css'; + +interface RichTextEditorProps { + value: string; + onChange: (value: string) => void; + placeholder?: string; +} + +const RichTextEditor: React.FC = ({ + value, + onChange, + placeholder = 'Write your content here...' +}) => { + const [preview, setPreview] = useState<'live' | 'edit' | 'preview'>('live'); + + return ( +
+
+
+ + + +
+
+ onChange(val || '')} + preview={preview} + height={400} + className="w-full" + textareaProps={{ + placeholder: placeholder, + }} + /> +
+ ); +}; + +export default RichTextEditor; \ No newline at end of file diff --git a/frontend/src/components/TagManager.tsx b/frontend/src/components/TagManager.tsx new file mode 100644 index 0000000..4dd2166 --- /dev/null +++ b/frontend/src/components/TagManager.tsx @@ -0,0 +1,171 @@ +import React, { useState, useEffect } from 'react'; +import { Form, Input, Button, message, Modal, Table } from 'antd'; +import axios from 'axios'; +import { useAuth } from '../context/AuthContext'; + +interface Tag { + id: number; + name: string; + slug: string; +} + +const TagManager: React.FC = () => { + const [form] = Form.useForm(); + const [tags, setTags] = useState([]); + const [loading, setLoading] = useState(false); + const [modalVisible, setModalVisible] = useState(false); + const [editingTag, setEditingTag] = useState(null); + const { authToken } = useAuth(); + + useEffect(() => { + fetchTags(); + }, []); + + const fetchTags = async () => { + try { + setLoading(true); + const response = await axios.get('/api/content/tags/', { + headers: { Authorization: `Bearer ${authToken}` } + }); + setTags(response.data); + } catch (error) { + console.error('Error fetching tags:', error); + message.error('Failed to fetch tags. Please try again later.'); + setTags([]); + } finally { + setLoading(false); + } + }; + + const generateSlug = (name: string): string => { + return name + .toLowerCase() + .replace(/[^a-z0-9]+/g, '-') + .replace(/(^-|-$)/g, ''); + }; + + const handleAddTag = async () => { + try { + const values = await form.validateFields(); + if (!values.slug) { + values.slug = generateSlug(values.name); + } + await axios.post('/api/content/tags/', values, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Tag created successfully'); + fetchTags(); + form.resetFields(); + setModalVisible(false); + } catch (error) { + console.error('Error adding tag:', error); + message.error('Failed to add tag. Please try again later.'); + } + }; + + const handleEditTag = async (id: number) => { + try { + const response = await axios.get(`/api/content/tags/${id}/`, { + headers: { Authorization: `Bearer ${authToken}` } + }); + setEditingTag(response.data); + form.setFieldsValue(response.data); + setModalVisible(true); + } catch (error) { + console.error('Error editing tag:', error); + message.error('Failed to edit tag. Please try again later.'); + } + }; + + const handleDeleteTag = async (id: number) => { + try { + await axios.delete(`/api/content/tags/${id}/`, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Tag deleted successfully'); + fetchTags(); + } catch (error) { + console.error('Error deleting tag:', error); + message.error('Failed to delete tag. Please try again later.'); + } + }; + + const handleOk = () => { + form.submit(); + }; + + const handleCancel = () => { + setModalVisible(false); + setEditingTag(null); + form.resetFields(); + }; + + const handleNameChange = (e: React.ChangeEvent) => { + const name = e.target.value; + const slug = generateSlug(name); + form.setFieldsValue({ slug }); + }; + + const columns = [ + { + title: 'Name', + dataIndex: 'name', + key: 'name', + }, + { + title: 'Slug', + dataIndex: 'slug', + key: 'slug', + }, + { + title: 'Actions', + key: 'actions', + render: (_: unknown, record: Tag) => ( + <> + + + + ), + }, + ]; + + return ( +
+ + + +
+ + + + + + + + +
+ + ); +} + +export default TagManager; \ No newline at end of file diff --git a/frontend/src/content/categories.json b/frontend/src/content/categories.json new file mode 100644 index 0000000..1308ab5 --- /dev/null +++ b/frontend/src/content/categories.json @@ -0,0 +1 @@ +["pomoce inżynierskie", "Układy napędowe", "Przekładnie", "Połączenia gwintowe", "Połączenia czop-piasta", "Wały i osie", "Połączenia", "połączenia z wpustem pryzmatycznym", "połączenia wieloboczne", "połączenia cierne czop-cylinder", "Rysunek Techniczny", "Połączenia spawane", "połączenia cierne stożkowe", "Podstawy konstrukcji maszyn", "Wytrzymałość materiałów", "połączenia wielowypustowe", "śmieszne", "Łożyskowanie", "Inżynieria mechaniczna", "Hamulce", "Elementy podatne", "Sprzęgła"] \ No newline at end of file diff --git a/frontend/src/content/categories_index.json b/frontend/src/content/categories_index.json new file mode 100644 index 0000000..9042d87 --- /dev/null +++ b/frontend/src/content/categories_index.json @@ -0,0 +1,77 @@ +{ + "inżynieria-mechaniczna": [ + "gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje", + "przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni", + "spawanie-mig_-tig_-mag---wszystko-o-spoinach_", + "rysunek-techniczny---wszystko-co-musisz-wiedzieć", + "wytrzymałość-zmęczeniowa-wału", + "rodzaje-śrub_-nakrętek-i-podkładek", + "najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania", + "przykład-obliczeniowy-wytrzymałości-konstrukcji-jednolitej", + "połączenia-wielowypustowe", + "oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej", + "przekładnie-cierne---informacje-i-obliczenia", + "projektowanie-wałów-napędowych", + "przekładnie-z-pasem-klinowym", + "drgania-wału", + "moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych", + "wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń", + "projektowanie-sprężyn" + ], + "połączenia-gwintowe": [ + "gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje", + "rodzaje-śrub_-nakrętek-i-podkładek", + "moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych" + ], + "przekładnie": [ + "przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni", + "przekładnie-cierne---informacje-i-obliczenia", + "przekładnie-z-pasem-klinowym" + ], + "układy-napędowe": [ + "przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni", + "przekładnie-cierne---informacje-i-obliczenia", + "przekładnie-z-pasem-klinowym" + ], + "połączenia": [ + "gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje", + "spawanie-mig_-tig_-mag---wszystko-o-spoinach_", + "połączenia-wielowypustowe", + "moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych", + "wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń" + ], + "wały-i-osie": [ + "wytrzymałość-zmęczeniowa-wału", + "projektowanie-wałów-napędowych", + "drgania-wału" + ], + "elementy-podatne": [ + "sprężyna", + "projektowanie-sprężyn" + ], + "pomoce-inżynierskie": [ + "trygonometria", + "przeliczniki-jednostek-podstawowych-wielkości-fizycznych", + "zamiana-cala-angielskiego-na-milimetry", + "współczynnik-y-i-m-uszczelek-według-asme", + "zamiana-koni-mechanicznych-na-kilowaty-i-kilowatów-na-konie-mechaniczne" + ], + "rysunek-techniczny": [ + "rysunek-techniczny---wszystko-co-musisz-wiedzieć", + "oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej" + ], + "podstawy-konstrukcji-maszyn": [ + "przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni", + "przekładnie-cierne---informacje-i-obliczenia", + "przekładnie-z-pasem-klinowym" + ], + "połączenia-spawane": [ + "spawanie-mig_-tig_-mag---wszystko-o-spoinach_" + ], + "połączenia-wielowypustowe": [ + "połączenia-wielowypustowe" + ], + "łożyskowanie": [ + "najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania" + ] +} \ No newline at end of file diff --git a/frontend/src/content/charakterystyczne-cechy-i-zastosowanie-łożysk---informacje-ogólne.md b/frontend/src/content/charakterystyczne-cechy-i-zastosowanie-łożysk---informacje-ogólne.md new file mode 100644 index 0000000..3c4ffa8 --- /dev/null +++ b/frontend/src/content/charakterystyczne-cechy-i-zastosowanie-łożysk---informacje-ogólne.md @@ -0,0 +1,62 @@ +--- +title: "Charakterystyczne cechy i zastosowanie łożysk - Informacje ogólne" +date: 2022-01-22 12:36:36 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } +] +--- + +## **Charakterystyczne cechy łożysk i stosowanie** + + + + + +### + +### **Charakterystyczne wymiary dla poszczególnych łożysk tocznych** + +$$ +\int_{a}^{b} f(x) \, dx +$$ + +### **Łożyska kulkowe zwykłe** + +* małe i średnie obciążenia +* możliwość przenoszenia obciążeń poprzecznych z niewielkim udziałem obciążeń wzdłużnych +* wrażliwe na przekoszenie +* powszechność niska cena +* niskie tarcie toczne + + +### **Łożyska walcowe** + +* duża obciążalność +* możliwość przenoszenia tylko obciążeń poprzecznych +* bardzo wrażliwe na przekoszenia + + +### **Łożyska stożkowe** + +* średnia i duża obciążalność +* możliwość przenoszenia obciążeń poprzecznych i wzdłużnych +* bardzo wrażliwe na przekoszenia +* konieczność pracy w układach napiętych wstępnie + + +### **Łożyska baryłkowe** + +* średnia i duża obciążalność +* możliwosć przenoszenia obciążeń poprzecznych i wzdłużnych, ale słabiej niż łożyska stożkowe +* mają wysoką tolerancję na wahania współosiowości, niewrażliwe na przekoszenia + +#### Testowy kolejny podpunkt o czymś tam +--- +Jest \ No newline at end of file diff --git a/frontend/src/content/drgania-wału.md b/frontend/src/content/drgania-wału.md new file mode 100644 index 0000000..87d27b5 --- /dev/null +++ b/frontend/src/content/drgania-wału.md @@ -0,0 +1,176 @@ +--- +title: "Drgania wału" +date: 2022-03-04 17:40:42 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } +] +--- + +## **Drgania wału** + + + + + + +**Drgania** (oscylacje) – procesy, w trakcie których pewne wielkości fizyczne +na przemian rosną i maleją w czasie. Każdy element posiada sztywność, która +przy wychyleniu (dodaniu energii do układu) generuje siłę reakcyjną, dla +której czas reakcji osiąga pewną specyficzną wartość. Układ wychylony o pewnej +konkretnej sztywności i tłumieniu będzie oscylował wokół punktu równowagi tak +długo jak tłumienie nie zaabsorbuje całkowicie energii wydanej na wychylenie. +Częstotliwość z jaką element/układ drży pokrywa się z czasem reakcji siły +reakcyjnej dla zadanej sztywności i nazywany jest częstością drgań własnych. + +Jeśli częstość drgań własnych pokrywa się z częstością drgań wymuszonych lub +jest jego wielokrotnością to dochodzi do zjawiska zwanego **rezonansem** , +którego efektem jest wzrost amplitudy drgań. + +W przypadku wałów, jako elementów obrotowych parametrem wyjściowym będzie siła +odśrodkowa działająca na wał + +Sile tej przeciwdziała siła oporu sprężystości wału – reakcja którą możemy +obliczyć ze strzałki ugięcia – dla wału dwupodporowego o sile skupionej w +środku długości wału. + +Porównując równanie na **P c** z równaniem na **P B:** + +Gdzie: + +**ωkr** -prędkość kątowa (prędkość krytyczna), przy której ugięcie rośnie +nieskończenie + +**ωw** \- prędkość kątowa (częstość drgań własnych) dla drgań własnych. + +Prędkość obrotowa krytyczna: + +Jeśli częstość wymuszenia ω (w przypadku siły obciążającej stałej dla wału +obracającego się – to prędkość kątowa obrotów) i częstość drgań własnych **ω +w** są sobie równe to występuje zjawisko rezonansu. Co prowadzi do +niekontrolowanego wzrostu amplitudy i złamania wału. + +Do określenia ηkr wystarczy znać: + +**G** \- siłę obciążającą wału ciężarem = mg + +**fg** \- strzałkę ugięcia występującą na wale przy obciążeniu **G** + +Gdzie : + +**g** \- przyśpieszenie grawitacyjne + +Z zasady d’Alemberta : + +**Fc** \- siła sprężystości wału + +**Fo** \- siła odśrodkowa wału + +**e** -ekscentryczność środka ciężkości + +**f** \- dynamiczna strzałka ugięcia + +**wkr** – prędkość kątowa krytyczna wału + +**w** \- prędkość kątowa wału + +**c** -sztywność wału + +**m** \- masa skupiona + + + + + +**Nietłumione drgania giętne wału – rezonans** + +Trzeba uważać żeby nie przejść w rezonans ponieważ energia układu rośnie wtedy +do nieskończoności – w praktyce aż do fizycznej granicy właściwości +materiałowych. + +W praktyce w wyniku tłumienia drgań –poprzez lożyska, histerezę materiału, +opory powietrza itp. – ugięcie dynamiczne wału f nie osiąga wartości +nieskończonej. Ponadto wystęuje efekt samo centrowania się wału giętkiego. + +Zjawisko samocentrowania -przekroczenie prędkości obrotowej krytycznej dla +**ω→ ∞** to**f→ev** , wtedy – wypadkowa mimośrodowość dąży do 0. + +W przypadku układu o większej liczbie mas: + +Istnieją konkretne częstotliwości rezonansowe dla każdej z mas (każdego +układu): + +Pierwsza częstość **ω′** \- odpowiada drganiom głównym, pierwszego rzędu. + +Kolejne częstości **ω″,ω″′** częstościom wyższych rzędów. + +Najgroźniejsze są drgania pierwszego rzędu - można obliczyć **metodą _Kulla_** + +**__** + +**f Gn** \- statyczne ugięcie wału pod ciężarem **Gn** , gdy wał obciążony +każdym z ciężarów osobno. + +W przypadku prędkości ponad-krytycznych należy jedynie szybko przejść przez +prędkość rezonansową przy zwiększaniu prędkości. + +Określić można niebezpieczny zakres prędkości w okolicy prędkości obrotowej +krytyczniej. Mieści się on od **0,85η kr** do **1,25η kr** + +Sposoby unikania rezonansu: +* Konstrukcja sztywnych wałów o wysokiej częstości drgań własnych im większa sztywność, tym większa prędkość krytyczna. + +**Drgania skrętne wału** – długie wały które mają umieszczone ciężkie masy na +sobie, nie mają problemu z częstością drgań skrętnych. + +Gdzie: + +**Cs** \- sztwyność skręcania wału | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac-29-1.png) +---|--- + +**φ(ms)** \- kąt skręcenia wału w miejscu przyłożenia momentu skręcającego +**Ms** + +**I 0** \- biegunowy moment bezwładności przekroju wału + +**G** \- moduł sztywności poprzecznej Kirchoffa + +**l** \- długość wału + +Dla wałów o "n" stopniach średnicach d1, d2, ... , dn i długościach l1, l2, +... , ln poszczególnych czopów + +Schemat układu z dwoma masami, drgający skrętnie + +Kąt skręcenia całej długości **l:** + +Sztywność zastępcza: + +Długość zastępcza przy założonej jego średnicy **dz** : + +W przypadku wystąpienia sprzęgła sprzęgło można zastąpić odcinkiem wału o +długości umownej **L s** – długość sprzęgła i średnicy **d z** – średnica +zastępcza wału odpowiadająca sztywności sprzęgła + +Zastępcza długość sprzęgła: + +gdzie: + +**dz** \- dowolna średnica zastępcza + +Przyjmujemy pełny okrągły wał o średnicy zastępczej równej średnicą sąsiednich +czopó o długości **l 1z i l2z**. + +Całkowita długość wału zastępczego: + +**l z = l1z \+ l2z \+ ls** + +W takim wypadku obliczanie czętsości drgańwłasnych polega na obliczeniu +częstości drgań wału o dowolnej średnicy **dz** i długości zastępczej **lz**. + diff --git a/frontend/src/content/elementy-podatne.md b/frontend/src/content/elementy-podatne.md new file mode 100644 index 0000000..17dd378 --- /dev/null +++ b/frontend/src/content/elementy-podatne.md @@ -0,0 +1,53 @@ +--- +title: "Elementy podatne" +date: 2021-10-12 16:20:12 +--- +# [Sprężyna](https://izaac.pl/inzynieria-mechaniczna/sprezyna) + +**Czym jest sprężyna** – Element mechaniczny magazynujący energię i +przenoszący obciążenia dzięki swojej elastyczności. + +**Elementy podatne** + + * **Zadania elementów podatnych** – Amortyzowanie drgań, przenoszenie sił i kompensacja ruchów w układach mechanicznych. + +**Techniki wykonywania sprężyn** + + * **Obróbka końcowa wytwarzania sprężyn** – Procesy takie jak hartowanie, szlifowanie końcówek czy powlekanie powierzchni. + * **Materiały stosowane na sprężyny** – Stopy stali, stal sprężynowa, stopy miedzi i materiały kompozytowe. + * **Sztywność sprężyny** – Współczynnik sztywności – Parametr określający siłę potrzebną do odkształcenia sprężyny o jednostkową wartość. + +**Podział sprężyn** + + * **Podział sprężyn w zależności od kształtu sprężyny** – Sprężyny śrubowe, talerzowe, płaskie i skrętne. + * **Podział sprężyn w zależności od linii wygięcia osi pręta** – Sprężyny proste, skrętne i zwinięte spiralnie. + +**Podział prętów na sprężyny** + + * **Zależnie od sposobu obciążenia pręta** – Pręty pracujące na ściskanie, rozciąganie, skręcanie lub zginanie. + * **Podział sprężyn zależnie od ilości działających w układzie sprężyn** – Układy pojedynczych sprężyn lub z wieloma sprężynami + + + +# [Projektowanie Sprężyn](https://izaac.pl/inzynieria- +mechaniczna/projektowanie-sprezyn) + +**Projektowanie sprężyn o pręcie skręcanym** + + * **Projektowanie sprężyny o pręcie skręcanym dla obciążeń statycznych** – Optymalizacja wymiarów i kształtu dla przenoszenia stałych obciążeń. + * **Wytrzymałość sprężyny liczona za pomocą współczynnika kształtu i wymiaru przekroju** – Analiza trwałości w oparciu o geometrię i materiał. + * **Sprężyny śrubowe walcowe, naciskowe z drutu okrągłego** – obliczenia stosowane do sprężyny w celu przeniesienia obciążeń osiowych. + * **Zestawienie wzorów dla sprężyn o pręcie skręcanym** – Standardowe wzory dla analizy naprężeń i odkształceń. + +**Projektowanie sprężyn dla obciążeń dynamicznych** – zmęczeniowych + + * **Projektowanie sprężyn dla obciążeń dynamicznych** – Uwzględnienie cyklicznych obciążeń, aby uniknąć zmęczenia materiału.**** + +**Sprężyny zginane** +**** + + * **Obliczenia sprężyn o pręcie zginanym** – Analiza naprężeń powstających podczas działania sił zginających. + * **Wzory obliczeniowe dla sprężyn zginanych** – Równania pozwalające na określenie maksymalnych naprężeń i odkształceń w sprężynie. + +# **Elementy Podatne** + diff --git a/frontend/src/content/gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje.md b/frontend/src/content/gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje.md new file mode 100644 index 0000000..e914c36 --- /dev/null +++ b/frontend/src/content/gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje.md @@ -0,0 +1,585 @@ +--- +title: "Gwinty: Kompleksowy Przewodnik – Od Opisu po Tolerancje" +date: 2024-01-20 18:30:34 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } +] +--- + +### [Wprowadzenie do + +gwintów.](https://izaac.pl/?p=6833&preview=true#wprowadzenie-do-gwintow) +* Znaczenie gwintów w inżynierii. +* Wytrzymałość i bezpieczeństwo zapewniane przez gwinty. +* Minimalizacja kosztów i masy. +* Zastosowania specjalistyczne. + + +### Podstawowe informacje o gwintach. + +* Linia śrubowa. +* Opis matematyczny linii śrubowej. + + +### Wymiary gwintów i nakrętek. + +* Gwinty metryczne (ISO). +* Gwinty UNC i UNF (ANSI/AMSE). +* Gwinty withwortha (BSW i BSF). +* Nakrętki. +* Najczęściej stosowane wymiary. +* Zastosowania. + + +### Przykłady oznaczeń gwintów. + + + +### Tolerancje gwintów. + +* Kluczowe aspekty tolerancji gwintu. + + +### Znormalizowane zarysy gwintu. + + + +### Standardowe wymiary gwintów. + + + +### Gwinty i ich geometrie opisane w normach. + + + +### Praktyczne wskazówki przyzastosowaniu gwintów. + + + +## **Wprowadzenie do gwintów.** + + +Gwint (np. Gwint metryczny) to spiralny wzór na powierzchni wewnętrznej(gwint +wewnętrzny) lub zewnętrznej (gwint zewnętrzny) elementu, który jest używany +głównie w technice do łączenia części. Gwinty są powszechnie spotykane w +różnego rodzaju śrubach, nakrętkach, wkrętach i innych podobnych elementach +złącznych. Najczęściej używany jest gwint metryczny. Kluczowymi elementami +gwintu są: + + 1. **Średnica gwintu** : może być zewnętrzna (dla gwintów na wałkach) lub wewnętrzna (dla gwintów w otworach). + 2. **Skok gwintu** : odległość między sąsiednimi zwojami gwintu, która określa, jak szybko śruba lub nakrętka przemieszcza się wzdłuż osi podczas obracania. + 3. **Kąt gwintu** : kąt między zwojami gwintu a osią śruby lub nakrętki. + 4. **Profil gwintu** : kształt przekroju gwintu, który może być trójkątny, kwadratowy, trapezowy, okrągły itp., w zależności od zastosowania. + + +### **Znaczenie gwintów w inżynierii:** + + +Gwinty odgrywają główną rolę w inżynierii mechanicznej i są podstawowym +elementem złącznym dla urządzeń i systemów mechanicznych. Gwinty należą do +połączeń demontowanych. To oznacza, że możliwe jest skręcanie i rozkręcanie +elementów bez konieczności ich niszczenia. Jest to bardzo ważne ze względu na +serwisowanie i montaż maszyn. Gwinty stosowane są nie tylko jako elementy +złączne, ale stosowane są także w precyzyjnych mechanizmach regulacyjnych, +takich jak śruby mikrometryczne, obrabiarko, gdzie precyzyjne gwinty pozwalają +na dokładne ustawienia, co za tym idzie dokłade pomiary. + + +### **Wytrzymałość i bezpieczeństwo zapewniane przez gwinty:** + + +W konstrukcjach inżynierskich, gdzie bezpieczeństwo i wytrzymałość są +priorytetami, gwinty zapewniają mocne połączenia zdolne wytrzymać duże +obciążenia, wibracje i inne warunki eksploatacyjne. + +Wszechstronność zastosowań: gwinty znajdują zastosowanie niemal w każdej +gałęzi inżynierii - od mechaniki pożądanej w sektorze motoryzacyjnym, przez +precyzyjne gwinty w elektronice, aż po wielkie gwinty stosowane w +konstrukcjach budowlanych czy przemyśle ciężkim. + + +### **Możliwość zastosowania gwintów w różnych materiałach:** + + +Gwinty mogą być wykonane w różnorodnych materiałach - od stali po tworzywa +sztuczne , a nawet drewno, co pozwala na ich zastosowanie w różnych +środowiskach, od wysokich temperatur po środowiska korozyjne. + + +### **Minimalizacja kosztów i masy urządzeń za pomocą gwintów:** + + +Stosowanie gwintów umożliwia czasami konstruowanie lżejszych i mniej +kosztownych konstrukcji - zwłaszcza dla gwintów o wysokiej wytrzymałości. W +porównaniu do innych metod łączenia, takich jak spawanie czy nitowanie, +zwłaszcza na dużych powierzchniach, gwinty pozwalają na łatwiejszą modyfikację +i konserwację co za tym idzie niższy koszt eksploatacji urządzeń. + + +### **Zastosowania specjalistyczne:** + + +W niektórych zastosowaniach, jak w technice medycznej (implanty, śruby +chirurgiczne), gwinty muszą spełniać wyjątkowo wysokie standardy precyzji i +biokompatybilności. W medycynie zazwyczaj używa się gwintów tytanowych i +austenitycznych. W przypadku łączenia ścięgien do kości stosowane są gwinty ze +specjalnych materiałów Biowchłanialnych np. PLDL lub PLLA-uHA, to takie +materiały, które są wchłaniane z czasem przez organizm oraz nie powodujące +reakcji (stanu zapalnego) miedzy gwintem a kością. + + +## **Podstawowe Informacje o Gwintach** + + + + + + + +### **Linia śrubowa.** + + + + + + +Linia śrubowa jest ścieżką, która wyznacza szczyt zwoju gwintu, gdy śruba - w +tym gwint - jest rozpatrywany jako trójwymiarowy obiekt. Jest to linia, która +wyznacza bieg gwintu i podziałkę gwintu wzdłuż osi śruby. + +Jeśli spojrzymy na śrubę z boku, linia śrubowa będzie wyglądać jak ciągła +spirala lub helisa owijająca się wokół walca. Spirala określona przez linię +śrubową , będącą odzwierciedleniem zarysu gwintu pozwala na przekształcenie +ruchu obrotowego na ruch liniowy. W praktyce, kiedy nakrętka porusza się +wzdłuż gwintu śruby, śledzi właśnie tę linię śrubową. Zazwyczaj gwinty są +prawo stronne. + +Linia śrubowa jest także nazywana "helisą" - można spotkać te określenie w +krzyżówkach. + + +### **Opis matematyczny linni śrubowej gwintu** + + +**Ph** \- skok gwintu dla gwintu jednozwojnego, oznaczany też jako litera +**h** , + +**P** \- skok gwintu w przypadku gwintu dwuzwojowego + +![](https://izaac.pl/wp-content/uploads/2022/01/1n.png) + +**y** \- kąt wzniosu gwintu + +**h** \- skok gwintu + +**d, dp** \- średnica podziałowa (w śrubie) - średnica walca po którym +zawijamy linię śrubową + +Ponadto : + +Skok gwintu + +![](https://izaac.pl/wp-content/uploads/2022/03/92.png) + +Podziałka gwintu + +![](https://izaac.pl/wp-content/uploads/2022/03/93.png) + +**z** \- krotność zwojów + + +## **Wymiary gwintów i nakrętek** + + +Standardowe wymiary gwintów i nakrętek są ustalane przez międzynarodowe i +krajowe normy, które zapewniają kompatybilność i wymienność elementów +złącznych w różnych aplikacjach. Oto najczęściej stosowane gwinty według +standardów wymiarów gwintów i nakrętek. + + +### Gwint metryczny (ISO) + + +Najpowszechniej stosowane na świecie, oparte na systemie metrycznym: +* **Średnice** : typowe średnice zewnętrzne wahają się od M2 do M30 (gdzie M oznacza metryczny, a liczba to średnica w milimetrach). Większe średnice, takie jak M36, M42, itp., są również używane, ale rzadziej, w dużych konstrukcjach np. mostach. +* **Skok gwintu** : Zależy od średnicy; dla małych śrub (np. M2, M3) skok może wynosić od 0,4 mm do 0,5 mm, dla większych (np. M10, M12) - około 1,5 mm do 1,75 mm. +* + + +### Gwinty UNC i UNF (ANSI/ASME) + + +Mają zastosowanie głównie Stanach Zjednoczonych i innych krajach używających +systemu imperialnego. Często używane w zaworach i czujnikach: +* **UNC (Unified Coarse Thread)** : grubsze gwinty, często używane w konstrukcjach ogólnego zastosowania. +* **UNF (Unified Fine Thread)** : drobniejsze gwinty, zapewniające większą siłę zacisku i dokładność; używane w precyzyjnych aplikacjach. +* **Średnice** : począwszy od #0 (bardzo małe) do ponad 1 cala. Średnice wyrażane są w calach, np. ¼", ½". + + +### Gwinty Whitwortha (BSW i BSF) + + +Tradycyjne brytyjskie standardy, nadal stosowane w hydraulice, nazywane także +gwintami rurowymi lub poprostu gwintem rurowym: +* **BSW (British Standard Whitworth)** : grubszy gwint. +* **BSF (British Standard Fine)** : drobniejszy gwint. +* **Średnice** : podobnie jak w przypadku systemu imperialnego, wyrażane są w calach. + + +### Nakrętki + +* **Rozmiary nakrętek** : nakrętki dopasowane są do średnic gwintów. Na przykład nakrętka M10 pasuje do gwintu M10. +* **Wysokość nakrętki** : standardowa wysokość nakrętki często wynosi około 0,8 razy średnica gwintu. Wysokośc jest różna i zależna od typu nakrętki. Więcej o nakretkach i ich rodzajach znajdziesz na naszej stronie w poniższym **[linku](https://izaac.pl/inzynieria-mechaniczna/rodzaje-konstrukcyjne-srub/#8)** + + +### Najczęściej stosowane wymiary + + +W praktyce najczęściej stosowane są gwinty o średnicach M3, M4, M5, M6, M8, +M10, M12 w systemie metrycznym oraz ¼", ½", ¾" w systemie imperialnym. Wybór +skoku i rodzaju gwintu (gruby czy drobny) zależy od specyfiki aplikacji, +wymagań dotyczących wytrzymałości i precyzji. + + +### Zastosowania + +* **Mniejsze średnice (np. M3, M4, ¼")** : elektronika, drobna mechanika. +* **Średnie średnice (np. M6, M8, ½")** : ogólne zastosowania w budownictwie, motoryzacji. +* **Większe średnice (np. M12, M16, ¾" i większe)** : ciężka mechanika, konstrukcje budowlane, sprzęt przemysłowy. + +Rysunek przedstawiający gwint metryczny normalny. + +**P** \- podziałka + +**H** \- wysokość trójkąta + +Średnice śruby: + +**d** \- nominalna średnica zewnętrzna + +**d1** \- nominalna średnica wewnętrzna + +**d2** \- nominalna średnica podziałowa + +**d3** \- średnica rdzenia śruby + +Średnice nakrętki: + +**D** \- nominalna średnica zewnętrzna + +**D1** \- nominalna średnica wewnętrzna + +**D2** \- nominalna średnica podziałowa + +**Przykłady oznaczeń gwintów:** + + + +**Nazwa gwintu** | **Parametry w oznaczeniu** | **Przykłady** +---|---|--- +Gwint Metryczny | Średnica zewnętrzna | M6 +Metryczny drobnozwojny | Średnica zewnętrzna x skok | M80x3 +Calowy (Whitwortha) | Średnica zewnętrzna | 3/4" +Calowy drobnozwojny | Średnica zewnętrzna x skok | W80x1/6" +Rurowy (zewnętrzny) | Średnica przelotu | R3" +Rurowy (wewnętrzny) | Średnica przelotu | G1/2" +Trapezowy symetryczny | Średnica zewnętrzna x skok | Tr24x5 +Trapezowy niesymetryczny | Średnica zewnętrzna x skok | S22x6 +Trapezowy niesymetryczny 45° | Średnica zewnętrzna x skok | S45°48x8 +Okrągły | Średnica zewnętrzna x skok | Rd32x1/2" +Stożkowy calowy (Briggsa) | Średnica zewnętrzna | StB1" +Stożkowy metryczny | Średnica zewnętrzna x skok | StM6x1 +Edisona | Średnica zewnętrzna | E27 +Edisona metryczna | Średnica zewnętrzna | Em16 +Do rurek pancernych | Liczba skoków gwintu na 1 cal | P16 +Do połączeń klosza z korpusem oprawy oświetleniowej | Średnica zewnętrzna | A84,5 +Rowerowy | Średnica zewnętrzna | Rw9,5 +Do zaworów do dętek | Średnica zewnętrzna | Gz10,3 + + +## **Tolerancje gwintów metrycznych.** + + + + + + +**Tolerancja gwintu** to dopuszczalne odchylenia od nominalnych wymiarów +gwintu, które są akceptowalne w procesie produkcji. Jest to zakres, w którym +rzeczywiste wymiary gwintu mogą się mieścić od idealnych wymiarów określonych +w projekcie, przy czym nadal uznaje się je za funkcjonalne i zgodne ze +standardami. + +W praktyce, ze względu na ograniczenia technologiczne i warunki produkcyjne, +niemożliwe jest wykonanie gwintu o absolutnie idealnych wymiarach. Tolerancja +uwzględnia te różnice, pozwalając na pewien zakres odchyleń, które nie wpłyną +negatywnie na działanie lub zastosowanie gwintu. + + +### **Kluczowe aspekty tolerancji gwintu to:** + + +**Wymiary Gwintu:** tolerancje dotyczą różnych wymiarów gwintu, takich jak +średnica, skok, kąt zwoju czy głębokość gwintu. + +**Pasowanie gwintu:** tolerancje są istotne dla zapewnienia odpowiedniego +pasowania pomiędzy gwintami męskimi (np. śruby) i żeńskimi (np. nakrętki). +Zbyt mała tolerancja może prowadzić do zbyt ciasnego pasowania, a zbyt duża - +do zbyt luźnego. + +**Jakość i funkcjonalność:** dzięki tolerancjom producenci mogą zapewnić, że +nawet jeśli gwinty nie są idealne, nadal będą dobrze funkcjonować w swoim +przeznaczeniu, np. w tworzeniu mocnych i stabilnych połączeń śrubowych. + +**Normy i standardy:** tolerancje gwintu są często określone przez normy +międzynarodowe lub krajowe (takie jak ISO, ANSI), które ustalają dopuszczalne +granice dla różnych typów gwintów. + + +### Przykłady tolerancji wykonania gwintów zewnętrznych dla gwintów + +metrycznych. + +Oznaczają one granice w których może zostać wyokonany dany gwint metryczny + +Klasa gwintów | **Gwinty zewnętrzne** +---|--- +S | N | L +Dokładna | | 3h4h | | | | 4g | 4h | | | 5h4h +Średnio dokładna | 5g6g | 5h6h | 6d | 6e | 6f | 6g | 6h | 7e6e | 7g6g | 7h6h +Zgrubna | | | | | | 8g | 8h | | 9g8g | + + +### Przykłady tolerancji wykonania gwintów wewnętrznych dla gwintów + +metrycznych. + +Oznaczają one granice w których może zostać wyokonany dany gwint metryczny. + +Klasa gwintów | **Gwinty wewnętrzne** +---|--- +S | N | L +Dokładna | | 4H | | 4H5H/5H | | 6H +Średnio dokładna | 5G | 5H | 6G | 6H | 7G | 7H +Zgrubna | | | 7G | 7H | 8G | 8H + +Dla śrub ogólnego przeznaczenia tolerancji średnicy rdzenia **d 1** nie +określa się. + +Dla śrub obciążonych zmęczeniowo - pola tolerancji średnicy rdzenia **d 3.** + + + + + + + +Położenie pól tolerancji średnicy gwintu **d** i średnicy otworu **D 1**. + +Położenie pól tolerancji średnicy podziałowych śruby **d 2** i nakrętki **D +2**. + + +## **Znormalizowane zarysy gwintu** + + +Gwint trójkątny + +![](https://izaac.pl/wp-content/uploads/2022/03/94-300x107.png) + +Gwint prostokątny + +![](https://izaac.pl/wp-content/uploads/2022/03/95-300x107.png) + +Gwint trapezowy - symetryczny + +![](https://izaac.pl/wp-content/uploads/2022/03/96-300x120.png) + +Gwint trapezowy - niesymetryczny + +![](https://izaac.pl/wp-content/uploads/2022/03/98-300x118.png) + +Gwint okrągły + +![](https://izaac.pl/wp-content/uploads/2022/03/97-300x120.png) + +**α** \- kąt zarysu gwintu + +**h** \- podziałka gwintu + +**H** \- wysokość zarysu podstawy + +**H'** \- wysokość zarysu odniesienia - od wierzchołka do dna gwintu + +**p** \- podziałka gwintu dla jednego zwoju + + +## **Standardowe wymiary gwintu metrycznego** + + + + + + +Poniżej przedstawiono podstawowe wymiary gwintów metrycznych. Tabela może się +przydać w pomiarach, kontroli gwintu lub do obliczeń wytrzymałościowych +gwintu. Głównym parametrem obliczeniowym jest rdzeń gwintu. + +Nominalna średnica gwintu [mm] | Skok gwintu [mm] | | | Wymiar Klucza [mm] +---|---|---|---|--- +| zwykły [mm] | wersje drobnozwojne [mm] | Średnica rdzenia gwintu [mm] | +0,25 | 0,075 | - | 0,158 | - +0,5 | 0,125 | - | 0,347 | - +0,9 | 0,225 | - | 0,624 | - +1 | 0,25 | 0,2 | 0,693 | - +1,2 | 0,25 | 0,2 | 0,955 | - +1,4 | 0,3 | 0,2 | 1,155 | - +1,6 | 35 | 0,2 | 1,171 | 3,2 +1,8 | 0,35 | 0,2 | 1,371 | - +2 | 0,4 | 0,25 | 1,509 | 4 +2,5 | 0,45 | 0,35 | 2,071 | 5 +3 | 0,5 | 0,35 | 2,387 | 5,5 +3,5 | 0,6 | 0,35 | 2,764 | 6 +4 | 0,7 | 0,5 | 3,141 | 7 +5 | 0,8 | 0,5 | 4,019 | 8 +6 | 1 | 0,75 / 0,5 | 4,773 | 10 +7 | 1 | 0,75 / 0,5 | 5,773 | 11 +8 | 1,25 | 1 / 0,75 / 0,5 | 6,466 | 13 +9 | 1,25 | 1 / 0,75 / 0,5 | 7,466 | - +10 | 1,5 | 1,25 / 1 / 0,75 | 8,16 | 17 +12 | 1,75 | 1,5 / 1,25 / 1 | 9,853 | 19 +14 | 2 | 1,5 / 1,25 / 1 | 11,546 | 21 +16 | 2 | 1,5 / 1 | 13,546 | 24 +18 | 2,5 | 2 / 1,5 / 1 | 14,933 | 27 +20 | 2,5 | 2 / 1,5 / 1 | 16,933 | 30 +22 | 2,5 | 2 / 1,5 / 1 | 18,933 | 34 +24 | 3 | 2 / 1,5 / 1 | 20,319 | 36 +27 | 3 | 2 / 1,5 / 1 | 23,319 | 41 +30 | 3,5 | 2 / 1,5 / 1 | 25,706 | 46 +33 | 3,5 | 2 / 1,5/ 1 | - | 50 +36 | 4 | 3 / 2 / 1,5 | - | 55 +39 | 4 | 3 / 2 / 1,5 | - | 60 +42 | 4,5 | 3 / 2 / 1,5 | - | 65 +45 | 4,5 | 3 / 1,5 | - | 70 +48 | 5 | 3 / 2 / 1,5 | - | 75 +52 | 5 | 3 / 2 / 1,5 | - | 80 +56 | 5,5 | 4 / 3 / 2 / 1,5 | - | 85 +60 | 5,5 | 4 / 3 / 2 / 1,5 | - | 90 + + +### **Gwinty i ich geometrie opisane są w poniższych normach:** + + +Poniżej znajdziesz normy/standardy opisujące geometrie gwintów metrycznych i +calowych + + + +**ISO (Międzynarodowa Organizacja Normalizacyjna):** +**ISO 68-1:** Gwinty metryczne ogólnego zastosowania - Wybrane wymiary gwintu. +**ISO 261:** Gwinty metryczne ogólnego zastosowania - Średnice nominalne i +skoki gwintu. +**ISO 262:** Gwinty metryczne ogólnego zastosowania - Wybrane serie średnic i +skoków. +**ISO 724:** Gwinty metryczne ogólnego zastosowania - Wymiary nominalne. + +**ANSI/ASME (Amerykański Instytut Normalizacji/Amerykańskie Towarzystwo +Inżynierów Mechaników):** +**ANSI/ASME B1.1:** Gwinty jednocalowe (UNC, UNF, UNEF i inne). +**ANSI/ASME B1.13M:** Gwinty metryczne drobnozwojowe. + +**DIN (Niemiecki Instytut Normalizacji):** +**DIN 13:** Gwinty metryczne ISO. +**DIN 8140:** Gwinty naprawcze. + +**Regionalne i Specjalistyczne Normy: +BS (British Standards):** +**BS 84:** Gwinty brytyjskie. +**BS 3643:** Gwinty metryczne ISO i tolerancje. + +**JIS (Japanese Industrial Standards):** +**JIS B 0205-1/2:** Gwinty metryczne i tolerancje w Japonii. + +**SAE (Society of Automotive Engineers):** +**SAE J476:** Gwinty rurowe stosowane w przemyśle motoryzacyjnym. + +**Normy Specyficzne dla Branż:** +Aerospace standards (np. **NAS, MS**): Stosowane w przemyśle lotniczym i +kosmicznym. + +**SAE AS71051:** Ta norma określa wymagania dotyczące gwintów ANPT, w tym +wymiary i tolerancje. Jest to kluczowa norma dla gwintów ANPT stosowanych w +przemyśle lotniczym. + + +### **Praktyczne Wskazówki:** + + +**Analiza wymagań:** zanim dobierzemy gwint musimy sprecyzować jego wymagania. +Jakie będzie przenosić **[obciążenia](https://izaac.pl/inzynieriamechaniczna/obciazenia)** , jaki będzie ich charakter - czy będą to obciążenia +dynamiczne czy statyczne, oraz jaki będzie miało to wpływ na konstrukcję. +Należy przewidzieć miejsca łączeń konstrukcji w taki sposób, aby śruby były +jak najmniej obciążone, jednocześnie zapewniając stabilne połaczenie. W +przypadku dużych obciążeń występujących na gwincie należy wziąć pod uwagę skok +gwintu. Dla gwintów drobnozwojowych, rdzeń jest grubszy co przekłada się na +większą wytrzymałość rdzenia gwintu/śruby. Należy zwrócić uwagę na warunki +specjalne, takie jak wysoka lub niska temperatura a także różnice tych +temperatur w okresie pracy gwintu. **[Kompatybilność +materiałowa](https://izaac.pl/inzynieria-mechaniczna/technologia-srubwszystko-o-projektowaniu-polaczen-srobowych)** jest także istotnym czynnikiem +w przypadku doboru gwintu. + +**Dobór materiału:** wybierz gwint zgodnie z właściwościami materiału +elementu, w którym będzie on umieszczony. Różne metale i ich stopy mają +odmienne cechy, takie jak wytrzymałość na rozciąganie, odporność na ścieranie, +czy reakcje na zmiany temperatury. Nie zaleca się łączenia mocno obciążonych +gwintów z miękkimi materiałami - np aluminium. W celu zabezpieczania takich +połączeń można zastosować np. specjalne wkręcane wkładki Helicoil. + +**Specyfikacja gwintu:** bardzo ważne jest zdefiniowane czy określone +wcześniej wymagania dopasują się do gwintów o standardowych wymiarach czy +potrzebne jest zastosowanie gwintu specjalistycznego. Jaki rodzaj gwintu +będzie odpowiedni: metryczny, calowy, drobny lub zwykły. Czy gwint będzie +przenosić obciążenia, czy służyć zmianie kierunku ruchu. W przypadku zmiany +kierunku ruchu najlepsze są gwinty trapezowe. Na rynku można spotkać specjalne +śruby trapezowe. Śruba trapezowa służące do przenoszenia ruchu i wywierania +obciążenia na inne elementy. + +**Przestrzeganie norm:** wybór gwintu zgodnego z międzynarodowymi standardami +(takimi jak ISO czy ANSI) zapewnia kompatybilność i łatwość wymiany elementów. +Dla standardowych gwintów średnio obciążonych zaleca się użycie tolerancji +6H/6h + +**Dostępność narzędzi i sprzętu:** sprawdź, czy dysponujesz odpowiednim +sprzętem do wykonania i kontroli wybranego gwintu, np. specjalnymi +gwintownikami czy kluczami. + +**Przestrzeganie czystości:** po wykonaniu gwintu należy pamiętać aby dobrze +go wyczyścić i odtłuścić. Często po obróbce występują drobinki metalu między +zwojami gwintu. Należy je przeczyścić dokładnie sprężonym powietrzem i +odtłuścić (specjalnymi płynami lub alkoholem ;) ). Drobinki mogą zarysować +powierzchnię zwoju gwintu, uplastycznić ją i wpłynąć na wytrzymałość. +Szczególnie wazne w przypadku obciążeń zmiennych. Odtłsuzczenie ma wpływ na +moment dokręcenia, gdyż zmienia się **[współczynnik +tarcia](https://izaac.pl/inzynieria-mechaniczna/obliczanie-srub-krok-pokroku/#1)** na gwincie. + +Źródła: + +1\. J.Dietrych, Podstawy Konstrukcji Maszyn I, Wydawnictwo Naukowo Techniczne +- Warszawa + +2\. Mały poradnik mechanika, Nauki matematyczno- fizyczne i ogólnotechniczne, +Wydawnictwo Naukowo Techniczne - Warszawa, 1969 + +3\. Witold Korewa, Części maszyn, część I, Państwowe wydawnictwo naukowe 1969 + diff --git a/frontend/src/content/hamulce---informacje-ogólne-i-podstawowe-obliczenia.md b/frontend/src/content/hamulce---informacje-ogólne-i-podstawowe-obliczenia.md new file mode 100644 index 0000000..e77ef2f --- /dev/null +++ b/frontend/src/content/hamulce---informacje-ogólne-i-podstawowe-obliczenia.md @@ -0,0 +1,568 @@ +--- +title: "Hamulce - informacje ogólne i podstawowe obliczenia" +date: 2025-01-29 19:07:48 +categories: [ + { + "category_id": "hamulce", + "category_name": "Hamulce" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Klasyfikacja i charakterystyka hamulców + +* #### Podział hamulców + + +### Hamulce tarczowe + +* #### Budowa i działanie hamulców tarczowych +* #### Rodzaje hamulców tarczowych + + +### Hamulce szczękowe wewnętrzne + + + +### Hamulce klockowe + +* #### Schemat obliczeniowy hamulców klockowych +* #### Określenie wymaganej siły do zahamowania bębna +* #### Wyznaczanie wymiarów klocka hamulca klockowego z warunku na naciski powierzchniowe +* #### Analiza termiczna hamulca klockowego + + +### Hamulce cięgnowe + +* #### Hamulec cięgnowy zwykły +* #### Kąt opasania α +* #### Hamulec cięgnowy różnicowy + + +## Klasyfikacja i charakterystyka hamulców. + + +Hamulce – to urządzenia mające na celu zatrzymywanie, zwalnianie lub regulację +ruchu maszyn i innych mechanizmów. Zadaniem hamulców jest przekształcanie +energii kinetycznej poruszających się elementów na inny rodzaj energii. +Najczęściej spotykane są hamulce cierne wykorzystujące tarcie zamieniając +energię kinetyczną na ciepło, co pozwala na kontrolowanie prędkości oraz +zatrzymywanie ruchu. Dzięki temu możliwa jest również regulacja działania +maszyn, zwiększenie bezpieczeństwa użytkowników (np. w samochodach) oraz +ograniczenie zużycia innych elementów układu napędowego. + + +### Hamulce można podzielić na wiele różnych typów, zależnie od ich + +konstrukcji i sposobu działania. + +**Cierne mechaniczne** \- wykorzystują tarcie do zatrzymania ruchu. + +**Hydrauliczne** \- siła hamowania jest generowana dzięki ciśnieniu płynu +hydraulicznego. + +**Pneumatyczne** , gdzie za działanie hamulca odpowiada sprężone powietrze. + +**Elektromagnetyczne** \- wykorzystują siły generowane przez pole magnetyczne +i elektryczne, które zatrzymują ruchome elementy. Na przykład składowa +magnetyczna siły Lorentza – siła elektrodynamiczna + +Podział ze względu na charakter pracy: + +**Luzowe** – działają, gdy mechanizm jest zwolniony (luźny), umożliwiając +płynne zatrzymywanie ruchu. + +**Zaciskowe** – wymagają siły zewnętrznej do wytworzenia tarcia. Stosowane tam +gdzie wymagane jest zatrzymanie elementów precyzyjnie i szybko. + + +### Podział hamulców ciernych mechanicznych: + + +**Hamulce tarczowe** – obejmują dwie główne kategorie: + +**Stożkowe** , charakteryzujące się powierzchnią cierną o geometrii stożka. + +**Wielopłytkowe** – hamulce wielopłytkowe składają się z kilku tarcz +zwiększających powierzchnię tarcia i tym samym efektywność hamowania. Im +więcej powierzchni trących tym szybciej oddawana energia. + +**Hamulce klockowe (szczękowe)** – posiadają klocki lub inaczej szczęki +dociskane do powierzchni ciernej, np. tarczy lub bębna. + +**Hamulce cięgnowe (taśmowe)** –W tych hamulcach otacza element ruchomy (np. +bęben), a dociskanie taśmy powoduje hamowanie. + +Hamulce: a) stożkowy, b) wielopłytkowy, c) jednoklockowy, d) cięgnowy + + +## Hamulce tarczowe + + +**Hamulce tarczowe** , to szeroko stosowane w samochodach osobowych i +ciężarowych, charakteryzują się prostą konstrukcją i wysoką skutecznością +działania. Głównymi elementami tych hamulców są płytki hamulcowe w postaci +nakładek pokrytych okładzinami ciernymi, przylegającymi do powierzchni tarczy +hamulcowej wykonanej najczęściej z żeliwa lub stali. Tarcze te mogą być pełne +lub wentylowane, a w pojazdach o większej masie i prędkości stosuje się tarcze +nacinane lub perforowane, aby poprawić ich chłodzenie i efektywność. + +![](https://izaac.pl/wp-content/uploads/2022/04/12.png) + +Hamulec tarczowy samochodowy 1 – strzemie, 2 – tacza hamulcowa, 3 – nakładka +cierna, 4 – tłoczek siłownika hydraulicznego, 5 – pokrywa, 6 – pierścień +sprężynujący. + + +### Budowa i działanie hamulców tarczowych + + +**Płytki hamulcowe** \- Są to elementy dociskane do tarczy hamulcowej podczas +hamowania. Okładziny cierne pokrywające płytki, odpowiadają za generowanie i +wytrzymywanie siły tarcia, która zatrzymuje ruch koła. + +**Tarcza hamulcowa** \- Zamocowana na piaście obracającego się koła. Podczas +hamowania tarcza jest dociskana przez płytki hamulcowe, co powoduje +spowolnienie jej obrotów. + +**Siłownik hydrauliczny** \- Umożliwia zaciskanie płytek hamulcowych na +tarczy. Jest uruchamiany przez kierowcę, który naciska pedał hamulca. Siła +nacisku jest zwiększana dzięki układowi wspomagania, wykorzystującemu +podciśnienie w rurze ssącej silnika. + +**Układ wspomagania** \- W samochodach osobowych stosuje się wspomaganie +hydrauliczne lub elektrohydrauliczne, które zmniejsza wysiłek kierowcy podczas +hamowania, zapewniając większą siłę docisku. + + +### Rodzaje hamulców tarczowych + + +**Pełne tarcze hamulcowe -** Wykonane jako jednolita tarcza. Charakteryzują +się prostą konstrukcją, ale mniejszą odpornością na przegrzewanie. + +**Wentylowane tarcze hamulcowe** \- Mają wewnętrzne kanały wentylacyjne +umożliwiające lepsze odprowadzanie ciepła. Są bardziej odporne na zjawisko +fadingu (spadku efektywności hamowania przy przegrzaniu). + +**Tarcze perforowane i nacinane** \- Wyposażone w otwory lub rowki, które +poprawiają chłodzenie i usuwają zanieczyszczenia oraz gazy powstające podczas +tarcia. + +**Hamulce ceramiczne** \- Stosowane w samochodach sportowych i luksusowych. +Wykonane z materiałów kompozytowych, oferują doskonałą odporność na wysokie +temperatury oraz bardzo wysoką trwałość. + + +## Hamulce szczękowe wewnętrzne + + +**Hamulce zaciskowe** , znane również jako hamulce szczękowe, to typ hamulców, +w których szczęki umieszczone są wewnątrz bębna hamulcowego. W stanie +spoczynku, dzięki zastosowanym sprężynom, szczęki pozostają odsunięte od +powierzchni bębna, co minimalizuje tarcie i zużycie elementów. Podczas +hamowania siły aktywujące, działające na końce szczęk, powodują ich dociskanie +do wewnętrznej powierzchni bębna, co generuje tarcie niezbędne do zatrzymania +lub spowolnienia ruchu obrotowego. + +Sprężyny powrotne odpowiadają za odsunięcie szczęk od bębna po zwolnieniu +hamulca. + +**Zasada działania** +W momencie aktywacji hamulca (np. przez naciśnięcie pedału hamulca), układ +włączający generuje siłę docisku na szczęki. +Konstrukcja układu pozwala na różne konfiguracje rozkładu sił między +szczękami: + +Przy jednakowych siłach włączających (W1 i W2), wartości sił normalnych (Fn1 i +Fn2), które szczęki wywierają na bęben, mogą być różne lub równe, w zależności +od geometrii układu i sił tarcia. + +Gdy szczęki dociśnięte są do bębna, tarcie między okładziną szczękową a bębnem +powoduje zatrzymanie lub spowolnienie ruchu bębna. + +Rys.4.7 Schematy hamulców szczękowych wewnętrznych + +Rys.4.8 Hamulec stożkowy, stosowany w obrabiarkach: 1 – część nieruchoma +hamulca z okładziną cierną, + +2 – część ruchoma hamulca, 3 – korpus obrabiarki, 4 – przełącznik, 5 – +sprzęgło cierne wielopłytkowe + + +## Hamulce klockowe + + +**Hamulce klockowe** to rodzaj hamulców ciernych, w których za generowanie +siły hamowania odpowiadają jeden lub dwa klocki dociskane do powierzchni bębna +hamulcowego. Wyróżniamy dwa główne rodzaje hamulców klockowych. +* **Hamulce jednoklockowe** \- Wyposażone w jeden klocek, który dociskany jest do bębna hamulcowego. Są prostsze w konstrukcji, ale mogą oferować mniejszą efektywność hamowania. +* Zalecane gry średnica wału wynosi do **50 mm** i narażony jest na działanie niewielkich momentów obrotowych **Mo**. + +**Hamulce dwuklockowe** – +* **Hamulce dwuklockowe** \- Posiadają dwa klocki, które działają symetrycznie lub asymetrycznie na powierzchnię bębna. Zapewniają lepsze rozłożenie siły hamowania i większą skuteczność. +* Zalecane gdy siły nacisku **Fn** równoważą się. W takim przypadku umożliwiają hamowanie przy mniejszych **siłach nacisku (z uwagi na większe pole powierzchni hamowania)**. + + +### Zasada działania hamulców klockowych + + +Podczas hamowania klocki cierne są dociskane do powierzchni bębna hamulcowego, +co generuje siłę tarcia. Ta siła działa w kierunku przeciwnym do ruchu +obrotowego bębna, wytwarzając moment tarcia +Aby skutecznie zatrzymać bęben, moment tarcia musi być na tyle duży, aby +pokonać: +* Moment obrotowy bębna wynikający z działania zewnętrznych sił napędowych. +* Moment bezwładności układu, który jest związany z masą obracających się elementów i ich prędkością kątową. + +Wartość Momentu Tarcia **MT** możemy założyć : + +**MT= (1,75÷2,5)M** + + + +**Wartość siły nacisku klocka na bęben wynosi: ** + +![](https://izaac.pl/wp-content/uploads/2022/04/w1.png) + +Siłę **Fn** będziemy traktować jako siłę skupioną zastępującą obciążenie +ciągłe wynikające z nacisku klocka na bęben. + +gdzie: +**M**T – moment tarcia generowany przez hamulec. +**T** – siła tarcia miedzy bębnem a klockiem. +**D** – średnica bębna. +**F**n – siła nacisku klocka na bęben. +**μ** – współczynnik tarcia między powierzchnią klocka a bębnem. + + + +Przykład hamulca dwuklockowego + +Przykład hamulców jednoklockowych + + +### Schemat obliczeniowy hamulców klockowych + + +**Obliczenia hamulców jednoklockowychobejmują kolejno 3 etapy** + + 1. **Określenie wymaganej siły F** do zahamowania bębna. + 2. **Wyznaczenie wymiarów klocka** na podstawie dopuszczalnych nacisków powierzchniowych. + 3. **Analizę termiczną hamulca** , aby upewnić się, że system wytrzymuje generowane ciepło. + + +### Określenie wymaganej siły F do zahamowania bębna + + +W przedstawionym układzie hamulca dźwignia hamulcowa jest zamocowana +przegubowo w punkcie 0, co pozwala jej obracać się wokół tego punktu. +Konstrukcja dźwigni umożliwia przeniesienie siły zewnętrznej, którą należy +przyłożyć na klocek cierny, dociskając go do bębna hamulcowego. Koła napędowe +zazwyczaj są **[zamontowane na wale lub osi](https://izaac.pl/inzynieriamechaniczna/projektowanie-walow), **osadzone [**na +łożyskach**](https://izaac.pl/inzynieria-mechaniczna/najwazniejsze-informacjeo-lozyskach-rodzaje-i-zastosowania) w celu zmniejszenia tarcia w wyniku +obrotu. + +**e** \- odległość prostopadła od punktu **0** do punktu działania siły **Fn** + +![](https://izaac.pl/wp-content/uploads/2022/04/4.png) + +Dźwignia jest sztywno połączona z klockiem hamulcowym, co pozwala na +przekazywanie siły nacisku na klocek, który generuje siłę tarcia. + +Siła przyłożona na dźwignię przez operatora lub układ sterujący powoduje obrót +dźwigni i docisk klocka do bębna. **Siła tarcia powstaje między klockiem a +powierzchnią bębna** i jest odpowiedzialna za wytworzenie momentu tarcia, +który przeciwdziała obrotowi bębna. Jest proporcjonalna do siły nacisku klocka +na bęben i współczynnika tarcia. + +Moment tarcia generowany na bębnie zależy od siły tarcia oraz średnicy bębna. + +Możemy wyznaczyć wartość siły **F** z warunku równowagi sił: + +**F ⋅ l – Fn⋅ a + T ⋅ e = 0** + +Podstawiając do wzoru siłę tarcia **T = Fn⋅ μ** otrzymamy: + +**F ⋅ l – Fn( a – e ⋅ μ) = 0** + +Wprowadzając do wzoru wartość siły nacisku **Fn** otrzymujemy: + +![](https://izaac.pl/wp-content/uploads/2022/04/w2-1-300x122.png) + +Zakładając przeciwny kierunek ruchu obrotowego bębna niż na rysunku siłę F +możemy wyznaczyć w podobny sposób jak wyżej + +![](https://izaac.pl/wp-content/uploads/2022/04/w3-2-300x45.png) + +Jak widzimy **(** człon **(_a+**e⋅μ)**_**) potrzebujemy większej siły aby +zatrzymać koło obracające się w drugą stronę. Oznacza to że wymagany jest +większy docisk przy zmianie kierunku ruchu obrotowego. + +Jeżeli kierunek ruchu obrotowego bębna ma być zmienny, można stosować +konstrukcję jak na rysunku poniżej + +Wygięcie dźwigni w taki sposób, aby punkt obrotu **0** znajdował się na linii +działania siły tarcia **T** , sprawia, że ramię tej siły wynosi **e=0**. W +efekcie moment siły tarcia względem punktu obrotu, wyrażony jako**e⋅T** , +również jest równy zero. + +Oznacza to, że siła tarcia T nie generuje momentu, który wpływałby na +równowagę dźwigni. Dzięki temu siła tarcia nie zakłóca działania mechanizmu, +a**dźwignia działa jednakowo w jedną i w drugą stronę** . Jest to korzystne +rozwiązanie konstrukcyjne, które upraszcza obliczenia oraz zmniejsza +obciążenia w punkcie obrotu. + +Wartość siły **F** koniecznej do zahamowania bębna wynosi + +![](https://izaac.pl/wp-content/uploads/2022/04/w4-300x58.png) + + +### Wyznaczanie wymiarów klocka hamulca klockowego z warunku na naciski + +powierzchniowe + +Wzór opisujący zależność między siłą nacisku **Fn** a wymiarami klocka **t** i +**b** oraz dopuszczalnym naciskiem **ko**. + +Rzeczywisty nacisk powierzchniowy **p** nie może przekraczać dopuszczalnej +wartości **ko**. Przekroczenie tej wartości mogłoby prowadzić do uszkodzenia +klocka lub jego przyspieszonego zużycia. Na podstawie wzoru można ustalić +odpowiednią grubość **t** i szerokość **b** + +![](https://izaac.pl/wp-content/uploads/2022/04/w5.png) + +gdzie: + +**t** – długość klocka (mierzona po cięciwie łuku); + +**b** – szerokość klocka; + +**ko–** naciski dopuszczalne. + +Zalecenia wyboru rozmiarów szerokości tarczy i grubości klocka **D-b -** +**(160 – 50, 200 – 55, 250 – 80, 320 – 100, 400 – 125,500 – 160, 630 – +200, 710 – 220, 800 – 250)**. + +Szerokość bębna przyjmujemy o 10 mm większą od szerokości klocka b, natomiast +**długość klocka dobieramy tak aby wynosiła** : + +**t = (0,52 ÷ 0,78)D** + +co odpowiada kątowi pokrycia **ϕ od 60° do 90°**. + + +### Analiza termiczna hamulca klockowego + + +Podczas pracy hamulca generowane jest ciepło. Ilość ciepła określa wzór: + +**Q = M_T⋅ω⋅t** + +gdzie: + +**Q** \- ilość ciepła generowanego w układzie hamulcowym [J] + +**M_T** \- moment tarcia, generowany przez układ hamulcowy + +**ω** \- prędkość kątowa elementu hamowanego (rad/s) + +**t** \- czas trwania hamowania + +**Należy upewnić się, że układ hamulcowy jest w stanie odprowadzić +wygenerowane ciepło, np. dzięki odpowiedniej wentylacji czy materiałom.** + + +## Hamulce Cięgnowe + + +**Hamulce cięgnowe** \- Typ hamulca, którego elementem przejmującym moment +jest **cienka taśma stalowa (zazwyczaj zbudowana z większej ilości +materiałów)** , zwana cięgnem, wyłożona materiałem ciernym. Materiał cierny +zwiększa efektywność hamowania, szczególnie w przypadku wyższych momentów +hamowania (M_H). W sytuacjach, gdzie moment hamowania jest niewielki, taśma +stalowa może być stosowana bez dodatkowej okładziny ciernej. + +**Wady hamulców cięgnowych** \- zginanie wału pod wpływem siły naciągu cięgna, +co może prowadzić do dodatkowych obciążeń mechanicznych i przyspieszonego +zużycia układu. Mimo to są one często stosowane tam, gdzie wymagane jest +efektywne hamowanie przy prostocie konstrukcji. + +**Zalety hamulców cięgnowych** \- Wyróżniają się prostą konstrukcją i zwartą +budową, tym samym łatwością w montażu i eksploatacji. Charakteryzują się dużą +skutecznością hamowania, dzięki czemu znajdują zastosowanie w sytuacjach, +gdzie występują wysokie momenty obrotowe (Mo). + +Wartość Momentu Tarcia **MT** możemy założyć: + +**MT= (1,75÷2,5)M** + +Gdy średnica bębna **D** jest ustalona na podstawie warunków konstrukcyjnych, +możemy obliczyć siłę tarcia, niezbędną do zahamowania bębna. Siła tarcia jest +związana z momentem tarcia oraz średnicą bębna według zależności + +![](https://izaac.pl/wp-content/uploads/2022/04/w6.png) + + +### + +Hamulce cięgnowe: a) zwykły, b) różnicowy, c) sumowy + + + +### Hamulec cięgnowy zwykły + + +To rodzaj hamulca cięgnowego, w którym cięgno przylega do bębna tylko na +części jego obwodu, odpowiadającej kątowi α. Oznacza to, że kontakt między +cięgnem a bębnem jest ograniczony, co wpływa na siłę tarcia generowaną w +układzie. + +W cięgnie wyróżniamy: +* część czynną – nabiegającą na bęben. Działa w niej siła **F1** ; +* część bierną – działa w niej siła **F2**. + +siła **F1 > F2** + +ponieważ część czynna cięgna obciążona jest dodatkowo siłą tarcia wywołaną +momentem obrotowym **T**. + +Z warunku równowagi: + +**T = F1– F2** **[I]** + +Stosunek sił **F1** i **F2** określa zależność (wzór Eulera). Określa +on stosunek napięć w cięgnach: + +**F1= F2** **⋅m** gdzie | ![](https://izaac.pl/wp-content/uploads/2022/04/w7.png) +---|--- + +Przyjmujemy **α= 180°** **÷270°(** od **π** do +**1,5πrad)** + +gdzie: + + +### Kąt opasania α + + +To kąt , który określa, jak duża część obwodu bębna jest objęta przez cięgno +(taśmę). Wpływa na siłę tarcia i skuteczność hamowania. +* **Powierzchnia kontaktu:** Większy kąt opasania oznacza, że większa powierzchnia cięgna styka się z bębnem, co zwiększa siłę tarcia i skuteczność hamowania. +* Rozkład nacisku: Przy większym kącie opasania nacisk cięgna na bęben jest bardziej równomiernie rozłożony, co zmniejsza zużycie elementów ciernych. +* Siła tarcia: Zależność siły tarcia od kąta opasania można opisać za pomocą prawa tarcia suchego, które uwzględnia wpływ kąta na zwiększenie siły hamującej + +_**F1 = F2 ⋅**_** _e μ​α_** + +**F_1** \- siła w cięgnie po stronie „ciągnącej”, +**F_2** \- siła w cięgnie po stronie „luźnej”, +**μ -** współczynnik tarcia między cięgnem a bębnem, +**α -** kąt opasania w radianach, +**e -** podstawa logarytmu naturalnego. + +Im większy kątα wym większa skuteczność hamowania, ponieważ siła tarcia rośnie +wykładniczo wraz z kątem. + +Wprowadzamy zależność między siłą tarcia T a F1 i F2. + +Siła tarcia w zależności od F_1 + +**![](https://izaac.pl/wp-content/uploads/2022/04/w8.png)** + +Siła tarcia w zależności od F_2 + +**T = F2 ( m – 1)** + +**Wartość siły F** potrzebnej do zahamowania wyznaczamy z warunku równowagi +sił działających na dźwignię. Wyznaczać je będziemy względem punktu 0, +przyjmując kierunek ruchu obrotowego jak na rysunku + +W **hamulcu zwykłym** część czynna cięgna zamocowana w punkcie obrotu dźwigni +– na dźwignię działają siły: **F2** oraz **F** + +Warunek równowagi przyjmie postać: + +**F⋅l – F2** **⋅a = 0[IV]** + +**![](https://izaac.pl/wp-content/uploads/2022/04/w9.png)** + +Zalecane przełożenie dźwigni: **l/a = 3÷6** + +Gdy zmienimy kierunek ruchu obrotowego, wówczas część czynna będzie pełnić +funkcje części biernej i odwrotnie. + +![](https://izaac.pl/wp-content/uploads/2022/04/w10.png) + + +### Hamulec cięgnowy różnicowy + + +Jest to rodzaj hamulca cięgnowego, w którym siła hamowania jest zależna od +różnicy sił na cięgnach + +Warunek równowagi dla hamulca różnicowego: + +**F⋅l + F1** **⋅a1– F2** **⋅a2= 0** + +stąd: + +**![](https://izaac.pl/wp-content/uploads/2022/04/w11-300x67.png)** + +Po zmianie kierunku ruchu obrotowego: + +**![](https://izaac.pl/wp-content/uploads/2022/04/w12-300x66.png)** + + + + + + + + +### Hamulec cięgnowy sumowy + + +Jest to rodzaj hamulca cięgnowego, w którym siła hamowania zależna jest od +sumy sił na cięgnach + +Warunek równowagi dla hamulca sumowego **(a1= a2= a)** + +**F⋅l – F1** **⋅a – F2** **⋅a = 0** + +stąd: + +![](https://izaac.pl/wp-content/uploads/2022/04/w13-300x77.png) + +Po zmianie kierunku ruchu obrotowego bębna (w stosunku do podanego na rysunku +c) wówczas częścią czynną cięgna będzie dotychczasowa część bierna i +odwrotnie. + +**![](https://izaac.pl/wp-content/uploads/2022/04/w14.png)** + +Na podstawie przeprowadzonej analizy hamulców: + + 1. Hamulec zwykły i różnicowy zastosujemy tam, gdzie jest stały kierunek ruchu obrotowego bębna i wału. + 2. W hamulcu różnicowym odpowiednio dobierając długości dźwigni **a1** i **a2** – regulujemy **F** (przy niewłaściwej długości tych dźwigni **F = 0** lub **F < 0 **(samo zakleszczanie). + +Aby uniknąć samo zakleszczenia spełniamy warunek: + +**![](https://izaac.pl/wp-content/uploads/2022/04/w15.png)** + + + + 1. Hamulec sumowy **(a1= a2= a)** – siła obciążająca **F** jest jednakowa dla obydwu kierunków obrotu ale dość duża jej wartość przekreśla zastosowanie tego hamulca. + 2. Przy ruchu dwukierunkowym – hamulec dwuklockowy. +* + diff --git a/frontend/src/content/index.json b/frontend/src/content/index.json new file mode 100644 index 0000000..b870a25 --- /dev/null +++ b/frontend/src/content/index.json @@ -0,0 +1,558 @@ +[ + { + "id": "gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje", + "title": "Gwinty: Kompleksowy Przewodnik – Od Opisu po Tolerancje", + "category": "Inżynieria mechaniczna", + "date": "2025-04-02T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia gwintowe" + ] + }, + { + "id": "przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni", + "title": "Przekładnie łańcuchowe -informacje i projektowanie przekładni", + "category": "Inżynieria mechaniczna", + "date": "2025-03-27T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Przekładnie", + "Układy napędowe" + ] + }, + { + "id": "spawanie-mig_-tig_-mag---wszystko-o-spoinach_", + "title": "Spawanie MIG, TIG, MAG - Wszystko o spoinach.", + "category": "Inżynieria mechaniczna", + "date": "2025-03-26T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia spawane" + ] + }, + { + "id": "trygonometria", + "title": "Trygonometria", + "category": "pomoce inżynierskie", + "date": "2025-03-16T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "rysunek-techniczny---wszystko-co-musisz-wiedzieć", + "title": "Rysunek Techniczny - wszystko co musisz wiedzieć", + "category": "Inżynieria mechaniczna", + "date": "2025-03-10T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Rysunek Techniczny" + ] + }, + { + "id": "sprężyna", + "title": "Sprężyna", + "category": "Elementy podatne", + "date": "2025-03-05T21:53:55.000Z", + "categories": [ + "Elementy podatne", + "Inżynieria mechaniczna" + ] + }, + { + "id": "wytrzymałość-zmęczeniowa-wału", + "title": "Wytrzymałość zmęczeniowa wału", + "category": "Inżynieria mechaniczna", + "date": "2025-02-22T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wały i osie" + ] + }, + { + "id": "rodzaje-śrub_-nakrętek-i-podkładek", + "title": "Rodzaje śrub, nakrętek i podkładek", + "category": "Inżynieria mechaniczna", + "date": "2025-01-30T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia gwintowe" + ] + }, + { + "id": "najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania", + "title": "Najważniejsze informacje o łożyskach, rodzaje i zastosowania", + "category": "Inżynieria mechaniczna", + "date": "2025-01-29T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Łożyskowanie" + ] + }, + { + "id": "przeliczniki-jednostek-podstawowych-wielkości-fizycznych", + "title": "Przeliczniki jednostek podstawowych wielkości fizycznych", + "category": "pomoce inżynierskie", + "date": "2025-01-28T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "przykład-obliczeniowy-wytrzymałości-konstrukcji-jednolitej", + "title": "Przykład obliczeniowy wytrzymałości konstrukcji jednolitej", + "category": "Inżynieria mechaniczna", + "date": "2025-01-27T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wytrzymałość materiałów" + ] + }, + { + "id": "połączenia-wielowypustowe", + "title": "Połączenia wielowypustowe", + "category": "Inżynieria mechaniczna", + "date": "2025-01-25T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia czop-piasta", + "połączenia wielowypustowe" + ] + }, + { + "id": "zamiana-cala-angielskiego-na-milimetry", + "title": "Zamiana Cala angielskiego na milimetry", + "category": "pomoce inżynierskie", + "date": "2025-01-25T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej", + "title": "Oznaczanie chropowatości powierzchni i obróbki powierzchniowej", + "category": "Inżynieria mechaniczna", + "date": "2025-01-16T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Rysunek Techniczny" + ] + }, + { + "id": "obliczanie-połączenia-kołnierzowego-z-uszczelką-gumową-przy-użyciu-metody-asme", + "title": "Obliczanie połączenia kołnierzowego z uszczelką gumową przy użyciu metody ASME", + "category": "Podstawy konstrukcji maszyn", + "date": "2025-01-16T21:53:55.000Z", + "categories": [ + "Podstawy konstrukcji maszyn", + "Połączenia", + "Połączenia gwintowe", + "pomoce inżynierskie" + ] + }, + { + "id": "współczynnik-y-i-m-uszczelek-według-asme", + "title": "Współczynnik y i m uszczelek według ASME", + "category": "pomoce inżynierskie", + "date": "2025-01-15T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "przekładnie-cierne---informacje-i-obliczenia", + "title": "Przekładnie cierne - informacje i obliczenia", + "category": "Inżynieria mechaniczna", + "date": "2024-12-31T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Przekładnie", + "Układy napędowe" + ] + }, + { + "id": "projektowanie-wałów-napędowych", + "title": "Projektowanie wałów napędowych", + "category": "Inżynieria mechaniczna", + "date": "2024-12-21T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "śmieszne", + "Wały i osie" + ] + }, + { + "id": "przekładnie-z-pasem-klinowym", + "title": "Przekładnie z pasem klinowym", + "category": "Inżynieria mechaniczna", + "date": "2024-12-08T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Przekładnie", + "Układy napędowe" + ] + }, + { + "id": "drgania-wału", + "title": "Drgania wału", + "category": "Inżynieria mechaniczna", + "date": "2024-11-29T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wały i osie" + ] + }, + { + "id": "moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych", + "title": "Moment dokręcania śrub i inne obliczenia połączeń śrubowych", + "category": "Inżynieria mechaniczna", + "date": "2024-11-22T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia gwintowe" + ] + }, + { + "id": "wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń", + "title": "Wyznaczanie długości ze względu dopuszczalne naciski powierzchniowe - Połączenia wieloboczne - projektowanie połączeń", + "category": "Inżynieria mechaniczna", + "date": "2024-11-21T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia czop-piasta", + "połączenia wieloboczne" + ] + }, + { + "id": "projektowanie-sprężyn", + "title": "Projektowanie Sprężyn", + "category": "Elementy podatne", + "date": "2024-11-16T21:53:55.000Z", + "categories": [ + "Elementy podatne", + "Inżynieria mechaniczna" + ] + }, + { + "id": "zamiana-koni-mechanicznych-na-kilowaty-i-kilowatów-na-konie-mechaniczne", + "title": "Zamiana Koni Mechanicznych na Kilowaty i Kilowatów na Konie Mechaniczne", + "category": "pomoce inżynierskie", + "date": "2024-11-10T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "łożyskowanie-maszyn_-przewodnik-po-obliczeniach-i-praktyczne-wskazówki", + "title": "Łożyskowanie maszyn: Przewodnik po obliczeniach i praktyczne wskazówki", + "category": "Inżynieria mechaniczna", + "date": "2024-10-31T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Łożyskowanie" + ] + }, + { + "id": "montaż-i-pasowanie-łożysk", + "title": "Montaż i pasowanie łożysk", + "category": "Inżynieria mechaniczna", + "date": "2024-10-14T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Łożyskowanie" + ] + }, + { + "id": "przekładnie---informacje-ogólne-i-podstawowe-parametry-przekładni", + "title": "Przekładnie - informacje ogólne i podstawowe parametry przekładni", + "category": "Inżynieria mechaniczna", + "date": "2024-10-11T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Przekładnie", + "Układy napędowe" + ] + }, + { + "id": "technologia-śrub_-wszystko-o-projektowaniu-połaczeń-śrobowych", + "title": "Technologia Śrub: Wszystko o projektowaniu połaczeń śrobowych", + "category": "Inżynieria mechaniczna", + "date": "2024-10-02T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia gwintowe" + ] + }, + { + "id": "połączenia-wciskowe", + "title": "Połączenia wciskowe", + "category": "Inżynieria mechaniczna", + "date": "2024-09-24T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "połączenia cierne czop-cylinder", + "Połączenia czop-piasta" + ] + }, + { + "id": "obciążenia-udarowe-sprężyn--projektowanie-sprężyn", + "title": "Obciążenia udarowe sprężyn- Projektowanie sprężyn", + "category": "Elementy podatne", + "date": "2024-09-23T21:53:55.000Z", + "categories": [ + "Elementy podatne", + "Inżynieria mechaniczna" + ] + }, + { + "id": "tablice-fizyczne", + "title": "Tablice fizyczne", + "category": "pomoce inżynierskie", + "date": "2024-09-19T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "obliczenia-belek-zginanych_-skręcanych-i-ściskanych_-rozkłady-naprężeń-w-belkach_-wyboczenie-prętów", + "title": "Obliczenia belek zginanych, skręcanych i ściskanych, rozkłady naprężeń w belkach, wyboczenie prętów", + "category": "Inżynieria mechaniczna", + "date": "2024-09-10T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wytrzymałość materiałów" + ] + }, + { + "id": "obliczenia-połączeń-spawanych", + "title": "Obliczenia połączeń spawanych", + "category": "Inżynieria mechaniczna", + "date": "2024-09-03T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia spawane" + ] + }, + { + "id": "współczynniki-tarcia---połączenia-cierne-czopowe-cylindryczne-_-dodatki", + "title": "Współczynniki tarcia - Połączenia cierne czopowe cylindryczne – dodatki", + "category": "Inżynieria mechaniczna", + "date": "2024-09-01T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "połączenia cierne czop-cylinder", + "Połączenia czop-piasta" + ] + }, + { + "id": "współczynniki-bezpieczeństwa", + "title": "Współczynniki bezpieczeństwa", + "category": "Inżynieria mechaniczna", + "date": "2024-08-29T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "pomoce inżynierskie" + ] + }, + { + "id": "przykłady-obliczeniowe", + "title": "Przykłady obliczeniowe", + "category": "pomoce inżynierskie", + "date": "2024-08-28T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "wytrzymałość-na-rozciąganie_-skręcanie_-ścianie-oraz-zginanie", + "title": "Wytrzymałość na rozciąganie, skręcanie, ścianie oraz zginanie", + "category": "Inżynieria mechaniczna", + "date": "2024-07-27T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wytrzymałość materiałów" + ] + }, + { + "id": "rodzaje-połączeń-wielobocznych---połączenia-wieloboczne---informacje-ogólne", + "title": "Rodzaje połączeń wielobocznych - Połączenia wieloboczne - informacje ogólne", + "category": "Inżynieria mechaniczna", + "date": "2024-07-19T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia czop-piasta", + "połączenia wieloboczne" + ] + }, + { + "id": "hamulce---informacje-ogólne-i-podstawowe-obliczenia", + "title": "Hamulce - informacje ogólne i podstawowe obliczenia", + "category": "Hamulce", + "date": "2024-07-18T21:53:55.000Z", + "categories": [ + "Hamulce", + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Układy napędowe" + ] + }, + { + "id": "wpust-pryzmatyczny---połączenia-wpustowe", + "title": "Wpust pryzmatyczny - połączenia wpustowe", + "category": "Inżynieria mechaniczna", + "date": "2024-07-18T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "Połączenia czop-piasta", + "połączenia z wpustem pryzmatycznym" + ] + }, + { + "id": "wały-wykorbione--dodatki", + "title": "Wały wykorbione- Dodatki", + "category": "Inżynieria mechaniczna", + "date": "2024-07-14T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wały i osie" + ] + }, + { + "id": "podstawowe-informacje-o-wałach-i-osiach", + "title": "Podstawowe informacje o wałach i osiach", + "category": "Inżynieria mechaniczna", + "date": "2024-07-10T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wały i osie" + ] + }, + { + "id": "podstawy-wytrzymałości-materiałów", + "title": "Podstawy wytrzymałości materiałów", + "category": "Inżynieria mechaniczna", + "date": "2024-07-05T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wytrzymałość materiałów" + ] + }, + { + "id": "zespoły-sprężyn---projektowanie-sprężyn", + "title": "Zespoły sprężyn - Projektowanie sprężyn", + "category": "Elementy podatne", + "date": "2024-07-05T21:53:55.000Z", + "categories": [ + "Elementy podatne", + "Inżynieria mechaniczna" + ] + }, + { + "id": "przekładnie-pasowe-_-informacje-podstawowe", + "title": "Przekładnie pasowe – informacje podstawowe", + "category": "Inżynieria mechaniczna", + "date": "2024-07-02T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Przekładnie", + "Układy napędowe" + ] + }, + { + "id": "sprzęgła---charakterystyka-podział-i-opis", + "title": "Sprzęgła - charakterystyka podział i opis", + "category": "Inżynieria mechaniczna", + "date": "2024-06-26T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Podstawy konstrukcji maszyn", + "Sprzęgła", + "Układy napędowe" + ] + }, + { + "id": "wzory-i-wykresy-dla-zginania-belek-przy-stałym-obciążeniu", + "title": "Wzory i wykresy dla zginania belek przy stałym obciążeniu", + "category": "pomoce inżynierskie", + "date": "2024-06-05T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "charakterystyczne-cechy-i-zastosowanie-łożysk---informacje-ogólne", + "title": "Charakterystyczne cechy i zastosowanie łożysk - Informacje ogólne", + "category": "Inżynieria mechaniczna", + "date": "2024-05-09T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Łożyskowanie" + ] + }, + { + "id": "stałe-fizyczne", + "title": "Stałe Fizyczne", + "category": "pomoce inżynierskie", + "date": "2024-04-30T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "tabele-geometryczne", + "title": "Tabele geometryczne", + "category": "pomoce inżynierskie", + "date": "2024-04-22T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + }, + { + "id": "połączenia-cierne-stożkowe", + "title": "Połączenia cierne stożkowe", + "category": "Inżynieria mechaniczna", + "date": "2024-04-20T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Połączenia", + "połączenia cierne stożkowe", + "Połączenia czop-piasta" + ] + }, + { + "id": "moduł-younga-i-statyczna-próba-rozciągania", + "title": "Moduł Younga i statyczna próba rozciągania", + "category": "Inżynieria mechaniczna", + "date": "2024-04-16T21:53:55.000Z", + "categories": [ + "Inżynieria mechaniczna", + "Wytrzymałość materiałów" + ] + }, + { + "id": "jednostki-miar", + "title": "Jednostki miar", + "category": "pomoce inżynierskie", + "date": "2024-04-08T21:53:55.000Z", + "categories": [ + "pomoce inżynierskie" + ] + } +] \ No newline at end of file diff --git a/frontend/src/content/inżynieria-mechaniczna.md b/frontend/src/content/inżynieria-mechaniczna.md new file mode 100644 index 0000000..514d239 --- /dev/null +++ b/frontend/src/content/inżynieria-mechaniczna.md @@ -0,0 +1,30 @@ +--- +title: "Inżynieria mechaniczna" +date: 2021-10-05 17:04:56 +--- +# Inżynieria mechaniczna dla każdego + +Izaac jest innowacyjną platformą edukacyjną dedykowaną inżynierii mechanicznej +i budowie maszyn, która zapewnia dostęp do obszernego zbioru darmowych +materiałów naukowych. Niezależnie od tego, czy dopiero zaczynasz swoją +przygodę z takimi zagadnieniami jak inżynieria mechaniczna, czy szukasz +zaawansowanej wiedzy, Izaac oferuje szeroki zakres tematów, od podstawowych +koncepcji po skomplikowane obliczenia i metody projektowania. + + + +## Pomoce inżynierskie + +Tabele fizyczne, przeliczniki jednostek, zamiana cala angielskiego na +milimetry, układy jednostek i wiele innych. + +## Kategorie + +**Wybierz swoją kategorię** + +Lista kategorii jest aktualizowana na bieżąco. Staramy się dostarczać jak +najwięcej materiału, jeśli masz jakiś pomysł co moglibyśmy dodać, po prostu +**napisz.** + +## Napisz do nas + diff --git a/frontend/src/content/jednostki-miar.md b/frontend/src/content/jednostki-miar.md new file mode 100644 index 0000000..ab54124 --- /dev/null +++ b/frontend/src/content/jednostki-miar.md @@ -0,0 +1,117 @@ +--- +title: "Jednostki miar" +date: 2022-10-18 18:50:09 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Jednostki miar** + + +Układ jednostek miar - Uporządkowany, utworzony według określonych zasad, +zbiór jednostek miar, za pomocą których można mierzyć wielkości fizyczne +wchodzące w skład układu wielkości fizycznych, na którym jest on oparty. Normą +regulującą układ jednostek w Polsce jest PN ISO 31 – według której obowiązuje +Układ SI nazywany także Międzynarodowym Układem Jednostek Miar (fr. _Système +international d'unités, SI)_ + +Układy jednostek miar: + +Układy oparte na masowym układzie wielkości LMT (długość-masa-czas)(Length- +Mass-Time) + +CGS – układ oparty na trzech jednostkach podstawowych: **Centymetr, Gram masy, +Sekunda** + +Jednostki pochodne: + +przyśpieszenia – gal = [cm/s] + +ciśnienia – baria = [g/(cm*s^2)] + +siły – dyna = [g *cm/s^2] + +energii i pracy – erg = [dyna*cm] + +mocy – erg na sekundę + +MKS - układ oparty na trzech jednostkach podstawowych: **Metr, Kilogram masy, +Sekunda** \- w 1960 roku został zastąpiony przez układ SI + +MKSA - Jest rozszerzeniem układu MKS o wielkości elektryczne: **Metr, Kilogram +masy, Sekunda, Amper -** zastąpiony przez układ SI. + +MTS - układ oparty na trzech jednostkach podstawowych: **Metr, Tona masy, +Sekunda** + + + +**Klasyfikacja i definicje jednostek według układu SI:** + +Czas - Sekunda (s) | Zdefiniowana poprzez przyjęcie ustalonej wartości liczbowej częstotliwości cezowej ∆ν_Cs, to jest częstotliwości nadsubtelnego przejścia w atomach cezu 133 w niezaburzonym stanie podstawowym, wynoszącej 9 192 631 770, wyrażonej w jednostce Hz, która jest równa s^(-1) +---|--- +Długość - Metr (m) | Zdefiniowana przez przyjęcie ustalonej wartości liczbowej prędkości światła w próżni c, wynoszącej 299 792 458, wyrażonej w jednostce m∙s^(-1), przy czym sekunda zdefiniowana jest za pomocą częstotliwości cezowej ∆ν_Cs +Masa – Kilogram(kg) | zdefiniowana poprzez przyjęcie ustalonej wartości liczbowej stałej Plancka h, wynoszącej 6,626 070 15×〖10〗^(-34) , wyrażonej w jednostce J∙s, która jest równa kg∙ m^2∙s^(-1) , przy czym metr i sekunda zdefiniowane są za pomocą c i ∆ν_Cs +Prąd elektryczny – Amper(A) | zdefiniowana poprzez przyjęcie ustalonej wartości liczbowej ładunku elementarnego e, wynoszącej 1,602 176 634×〖10〗^(-19), wyrażonej w jednostce C, która jest równa A∙s, gdzie sekunda zdefiniowana jest za pomocą ∆νCs +Temperatura Termodynamiczna- Kelwin(K) | zdefiniowana poprzez przyjęcie ustalonej wartości liczbowej stałej Boltzmanna k, wynoszącej 1,380 649×〖10〗^(-23), wyrażonej w jednostce J∙K^(-1) , która jest równa kg∙m^2∙s^(-2)∙K^(-1) , gdzie kilogram, metr i sekunda zdefiniowane są za pomocą h, c i ∆ν_Cs +Ilość substancji – Mol(mol) | Jeden mol zawiera dokładnie 6,022 140 76×〖10〗^23 obiektów elementarnych. Liczba ta jest ustaloną wartością liczbową stałej Avogadra NA wyrażonej w jednostce mol^(-1) i jest nazywana liczbą Avogadra. Ilość substancji, symbol n, układu jest miarą liczby obiektów elementarnych danego rodzaju. Obiektem elementarnym może być atom, cząsteczka, jon, elektron, każda inna cząstka lub danego rodzaju grupa cząstek. +Światłość – kandela(Cd) | zdefiniowana poprzez przyjęcie ustalonej wartości liczbowej skuteczności świetlnej monochromatycznego promieniowania o częstotliwości 540 × 〖10〗^12 Hz, K_cd, wynoszącej 683, wyrażonej w jednostce lm∙W^(-1) , która jest równa cd∙ sr ∙W^(-1) lub cd∙ sr∙ kg^(-1)∙ m^(-2)∙ s^3 , gdzie kilogram, metr i sekunda są zdefiniowane za pomocą h, c i ∆ν_Cs + + + + + +**Jednostki SI** + +1 2 3 4 5 6 7 | Długość Masa Czas Natężenie prądu elektrycznego Temperatura Światłość Ilość substancji | Metr Kilogram Sekunda Amper Kelwin Kandela Mol | m kg s A K cd mol +---|---|---|--- + + +**Tabela przedrostków (Przedrostki jednostek miar układu SI.)** + +**Mnożnik** | **Przedrostek** | **Skrót** | **Zapis dziesiętny** | **Zapis słowny** +---|---|---|---|--- +10^-24 | jocto | y | 0,000 000 000 000 000 000 000 001 | Jedna – kwadrylionowa +10^-21 | zepto | z | 0,000 000 000 000 000 000 001 | Jedna – tryliardowa +10^-18 | atto | a | 0,000 000 000 000 000 001 | Jedna – trylionowa +10^-15 | femto | f | 0,000 000 000 000 001 | Jedna – biliardowa +10^-12 | pico | p | 0,000 000 000 001 | Jedna – bilionowa +10^-9 | nano | n | 0,000 000 001 | Jedna – miliardowa +10^-6 | mikro | μ | 0,000 001 | Jedna – milionowa +10^-3 | milli | m | 0,001 | Jedna – tysięczna +10^-2 | centy | c | 0,01 | Jedna – setna +10^-1 | decy | d | 0,1 | Jedna – dziesiąta +1 | - | - | 1 | jeden +10^1 | deka | da | 10 | Dziesięć +10^2 | hekto | h | 100 | Sto +10^3 | kilo | k | 1 000 | Tysiąc +10^6 | mega | M | 1 000 000 | Milion +10^9 | giga | G | 1 000 000 000 | Miliard +10^12 | tera | T | 1 000 000 000 000 | Bilion +10^15 | peta | P | 1 000 000 000 000 000 | Biliard +10^18 | eksa | E | 1 000 000 000 000 000 000 | Trylion +10^21 | zetta | Z | 1 000 000 000 000 000 000 000 | Tryliard +10^24 | jotta | Y | 1 000 000 000 000 000 000 000 000 | Kwadrylion + + +**Dodatkowo rozróżniamy jeszcze :** + +Anglosaski układ jednostek miar + +Układy oparte na ciężarowym układzie LFT (długość-siła-czas) (Length-Force- +Time) + +Inne: + +Staropolski układ jednostek miar + +Nowopolski układ jednostek miar + +Miary greckie + +Jednostki Plancka + diff --git a/frontend/src/content/konstrukcja-maszyn.md b/frontend/src/content/konstrukcja-maszyn.md new file mode 100644 index 0000000..424e2cf --- /dev/null +++ b/frontend/src/content/konstrukcja-maszyn.md @@ -0,0 +1,131 @@ +--- +title: "Konstrukcja maszyn" +date: 2021-10-12 16:18:18 +--- +# [Przekładnie - informacje ogólne i podstawowe parametry +przekładni](https://izaac.pl/inzynieria-mechaniczna/przekladnie-informacje- +ogolne-i-podstawowe-parametry-przekladni) + + + +# [Przekładnie pasowe – informacje podstawowe](https://izaac.pl/inzynieria- +mechaniczna/przekladnie-pasowe-informacje-podstawowe) + + + +# [Przekładnie łańcuchowe – informacje i projektowanie przekładni +łańcuchowych](https://izaac.pl/inzynieria-mechaniczna/przekladnie-lancuchowe- +informacje-i-projektowanie-przekladni-lancuchowych) + + + +# [Przekładnie cierne - informacje i obliczenia](https://izaac.pl/inzynieria- +mechaniczna/przekladnie-cierne-informacje-i-obliczenia) + + + +# [Przekładnie z pasem klinowym](https://izaac.pl/inzynieria- +mechaniczna/przekladnie-z-pasem-klinowym) + +# [Sprzęgła – charakterystyka podział i opis](https://izaac.pl/inzynieria- +mechaniczna/sprzegla-charakterystyka-podzial-i-opis) + +**** + +**Czym jest sprzęgło, jak działa i z czego się składa** + + * **Funkcje sprzęgła** – opis przenoszenia momentu i kompensacja niewspółosiowości wałów. +**** + + * **Z czego zbudowane jest sprzęgło** + * **Ogólna zasada doboru sprzęgieł** – Wybór sprzęgła na podstawie momentu obrotowego, obciążeń i wymagań eksploatacyjnych. + +**Podział sprzęgieł** + + * **Podział sprzęgieł według możliwości rozłączenia** + * **Podział sprzęgieł według sztywności połączenia** +**** + + * **Sprzęgła z dodatkowymi funkcjami****** + +**Sprzęgła sztywne tulejowe** – opis sprzęgieł nierozłącznych łączących wały. + + * **Sprzęgło****sztywne tulejowe z kołkami** – Tulejowe sprzęgło sztywne z dodatkowymi kołkami mocującymi. + * **Sprzęgło sztywne tulejowe z wpustami** – Tulejowe sprzęgło wyposażone w wpusty zapewniające przeniesienie momentu. +**** + + * **Sprzęgło sztywne tulejowe z tuleją stożkową** – Sztywne sprzęgło zapewniające precyzyjne centrowanie wałów. + +**Sprzęgło kołnierzowe** – Dwuczęściowe sprzęgło łączone za pomocą śrub. + +**Sprzęgła łubkowe** – Sprzęgła elastyczne kompensujące niewspółosiowość +wałów. + +**Sprzęgło cierne stożkowe** – Sprzęgło wykorzystujące tarcie i geometrię +stożkową do przenoszenia momentu. + +**Sprzęgła samonastawne** – Sprzęgła kompensujące niewspółosiowość +automatycznie podczas pracy. + +**Sprzęgła kłowe** – Sprzęgła elastyczne przenoszące moment dzięki +zazębiającym się kształtom. + +**Sprzęgła sterowane** – Sprzęgła kontrolowane + +**Sprzęgła asynchroniczne** – Sprzęgła pozwalające na chwilową różnicę +prędkości między wałami. + +**Sprzęgła zębate** – Sprzęgła wykorzystujące zazębienie kół do przenoszenia +momentu. + +**Sprzęgła przegubowe** – Sprzęgła umożliwiające przenoszenie momentu pod +zmiennym kątem. + +**Sprzęgła podatne** – Sprzęgła amortyzujące drgania i kompensujące +niewspółosiowość wałów. + + + +# [Hamulce - informacje ogólne i podstawowe +obliczenia](https://izaac.pl/inzynieria-mechaniczna/hamulce-informacje-ogolne- +i-podstawowe-obliczenia) + +**Klasyfikacja i charakterystyka hamulców** – Podział hamulców według zasady +działania i zastosowania. + + * **Podział hamulców** – Hamulce tarczowe, szczękowe, klockowe i cięgnowe stosowane w różnych mechanizmach. + +**Hamulce tarczowe** – Opis mechnizmu hamującego, w którym siła hamowania +działa na obracającą się tarczę. + + * **Rodzaje hamulców tarczowych** – Opis i podział hamulców tarczowych + * **Hamulce szczękowe wewnętrzne** – Hamulce, w których szczęki dociskają wewnętrzną powierzchnię bębna. + +**Hamulce klockowe** – Układ hamulcowy, w którym klocek cierny dociska się do +obracającego się elementu. + + * **Schemat obliczeniowy hamulców klockowych** – Wyznaczanie sił i momentów hamujących. +**** + + * **Określenie wymaganej siły do zahamowania bębna** – Obliczenia niezbędnej siły docisku klocka. +**** + + * **Wyznaczanie wymiarów klocka hamulca klockowego z warunku na naciski powierzchniowe** – Dobór optymalnych rozmiarów klocka. +**** + + * **Analiza termiczna hamulca klockowego** – Ocena nagrzewania w trakcie hamowania. + +**Hamulce cięgnowe** – Hamulce wykorzystujące napięcie cięgna do wywierania +siły hamującej. +**** + + * **Hamulec cięgnowy zwykły** – Mechanizm, w którym napięcie powoduje hamowanie. +**** + + * **Kąt opasania α** – Kąt, pod którym cięgno opasa element hamujący. +**** + + * **Hamulec cięgnowy różnicowy** – Układ hamulcowy wykorzystujący różnicę sił w cięgnach dla zwiększenia skuteczności hamowania. + +# **Konstrukcja Maszyn** + diff --git a/frontend/src/content/moduł-younga-i-statyczna-próba-rozciągania.md b/frontend/src/content/moduł-younga-i-statyczna-próba-rozciągania.md new file mode 100644 index 0000000..b754d66 --- /dev/null +++ b/frontend/src/content/moduł-younga-i-statyczna-próba-rozciągania.md @@ -0,0 +1,377 @@ +--- +title: "Moduł Younga i statyczna próba rozciągania" +date: 2024-02-19 22:49:45 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } +] +--- + +### Związki konstytutywne + + + +### + +### Statyczna próba rozciągania, Granica sprężystości, plastyczności i inne + +* ##### Granica proporcjonalności RH +* ##### Rsp – granica sprężystości +* ##### Re – granica plastyczności +* ##### Rm – wytrzymałość doraźna +* ##### Re_sy – Granica plastyczności przy ścinaniu (Fsy) Prawo Hooka + + +### Moduły sprężystości; Younga, Kirhoffa i Liczba Poissona – wyjaśnienie wraz + +ze wzorami +* ##### Moduł Younga, E – moduł sprężystości podłużnej +* ##### Moduł Kirhoffa, K – hydrostatyczny moduł sprężystości +* ##### Liczba Poissona v, Współczynnik Poissona + + +### Właściwości wytrzymałościowe materiału i bazy materiałowe + + + +## Moduł Younga, moduł Kirhoffa i Liczba Poissona - wyjaśnienie wraz ze + +wzorami + + +### + +### **Moduł Younga -** + + +**czyli Moduł sprężystości podłużnej** (ang. _Young's modulus_), jest jednym z +najważniejszych parametrów charakteryzujących materiały. Opisuje on w jaki +sposób materiał zachowuje się (odkształca) pod wpływem naprężeń i odwrotnie. +Jakie naprężenia mogą pojawić się w materiale przy zadanym odkształceniu. + +W wytrzymałości materiałów używany jest jako miara sztywności materiału. Moduł +Younga jest wykorzystywany do określenia, jak materiał zachowa się pod wpływem +sił rozciągających lub ściskających, bez przekraczania granicy jego +sprężystości, to znaczy zakresu, w którym materiał jest w stanie powrócić do +swojego pierwotnego kształtu po usunięciu obciążenia - z pominięciem +histerezy. + +Moduł Younga określa tak zwaną proporcjonalność (czyli charakterystykę +liniową) pomiędzy naprężeniami i odkształceniami w obszarze granicy +proporcjonalności (liniowości odkształcenia i naprężeń). To zakres, w którym +naprężenia rosną wprost proporcjonalnie do odkształceń. + +Matematycznie **Moduł Younga** można zapisać w postaci + +![](https://izaac.pl/wp-content/uploads/2023/11/2.39-modul-sprezystosci.jpg) + +Gdzie **α** równe jest kątowi nachylenia linii wykresu funkcji **σ =f(ε)** + +**ε - odkształcenie** + +**σ - naprężenie** + +Zwykle **Moduł Younga** wyrażamy w MPa (MegaPascal) lub GPa (GigaPascal) czyli +[N/m²]. + +Tabela wartości Modułu Younga dla wybranych materiałów konstrukcyjnych. + +**Materiał** | **Moduł Younga (E)** +---|--- +| **GPa** +Guma | 0,01–0,10 +Polistyren | 3,0–3,5 +Beton | ponad 25 (ściskany) +Stopy aluminum | około 70 +Miedź | 110–140 +Brąz | 105–120 +Tytan | 105–120 +Żeliwo i stal | 190–210 +Wolfram | 400–410 +Węglik krzemu (SiC) | 450 +Węglik tytanu (TiC) | około 650 +Diament | około 1100 + + +### +### **Moduł KirhoffaK** + + +**– hydrostatyczny moduł sprężystości** - + +Stosuje się go w przypadku obciązeń występujących z każdej strony. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.40-hydrostatyczny-modul- +kirhoffa.jpg) + +Dla ścinania i skręcania występuje moduł K**irhoffa oznaczany jako G nazywany +modułem sprężystości poprzecznej** lub modułem sprężystości postaciowej + +![](https://izaac.pl/wp-content/uploads/2023/11/2.40-modul-kirhoffa.jpg) + +Gdzie **v** – Liczba Poissona + + +### **Liczba Poissona v,** + + +**współczynnik Poissona** – jest to parametr opisujący stosunek odkształcenia +poprzecznego do odkształcenia podłużnego przy jednoosiowym stanie naprężeń. + +![](https://izaac.pl/wp-content/uploads/2023/11/1.17-1.jpg) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.41-Liczba- +Poissona-300x144.jpg) + +Liczba Poissona przyjmuje wartości od -1 do 0,5 + +![](https://izaac.pl/wp-content/uploads/2023/11/2.42-Liczba-Poissona- +wartosci.jpg) + + +## Związki konstytutywne + + +**Związki konstytutywne** \- To główne zależności między składowymi tensora +(wektora rozpostartego na powierzchni) naprężeń i tensora odkształceń +opisujące dany materiał. Można powiedzieć, że jest to opis wzajemnego +zachowania tych dwóch wielkości pozwalający nam przewidywać zachowania +materiałów. + +Dla ciał będących ciałami izotropowymi (posiadającymi w każdym punkcie takie +same właściwości dla każdego kierunku), liniowo-sprężystym związkiem +konstytutywnym jest prawo Hooka + +![](https://izaac.pl/wp-content/uploads/2023/11/2.26-prawo-hooka.jpg) + +Gdzie: + +**δij** \- delta Kroneckera + +![](https://izaac.pl/wp-content/uploads/2023/11/2.26-delta-Kroneckera.jpg) + +**λ** i **µ** \- stałe Lamiego + +Stała **µ** jest równa modułowi Kirchhoffa, można spotkać tradycyjny zapis +**G** + +![](https://izaac.pl/wp-content/uploads/2023/11/2.27-stale-lamiego.jpg) + +**E** – moduł Younga + +**V** \- liczba Poissona + +![](https://izaac.pl/wp-content/uploads/2023/11/2.28-tensor-naprezen-z-prawa- +hooka.jpg) + +**εii, εij** – tensory odkształceń + +Dla ciał plastycznych ze wzmocnieniem – tzn. takich dla których przy +osiągnięciu granicy plastyczności, krzywa (lub prosta) naprężeń rośnie dalej, +ale wolniej występuję zależność: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.29-odksztalcenie-materialu- +ze-wzmocnieniem.jpg) + +Gdzie : + +**ε** – odkształcenie + +σ – naprężenia + +E – moduł Younga + +K i n – stałe charakterystyczne dla danego materiału – pozyskane z danych +eksperymentalnych + +Dla pełnego opisu ciała potrzebne jest 9 składowych tensora naprężeń σ, 9 +składowych tensora odkształceń ε i 3 składowe wektora przemieszczeń U. Z +punktem przestrzeni nie są związane momenty sił, tzn. zachodzi zależność + +![](https://izaac.pl/wp-content/uploads/2023/11/2.29-300x67.jpg) + +Zależności między składowymi tensora odkształceń i wektora przemieszczeń: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.30-Zaleznosci-miedzy- +skladowymi-tensora-odksztalcen-i-wektora-przemieszczen.jpg) + +Co daje nam 12 równań. + +Dodatkowe wymagane 3 równania otrzymamy z równania równowagi ośrodka ciągłego +dla układów statycznych. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.31-rownania-rownowagi- +osrodka-ciaglego.jpg) + +Gdzie : + +**fi** – składowa wektora sił masowych + +**ρ** – gęstość materiału + +dla układów dynamicznych obowiązuje dodatkowo równanie zachowania pędu ośrodka +ciągłego: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.32-rownania-rownowagi-pedu- +osrodka-ciaglego-dla-ukladow-dynamicznych-300x101.jpg) + + +## Statyczna próba rozciągania, Granica sprężystości, plastyczności i inne + + +Aby opracować poprawne współczynniki dla ogólnych równań z powyższych wzorów, +związków konstytutywnych, wykonuje się próby wytrzymałościowe. + +Podstawową próbą statyczną jest próba rozciągania materiału. Aby wyniki były +porównywalne wprowadzono znormalizowane próbki, tak że kształt próbek i ich +liczba zależy od normy, na którą się powołujemy. Dla materiałów sprężysto +plastycznych można jednak wyprowadzić wspólną zależność. Próbki dla materiałów +plastycznych są długie walcowe i smukłe natomiast dla materiałów kruchych +próbki są walcowe i krótsze. + +Wynikiem prób wytrzymałościowych na rozciąganie zazwyczaj jest wykres naprężeń +w funkcji odkształcenia opisujący funkcję: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.33-naprezenia-jako-funkcja- +odksztalcen.jpg) + +Tzn. opisuje zależność wydłużenia od siły rozciągającej odniesionej do +naprężeń + +**Granica proporcjonalności RH** – od nazwiska Hooka – jest to naprężenie w +materiale przy którym występuje jeszcze liniowa odkształcalność tzn. zależność +między naprężeniami a odkształceniem jest liniowa. + +**Rsp – granica sprężystości** – są to naprężenia przy których liniowość już +nie występuje, ale po odciążeniu próbka wraca do swoich pierwotnych wymiarów i +nie występuje wyraźne, trwałe odkształcenie próbki. Zazwyczaj **Rsp** i **RH** +są tożsame ze względu na bardzo bliskie położenie na wykresie + +**Re – granica plastyczności** – są to naprężenia przy których zachodzi +uplastycznienie materiału tzn. występuje wzrost odkształceń przy stałym +naprężeniu. Jeśli w danym materiale nie występuje wyraźna granica +plastyczności to stosuje się umowną granicę plastyczności **Re_0,2**. Jest to +taki punkt wykresu w którym odkształcenia trwałe osiągają wartość 0,2% +wartości początkowej + +**Punkt B’** – Umocnienie materiału, punkt w którym poślizgi warstw kryształów +materiału ulegają zahamowaniu i od tego momentu należy zwiększyć naprężenia w +celu wywołania odkształceń. Nie jest obecny dla każdego materiału. + +**Rm – wytrzymałość doraźna** (Punkt C) – Naprężenia przestają być jednorodne, +występuje koncentracja poślizgów w jednym miejscu. Jest to punkt w którym +naprężenia są największe + +![](https://izaac.pl/wp-content/uploads/2023/11/2.34-wytrzymalosc-dorazna.jpg) + +Gdzie A – pole nominalne (początkowe) próbki + +**Efekt umocnienia materiału** wykorzystuje się w technice w celu podwyższenia +wytrzymałości materiału. Jeśli rozciągniemy próbkę do puktu E i następnie +odpuścimy, to próbka zachowywać się będzie jak sprężysta gdzie granica +sprężystości przesunie się do punktu E. + +Warto pamiętać, że aby mieć jasny ogląd na właściwości wytrzymałościowe danego +materiału należy wykonać więcej niż jedną próbę rozciągania w więcej niż +jednym kierunku. + +**Re_sy** – Granica plastyczności przy ścinaniu (Fsy) – zazwyczaj pozyskiwana +z testów skręcania zależy od kształtu próbki. + +Dane pozyskiwane są z : + +1\. Dla blach – testów przebicia + +2\. Dla kształtowników o dużych przekrojach – ścianie ze sworzniem + +Dodatkowo może być oszacowana w oparciu o wytrzymałość na rozciąganie i +ściskanie + +![](https://izaac.pl/wp-content/uploads/2023/11/2.35-granica-plastycznosci- +przy-scinaniu.jpg) + +Gdzie + +**F_tu(L)** – wytrzymałość na rozciąganie w kierunku L + +**F_tu(LT)** – wytrzymałość na rozciąganie w kierunku LT + +**F_ty(L)** – Granica plastyczności przy rozciąganiu w kierunku L + +**F_ty(LT)** – Granica plastyczności przy rozciąganiu w kierunku LT + +**F_cy(L)** – granica plastyczności przy ściskaniu w kierunku L + +**F_cy(LT)** – granica plastyczności przy ściskaniu w kierunku LT + +**F_su** – wytrzymałość na ścinanie + +**Prawo Hooke'a** \- Prawo mechaniki głoszące, że odkształcenia ciała pod +wpływem działania na nie siły jest proporcjonalne do tej siły + +Dla rozciągania statycznego pręta: + +**![](https://izaac.pl/wp-content/uploads/2023/11/2.36-prawo-hooka-dla- +rozciagania-statycznego-preta.jpg)** + +**F** – siła rozciągająca + +**A** – Pole przekroju poprzecznego pręta + +**Δl** – wydłużenie pręta + +**l** – długość pręta + +![](https://izaac.pl/wp-content/uploads/2023/11/2.37.jpg) + +Lub + +![](https://izaac.pl/wp-content/uploads/2023/11/2.38.jpg) + +Gdzie : + +**ε=Δl/l** \- odkształcenie + +**σ=F/A** \- naprężenie + + +# Właściwości wytrzymałościowe materiału i bazy materiałowe + + +Każdy materiał w swojej definicji ma przedziały procentowe zawartości danego +pierwiastka. Mimo, ze te wartości są ściśle określone – w tym parametry +wytrzymałościowe to zawsze istnieją rozbieżności od wartości przewidywanych. W +celu określenia jak definiować wartości właściwości wytrzymałościowych w taki +sposób aby były one jak najbardziej przewidywalne a zarazem jak najlepsze +wprowadzono bazy danych materiałowych. Są to statystyczne bazy opisujące +prawdopodobieństwo uzyskania pewnych (takich do których mamy pewność) +założonych parametrów projektowych. + +**Baza typowa** – wartości wytrzymałościowe i innych parametrów materiału +opisane są jako wartość średnia, z pominięciem oceny statystycznej. + +**Baza typu S – S basis value** – wartości własności materiału określane sa +przez minimalne wartości podane w normach. + +**Baza typu B – B-basis value** – baza opisuje takie wartości parametrów +materiałów, że dla 90% populacji były one większe lub równe od statystycznej +wartości, dla poziomu ufności 95%. To oznacza, że z 95 procentową pewnością +90% danego materiału posiada lepsze lub równe właściwości od wartości +statystycznej (np. założonej Re_min) + +**Baza typu A – A-basis value** – baza opisująca takie wartości parametrów +materiałowych, że dla 99% populacji wartości są równe lub przekraczają +statystyczne wartości dla poziomu ufności 95%. To oznacza, że z 95 procentową +pewnością 99% danego materiału posiada lepsze lub równe właściwości od +wartości statystycznej (np. założonej Re_min). + +Wartości w A-basis są zazwyczaj niższe niż wartości B-basis, jednak decydując +się na założenie wartości parametrów z bazy A, mamy większą kontrolę nad +pewnością zachowania materiału w warunkach roboczych. + diff --git a/frontend/src/content/moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych.md b/frontend/src/content/moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych.md new file mode 100644 index 0000000..8cec37b --- /dev/null +++ b/frontend/src/content/moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych.md @@ -0,0 +1,461 @@ +--- +title: "Moment dokręcania śrub i inne obliczenia połączeń śrubowych" +date: 2024-01-28 18:36:18 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } +] +--- + +### Wymagany moment dokręcania śrub + + + +### Tarcie w złączu śrubowym + +* Prawa Tarcia Coulomba: + + +### Dobór gwintu + + + +### Siły działające w gwincie podczas dokręcania nakrętki: + +* Warunek samohamowności śruby + + +### Samohamowność gwintu + + + +### Napięcie wstępne w śrubie + + + +### Obliczenia Połączenia śrubowego równoległego + + + +### przykład obliczeniowy + + + +## **Wymagany moment dokręcania śrub** + + + + +Aby obliczyć moment dokręcania śruby należy zastosować poniższy wzór ogólny. +Moment dokręcania śrub jest równy momentowi występującemu na gwincie oraz +momentowi nakrętki/łba - w zależności czy przykręcamy za pomocą nakrętki czy +na samej śrubie. + + + +Mdokr = Mgwint \+ Mnakrętki + +dalej będziemy używać oznaczeń + +Mgwint = Mg + +Mnakrętki = Mn + +gdzie: + +![](https://izaac.pl/wp- +content/uploads/2022/01/n7.png)![](https://izaac.pl/wp- +content/uploads/2023/05/881.png) + +D_T/2 | \- uśredniona średnica tarcia +---|--- + + +## μn \- współczynnik tarcia nakrętki (między nakrętką a podstawą połączenia + +[blachą]) + + +## μg - współczynnik tarcia gwintu (między gwintem nakrętki a gwintem śruby) + + +D0 \- maksymalna średnica działania siły + +d0 \- średnica otworu + +Wymagany moment dokręcenia śruby (lub wymagany moment dokręcenia nakrętki) +Mdokr \- to moment który musi zostać przyłożony do łba śruby, lub nakrętki, +jaki da nam siłę napięcia wstępnego (rozciągnie nam śrubę z siłą) Pw. + + +### **Momenty dokręcania śrub metrycznych dla różnych wielkości i klas - + +tabela momentów** + + + +Przy dokręcaniu śrub na wymagany moment należy zwrócić uwagę na 3-5% +niepewności związanej z konstrukcją klucza dynamometrycznego. Dla konstrukcji +bardzo odpowiedzialnych zaleca się przeprowadzanie szczegółowych obliczeń na +moment dokręcenia śrub + +Średnica | Momenty dokręcania śrub w Nm +---|--- +Klasa: | **4.6** | **5.6** | **8.8** | **10.9** | **12.9** +**M4** | 1 | 1,4 | 3,3 | 4,8 | 5,6 +**M5** | 2 | 2,7 | 6,5 | 9,5 | 11,2 +**M6** | 3,5 | 4,6 | 11,3 | 16,5 | 19,3 +**M8** | 8,4 | 11 | 27,3 | 40,1 | 46,9 +**M10** | 17 | 22 | 54 | 79 | 93 +**M12** | 29 | 39,0 | 93 | 137 | 160 +**M14** | 46 | 62 | 148 | 218 | 255 +**M16** | 71 | 95 | 230 | 338 | 395 +**M18** | 97 | 130 | 329 | 469 | 549 +**M20** | 138 | 184 | 464 | 661 | 773 +**M22** | 186 | 250 | 634 | 904 | 1057 +**M24** | 235 | 315 | 798 | 1136 | 132 +**M27** | 350 | 470 | 1176 | 1674 | 1959 +**M30** | 475 | 635 | 1597 | 2274 | 2662 +**M33** | 645 | 865 | 2161 | 3078 | 3601 +**M36** | 1080 | 1440 | 2778 | 3957 | 4631 +**M39** | 1330 | 1780 | 3597 | 5123 | 5994 +**M42** | 1605 | 2006 | 4413 | 6285 | 7354 +**M45** | 2005 | 2506 | 5512 | 7851 | 9187 + + + +## **Tarcie w złączu śrubowym** + + +Zrozumienie działania i obliczania połączeń śrubowych należy zacząć od +odpowiedniego zrozumienia mechanizmu przenoszenia siły w połączeniu. Głównym +czynnikiem jest siła tarcia. Zarówno między gwintami śruby-nakretki jak i +między głową śruby - podkładką i podkładką - blachą występują siły tarcia +utrzymujące połączenie. W przypadku śrub luźnych siły tarcia dodatkowo +przenoszą obciążenia. W przypadku śrub pasowanych czynnikiem utrzymującym +statycznie połączenie także jest siła tarcia jednak obciążenia przenoszone są +przez trzpień śruby. Moment dokręcenia śrub pasowanych także jest istotny z +tego względu, że połączenie musi zostać statyczne nawet w przypadku wzmożonych +wibracji. + +Działem zajmującym się tarciem, smarowaniem i zużyciem powierzchni trących +jest tribologia. + +Podstawowym prawem opisującym zasadę działania tarcia statycznego są prawa +tarcia kulomba + + + +**Prawa Tarcia Coulomba:** +* Siła tarcia nie zależy od wielkości stykających się ze sobą elementów (pola powierzchni) – obecnie wiadomo, że to bzdura, jednak stanowi uproszenie na które możemy przymknąć oko z inżynierskiego punktu widzenia - ale zależy od ich rodzaju. +* Wartość siły tarcia ciała znajdującego się spoczynku może zmienić się od wartości zerowej do wartości granicznej wprost proporcjonalnie do nacisku normalnego. +* Gdy ciało jest w ruchu, siła tarcia na powierzchni styku, skierowana jest przeciwnie do kierunku ruchu i jest mniejsze od wartości granicznej. + +**0 ≤ T ≤ Tmax** + +**Tmax = μ · N** + +Gdzie: + +N - siła normalna + +μ - współczynnik tarcia + +Warto nadmienić, że dla obliczeń statycznych wytrzymałości połączeń, będziemy +rozważać przypadek dla granicznych sił tarcia z uwagi na to, iż jest to +wartość, przy której układ po przekroczeniu przestaje być stabilny. + +Kąt tarcia statycznego ρ=arctg(μ) + +Śruby, według diagramu ([i](https://izaac.pl/inzynieriamechaniczna/informacje-ogolne-rodzaje-polaczen-srubowych-mapa)) różnią się +sposobami przenoszenia sił, śruby pasowane przenoszą obciążenia całymi sobą, +natomiast śruby luźne, służą do ściśnięcia elementów łączonych z taką siłą +napięcia śruby, dla której siła tarcia między elementami łączonymi będzie +wystarczająco wysoka, aby przeciwdziałać obciążeniom. + + +## Dobór gwintu + + +Aby zacząć projektowanie połączenia śrubowego, należy określić jaki rodzaj +gwintu chcemy zastosować. Ponizej przedstawono pięć prostych punktów krok po +kroku jak określić jakiego gwintu potrzebujemy dla naszej aplikacji + + 1. **Rodzaj** \- Dobór gwintu zaczyna się od określenia rodzaju gwintu dla danego zastosowania. np. według naszego [**artykułu o gwintach**](https://izaac.pl/inzynieria-mechaniczna/gwinty-kompleksowy-przewodnik-od-opisu-po-tolerancje), w którym poruszamy ową kwestię +Jeśli chcemy konstruować mechanizm śrubowy, najlepszym wyborem jest gwint +trapezowy niesymetryczny lub symetryczny. +Jeśli chcemy aby połączenie było statyczne, najlepiej wybrać gwint samohamowny +np. Gwinty zwykłe jednokrotne. +Jeśli chcemy aby połączenie było szczelne wybierami gwint calowy stożkowy +samouszczelniający NPTF lub gwint stożkowy NPT. Należy przy tym pamiętać że +gwinty NPT nie są samouszczeliające i należy stosować je z dodatkowym +uzczelnieniem np. taśmą teflonową lub oringiem. Można także rozważyc użycie +gwintu UNF lub BSP - także wymające dodatkowego uszczelnienia. Częstym +rozwiązaniem dla gwintów UNF jest podkładka metalowo gumowa nazywana także +podkładką DOWTY. + + 2. **Średnicę** **gwintu** należy dobrać odpowiednio do warunków pracy. + +Obliczenia wytrzymałościowe dla śruby luźnej definiujące średnicę rdzenia +śruby: [**Śruba luźna– charakterystyka i warunki +projektowe**](https://izaac.pl/inzynieria-mechaniczna/technologia-srubwszystko-o-projektowaniu-polaczen-srobowych#5) + +Obliczenia wytrzymałościowe dla śruby pasowanej (shoulder screw) definiujące +średnicę trzpienia: [**Śruba pasowana– charakterystyka i warunki +projektowe**](https://izaac.pl/inzynieria-mechaniczna/technologia-srubwszystko-o-projektowaniu-polaczen-srobowych#4) + +Oto główne czynniki mające wpływ na średnicę. + +\- Zniszczenie trzpienia śruby- zerwanie śruby luźnej. Przy doborze średnicy +gwintu należy patrzeć przedewszystkim na wytrzymałość połączenia. Jeśli +zapewnienie wytrzymałości wymaga wprowadzenia dużego napięcia wstępnego śruby +to średnicę należy dobrac odpowiednio dużą gwintu aby rdzeń wytrzymał i nie +nastąpiło przekroczenie dopuszczalnych naprężeń rozciągających w śrubie luźnej +lub naprężeń ścinających w śrubie pasowanej co prowadzi trzpienia śruby. + +\- Utracenie stateczności – zwłaszcza dla śrub długich (np. w szpilek w +korpusie silnika) należy wziąć pod uwagę możliwość wyboczenia śrub. Więcej o +**[wyboczeniach dowiesz się z artykulu](https://izaac.pl/inzynieriamechaniczna/wyboczenie-pretow)** z naszego działu o wytrzymałości materiałów + +\- Miejsce. Aby odpowiednio zaprojektować połączenie należy przeprowadzić +"trade off" to znaczy rachunek zysków i strat związanych z wytrzymałością +połączenia a masą, i rozmiarem połączenia. [**Zgodnie z zasadami dotyczącymi +rozstawienia śrub w szeregach**](https://izaac.pl/inzynieriamechaniczna/technologia-srub-wszystko-o-projektowaniu-polaczen-srobowych/#6), +śruby muszą znajdować się w odpowiednim położeniu i w odpowiedniej odległości +od krawędzi materiału. Ma to wpływ nie tylko na stateczność połaczenia ale +także na wzrosty naprężeń w miejscu, w którym śruba jest zbyt blisko krawędzi. + + 3. **Skok gwintu** \- ze względu na wymagane przełożenie mechaniczne, w przypadku korzystania z mechanizmów różnicowo-sumowych. Skok gwintu określa także czy gwint jest drobno czy grubo zwojny. Drobno zwojne gwinty mają większą średnicę rdzenia co za tym idzie większą wytrzymałość. + + 4. **Minimalne ramię klucza/pokrętła**. Należy uważać aby odpowiednio dobrać ramię klucza dla danej siły. Częstym błedem przy montażu jest przekręcanie śrub do grnaic ich możliwości lub stosowanie przedłużeń klucza w formie rurki (ZDECYDOWANIE NIE ZALECAMY TAKIEJ METODY). Nie jest to najlepsze rozwiązanie nie tylko ze względu na wytrzymałość statyczną i olbrzymie siły rozciągające rdzeń śruby ale także na wytrzymałość zmęczeniową połączenia. Zbyt duzy moment dokręcenia może przesztywniać układ i prowadzić do przedwczesnychzniszczeń. +Przeciętny mężczyzna dysponuje około 300N siły w jednej ręce bez zapierania +się, zalecamy projektowanie połączeń tak, aby uwzględniać ramię klucza +mieszczącego się w normach. Duże momenty wmagają odpowiednich narzędzi np. +elektrycznych lub hydraulicznych kluczy dynamometrycznych. +![](https://izaac.pl/wp-content/uploads/2022/01/n3-1.png) + + 5. **Minimalna wymagana wysokość nakrętki śruby.** W przypadku połączeń mocno wytęrzonych stosowne jest przeliczenie wysokości nakrętki i dobranie nie mniejszej z odpowiedniego katalogu według danego standardu (normy). Normy z nakrętakmi znajdziesz w naszym **[artykule dotyczącym rodzajów konstrukcyjnych śrub.](https://izaac.pl/inzynieria-mechaniczna/rodzaje-konstrukcyjne-srub)** + +![](https://izaac.pl/wp-content/uploads/2022/01/n4.png) + +gdzie: + +dM \- średnica nominalna gwintu śruby + +ηZW \- wartość współczynnika współpracy zwoju nakrętki i śruby + +h - skok gwintu + +D1 - średnica wewnętrzna gwintu nakrętki + + +## **Siły działające w gwincie podczas dokręcania nakrętki:** + + +Pw \- siła napięcia wstępnego (siła rozciągająca śruby) + +Siły działające w gwincie podczas dokręcania nakrętki: + +γ - kąt wniosu nakrętki + +H = P·tg(p'+γ) + +P - siła aktualnego napięcia śruby + +N - siła normalna z jaką gwint oddziaływuje na zwoje nakrętki + +T - siła tarcia + +H - siła pozioma (prostopadła do osi śruby), którą trzeba przyłożyć do +nakrętki (śruby) na średnicy podziałowej, dp żeby uzyskać równowagę sił. + +p' - kąt tarcia + +γ - kąt wzniosu gwintu (nachylenia linii śrubowej) + +**Warunek samohamowności śruby:** + +aby gwint był samohamowny przy dokręcaniu śruby musi być spełniony warunek + +H = P · tg(p' - γ) + +Dla innego kąta natarcia (gwint który nie jest prostokątny) odpowiada rysunek +pod wzorami: + +W takim gwincie występuje pozorny kąt tarcia (uwzględniający kąt zarysu +śruby): + +T' = T = μN + +![](https://izaac.pl/wp-content/uploads/2023/05/891.png) + +Mg \- moment na gwincie + +Mn \- moment nakrętki + +α - kąt zarysu gwintu stożka + +μ_g - współczynnik tarcia gwintu + + +## + +## **Samohamowność gwintu** + + +**Samohamowność** \- to właściwość układu, w której opór tarcia statycznego +przeciwdziałający przesunięciu lub skręceniu wzajemnym powierzchni, zapewnia +statyczność układu. + +Dla gwintów Samohamowność występuje, gdy pozorny kąt tarcia p' jest większy od +kąta nachylenia linii śrubowej γ + +H = p · tg(p' - γ) > 0 → p' > γ → gwint samohamowny + +![](https://izaac.pl/wp-content/uploads/2022/03/99.png) + +μg \- współczynnik tarcia statycznego między oboma gwintami + +![](https://izaac.pl/wp-content/uploads/2022/01/n11.png) + +Żródła: + +1\. J.Dietrych, Podstawy Konstrukcji Maszyn II, Wydawnictwo Naukowo Techniczne +- Warszawa + +2\. Witold Korewa, Części maszyn, część II, Państwowe wydawnictwo naukowe 1969 + + +## **Napięcie wstępne w śrubie** + + + + + + +**Napięcie wstępne w śrubie** wprowadza się w celu wywołania sprężystego +rozciągnięcia śruby luźnej [[i](https://izaac.pl/inzynieriamechaniczna/informacje-ogolne-sruba-luzna)] generującego siły nacisku na +powierzchnie łączonych elementów. + +Bardzo ważna jest kontrola naprężeń, ponieważ poprzez odpowiednią kontrolę, +można zmniejszyć naprężenia w śrubie wydłużając jej żywotność i uzyskując taką +samą siłę napięcia zapewniającą wytrzymałość złącza. + +**Wymagany efekt może być uzyskany (kontrolowana wymagana siła napięcia +wstępnego Pw) poprzez:** + + +* kontrolę momentu dokręcenia nakrętki/śruby - klucze dynamometryczne +* kontrola siły w śrubie -rozciągnięcie wstępne śruby specjalnym urządzeniem, następnie przykręcenie nakrętki + +Schemat hydraulicznego urządzenia do napinania wstępnego śrub bez wywołania +ich skręcania. Kontrola wydłużenia śruby pod wpływem **Pw**. + +Czasami stosuje się także śruby ze znacznikiem napięcia wstępnego. + +można także stosować łączniki śrubowe z innych materiałów takich jak: +* stale nierdzewne +* materiałów ceramicznych +* tworzyw sztucznych +* innych materiałów nieżelaznych + +Łaczniki superbolt –brak naprężeń skręcających –brak współczynnika **f.** + + +## **Przykład obliczeń Połączenia śrubowego równoległego z momentem dokręcania + +śrub** + +Treść : Wspornik traktowany jako metalowa konstrukcja skręcana. Połączenie +widoczne na rysunku uzyskane jest za pomocą śrub luźnych. Wyznaczyć: + +Potrzebne napięcie wstępne w śrubach + +Średnicę nominalną śrub z gwintem metrycznym zwykłym + +Wymagany moment dokręcenia przy zał. Wsp. Tarcia (μ , μg) + +Minimalna długość ramienia klucza + +Dane: + +Q, L, l, Re, x, + +n_śrub - liczba śrub + +i_powierzchni ciernych - liczba powierzchni ciernych, + +F_ręki - siła ręki (siła ręki mężczyzny to około 300N), + +μ = 0,1 - wzpółczynnik tarcia na blachach +μg = 0,1 - wzpółczynnik tarcia na gwincie + +X=2,0 - współczynnik bezpieczeństwa + +do= dn + 3mm - zakładana średnica otworu pod śrubę + +Z uwagi na dokręcenie śrub kluczem, obowiązuje współczynnik skręcenia f=1,3 + +Klasa śrub 8,8 + +Na początku należy wprowadzić uproszczony model i z rysunku wyznaczyć schemat +obciążenia. + +Obliczenia sił i momentów działających na wspornik : + +Pierwszym krokiem jest przeniesienie sił do środka ciężkości połączenia + +![](https://izaac.pl/wp-content/uploads/2023/06/3-3-300x159.png) + +Następnie liczymy momenty i siły działające na śruby + +Promienie działania sił: + +Szukamy najbardziej obciążonej śruby + +Najbardziej obciążona śruba, to śruba dla punktu 1. + +Z twierdzenia cosinusów + +Gdzie + +(d_r)_min - minimalna średnica rdzenia śruby - na jej podstawie możemy dobrać +średnicę nominalną śruby dn + +Następnie obliczamy moment dokręcenia śruby/nakrętki + +M_dokr - Wymagany moment dokręcenia + +![](https://izaac.pl/wp-content/uploads/2023/06/8-4.png) + +M_g = Moment występujący na gwincie + +M_n = moment występujący na nakrętce + +W takim przypadku wzory do zastosowania w przypadku wyliczania momentu +dokręcenia nakręrtki dla śruby wypisane są poniżej + +μ_g- współczynnik tarcia gwintu + +dn - średnica nominalna + +D_T - średnica działania siły tarcia na nakrętce według oznaczeń + +Zatem moment dokręcenia nakrętki dopuszczalny dla klucza ręcznego wynosi + +R_min - minimalna długość klucza + +Długość klucza może wynieść nawet parę metrów. Nie oznacza to, że klucz musi +być taki długi, oznacza natomiast, że należy przykręcić śrubę wkrętarką lub +użyć klucza z przekładnią zapewniającą odpowiedni moment . + diff --git a/frontend/src/content/montaż-i-pasowanie-łożysk.md b/frontend/src/content/montaż-i-pasowanie-łożysk.md new file mode 100644 index 0000000..132770c --- /dev/null +++ b/frontend/src/content/montaż-i-pasowanie-łożysk.md @@ -0,0 +1,187 @@ +--- +title: "Montaż i pasowanie łożysk" +date: 2024-12-07 16:10:15 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } +] +--- + +### Montaż łożysk + + + +### Pasowanie łożysk + + + +## + +### **Montaż łożysk** + + + + + + +Aby poprawnie przeprowadzić montaż łożysk, konieczne jest zachowanie wysokiej +czystości łożyska oraz wału/osi na którym będzie ono montowane. Wysoka +czystość może być zapewniona przez: + +\- przemycie łożyska rozpuszczalnikiem smaru ( takim aby nie powodował korozji +łożyska). suszenie + +\- wytarcie mniej odpowiedzialnych łożysk delikatną szmatką + +Montaż łożysk może odbywać się przez + +\- Wsunięcie łożyska na wał. Prosty montaż, należy zapewnić równomierne +rozłożenie sił na pierscieniu łożyska (za pomocą specjalnej praski lub +tulejki). Nie należy wbijać łożyska młotkiem i punktakiem, gdyż taka metoda +powoduje ukosowanie łożyska na wale). + +\- Nałożenie rozgrzanego do około 70-80°C łożyska (rozszerzone termicznie +łożysko) na chłodny wał o temperaturze pokojowej ~20°C. Montaż stosowany dla +uzyskania wysokiego wcisku. + +\- Nakładanie łożyska z otworem stożkowym - polega na osadzeniu łożyska na +wale i dociśnięciu pierścienia drugiego z siłą zapewniającą pracę łożyska. + + + +**Osadzanie łożysk** + +Każde łożysko musi być ustalone (zabezpieczone przed osiowym przesunięciem) w +stosunku do tego elementu w którym jest ciasno pasowane - samo ciasne +pasowanie nie wystarczy + +Stosuje się + +\- pierścienie osadcze sprężynujące (Z – zewnętrzne) + +\- podkładka z otworami ze śrubami – znormalizowane + +\- nakrętka łożyskowa (np.KM) + podkładka zębata (np. MB) zabezpiecza przed +odkręceniem – znormalizowane. + +-specjalna podkładka zabezpieczająca do lożysk z uszczelnieniem (np. osadzenia łżyska z otworem stożkowym. + +Każde łożysko ustalające musi być ustalone w szczególności w stosunku do +elementu z którym jest ciasno pasowane + +Pierścień osadczy sprężynujący wewnętrzny (W) + +Pierścień osadczy + łożysko z rowkiem + +Osadzanie łożysk swobodnych + +Każde łożysko swobodne musi mieć swobodę ruchu osiowego w obie strony w +stosunku do elementu w którym jest luźno pasowane + +**Osadzanie łożysk z otworami stożkowymi – bezpośrednio za pomocą tulei** + +Osadzenie łożyska na czopie wału oraz w oprawie. + +Wał ustalony w jednym łożysku. + +Wał ustalony w dwóch łożyskach. + +Docisk pierścieniowy zewnętrzny przy pomocy nakrętki okrągłej, przeciętej i +zaciskanej wkrętami. + +Mocowanie łożyska w połączeniu z mocowaniem kół zębatych na wale. + +Łożyska oddzielone tuleją odległościową. + +Łożyskowanie wrzeciona szlifierki. + +Łożyskowanie wała na łożyskach stożkowo rolkowych z regulacją na wałku. + + +### **Pasowanie łożysk** + + +Pasowanie łożysk to proces montażu łożyska w odpowiednim gnieździe lub na +wałku w taki sposób, aby zapewnić właściwą współpracę elementów i trwałość +układu. Odpowiedni dobór pasowania ma duże znaczenie dla trwałości i +poprawności działania łożyska. + + +### Rodzaje pasowań + + +**Pasowanie luźne:** +* Umożliwia łatwy montaż i demontaż. +* Stosowane, gdy nie występują duże obciążenia promieniowe lub wał podlega wydłużeniom cieplnym. +* Typowe dla zewnętrznych pierścieni łożysk w obudowach stacjonarnych. + +**Pasowanie ciasne (wciskiem):** +* Zapewnia stabilność i brak ruchu pomiędzy łożyskiem a gniazdem/wałkiem. +* Stosowane w przypadku dużych obciążeń lub zmiennych kierunków obciążeń. +* Typowe dla wewnętrznych pierścieni łożysk montowanych na wałach. + +**Pasowanie mieszane:** +* Zapewnia kompromis pomiędzy luźnym a ciasnym pasowaniem. Są wykorzystywane w układach, gdzie wymagane są umiarkowane tolerancje ruchu. + +W celu zapewnienia zwiększenia obciążenia wstępnego łozyska kulkowego zwykłego +(nie skośnego) należy zastosować większy wcisk. Docisk kulek zapewnia +równomierne obciążenie elementów tocznych, dzięki czemu wydłużamy jego życie. + + + + + +**Tolerancje czopa wału pod łożyska (przykłady zastosowań)** + + + +**Tolerancje są określane zgodnie z normami ISO (np. ISO 286).** + +Tolerancja czopa łożyska | Średnica czopa | Tolerancja czopa wg ISO +---|---|--- +Warunki pracy | Przykłady | Łożysko skośne | Łożysko poprzeczne +kulkowe | rolkowe | kulkowe | rolkowe +Ruchomy wałek lub przypadek niepewny | Obciążenie małe lub zmienne | Przyrządy elektryczne, wentylatory, małe pompy | ≤ 18 | ≤ 40 | - | - | j6 lub j5 +- | - | ≤ 100 | ≤ 40 | j6 lub k6 +>18 | 40-100 | - | - | k6 lub k5 +- | - | > 100 | 40 - 100 | k6 +- | 100-250 | - | - | m5 +- | - | - | 100 - 250 | m6 +Obciążenie duże i średnie | Silniki elektryczne, turbiny, duże pompy, silniki spalinowe | ≤ 100 | ≤ 40 | ≤ 18 | - | k6 lub k5 +- | - | ≤ 100 | ≤ 40 | k6 +>100 | 40-180 | - | - | m6 lub m5 +- | - | >100 | 40-180 | m6 +- | 180-250 | - | - | n5 +- | - | - | 180-250 | n6 +Obciążenia duże z uderzeniami | Osie wagonów, silniki tradycyjne, korbowody | Łożyska z otworami walcowymi | n6 lub p6 +Obciążenia duże | Osie wagonów | Łożyska osadzone na tulejach stożkowych | h9/IT5 +Obciążenia średnie | Wały pędniane | H10/IT7 +Ruchoma oprawa | Łożyska przesuwne na wale | Koła osadzone na nieruchomym czopie | Łożyska z otworami walcowymi (dla wszystkich średnic) | g6 +Łożyska nieprzesuwne na wale | Koła linowe, rolki, przednie koła samochodu | h6 +Obciążenia tylko wzdłużne (złożone z ruchomą oprawą) | j6 +Ruchomy wałek | Obciążenia złożone. Łożysko wzdłużne baryłkowe d < 200 mm | k6 +Obciążenia złożone. Łożysko wzdłużne baryłkowe d > 200 mm | m6 + + +**Tolerancje otworów w gnieździe łożyskowym żeliwnym lub stalowym.** + +Warunki pracy | Przykłady | Tolerancja wg ISO +---|---|--- +Ruchoma oprawa niedzielona | Obciążenie duże, cienkościenna oprawa | Koła na łożyskach rolkowych, łożyska korbowe, koła linowe | P7 +Obciążenie duże lub średnie | Koła na łożyskach rolkowych, łożyska korbowe, koła linowe oraz koła na łożyskach kulkowych | N7 +Obciążenie małe i zmienne | Rolki transporterów i silniki elektryczne | M7 +Ruchomy wałek lub niepewny | Obciążenie duże lub średnie, pierścieńzewnętrzny nieprzesuwny w gnieździe | Wrzeciona obrabiarek | N6 lub M6 +Przednie i tylne koła samochodów i traktorów | K7 +Wrzeciona szlifierek, łożyska główne wałów korbowych | K6 +Obciążenie średnie pierścień zewnętrzny przesuwny w gnieździe | Duże wentylatory, wirówki, pompy, osie wagonów, silniki elektryczne | J7 +Wrzeciona obrabiarek do metalu lub drewna | J6 +Ruchomy wałek | Obciążenie duże lub średnie | Łożyska większości mechanizmów | H7 +Obciążenie średnie lub małe, oprawa dzielona | Wały pędniane, łożyska rolkowe wzdłużne | H8 +Doprowadzenie ciepła przez wał | Cylindry suszarń | G7 + diff --git a/frontend/src/content/najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania.md b/frontend/src/content/najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania.md new file mode 100644 index 0000000..a74e988 --- /dev/null +++ b/frontend/src/content/najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania.md @@ -0,0 +1,289 @@ +--- +title: "Najważniejsze informacje o łożyskach, rodzaje i zastosowania" +date: 2024-12-07 16:10:11 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } +] +--- + +### Łożyska – informacje ogólne + +Klasyfikacja Łożysk +Charakterystyczne cechy łożysk + +Metody minimalizacji zużycia łożysk i elementów tocznych +Ocena łożysk pod względem ich użycia. +Właściwości łożysk w podanych warunkach +Oznaczenia łożysk tocznych +Zalety i wady łożysk tocznych względem łożysk ślizgowych + +Charakterystyczne cechy łożysk i ich stosowanie +Łożyska kulkowe zwykłe +Łożyska walcowe +Łożyska stożkowe +Łożyska baryłkowe + + +## **Łożyska - informacje ogólne** + + +**Łożysko** to element maszynowy, którego zadaniem jest podtrzymanie +obracających lub przesuwających się wałów, osi oraz innych elementów ruchomych +maszyn. + +Jednym z podstawowych zadań łożyska jest przejęcie obciążeń i przekazywanie +ich na korpus lub fundament, czyli podstawę na której oparte jest urządzenie. +W większości przypadków łożysk się nie projektuje oddzielnie. Są elementami +szeroko znormalizowanymi wybieranymi z katalogów firm oferujących wachlarz +możliwości. + +1 - pierścień zewnętrzny, 2 - element toczny, 3 - pierścień wewnętrzny, 4 - +koszyk + + +### **Klasyfikacja Łożysk** + + +Podstawowa klasyfikacja łożysk to klasyfikacja względem kierunku obciążenia i +rodzaju tarcia. Łożyska mogą przejmować obciążenia osiowe, wzdłuż osi wału +oraz promieniowe. + +Rodzaj tarcia dzieli łożyska na toczne, w których występują elementy toczące +się zapewniające ruch oraz ślizgowe takie jak hydrodynamiczne lub suche, w +których za zmniejszenie tarcia odpowiada kolejno płyn lub materiał z małym +tarciem ślizgowym (np. brąz lub specjalne powłoki). + +Klasyfikacja ze względu na przenoszenie tarcia: + + +### **Charakterystyczne cechy łożysk:** + +* **Łożyska umożliwiają ruch względny** między współpracującymi elementami, zapewniając płynność i precyzję działania. +* **Łożyska przenoszą obciążenia pomiędzy elementem ruchomym a nieruchomym** i odwrotnie, stabilizując konstrukcję i chroniąc komponenty przed nadmiernym ścieraniem. +* **Minimalizacja sił tarcia to jedna z kluczowych cech łożysk** , dzięki której zmniejsza się zużycie współpracujących i ruchomych części, co prowadzi do większej trwałości oraz efektywności pracy układu + + +### **Metody minimalizacji zużycia łożysk i elementów tocznych** + +* **Metoda konstrukcyjna** – Łożyska hydrodynamiczne są wyposażone w płynne łoże, po którym "ślizga się" wał lub oś. Dzięki temu rozwiązaniu uzyskujemy bardzo niskie tarcie między wałem a oprawą, co skutecznie minimalizuje zużycie elementów poruszających się względem siebie. +* **Cechy technologiczne** – Dobór odpowiednich materiałów i powłok w konstrukcji łożysk oraz wałów pozwala zwiększyć ich trwałość oraz odporność na zużycie i obciążenia mechaniczne. +* **Właściwości eksploatacyjne** – Ważną rolę w wydajności łożysk tocznych odgrywają właściwe sposoby smarowania, które zapewniają trwałość i sprawność działania nawet w wymagających warunkach pracy. W przypadku pracy ze smarem i olejem należy wziąć pod uwagę graniczną prędkość i temperaturę. Występują także smary suche takie jak MoS2 + + +### **Ocena łożysk pod względem ich użycia.** + + +Poniższa tabela przedstawia ogólne zastosowanie łożysk z oceną dla danych +warunków pracy. Stanowi ona dobry punkt odniesienia do wyboru łożyska dla +naszych zastosowań. Jeśli nie wiesz jakie łożysko zastosować, to ta tabelka +może ci pomóc określić wstępne uogólnione parametry, którymi możesz się +kierować. + +Rodzaj łożyska | Dokładne centrowanie | Dodatkowe obciążenia wzdłużne | Opory ruchu | Cichobierzność | Normalizacja | Prostota smarowania +---|---|---|---|---|---|--- +Niemetalowe łożyska o tarciu suchym lub mieszanym | Złe | na ogół mogą występować | Złe - duże | Przeciętne | częściowe | Doskonałe +Łożyska ze spieków impregnowane olejem | Dobre | Dopuszczalne niewielkie | Dobre - nieznaczne | Doskonałe | x | x +Łożyska toczne | Dobre | na ogół mogą występować | Bardzo dobre - małe | Zadowalające | całkowite | doskonałe +Łożyska hydrodynamiczne | Przeciętne | Wymaga osobnego łożyska wzdłużnego | Dobre - nieznaczne | Doskonałe | x | x +Łożyska hydrostatyczne | Doskonałe | Wymaga osobnego łożyska wzdłużnego | Doskonałe - bardzo małe | Doskonałe | x | x + + + +### **Właściwości łożysk w podanych warunkach** + + +Poniższa tabela przedstawia właściwości łożysk w danych warunkach. Nie każde +łożysko sprawuje się tak samo w tym samym środowisku. Przy doborze i +projektowaniu łożysk należy mieć to zawsze na uwadze. + +Rodzaj łożyska | Wysoka temperatura | niska temperatura | próżnia | wilgoć | zabrudzenia i pył | drgania +---|---|---|---|---|---|--- +Niemetalowe łożysko o tarciu suchym lub mieszanym | dobre do granicznej temperatury danego materiału | dobre | doskonałe | dobre, wał musi być wykonany z materiału niekorozynjego | dobre, uszczelki do zabezpieczenia | dobre +Łożyska ze spieków impregnowane olejem | złe, olej się utlenia | przeważnie duże opory ruchu | wymagany specjalny olej | dobre | wymagane uszczelnienie | dobre +Łożyska otczne | powyżej 160C wymagają chłodzenia | dobre | przeciętne, wymagania specjalnego oleju | dobre ze specjalnym uszczelnieniem | wymagane uszczelki | dobre dla niektórych typów łożysk +Łożyska hydrodynamiczne | dobre do granicznej temperatury danego materiału | dobre, duże opory rozruchu | wymagany specjalny olej | dobre | dobre, wymagające filtrowania i uszczelniania | dobre +Łożyska hydrostatyczne | doskonałe przy smarach gazowych | dobre | nie | dobre | dobre przy smarach gazowych | doskonałe + + +## + +### **Oznaczenia łożysk tocznych** + + +Oznaczenia łożysk tocznych są standardyzowane i składają się z sekwencji cyfr +oraz liter, które opisują cechy łożyska, takie jak jego typ, rozmiar, +konstrukcję i dodatkowe właściwości. Systemy oznaczeń różnią się w zależności +od producenta, ale na całym świecie stosowane są normy ułatwiające ich +identyfikację. + +Pełna normalizacja łożysk zapewnia nam: +* **Przewidywalne i gwarantowane przez producenta właściwości** – Standaryzowane łożyska charakteryzują się stałą jakością i zgodnością techniczną, co pozwala przewidzieć ich zachowanie i wytrzymałość w określonych warunkach pracy. +* **Ogólnie dostępne algorytmy obliczeniowe** – Dzięki standaryzacji parametry łożysk można obliczać przy użyciu szeroko stosowanych wzorów i metod, co ułatwia dobór właściwego łożyska do danego zastosowania oraz przewidywanie jego trwałości. +* **Łatwą dostępność dla średnic mniejszych niż 500 mm** – Normy obejmują szeroki zakres wymiarów, szczególnie tych poniżej 500 mm, co odpowiada na potrzeby większości aplikacji przemysłowych i mechanicznych, zapewniając jednocześnie szeroką dostępność i szybkość realizacji zamówień. +* **Łatwe zastępowanie łożyskami innych producentów** – Normalizacja umożliwia wymianę łożyska na produkt innego producenta o identycznych wymiarach i właściwościach, daje nam to swobodę wyboru dostawcy i pozwala na obniżenie kosztów eksploatacji bez konieczności wprowadzania zmian konstrukcyjnych. + +Poniżej przedstawiona została tabela oznaczenia łożysk tocznych z opisem. + +Kody łożysk + +**0** \- łożysko kulkowe dwurzędowe + +**1** \- łożysko kulkowe wahliwe + +**2** \- łożysko baryłkowe, łożysko baryłkowe wzdłużne + +**3** \- łożysko stożkowe + +**4** \- łożysko kulkowe zwykłe dwurzędowe + +**5** \- łożyska kulkowe wzdłużne + +**6** \- łożyska kulkowe zwykłe jednorzędowe + +**7** \- łożyska kulkowe skośne jednorzędowe + +**8** \- łożysko walcowe wzdłużne + +**C** \- łożysko toroidalne + +**N** \- łożysko walcowe + +**QJ** \- łożysko kulkowe skośne + +**T** \- łożysko stożkowe według normy ISO 355-2007 + +Kolejne litery oznaczenia łożysk mogą dotyczyć np. zastosowanego +uszczelnienia, zabezpieczenia rowków pod elementy ustalające itp. +* **Z, ZZ** – uszczelnienie z jednej lub obu stron łożyska +* **C** – klasa luzu wewnętrznego, np. C2, C3, C4 +* **P, K** – oznaczenia specjalnych dokładności + + +### **Zalety i wady łożysk tocznych względem łożysk ślizgowych** + + +Łożyska toczne są preferowanym rozwiązaniem w wielu urządzeniach i +mechanizmach, które wymagają niezawodności, łatwości obsługi i efektywności +kosztowej. Stąd też przedstawiamy wady i zalety względem łożysk ślizgowych + +**Zalety łożysk tocznych** +* **Mniejsze opory tarcia** niż w przypadku łożysk o tarciu suchym lub mieszanym, co przekłada się na wyższą wydajność i niższe zużycie energii. +* **Niskie tarcie spoczynkowe** , co jest szczególnie korzystne przy częstym rozruchu i zatrzymywaniu mechanizmów, gdzie potrzebna jest szybka reakcja i płynne działanie. +* **Duża sztywność podparcia** , zapewniająca stabilność i precyzję ruchu, co wpływa na dłuższą żywotność łożyska i lepszą wydajność całego układu. +* **Mniejsza wrażliwość na przekoszenia** , umożliwia lepsze dopasowanie łożyska w systemach o nieidealnej osiowości. +* **Niska wrażliwość na ilość substancji smarnej** , dzięki czemu łożyska te są mniej zależne od idealnych warunków smarowania, co zmniejsza ryzyko uszkodzeń w warunkach zmiennej eksploatacji. +* **Mniejsze zużycie środków smarnych** , co jest korzystne dla środowiska i redukuje koszty eksploatacji. +* **Kompaktowy wymiar wzdłużny** , dzięki czemu łożyska toczne można stosować w miejscach o ograniczonej przestrzeni montażowej. +* **Łatwa obsługa** , co pozwala na szybszą i mniej skomplikowaną konserwację, nawet bez specjalistycznego przeszkolenia. +* **Daleko idąca normalizacja** , umożliwiająca łatwą wymianę i dostępność zamienników od różnych producentów. +* **Proste remonty** , dzięki możliwości wymiany całego zespołu łożyskowego, co eliminuje potrzebę regeneracji lub wymiany samego czopu. +* **Niskie koszty dla łożysk małych i średnich rozmiarów** , co sprawia, że są one opłacalnym wyborem w wielu aplikacjach przemysłowych i mechanicznych. + +**Wady łożysk tocznych** +* **Niska trwałość zmęczeniowa** , sprawia, że łożyska toczne mogą ulegać szybkiemu zużyciu w warunkach intensywnego, długotrwałego i zmiennego obciążenia. +* **Niska odporność na obciążenia dynamiczne, drgania i duże prędkości** , ogranicza ich zastosowanie w maszynach pracujących w trudnych warunkach i przy dużych obciążeniach zmiennych. +* **Większe opory przy dużych przyspieszeniach elementów tocznych** , które mogą ograniczać sprawność w aplikacjach wymagających szybkich zmian prędkości. +* **Większy wymiar średnicy zewnętrznej** , może stanowić problem w aplikacjach, gdzie wymagana jest kompaktowa konstrukcja. +* **Mała odporność na zanieczyszczenia i korozję** , przez co łożyska toczne wymagają starannej ochrony i regularnej konserwacji w trudnym środowisku pracy. +* **Brak możliwości dzielenia łożyska w płaszczyźnie osiowej** , utrudnia montaż i demontaż, szczególnie w zamkniętych przestrzeniach. +* **Duże siły montażowe przy dużych rozmiarach** , wymagające specjalistycznych narzędzi i metod montażowych, co zwiększa trudność i czasochłonność instalacji. +* **Większy hałas i drgania** , ponieważ łożyska toczne nie mają zdolności tłumienia drgań, może negatywnie wpływać na komfort użytkowania oraz pracę innych komponentów. +* **Wysoki koszt dla dużych średnic** , sprawia, że łożyska toczne są mniej opłacalne w zastosowaniach wymagających dużych rozmiarów. + + +### **Charakterystyczne cechy łożysk i stosowanie** + + + + + +### **Poniżej przedstawione zostały tabele określająca charakterystyczne + +wymiary dla poszczególnych łożysk tocznych. Dzięki tym parametrom możemy +klasyfikować je, opisywać, wybierać na podstawie obliczeń oraz** + + +### **Łożyska kulkowe zwykłe** + + + + +Łożyska kulkowe zwykłe są popularnym rozwiązaniem, oferują dobry stosunek ceny +do funkcjonalności w aplikacjach, gdzie nie występują ekstremalne warunki +obciążeniowe oraz duże przekoszenia. +* **Przeznaczone do małych i średnich obciążeń** , czyni je odpowiednimi łożyskami do większości standardowych zastosowań. +* **Zdolność do przenoszenia obciążeń poprzecznych** , z możliwością obsługi niewielkiego udziału obciążeń wzdłużnych, dzięki czemu są stosowane w wielu układach o prostych wymaganiach obciążeniowych. +* **Wrażliwość na przekoszenie** – łożyska te są mniej skuteczne, jeśli dochodzi do nieosiowości, co może prowadzić do ich szybszego zużycia. +* **Powszechna dostępność i niska cena** – ze względu na szerokie zastosowanie są łatwe do nabycia i stosunkowo tanie, co czyni je ekonomicznym wyborem. +* **Niskie tarcie toczne** , co przekłada się na wyższą efektywność i niższe straty energi. + + + + + + +### **Łożyska walcowe + + +** + +Łożyska walcowe charakteryzują się prostą budową i wysoką wytrzymałością, +dzięki czemu są idealnym rozwiązaniem wszędzie tam, gdzie konieczne jest +przenoszenie dużych obciążeń przy stosunkowo niskim tarciu. Składają się z +wałeczków o cylindrycznym kształcie , które toczą się pomiędzy pierścieniem +wewnętrznym a zewnętrznym łożyska. W odróżnieniu od łożysk kulkowych, wałeczki +walcowe mają większą powierzchnię styku, co umożliwia lepsze rozłożenie sił i +pozwala na przenoszenie wyższych obciążeń. Łożyska walcowe mogą być +* **jednorzędowe** – przenoszą wyłącznie obciążenia promieniowe i są stosowane w aplikacjach o dużych prędkościach obrotowych. +* **dwurzędowe** – mają większą nośność i są stosowane tam, gdzie wymagana jest większa stabilność i odporność na siły boczne. +* **wielorzędowe** – przeznaczone do przenoszenia bardzo dużych obciążeń, stosowane głównie w przemyśle ciężkim. + +Łożyska walcowe znajdują zastosowanie w motoryzacji np. w skrzyniach biegów, +wałach napędowych, dyferencjałach, przemyśle maszynowym (w maszynach +produkcyjnych, obrabiarkach, systemach transportowych), energetyce (w +turbinach wiatrowych, generatorach prądu wymagających wysokiej wytrzymałości) +oraz w górnictwie i hutnictwie (w urządzeniach ciężkich, gdzie potrzebna jest +odporność na ekstremalne obciążenia i trudne warunki pracy). +* **Duża obciążalność** – dzięki swojej konstrukcji z wałeczkami o dużej powierzchni styku z bieżniami, łożyska walcowe są w stanie przenosić znaczne obciążenia promieniowe, zapewniając wysoką wytrzymałość i niezawodność w wymagających warunkach pracy. +* **Przenoszenie tylko obciążeń poprzecznych** – łożyska walcowe są zaprojektowane do efektywnego przenoszenia sił działających prostopadle do osi wału. Nie są przystosowane do przenoszenia obciążeń osiowych, co wymaga stosowania dodatkowych łożysk w przypadkach, gdzie mogą występować takie siły. +* **Wrażliwość na przekoszenia** – ze względu na sztywność konstrukcji, łożyska walcowe są wrażliwe na błędy w osiowości montażu. Nawet niewielkie przekoszenia mogą prowadzić do nierównomiernego rozkładu obciążeń, nadmiernego zużycia czy uszkodzeń, co podkreśla znaczenie precyzyjnego montażu i odpowiedniej obróbki współpracujących elementów. + + +### **Łożyska stożkowe** + + +Łożyska stożkowe to rodzaj łożysk tocznych, w których elementami tocznymi są +stożkowe wałeczki umieszczone między stożkowymi bieżniami pierścieni +wewnętrznego i zewnętrznego. Daje to możliwość przenoszenia obciążeń +promieniowyc i osiowych. +* **Średnia i duża obciążalność -** Łożyska stożkowe są zdolne do przenoszenia zarówno średnich, jak i dużych obciążeń. Ich konstrukcja pozwala na efektywne rozłożenie sił na powierzchni bieżni i elementów tocznych. +* **Możliwość przenoszenia obciążeń poprzecznych i wzdłużnych -** Dzięki stożkowej geometrii wałeczków i bieżni, łożyska wałeczkowe przenoszą obciążenia promieniowe (poprzeczne) oraz osiowe (wzdłużne) w jednym kierunku. Umożliwia to ich zastosowanie w układach, gdzie występują złożone siły działające w różnych kierunkach. Często stosowane są w parach przeciwstawnych, aby przenosić obciążenia osiowe w obu kierunkach. Układy łożysk dzielimy na układ O i układ X +* **Bardzo wrażliwe na przekoszenia -** Wymagają precyzyjnego montażu ze względu na wrażliwość na niewspółosiowość wału i oprawy. Nawet niewielkie przekoszenia mogą prowadzić do nierównomiernego obciążenia elementów tocznych. Niewłaściwe ustawienie może skutkować przyspieszonym zużyciem lub uszkodzeniem łożyska. +* **Konieczność pracy w układach napiętych wstępnie -** Łożyska stożkowe często wymagają napięcia wstępnego podczas montażu. Napięcie wstępne eliminuje luzy wewnętrzne i zwiększa sztywność. + + +### **Łożyska baryłkowe** + + +**Łożyska baryłkowe** to typ łożysk tocznych, w których elementami tocznymi są +baryłki o kształcie przypominającym dwuwypukłe soczewki. Dzięki takiej +konstrukcji są zdolne do przenoszenia bardzo dużych obciążeń promieniowych +oraz osiowych w obu kierunkach, jednocześnie kompensując niewspółosiowość wału +względem oprawy. Jedną najbardziej charakterystycznych cech jest ich kulista +bieżnia, która umożliwia samonastawność łożyska. +* **Średnia i duża obciążalność -** Łożyska baryłkowe są zaprojektowane do przenoszenia zarówno średnich, jak i dużych obciążeń promieniowych. Konstrukcja z baryłkowatymi elementami tocznymi pozwala na równomierne rozłożenie obciążeń na bieżniach. Idealne do zastosowań, gdzie występują duże obciążenia i potrzebna jest niezawodność, np. w maszynach ciężkich. +* **Możliwość przenoszenia obciążeń poprzecznych i wzdłużnych, ale słabiej niż łożyska stożkowe -** Łożyska baryłkowe mogą przenosić obciążenia promieniowe (poprzeczne) oraz osiowe (wzdłużne) w obu kierunkach. Choć potrafią przenosić obciążenia osiowe, ich zdolność w tym zakresie jest mniejsza niż w przypadku łożysk stożkowych. Stosowane tam, gdzie obciążenia osiowe nie są dominujące, ale wciąż obecne. +* **Wysoka tolerancja na wahania współosiowości, niewrażliwość na przekoszenia -** Dzięki kulistej bieżni pierścienia zewnętrznego, łożyska baryłkowe są zdolne do samoczynnego dostosowywania się do niewspółosiowości wału względem oprawy. +Mogą kompensować odchylenia kątowe zwykle do około 2° między wałem a oprawą +bez negatywnego wpływu na funkcjonowanie. Konstrukcja sprawia, że są mało +wrażliwe na błędy montażowe i ugięcia wału, co zwiększa ich niezawodność w +trudnych warunkach pracy. Idealne w aplikacjach, gdzie mogą wystąpić ugięcia +wału lub trudności z precyzyjnym montażem. + diff --git a/frontend/src/content/new_index.json b/frontend/src/content/new_index.json new file mode 100644 index 0000000..3f55bb3 --- /dev/null +++ b/frontend/src/content/new_index.json @@ -0,0 +1,1113 @@ +[ + { + "id": "gwinty_-kompleksowy-przewodnik-_-od-opisu-po-tolerancje", + "title": "Gwinty: Kompleksowy Przewodnik – Od Opisu po Tolerancje", + "category": { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + }, + "date": "2025-04-02T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } + ] + }, + { + "id": "przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni", + "title": "Przekładnie łańcuchowe -informacje i projektowanie przekładni", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-03-27T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "spawanie-mig_-tig_-mag---wszystko-o-spoinach_", + "title": "Spawanie MIG, TIG, MAG - Wszystko o spoinach.", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-03-26T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-spawane", + "category_name": "Połączenia spawane" + } + ] + }, + { + "id": "trygonometria", + "title": "Trygonometria", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2025-03-16T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "rysunek-techniczny---wszystko-co-musisz-wiedzieć", + "title": "Rysunek Techniczny - wszystko co musisz wiedzieć", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-03-10T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "rysunek-techniczny", + "category_name": "Rysunek Techniczny" + } + ] + }, + { + "id": "sprężyna", + "title": "Sprężyna", + "category": { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + "date": "2025-03-05T21:53:55.000Z", + "categories": [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } + ] + }, + { + "id": "wytrzymałość-zmęczeniowa-wału", + "title": "Wytrzymałość zmęczeniowa wału", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-02-22T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } + ] + }, + { + "id": "rodzaje-śrub_-nakrętek-i-podkładek", + "title": "Rodzaje śrub, nakrętek i podkładek", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-01-30T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } + ] + }, + { + "id": "najważniejsze-informacje-o-łożyskach_-rodzaje-i-zastosowania", + "title": "Najważniejsze informacje o łożyskach, rodzaje i zastosowania", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-01-29T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } + ] + }, + { + "id": "przeliczniki-jednostek-podstawowych-wielkości-fizycznych", + "title": "Przeliczniki jednostek podstawowych wielkości fizycznych", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2025-01-28T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "przykład-obliczeniowy-wytrzymałości-konstrukcji-jednolitej", + "title": "Przykład obliczeniowy wytrzymałości konstrukcji jednolitej", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-01-27T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } + ] + }, + { + "id": "połączenia-wielowypustowe", + "title": "Połączenia wielowypustowe", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-01-25T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-wielowypustowe", + "category_name": "połączenia wielowypustowe" + } + ] + }, + { + "id": "zamiana-cala-angielskiego-na-milimetry", + "title": "Zamiana Cala angielskiego na milimetry", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2025-01-25T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej", + "title": "Oznaczanie chropowatości powierzchni i obróbki powierzchniowej", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2025-01-16T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "rysunek-techniczny", + "category_name": "Rysunek Techniczny" + } + ] + }, + { + "id": "obliczanie-połączenia-kołnierzowego-z-uszczelką-gumową-przy-użyciu-metody-asme", + "title": "Obliczanie połączenia kołnierzowego z uszczelką gumową przy użyciu metody ASME", + "category": { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + "date": "2025-01-16T21:53:55.000Z", + "categories": [ + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + }, + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "współczynnik-y-i-m-uszczelek-według-asme", + "title": "Współczynnik y i m uszczelek według ASME", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2025-01-15T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "przekładnie-cierne---informacje-i-obliczenia", + "title": "Przekładnie cierne - informacje i obliczenia", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-12-31T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "projektowanie-wałów-napędowych", + "title": "Projektowanie wałów napędowych", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-12-21T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "śmieszne", + "category_name": "śmieszne" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } + ] + }, + { + "id": "przekładnie-z-pasem-klinowym", + "title": "Przekładnie z pasem klinowym", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-12-08T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "drgania-wału", + "title": "Drgania wału", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-11-29T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } + ] + }, + { + "id": "moment-dokręcania-śrub-i-inne-obliczenia-połączeń-śrubowych", + "title": "Moment dokręcania śrub i inne obliczenia połączeń śrubowych", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-11-22T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } + ] + }, + { + "id": "wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń", + "title": "Wyznaczanie długości ze względu dopuszczalne naciski powierzchniowe - Połączenia wieloboczne - projektowanie połączeń", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-11-21T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-wieloboczne", + "category_name": "połączenia wieloboczne" + } + ] + }, + { + "id": "projektowanie-sprężyn", + "title": "Projektowanie Sprężyn", + "category": { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + "date": "2024-11-16T21:53:55.000Z", + "categories": [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } + ] + }, + { + "id": "zamiana-koni-mechanicznych-na-kilowaty-i-kilowatów-na-konie-mechaniczne", + "title": "Zamiana Koni Mechanicznych na Kilowaty i Kilowatów na Konie Mechaniczne", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-11-10T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "łożyskowanie-maszyn_-przewodnik-po-obliczeniach-i-praktyczne-wskazówki", + "title": "Łożyskowanie maszyn: Przewodnik po obliczeniach i praktyczne wskazówki", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-10-31T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } + ] + }, + { + "id": "montaż-i-pasowanie-łożysk", + "title": "Montaż i pasowanie łożysk", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-10-14T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } + ] + }, + { + "id": "przekładnie---informacje-ogólne-i-podstawowe-parametry-przekładni", + "title": "Przekładnie - informacje ogólne i podstawowe parametry przekładni", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-10-11T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "technologia-śrub_-wszystko-o-projektowaniu-połaczeń-śrobowych", + "title": "Technologia Śrub: Wszystko o projektowaniu połaczeń śrobowych", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-10-02T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } + ] + }, + { + "id": "połączenia-wciskowe", + "title": "Połączenia wciskowe", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-09-24T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-cierne-czop-cylinder", + "category_name": "połączenia cierne czop-cylinder" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + } + ] + }, + { + "id": "obciążenia-udarowe-sprężyn--projektowanie-sprężyn", + "title": "Obciążenia udarowe sprężyn- Projektowanie sprężyn", + "category": { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + "date": "2024-09-23T21:53:55.000Z", + "categories": [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } + ] + }, + { + "id": "tablice-fizyczne", + "title": "Tablice fizyczne", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-09-19T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "obliczenia-belek-zginanych_-skręcanych-i-ściskanych_-rozkłady-naprężeń-w-belkach_-wyboczenie-prętów", + "title": "Obliczenia belek zginanych, skręcanych i ściskanych, rozkłady naprężeń w belkach, wyboczenie prętów", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-09-10T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } + ] + }, + { + "id": "obliczenia-połączeń-spawanych", + "title": "Obliczenia połączeń spawanych", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-09-03T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-spawane", + "category_name": "Połączenia spawane" + } + ] + }, + { + "id": "współczynniki-tarcia---połączenia-cierne-czopowe-cylindryczne-_-dodatki", + "title": "Współczynniki tarcia - Połączenia cierne czopowe cylindryczne – dodatki", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-09-01T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-cierne-czop-cylinder", + "category_name": "połączenia cierne czop-cylinder" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + } + ] + }, + { + "id": "współczynniki-bezpieczeństwa", + "title": "Współczynniki bezpieczeństwa", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-08-29T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "przykłady-obliczeniowe", + "title": "Przykłady obliczeniowe", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-08-28T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "wytrzymałość-na-rozciąganie_-skręcanie_-ścianie-oraz-zginanie", + "title": "Wytrzymałość na rozciąganie, skręcanie, ścianie oraz zginanie", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-27T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } + ] + }, + { + "id": "rodzaje-połączeń-wielobocznych---połączenia-wieloboczne---informacje-ogólne", + "title": "Rodzaje połączeń wielobocznych - Połączenia wieloboczne - informacje ogólne", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-19T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-wieloboczne", + "category_name": "połączenia wieloboczne" + } + ] + }, + { + "id": "hamulce---informacje-ogólne-i-podstawowe-obliczenia", + "title": "Hamulce - informacje ogólne i podstawowe obliczenia", + "category": { + "category_id": "hamulce", + "category_name": "Hamulce" + }, + "date": "2024-07-18T21:53:55.000Z", + "categories": [ + { + "category_id": "hamulce", + "category_name": "Hamulce" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "wpust-pryzmatyczny---połączenia-wpustowe", + "title": "Wpust pryzmatyczny - połączenia wpustowe", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-18T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-z-wpustem-pryzmatycznym", + "category_name": "połączenia z wpustem pryzmatycznym" + } + ] + }, + { + "id": "wały-wykorbione--dodatki", + "title": "Wały wykorbione- Dodatki", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-14T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } + ] + }, + { + "id": "podstawowe-informacje-o-wałach-i-osiach", + "title": "Podstawowe informacje o wałach i osiach", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-10T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } + ] + }, + { + "id": "podstawy-wytrzymałości-materiałów", + "title": "Podstawy wytrzymałości materiałów", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-05T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } + ] + }, + { + "id": "zespoły-sprężyn---projektowanie-sprężyn", + "title": "Zespoły sprężyn - Projektowanie sprężyn", + "category": { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + "date": "2024-07-05T21:53:55.000Z", + "categories": [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } + ] + }, + { + "id": "przekładnie-pasowe-_-informacje-podstawowe", + "title": "Przekładnie pasowe – informacje podstawowe", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-07-02T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "sprzęgła---charakterystyka-podział-i-opis", + "title": "Sprzęgła - charakterystyka podział i opis", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-06-26T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "sprzęgła", + "category_name": "Sprzęgła" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } + ] + }, + { + "id": "wzory-i-wykresy-dla-zginania-belek-przy-stałym-obciążeniu", + "title": "Wzory i wykresy dla zginania belek przy stałym obciążeniu", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-06-05T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "charakterystyczne-cechy-i-zastosowanie-łożysk---informacje-ogólne", + "title": "Charakterystyczne cechy i zastosowanie łożysk - Informacje ogólne", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-05-09T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } + ] + }, + { + "id": "stałe-fizyczne", + "title": "Stałe Fizyczne", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-04-30T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "tabele-geometryczne", + "title": "Tabele geometryczne", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-04-22T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + }, + { + "id": "połączenia-cierne-stożkowe", + "title": "Połączenia cierne stożkowe", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-04-20T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-cierne-stożkowe", + "category_name": "połączenia cierne stożkowe" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + } + ] + }, + { + "id": "moduł-younga-i-statyczna-próba-rozciągania", + "title": "Moduł Younga i statyczna próba rozciągania", + "category": { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + "date": "2024-04-16T21:53:55.000Z", + "categories": [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } + ] + }, + { + "id": "jednostki-miar", + "title": "Jednostki miar", + "category": { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + }, + "date": "2024-04-08T21:53:55.000Z", + "categories": [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } + ] + } +] \ No newline at end of file diff --git a/frontend/src/content/obciążenia-udarowe-sprężyn--projektowanie-sprężyn.md b/frontend/src/content/obciążenia-udarowe-sprężyn--projektowanie-sprężyn.md new file mode 100644 index 0000000..dc02352 --- /dev/null +++ b/frontend/src/content/obciążenia-udarowe-sprężyn--projektowanie-sprężyn.md @@ -0,0 +1,44 @@ +--- +title: "Obciążenia udarowe sprężyn- Projektowanie sprężyn" +date: 2022-01-03 10:15:27 +categories: [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } +] +--- + +## **Obciążenia udarowe** + + +**Obciążenia udarowe** \- obciążenia dynamiczne, które wprawiają układ w +drgania. Aby zapobiec zniszczeniu sprężyny należy unikać zbyt silnych uderzeń +oraz uderzeń pulsujących o częstotliwości takiej samej, bądź wielokrotności +częstotliwości własnej sprężyny. + +A – praca sprężyny + +Pmax - maksymalna siła jaką można pobudzić sprężynę aby nie uległa ona +uszkodzeniu w skutek nadmiaru energii. + +m - masa obiektu uderzającego + +v - prędkość z jaką obiekt uderza w sprężynę + +C - sztywność sprężyny + +f_max - maksymalna możliwa strzałka ugięcia + +Uwzględniamy warunki jedynie bez tłumienia : + +Okres drgań własnych : + +Częstość drgań własnych : + +Dla drgań skrętnych : + diff --git a/frontend/src/content/obliczanie-połączenia-kołnierzowego-z-uszczelką-gumową-przy-użyciu-metody-asme.md b/frontend/src/content/obliczanie-połączenia-kołnierzowego-z-uszczelką-gumową-przy-użyciu-metody-asme.md new file mode 100644 index 0000000..6e6c01c --- /dev/null +++ b/frontend/src/content/obliczanie-połączenia-kołnierzowego-z-uszczelką-gumową-przy-użyciu-metody-asme.md @@ -0,0 +1,101 @@ +--- +title: "Obliczanie połączenia kołnierzowego z uszczelką gumową przy użyciu metody ASME" +date: 2023-06-29 20:01:53 +categories: [ + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + }, + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Obliczanie połączenia z uszczelką gumową kołnierza przy użyciu metody + +ASME - moment dokręcenia śrub** + +Dane: + +G,Hg, lb,tn, + +Ab – pole powierzchni przekroju rdzenia śruby + +Pw – napięcie wstępne śruby + +p – ciśnienie działające na połączenie + +**[Współczynniki obliczeniowe uszczelki](https://izaac.pl/pomoceinzynierskie/wspolczynnik-y-i-m-uszczelek-wedlug-asme)** + +m – współczynnik uszczelki - wartości współczynnika m uszczelki są używane +jako mnożnik do określenia niezbędnego obciążenia ściskającego uszczelki, aby +zachować szczelność, gdy rura jest pod ciśnieniem + +Y – minimalne obciążenie uszczelki, dla uszczelek gumowych = 0, Współczynnik y +uszczelki jest wymagany do obliczenia początkowego obciążenia uszczelki +wymaganego w warunkach temperatury atmosferycznej, gdy nie działa wewnętrzne +ciśnienie płynu. Jest wyrażane w jednostkach ciśnienia kPa + +tg – grubość uszczelki + +b = 1/2 szerokości uszczelki - efektywna szerokość osadzenia uszczelki – w +trakcie narastania ciśnienia uszczelka ulega odkształceniu, zakładamy że +połowa grubości uszczelki będzie ostatecznie doszczelniać powierzchnie +flanszy/krezy + +k – współczynnik tarcia między śrubą/nakrętką i nakrętką/flanszą + +n - liczba śrub + +Klasa śrub : np. 10.9 **[i]** + +Eb – Moduł sprężystości materiału śrub + +Eg – Moduł sprężystości uszczelki + +Następnie pole powierzchni uszczelki + +![](https://izaac.pl/wp-content/uploads/2023/06/1-2-300x140.png) + +Obliczamy siłę napięcia wstępnego + +![](https://izaac.pl/wp-content/uploads/2023/06/2-4-300x70.png) + +należy obliczyć siłę hydrostatyczną H i siłę Hp + +![](https://izaac.pl/wp-content/uploads/2023/06/3-4.png) + +![](https://izaac.pl/wp-content/uploads/2023/06/4-3-300x61.png) + +Następnie minimalna wymagana siła zacisku uszczelki + +![](https://izaac.pl/wp-content/uploads/2023/06/5-3-300x84.png) + +Siła reakcyjna kompresji flanszy + +![](https://izaac.pl/wp-content/uploads/2023/06/6-3-300x122.png) + +W przypadku w którym Eg/Eb -> 0 – możemy uznać, że ∆F jest siłą pomijalną + +Dla uszczelek gumowych + +![](https://izaac.pl/wp-content/uploads/2023/06/7-5-300x268.png) + +Więc + +![](https://izaac.pl/wp-content/uploads/2023/06/8-5-300x105.png) + +Orientacyjny **[moment dokręcenia śruby](https://izaac.pl/inzynieriamechaniczna/obliczanie-srub-krok-po-kroku) **w takim razie wynosi + +![](https://izaac.pl/wp-content/uploads/2023/06/9-3-300x65.png) + diff --git a/frontend/src/content/obliczenia-belek-zginanych_-skręcanych-i-ściskanych_-rozkłady-naprężeń-w-belkach_-wyboczenie-prętów.md b/frontend/src/content/obliczenia-belek-zginanych_-skręcanych-i-ściskanych_-rozkłady-naprężeń-w-belkach_-wyboczenie-prętów.md new file mode 100644 index 0000000..94fd2e3 --- /dev/null +++ b/frontend/src/content/obliczenia-belek-zginanych_-skręcanych-i-ściskanych_-rozkłady-naprężeń-w-belkach_-wyboczenie-prętów.md @@ -0,0 +1,160 @@ +--- +title: "Obliczenia belek zginanych, skręcanych i ściskanych, rozkłady naprężeń w belkach, wyboczenie prętów" +date: 2024-02-29 21:28:14 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } +] +--- + +### Schemat belki – obliczenia z objaśnieniami + + + +### Układy statycznie niewyznaczalne – równania i przykład + +* ##### Równania równowagi statycznej +* ##### Brakujące równanie + + +### Wyboczenie prętów – objaśnienie i równania + +* ##### wzór Eulera +* ##### Krytyczne naprężenie ściskające, które prowadzi do wyboczenia + + +### + +## Schemat belki - obliczenia z objaśnieniami + + +**qx** \- obciążenie ciągłe + +**Wyznaczamy równania równowagi statycznej.** + +Aby układ pozostawał w równowadze suma sił w osi y musi być równa 0. Suma sił +w osi X musi być równa 0 oraz suma momentów sił działających na układ musi być +równa 0. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.63.jpg) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.64.jpg) | – pochodne drugiego rzędu w przypadku zginania belki można pominąć gdyż dążą do 0 +---|--- + +![](https://izaac.pl/wp-content/uploads/2023/11/2.65.jpg) + +Po wyprowadzeniu z powyższych równań sił **T** , **RB** oraz **RA** możemy +przejść do wstawienia ich w układ + +![](https://izaac.pl/wp-content/uploads/2023/11/2.66.jpg) + +Od prawej strony zgodnie z odcinaniem belki w przekrojach charakterystycznych, +takich przed którymi nie występują inne siły. Rozkładamy układ złożony na +prostsze elementy. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.67.jpg) + +Naprężenia w pręcie zginanym + +![](https://izaac.pl/wp-content/uploads/2023/11/1.32.jpg) + +Wskaźnik Wytrzymałości przekroju na zginanie w osi obojętnej zginania +przechodzącej przez oś z. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.68-wskaznik-wytrzymalosci- +na-zginanie.jpg) + +J_z - Moment bezwładności przekroju w osi Z. + +y_max = 1/2h - jest najdalszym zginanym włóknem od osi obojętnej zginania + +Naprężenia zginające (mające charakter naprężeń rozciągających bądź +ściskających): + +![](https://izaac.pl/wp-content/uploads/2023/11/2.69-naprezenia-od-momentu- +gnacego.jpg)[Wskaźnik Wytrzymałości przekroju na +zginanie](https://izaac.pl/pomoce-inzynierskie/tabele-geometryczne) w osi +obojętnej zginania + +Gdzie k_g – naprężenia dopuszczalne na zginanie + + +## Układy statycznie niewyznaczalne – równania i przykład + + +Dla układów statycznych wyznaczalnych tzn. nie przesztywnionych, reakcje można +było wyznaczyć na podstawie równań statyki ciała doskonale sztywnego. Nie +działa to jednak w przypadku układów dla których istnieje więcej reakcji +(niewiadomych) niż warunków równowagi statycznej. + +Równania równowagi : + +![](https://izaac.pl/wp-content/uploads/2023/11/2.53-rownania-rownowagi- +statycznej.jpg) + +Brakujące równanie otrzymamy ze stosunku odkształceń, gdyż dla układów +przesztywnionych to właśnie one odpowiadają za reakcje. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.54.jpg) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.55.jpg) + + +## Wyboczenie prętów – objaśnienie i równania + + +Wyboczenie jest formą utraty stateczności. Wyboczenie może wystąpić w +elementach smukłych, takich jak, pręty czy ściany, gdy naprężenia ściskające +osiągną wartość krytyczną, powodując ich boczne wygięcie (wyboczenie) zamiast +równomiernego ściskania. + +Wyboczenie prętów - czyli inaczej utrata stateczności pręta ściskanego + +![](https://izaac.pl/wp-content/uploads/2023/11/2.86-Wyboczenie- +pretow-–-utrata-statecznosci-preta-sciskanego.jpg) + +Gdzie + +n = 1,2,3… (liczba naturalna) + +E - moduł Younga materiału + +J - moment bezwładności przekroju, + +l - długość pręta, czasami oznaczana l_w + +Krytyczną siłę ściskającą, która prowadzi do wyboczenia, można określić za +pomocą wzoru Eulera dla idealnych warunków sprężystego wyboczenia: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.87-wzor-Eulera.jpg) | – wzór Eulera na krytyczną siłę ściskającą powodującą wyboczenie +---|--- + +J_min – najmniejszy główny centralny moment bezwładności przekroju +poprzecznego pręta + +Naprężenie krytyczne przyjmuje postać + +![](https://izaac.pl/wp-content/uploads/2023/11/2.88-wyboczenie-preta- +naprezenia-krytyczne.jpg) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.89-minimalny-promien-bezwladnosci-przekroju.jpg) | – minimalny promień bezwładności przekroju +---|--- +![](https://izaac.pl/wp-content/uploads/2023/11/2.90-wymiar-harakterystyczny-preta.jpg) | \- wymiar harakterystyczny pręta + + +Zatem Krytyczne naprężenie ściskające, które prowadzi do wyboczenia, można +określić za pomocą wzoru: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.91.jpg) + +wzór Johnsona Ostenfelda + +![](https://izaac.pl/wp-content/uploads/2023/11/2.92-wzor-Johnsona- +Ostenfelda.jpg) + diff --git a/frontend/src/content/obliczenia-połączeń-spawanych.md b/frontend/src/content/obliczenia-połączeń-spawanych.md new file mode 100644 index 0000000..4e310cf --- /dev/null +++ b/frontend/src/content/obliczenia-połączeń-spawanych.md @@ -0,0 +1,579 @@ +--- +title: "Obliczenia połączeń spawanych" +date: 2024-02-10 23:18:05 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-spawane", + "category_name": "Połączenia spawane" + } +] +--- + +### Projektowanie połączeń spawanych – rozkład naprężeń + + + +### Obliczanie połączenia spawanego + +* #### Naprężenia dopuszczalne połączenia spawanego dla spoiny czołowej +* #### Naprężenia dopuszczalne połączenia spawanego dla spoin pachwinowych - obliczanie spoiny pachwinowej połączenia spawanego +* #### Obliczanie wysokości spoiny pachwinowej - minimalna grubość spoiny pachwinowej +* #### Naprężenia dopuszczalne połączenia spawanego - wzór ogólny + + +### Warunki wytrzymałości spoin przy obciążeniach prostych + + + +### Tabela warunków wytrzymałościowych spoin + + + +### przy obciążeniach złożonych + + + +### Przykład obliczeniowy połączenia spawanego + + + +### Obliczenia Spoiny Skręcanej i Zginanej + +* #### Pierwszy dla spoiny pachwinowej +* #### Drugi dla spoiny czołowej + +**Obliczenia połączeń spawanychto proces projektowania i analizy spoin pod +kątem ich wytrzymałości i bezpieczeństwa. Uwzględnia obciążenia, materiał oraz +warunki pracy, by zapewnić trwałość i niezawodność. Aby zacząć budować model +obliczeniowy połączenia spawanego należy dokładnie wiedzieć, jak zachodzi +proces spawania różnymi metodami. Dzięki temu będziemy wiedzieć o +stosowalności naszych obliczeń oraz granicach, o których musimy pamiętać.** + +Przy łączeniu materiału ze sobą, za pomocą spawania w miejscu spoiny aby +wytopić materiał zazwyczaj wprowadzamy dużą ilość ciepła. To ciepło sprawia, +że metal w obszarze spawania rozszerza się, a kiedy później się ochładza, +próbuje skurczyć się z powrotem. Problem polega na tym, że metal nie może się +swobodnie skurczyć z powodu swojej sztywności i obecności chłodniejszych +obszarów dookoła spoiny. To prowadzi do "zamknięcia" w metalu pewnych napięć, +podobnie jak sprężyny, które zostały naciągnięte lub ściśnięte i nie mogą +wrócić do swojego pierwotnego stanu. **Dla obliczeń analitycznych** +projektowania połączenia spawanego – przedstawionych poniżej, efekt ten się +pomija. Jednak należy o nim pamiętać. Natomiast sama geometria spoiny, będąca +wynikiem procesu spawania (dokładania materiału) wpływa na przebieg naprężeń w +materiale. Ten efekt nazywamy spiętrzeniem naprężeń. Zgodnie z analogią +hydrodynamiczną naprężeń, przepływają one jak woda w rzece będąc zaburzonymi w +miejscu spoiny, piętrząc się. + +W celu niwelowania naprężeń spawalniczych w niektórych przypadkach ogrzewa się +materiał do pewnej temperatury i powoli wychładza. + +Poniżej przedstawione zostały prawdopodobne przebiegi linii sił i rozkład +naprężeń normalnych. + +Rozkład naprężeń w przekroju spoiny czołowej + +![](https://izaac.pl/wp-content/uploads/2022/02/71-300x97.png) + +W spoinie czołowej, naprężenia przepływają z pominięciem wypustu, +najważniejsze aby spoina nie miała wgłębień, ponieważ we wgłębieniach +następuje spiętrzenie. + +Rozkład naprężeń w przekroju spoiny połączenia nakładkowego + +![](https://izaac.pl/wp-content/uploads/2022/02/72-300x94.png) + +Rozkład naprężeń w przekroju spoiny połączenia zakładkowego + +![](https://izaac.pl/wp-content/uploads/2022/02/73-300x94.png) + +Rozkład naprężeń w przekroju dwustronnej spoiny pachwinowej + +![](https://izaac.pl/wp-content/uploads/2022/02/74-300x99.png) + +Rozkład naprężeń w przekroju jednostronnej spoiny pachwinowej + +![](https://izaac.pl/wp-content/uploads/2022/02/75-300x99.png) + +Rozkład naprężeń w przekroju spoiny typu K + +![](https://izaac.pl/wp-content/uploads/2022/02/76-300x99.png) + + +### **Obliczenia połączeń spawanych - metodyka** + + +Dla obliczenia połączeń spawanych najlepszą hipotezą wytrzymałościową stanowi +**hipoteza Hubera–von Misesa** , która zakłada, że zniszczenie materiału +następuje, gdy energia odkształcenia postaciowego osiągnie wartość graniczną. +Hipoteza ta sprawdza się szczególnie dobrze w spawanych konstrukcjach, +ponieważ uwzględnia wpływ naprężeń w różnych kierunkach, co pozwala na +precyzyjniejsze oszacowanie stanu granicznego materiału. + +Obliczenia połączeń spawanych obejmują głównie dwa rodzaje spoin: **spoiny +czołowe** i **spoiny pachwinowe**. Spoina czołowa, stosowana przy łączeniu +elementów o równej grubości, charakteryzuje się pełnym przetopem i wysoką +wytrzymałością na rozciąganie. Z kolei spoina pachwinowa, używana do łączenia +elementów pod kątem względem siebie, wymaga analizy ścinania, które jest +kluczowe dla oceny jej wytrzymałości. + +Proces obliczeń uwzględnia: + + 1. **Rodzaj materiału** – uwzględniający jego właściwości mechaniczne, takie jak granica plastyczności i wytrzymałość na pękanie. + 2. **Naprężenia** – analizowane pod kątem rozciągania, ścinania i skręcania. + 3. **Współczynniki bezpieczeństwa** – zapewniające margines wytrzymałości konstrukcji w ekstremalnych warunkach. + 4. **Grubość spoiny** – odpowiednio dobrana, aby zapewnić nośność zgodnie z normami + +Więcej szczegółowych informacji na ten temat można znaleźć w naszym artykule +**[o wytrzymałości materiałów,](https://izaac.pl/inzynieriamechaniczna/hipotezy-wytrzymalosciowe)** gdzie opisano podstawy teoretyczne i +praktyczne zastosowania tej hipotezy. + + +### **Naprężenia dopuszczalne połączenia spawanego dla spoiny czołowej** + + +W spoinie czołowej obciążenia są analizowane zgodnie z ich rzeczywistym +charakterem, a to oznacza, że: +* **Naprężenia normalne** (σ) wynikające z obciążeń prostopadłych do przekroju spoiny traktujemy jako naprężenia normalne. +* **Naprężenia styczne** (τ) wynikające z obciążeń równoległych do przekroju spoiny traktujemy jako naprężenia styczne. + +Jest to istotne w kontekście analizy wytrzymałości, ponieważ + +Naprężenia zastępcze więc przyjmują postać : + +W przypadku znacznej dominacji naprężeń stycznych (np. dla spoiny skręcanej) – +naprężenia zastępcze mają charakter naprężeń ścinających a więc stycznych co +jest zgodne z poniższym: + +Gdzie : + +„‘ ” oznacza naprężenia występujące w spoinie, nie w materiale rodzimym + + +### **Naprężenia dopuszczalne połączenia spawanego dla spoin pachwinowych - + +obliczanie spoiny pachwinowej** + +W przypadku spoin pachwinowych zmienia się podejście do traktowania naprężeń. +W spoinach pachwinowych zarówno naprężenia normalne (σ) występujące w +przekroju spoiny, jak i naprężenia styczne (τ) są traktowane jako naprężenia +styczne. Oznacza to, że w tych spoinach uwzględnia się tylko efekt ścinania w +analizie naprężeń. +* **Naprężenia teoretycznie normalne** (σ) wynikające z obciążeń prostopadłych do przekroju spoiny traktujemy jako naprężenia styczne. +* **Naprężenia styczne** (τ) wynikające z obciążeń równoległych do przekroju spoiny traktujemy jako naprężenia styczne. + +Z racji tego, że traktujemy wszystkie naprężenia jak naprężenia styczne to +dodajemy je zgodnie z zasadą dodawania wektorów. + +Dla spoiny dwustronnej skręcanej pachwinowej : + +**DODAĆ ZDJĘCIE** + + +### **Obliczanie wysokości spoiny pachwinowej - minimalna grubość spoiny + +pachwinowej** + +W przypadku spawania nie zawsze elementy są tej samej długości i grubości. Z +tego względu możemy wyróżnić dwa przypadki dla których należy dobrać +odpowiednią grubość spoiny + +Pierwszy, w którym grubość blachy dospawanej prostopadle jest większa niż +grubość blachy podstawy - minimalna grubość spoiny pachwinowej wynosi: + +Drugi w którym grubość blachy dospawanej prostopadle jest mniejsza niż grubość +blachy podstawy - minimalna grubość spoiny pachwinowej wynosi : + + +### **Naprężenia dopuszczalne połączenia spawanego - wzór ogólny** + + +Naprężenia dopuszczalne połączenia spawanego to maksymalne wartości naprężeń, +jakie materiał spoiny może wytrzymać bez ryzyka uszkodzenia. Ich określenie +jest niezbędne podczas obliczania połączeń spawanych i projektowania +połączenia spawanego, aby zapewnić bezpieczeństwo konstrukcji. W ramach +obliczeń wytrzymałościowych połączeń spawanych bierze się pod uwagę takie +czynniki jak warunki eksploatacji, rodzaj obciążenia (statyczne lub +dynamiczne) oraz potencjalne skutki zmęczenia materiału. + +Dla obciążeń statycznych zakłada się że naprężenia dopuszczalne połączenia +spawanego przyjmują postać : + +**k'** \- naprężenia dopuszczalne dla spoiny + +**z** \- współczynnik jakości spoiny + +**=0,5** \- przyjmujemy dla spoiny zwykłej jakości (oznacza to, że dopuszczamy +dwukrotne osłabienie spoiny z samego faktu braku kontroli jej jakości) + +**=1** – przyjmujemy dla spoiny kontrolowanej + +**z o **\- współczynnik rodzaju obciążenia + +Poniżej przedstawione są wartości współczynnika rodzaju obciążenia dla danego +rodzaju obciążenia + +Rodzaj spoiny | Rodzaj obciążenia statycznego | Zo +---|---|--- +Czołowe | | +| Sciskanie | 0,85 +| Zginanie | 0,80 +| Rozciąganie | 0,75 +| Styczne | 0,65 +Pachwinowe | | +| wszystkie | 0,65 + +Dla spoin pachwinowych wszystkie naprężenia przenoszone są jako naprężenia +styczne. Dzięki temu łatwiej zapamiętać, że wszystkie obciążenia mają taki sam +współczynnik rodzaju obciążenia dla tych spoin. + +**k** – naprężenia dopuszczalne dla materiału rodzimego + +**Re** \- granica plastyczności materiału + +**x** \- [**współczynnik bezpieczeństwa**](https://izaac.pl/inzynieriamechaniczna/wspolczynniki-bezpieczenstwa) + +Dla obciążeń dynamicznych istnieje specjalny współczynnik obliczeniowy dla +spoin **Za** , natomiast wzór na naprężenia dopuszczalne dla spoiny przyjmuje +postać + +**Z a** –współczynnik rodzaju obciążeń i kształtu dla spoiny przy obciążeniach +dynamicznych + + +### **Warunki wytrzymałości spoin przy obciążeniach prostych** + + +Rodzaj obciążenia | Schemat obciążenia | Przekrój obliczeniowy | Warunek wytrzymałościowy +---|---|---|--- +Roziąganie | ![](https://izaac.pl/wp-content/uploads/2022/02/57.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/64.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/54.png) +Ścinanie | ![](https://izaac.pl/wp-content/uploads/2022/02/58.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/64.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/53.png) +Ścinanie | ![](https://izaac.pl/wp-content/uploads/2022/02/59.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/66.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/56.png) +Ścinanie | ![](https://izaac.pl/wp-content/uploads/2022/02/60.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/67.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/56.png) +Ścinanie | ![](https://izaac.pl/wp-content/uploads/2022/02/61.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/68-241x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/56.png) +Ścinanie | ![](https://izaac.pl/wp-content/uploads/2022/02/62.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/69-300x181.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/56.png) +Ścinanie | ![](https://izaac.pl/wp-content/uploads/2022/02/63.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/70-300x191.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/56.png) + + + +### **Tabela warunków wytrzymałościowych spoin dla obciążeń złożonych** + + + +### + +### + + + +### + +### + +Aby uprościć obliczanie spoin można skorzystać z przedstawionej poniżej +tabeli. Zawiera ona gotowe wzory na naprężenia zredukowane i geometrie +spoin. + + + + + +Połączenie | Przekrój obliczeniowy | Naprężenia obliczeniowe | Naprężenia zredukowane +---|---|---|--- +Połączenie w belkach zginanych ![](https://izaac.pl/wp-content/uploads/2022/03/156-300x127.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/157-300x158.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/16-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/17-2-300x58.png) +Spoina wzdłużna w belkach zginanych obciążonych momentem Mg i siłą poprzeczną Q ![](https://izaac.pl/wp-content/uploads/2022/03/158-300x231.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/159-300x167.png) | Dla spoiny przerywanej ![](https://izaac.pl/wp-content/uploads/2022/01/18-1.png) g=2a – dla spoiny dwustronnej pachwinowej S- moment statyczny względem centralnej osi bezwładności x, części przekroju poprzecznego ![](https://izaac.pl/wp-content/uploads/2022/01/19-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/20-1-300x44.png) +Spoina pachwinowa obciążona momentem gnącym Mg i siłą poprzeczną Q ![](https://izaac.pl/wp-content/uploads/2022/03/160-300x148.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/161-300x163.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/21-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/22-1-300x70.png) +Spoina pachwinowa obciążona momentem skręcającym, momentem gnącym i siłą poprzeczną ![](https://izaac.pl/wp-content/uploads/2022/03/162-300x174.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/163-300x127.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/23-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/24-1-300x55.png) + + +## **Przykład obliczeniowy połączenia spawanego** + + +Aby najlepiej zrozumieć proces obliczeniowy przedstawiamy poniżej idealny +przykład obliczania wytrzymałości połączeń spawanych wspornika wykonanego ze +stali. + +Treść : Wspornik traktowany jako metalowa konstrukcja spawana, obciążony +został dwiema składowymi siłami P. Należy sprawdzić jego bezpieczeństwo. + +Dane: + +d, b, D, n, c, u, h, r, H, Re, X, z, z_a, Zog, Zor, Zoc, Zost + +Re-440MPa - granica plastyczności +Rm = 600MPa - granica wytrzymałości materiału na rozciąganie +μ = 0 - wzpółczynnik tarcia + +X=2,5 - współczynnik bezpieczeństwa + + +### **Wprowadzamy model uproszczony** + + +Na początku należy wprowadzić uproszczony model belkowy układu. Wprowadzenie +takiego modelu pozwala nam na oszczędzanie informacji do takich, które są +przydatne w danym momencie. + +Na pierwszym rysunku oznaczone zostały miejsca niebezpieczne symbolami +I,II,III i IV. Takie niebezpieczne miejsca wyznaczamy sami na podstawie modelu +obciążeń, tam gdzie pojawią się największe obciążenia na konstrukcji i tam +gdzie spodziewamy się spiętrzeń naprężeń. W przypadku liczenia połączeń +spawanych przekrojem niebezpiecznym jest przekrój występowania spoiny - +ponieważ ją chcemy liczyć i zakładamy, że to ona jest niebezpieczna. Jako +pierwsze, należy wyznaczyć ogólny rozkład sił na wsporniku. Pomijamy geometrię +i na potrzeby "abstrakcyjnych" obliczeń zakładamy wszystkie elementy +konstrukcyjne jako liniowe. Na tym etapie jeszcze nie liczymy docelowych spoin +a jedynie rozkładamy obciążenia, które będą nam uszkadzać spoiny w konkretnych +miejscach. + +Wprowadzamy globalny układ współrzędnych i przeprowadzamy obliczenia sił i +momentów działających na wspornik + +![](https://izaac.pl/wp-content/uploads/2023/04/wzor1.png) + +My - to moment w osi Y od siły Py + +![](https://izaac.pl/wp-content/uploads/2023/04/wzor2.png) + +Mz - to moment w osi Z od siły Pz + +Następnym krokiem jest naniesienie rozkładów sił i momentów na uproszczonym +modelu belkowym. + +**Długie ramie** +![](https://izaac.pl/wp-content/uploads/2023/04/wzor3.png) + +Ms - moment skręcający ramię + +Ta - siła tnąca działająca na ramię + +MG_max - maksymalny moment gnący + +**Krótkie ramie** +![](https://izaac.pl/wp-content/uploads/2023/06/1-300x289.png) + +Krótkie ramie jak widzimy z modelu jest dodatkowo rozciągane składową Py + +Na podstawie rozkładów sił, oraz geometrii należy wyznaczyć przekroje z +uwzględnieniem miejsc spoin + + +### **Obliczanie Przekrojów niebezpiecznych spoiny** + + + +### **Przekrój I-I** + + +Rysunek miejsca przekroju w miejscu I-I. Należy zwrócić uwagę na położenie +przekroju względem globalnego układu współrzędnych oraz nanieść na niego +obciążenia zgodnie z kierunkami według modelu uproszczonego. Obok rysunku +przedstawiającego przekrój spoiny przedstawiony jest inny rysunek zawierający +nałożenie tensorów naprężeń na geometrię spoiny i wyznaczenie konkretnego +punktu w którym będziemy liczyć wpływ tych tensorów naprężeń na naprężenie +zastępcze w tym miejscu. Naprężenie zastępcze to naprężenie zgodnie z +**[hipotezą Hubera - Von Missesa](https://izaac.pl/inzynieriamechaniczna/hipotezy-wytrzymalosciowe)** + + + +Wzory naprężeń i naprężeń zastępczych dla punktów najbardziej obciążonych, +zgodnie z rysunkiem powyżej + +gdzie + +Jx - moment bezwładności względem wprowadzonej osi obojętnej zginania x + +Jo = 2Jx biegunowy moment bezwładności - suma momentów osiowych względem +prostopadłych osi przechodzących przez ten biegun. + +Wx - wskaźnik wytrzymałości przekroju (na zginanie) w osi x. Wskaźniki +wytrzymałości przekrojów jak i inne właściwości figur znajdziesz po litreką +[**[i]**](https://izaac.pl/izaac.pl/pomoce-inzynierskie/tabele-geometryczne) + +Wo - wskaźnik wytrzymałości przekroju (na skręcanie) w biegunie o + +e_max - odległość włókna najbardziej oddalonego od środka zginania lub +skręcania + +Dla przekroju spoiny pachwinowej tensor naprężeń zastępczych przyjmje postać +naprężeń tnących i jest wypadkową tensorów wynikających z obciążeń dla +konkretnego punktu spoiny + + +### **Przekrój II-II** + + +Obliczamy tensory naprężeń + +gdzie + +Jx - moment bezwładności względem wprowadzonej osi obojętnej zginania x + +Jo = 2Jx - biegunowy moment bezwładności - suma momentów osiowych względem +prostopadłych osi przechodzących przez ten biegun. + +Wx - wskaźnik wytrzymałości przekroju (na zginanie) w osi x. Wskaźniki +wytrzymałości przekrojów jak i inne właściwości figur znajdziesz po litreką +[**[i]**](https://izaac.pl/izaac.pl/pomoce-inzynierskie/tabele-geometryczne) + +Wo - wskaźnik wytrzymałości przekroju (na skręcanie) w biegunie o + +e_max - odległość włókna najbardziej oddalonego od środka zginania lub +skręcania + + +### **Przekrój III-III** + + +Obliczamy tensory naprężeń + + +### **Przekrój IV-IV** + + + +### +Są to gotowe wzory na obliczanie konstrukcji spawanych. Miejscem + +niebezpiecznym spoiny jest punkt w którym naprężenia zastępcze przekraczają +dopuszczalne naprężenia na spoinie. Należy pamiętać, że obliczenia stanowią +jedynie formę poglądową i nie są one gwarancją wytrzymałości. Proces spawania +jest często procesem nieprzewidywalnym, wiele zależy od spawacza, materiałow +oraz urządzeń spawalniczych. + +Aby obliczenia były bardziej przewidywalne należy +* Dbać o stan narzędzi oraz przechowywać je w odpowiedni sposób - np. nie dopuścić do zawilgocenia elektrody otulinowej. +* Czyścić spoinę przed spawaniem i odtłuścić w miarę możliwości - np, alkoholem. +* Osuszyć miejsce spawania. +* Dbać o odpowiednią jakość gazów osłonowych. +* W przypadku spawania TIG dodatkowo zadbać o prawidłowy kształt końcówki elektrody wolframowej. +* Spawać gotowe detale na parametrach opracowanych na elementach próbnych. +* Wiedzieć jaki materiał spawamy np. poprzez dbanie o certyfikaty materiałowe, zapewniają one, że materiał ma konkretny skład chemiczny co w przypadku spawania jest kluczowe. + + +### **Obliczenia Spoiny Skręcanej i Zginanej** + + +Treść : Wspornik traktowany jako metalowa konstrukcja spawana . Dla podanych +danych i przypadków wyznaczyć wartość siły P, która może być przyłożona do +dźwigni z uwagi na wytrzymałość złączy spawanych. + +**Rozważymy dwa przypadki obciążenia:** + +Pierwszy dla spoiny pachwinowej + +Drugi dla spoiny czołowej + +**Dane:** + +D,d,b,L,Re,Rm,x,Z,Zovg,Zovr,Zost,Zo + +Re-440MPa - granica plastyczności +Rm = 600MPa - granica wytrzymałości materiału na rozciąganie +μ = 0 - wzpółczynnik tarcia +X=2,5 - współczynnik bezpieczeństwa + +**Na początku należy wprowadzić uproszczony model belkowy układu** + +Obliczenia sił i momentów działających na wspornik : + +Długie ramie a i krótkie ramie b +![](https://izaac.pl/wp-content/uploads/2023/06/5-1-300x287.png)**Następnym +krokiem jest naniesienie rozkładów sił i momentów na uproszczonym modelu +belkowym.** + +Na podstawie rozkładów sił, oraz geometrii należy wyznaczyć przekroje - takie +przekroje wspornika w których może coś się stać – np. Spiętrzenie naprężeń, +największe naprężenia itp. + + +### **Obliczanie Przekroju niebezpiecznego spoiny** + + + +### **Przekrój spoiny dla pierwszego przypadku - spoiny pachwinowej** + + +Dla spoiny pachwinowej obowiązuje zależność grubości spoiny do grubości ściany + +![](https://izaac.pl/wp-content/uploads/2023/06/6-1-300x194.png) + +**Warto zanotować** , że w przypadku w którym rura zmienia się w walec +obowiązuje zależność:![](https://izaac.pl/wp-content/uploads/2023/06/7-2.png) + +to traktujemy tę spoinę jako jednostronną pachwinową, na ścianie o boku D/2 +zawiniętej wokół osi. + +![](https://izaac.pl/wp-content/uploads/2023/06/7-3.png)Natomiast gdy rura +zmienia się w walec i + +![](https://izaac.pl/wp-content/uploads/2023/06/8-2.png) + +to + +![](https://izaac.pl/wp-content/uploads/2023/06/8-3.png) + +Wzory naprężeń i naprężeń zastępczych [](https://izaac.pl/inzynieria- +mechaniczna/polaczenia-spawane-projektowanie-polaczen-spawanych-obliczanie- +spoin)dla punktów najbardziej obciążonych, zgodnie z rysunkiem powyżej + +gdzie + +Z_o^k- współczynnik dla spoiny pachwinowej + +Jx - moment bezwładności względem wprowadzonej osi obojętnej zginania x + +Jo = 2Jx biegunowy moment bezwładności - suma momentów osiowych względem +prostopadłych osi przechodzących przez ten biegun. + +Wx - wskaźnik wytrzymałości przekroju (na zginanie) w osi x +[**[i]**](izaac.pl/pomoce-inzynierskie/tabele-geometryczne) + +Wo - wskaźnik wytrzymałości przekroju (na skręcanie) w biegunie o + +e_max - odległość włókna najbardziej oddalonego od środka zginania lub +skręcania + +Obliczenia maksymalnych dopuszczalnych sił dla punktów niebezpiecznych spoiny +pachwinowej zgodnie z**[hipoezą wytężeniową +Hubera](https://izaac.pl/inzynieria-mechaniczna/hipotezy-wytrzymalosciowe)** z +uwzględnieniem wzpółczynników dla spoiny pachwinowej, żadna z nich nie może +przekroczyć wartości po prawej stronie równania + + +### **Obliczanie Przekroju niebezpiecznego spoiny** + + + +### **Przekrój spoiny dla drugiego przypadku - spoiny czołowej** + + +gdzie + +Jx - moment bezwładności względem wprowadzonej osi obojętnej zginania x + +Jo = 2Jx - biegunowy moment bezwładności - suma momentów osiowych względem +prostopadłych osi przechodzących przez ten biegun. + +Wx - wskaźnik wytrzymałości przekroju (na zginanie) w osi x +[**[i]**](izaac.pl/pomoce-inzynierskie/tabele-geometryczne) + +Wo - wskaźnik wytrzymałości przekroju (na skręcanie) w biegunie o + +e_max - odległość włókna najbardziej oddalonego od środka zginania lub +skręcania + +Następnie obliczamy, tensory naprężeń i naprężenia zastępcze + +Obliczenia maksymalnych dopuszczalnych sił dla punktów niebezpiecznych spoiny +czołowej zgodnie z hipoezą wytężeniową Hubera z uwzględnieniem wzpółczynników +dla spoiny czołowej, żadna z nich nie może przekroczyć wartości po prawej +stronie równania + diff --git a/frontend/src/content/ogólne-pomoce-inżynierskie.md b/frontend/src/content/ogólne-pomoce-inżynierskie.md new file mode 100644 index 0000000..2346e99 --- /dev/null +++ b/frontend/src/content/ogólne-pomoce-inżynierskie.md @@ -0,0 +1,28 @@ +--- +title: "Ogólne pomoce inżynierskie" +date: 2022-10-18 18:42:50 +--- +# Pomoce inżynierskie + +Poniżej znajdziesz ogólne pomoce inżynierskie takie jak tabele geometryczne +dla figur 2D i 3D, przeliczniki jednostek, listy stałych i właściwości +materiałowych oraz wiele innych. Jeśli szukasz czegoś czego potrzebujesz a nie +możesz znaleźć na stronie, napisz do nas, postaramy się uzupełnić informacje +jak najszybciej. + +### Zamiana cala angielskiego na milimetry + +### Tabela geometryczna figur 2D + +### Układy jednostek i jednostki miar + +### Przeliczniki jednostek + +### Właściwości fizyczne ciał stałych + +### Przeliczniki Koni Mechanicznych na Waty + +### Tabela przedrostków + +### Tablice trygonometryczne + diff --git a/frontend/src/content/oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej.md b/frontend/src/content/oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej.md new file mode 100644 index 0000000..cac4e8d --- /dev/null +++ b/frontend/src/content/oznaczanie-chropowatości-powierzchni-i-obróbki-powierzchniowej.md @@ -0,0 +1,233 @@ +--- +title: "Oznaczanie chropowatości powierzchni i obróbki powierzchniowej" +date: 2024-09-09 18:18:55 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "rysunek-techniczny", + "category_name": "Rysunek Techniczny" + } +] +--- + +### Oznaczenia obróbki powierzchni + + + +### Chropowatość Ra + + + +### Chropowatosć Rz + + + +### Falistość powierzchni + + + +### Tabela Wartości chropowatośći Ra i Rz + + + +### Oznaczenie chropowatości w rysunku technicznym + + + +## **Oznaczenia obróbki powierzchni** + + +Obróbkę powierzchni oznacza się linia punktową grubą nad linią obrysu +powierzchni odrabianej. Zazwyczaj precyzujemy strzałką jaki ma to być rodzaj +obróbki np. hartowanie, chromowanie, polerowanie lub po prostu nakładamy +symbol obróbki np. najczęściej stosowanej chropowatości. + +Schemat oznaczenia obróbki powierzchni. + +[caption width="753" id="attachment_7573" align="aligncenter"]![oznaczanie +obróbki powierzchni](https://izaac.pl/wpcontent/uploads/2024/06/R118.-oznaczanie-obrobki-powierzchni.jpg) Oznaczanie +obróbki powierzchni.[/caption] + +Oznaczenie obróbki powierzchni na elemencie. + +[caption width="1402" id="attachment_7575" align="aligncenter"]![oznaczanie +hartowania](https://izaac.pl/wp-content/uploads/2024/06/R119.1.-oznaczaniehartowania.jpg) Oznaczanie hartowania.[/caption] + +Oznaczenia obszaru powierzchni przeznaczonej do obróbki. + +[caption width="443" id="attachment_7576" align="aligncenter"]![oznaczanie +powierzchni przeznaczonej na obróbkę](https://izaac.pl/wpcontent/uploads/2024/06/R119.3.-oznaczanie-powierzchni-przeznaczonej-naobrobke.jpg) Oznaczanie powierzchni przeznaczonej na obróbkę.[/caption] + +Oznaczenie chropowatości na wale. + +[caption width="758" id="attachment_7574" align="aligncenter"]![oznaczanie +obróbki powierzchni wału](https://izaac.pl/wpcontent/uploads/2024/06/R119.-oznaczanie-obrobki-powierzchni-walu.jpg) +Oznaczanie obróbki powierzchni wału.[/caption] + + +## **Chropowatość Ra** + + +chropowatość zdefiniowana jako średnia arytmetyczna wartości bezwzględnych +wysokości w ciągłym danym przedziale mierzonym. + +![](https://izaac.pl/wp-content/uploads/2024/06/R111.1w.-wzor-na-chropowatosc- +Ra.jpg) + +Gdzie : + +m – linia dzieląca profil chropowatości tak, że suma kwadratów odchyleń +profilu y od tej linii jest najmniejsza. + + +## **Chropowatość Rz** + + +chropowatość zdefiniowana jako średnia arytmetyczna wartości bezwzględnych +wysokości 5 najwyższych i 5 najniższych punktów w danym przedziale mierzonym. + +![wzór na chropowatość Rz](https://izaac.pl/wpcontent/uploads/2024/06/R111.2w.-wzor-na-chropowatosc-Rz.jpg) + +Wzór na chropowatość Rz. + + +## **Falistość powierzchni** + + +Falistość oznaczana literą W_z jest powierzchnią rzeczywistą o charakterze +losowym (np. po ścieraniu) lub okresowym (np. po toczeniu) których odstępy +znacznie przewyższają odstępy wystąpień w profilu chropowatości. Falistość +może być spowodowana drganiami maszyny obrabiającej. + +Gdzie: + +m_w – linia środkowa + +h_wp – wysokość wzniesień profilu. Odległość najwyższego wzniesienia od linii +m_w + +h_wv – głębokość wgłębienia profilu. Odległość największego wgłębienia od +linii m_w + +w_p – maksymalna wysokość wzniesienia profilu falistości + +w_v – maksymalna głębokość profilu falistości + +w_m = w_p+w_v - maksymalna wysokość profilu falistości + +S_w – odstęp falistości + +S_wm – średni odstęp falistości + +![](https://izaac.pl/wp-content/uploads/2024/06/R111.3w.-sredni-odstep- +falistosci.jpg) + +W_c – suma średnich wartości wysokości wzniesień i głębokości wgłębień profilu +falistości + +![](https://izaac.pl/wp-content/uploads/2024/06/R111.4w.-suma-srednich- +wartosci-wysokosci-wzniesien-i-glebokosci-wglebien-profilu-falistosci-1.jpg) + +W_a – średnie arytmetyczne odchylenie prof. Falistości + +![](https://izaac.pl/wp-content/uploads/2024/06/R111.4w.-srednie-arytmetyczne- +odchylenie-prof.-Falistosci.jpg) + +W_q – średnie kwadratowe odchylenie profilu falistości + +![](https://izaac.pl/wp-content/uploads/2024/06/R111.6w.-srednie-kwadratowe- +odchylenie-profilu-falistosci.jpg) + + +## **Tabela Wartości chropowatośći Ra i Rz** + + +**Ra** | 250 | **200** | 160 | 125 | **100** | 80 | 63 | **50** | 40 | 32 | **25** | 20 | 16 | **12,5** | 10 | 8 | **6,3** +---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|--- +**Rz** | _1000_ | **_800_** | _630_ | _500_ | **_400_** | _320_ | _250_ | **_200_** | _160_ | _125_ | **_100_** | _80_ | _63_ | **_50_** | _40_ | _32_ | **_25_** +**klasa** | | _-_ | _-_ | _-_ | _-_ | _1_ | _-_ | _-_ | _2_ | _-_ | _-_ | _3_ | _-_ | _-_ | _4_ | _-_ | _-_ +| | | | | | | | | | | | | | | | | +**Ra** | 5 | 4 | **3,2** | 2,5 | 2 | **1,6** | 1,25 | 1 | **0,8** | 0,63 | 0,5 | **0,4** | 0,32 | 0,25 | **0,2** | | +**Rz** | _20_ | _16_ | **_12,5_** | _10_ | _-_ | _-_ | **_6,3_** | _5_ | _4_ | **_3,2_** | _2,5_ | _2_ | **_1,6_** | _1,25_ | _1_ | | +**klasa** | _5_ | _-_ | _-_ | _6_ | _-_ | _-_ | _7_ | _-_ | _-_ | _8_ | _-_ | _-_ | _9_ | _-_ | _-_ | | +| | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | +**Ra** | 0,16 | 0,125 | **0,1** | 0,08 | 0,063 | **0,05** | 0,04 | 0,032 | **0,025** | 0,02 | 0,016 | **0,012** | 0,01 | 0,008 | | | +**Rz** | **_0,8_** | _0,63_ | _0,5_ | **_0,4_** | _0,32_ | _0,25_ | **_0,2_** | _0,16_ | _0,125_ | **_0,1_** | _0,08_ | _0,063_ | **_0,05_** | _0,04_ | | | +**klasa** | _10_ | _-_ | _-_ | _11_ | _-_ | _-_ | _12_ | _-_ | _-_ | _13_ | _-_ | _-_ | | _14_ | | | + + +## **Oznaczenie chropowatości w rysunku technicznym** + + +Poniżej znajduje się symbol oznaczenia chropowatości. + +[caption width="586" id="attachment_7588" align="aligncenter"]![Oznaczanie +chropowatości](https://izaac.pl/wp-content/uploads/2024/06/R113.-Oznaczaniechropowatosci.jpg)Oznaczanie chropowatości.[/caption] + +Gdzie : + +a – wartość chropowatości Ra w mikrometrach poprzedzona symbolem Ra + +b – metoda wykonania/rodzaj obróbki. Opisuje wymagania procesu +technologicznego + +c – długość odcinka elementarnego (można pominąć) + +d – kierunek obróbki powierzchni + +e – naddatek na obróbkę + +f – wartość parametru chropowatości inna niż Ra w mikrometrach, poprzedzona +odpowiednim symbolem np. Rz + + +### Symbole oznaczeń struktury powierzchni + + +![](https://izaac.pl/wp-content/uploads/2024/06/R114.1-symbol-chropowatosci-z-dowolnym-sposobem-obrobki.jpg) | Dowolny proces obróbki. +---|--- +![](https://izaac.pl/wp-content/uploads/2024/06/R114.2-symbol-chropowatosci-z-obrobka-skrawaniem.jpg) | Obróbka skrawaniem. +![](https://izaac.pl/wp-content/uploads/2024/06/R114.3-symbol-chropowatosci-z-zakazem-usuniecia-materialu.jpg) | Usunięcie warstwy materiału jest niedopuszczalne – np. pasywacja (która nie usuwa materiału). +![](https://izaac.pl/wp-content/uploads/2024/06/R114.4-symbol-chropowatosci-z-wstawieniem-szczegolnej-cechy.jpg) | Symbol uzupełniający o szczególną cechę. +![](https://izaac.pl/wp-content/uploads/2024/06/R114.5-symbol-chropowatosci-z-ta-sama-struktura-po-obwodzie.jpg) | Oznacza tą samą strukturę powierzchni na obwodzie. + + + +### Przykłady oznaczeń chropowatości w rysunku technicznym i umieszczenie na + +rysunkach. + +![](https://izaac.pl/wp-content/uploads/2024/06/R114.1.-przyklady- +oznaczen.jpg) + +![](https://izaac.pl/wp-content/uploads/2024/06/R115.-symbole-oznaczen- +struktury-powierzchni.jpg) + + +### Przykłady oznaczeń chropowatości na elementach. + + +Z linią odniesienia. + +![](https://izaac.pl/wp-content/uploads/2024/06/R116.1-oznaczanie- +chropowatosci-na-elementach-z-linia-odniesienia.jpg) + +Bez linii odniesienia.![](https://izaac.pl/wp- +content/uploads/2024/06/R116.-oznaczanie-chropowatosci-na-elementach.jpg) + + +### Symbole kierunku obróbki powierzchni. + + +![](https://izaac.pl/wp-content/uploads/2024/06/R117.1-symbol-strugania-dlutowania.jpg) | Struganie Dłutowanie | ![](https://izaac.pl/wp-content/uploads/2024/06/R117.7.jpg) | Równoległa +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2024/06/R117.2-symbol-toczenia-wzdluz.jpg) | Toczenie wzdł. Struganie Dłutowanie | ![](https://izaac.pl/wp-content/uploads/2024/06/R117.8.jpg) | Prostopadła +![](https://izaac.pl/wp-content/uploads/2024/06/R117.3-symbol-toczenia-czolowego-frezowania-czolowego.jpg) | Toczenie czołowe Frezowanie czołowe | ![](https://izaac.pl/wp-content/uploads/2024/06/R117.9.jpg) | Współśrodkowa +![](https://izaac.pl/wp-content/uploads/2024/06/R117.4-symbol-frezowania-czolowego-dogladzania.jpg) | Frezowanie czołowe Docieranie | ![](https://izaac.pl/wp-content/uploads/2024/06/R117.10.jpg) | Krzyżowana +![](https://izaac.pl/wp-content/uploads/2024/06/R117.5-symbol-skrobania-docierania.jpg) | Skrobanie Docieranie | ![](https://izaac.pl/wp-content/uploads/2024/06/R117.11.jpg) | Nieuporządkowana +![](https://izaac.pl/wp-content/uploads/2024/06/R117.6-symbol-szlifowania-czolowego.jpg) | Szlifowanie czołowe | ![](https://izaac.pl/wp-content/uploads/2024/06/R117.12.jpg) | Promieniowa + diff --git a/frontend/src/content/podstawowe-informacje-o-wałach-i-osiach.md b/frontend/src/content/podstawowe-informacje-o-wałach-i-osiach.md new file mode 100644 index 0000000..f5a570b --- /dev/null +++ b/frontend/src/content/podstawowe-informacje-o-wałach-i-osiach.md @@ -0,0 +1,92 @@ +--- +title: "Podstawowe informacje o wałach i osiach" +date: 2025-01-06 15:43:23 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } +] +--- + +### Czym jest wał i oś + + + +### Podział wałów + + + +## Czym jest wał i oś + + + + + + +**Wał** \- jest to część maszyny, najczęściej w kształcie walca, obracająca +się wokół własnej osi wraz z zamocowanymi na niej elementami. Wał służy do +przenoszenia momentu obrotowego. Na wale mogą być osadzone koła zębate, +piasty, tarcze hamulcowe i inne elementy odpowiedzailne za przenoszenie ruchu. +Ponadto wał może być obciążony siłami poprzecznymi i wzdłużnymi. Zatem wał +może być narażony jednocześnie na skręcanie, zginanie, ścinanie i rozciąganie +lub ściskanie. + +Elementami sprzęgającymi ze sobą wały w celu przeniesienia momentu obrotowego +z jednego na drugi są sprzęgła. + +Technikami służącymi do osadzania elementów są połączenia czop - piasta takie +jak [Połączenia wielowypustowe](https://izaac.pl/inzynieriamechaniczna/polaczenia-wielowypustowe), [połączenia +stożkowe](https://izaac.pl/inzynieria-mechaniczna/polaczenia-cierne-stozkowe), +[połączenia z wpustem pryzmatycznym](https://izaac.pl/inzynieriamechaniczna/polaczenia-z-wpustem-pryzmatycznym) lub [połączenia +wciskowe.](https://izaac.pl/inzynieria-mechaniczna/polaczenia-wciskowe) + +**Oś** \- w urządzeniach mechanicznych to element, który nie przenosi momentu +obrotowego a jedynie wspiera elementy obrotowe, takie jak koła, zębatki, wały, +czy inne komponenty mechaniczne. Jest to zazwyczaj pręt lub walec, który +obraca się wokół swojej osi lub stoi statycznie pozwalając elementom obracać +się wokół jego osi, pełniąc rolę łącznika między różnymi elementami układu +mechanicznego. + + +## Podział wałów: + + +**Wał giętki** \- zbudowany z kilku warstw, sprężysty wał, który jest podatny +na zginanie. Wierzchnią warstwę wału stanowi najczęściej elastyczna obudowa. +Wały elastyczne są przeznaczone do przenoszenia niewielkich mocy. + +**Wał korbowy** \- wał poisadający czopy, przesunięte względem osi. Jest +podstawowym mechaniczmemy pozwalającym zamienić ruch posuwisto-zwrotny na +obrotowy. + +**Wał napędowy** \- element maszyny w kształcie walca, przenoszący napęd z +silnika do mostu napędowego. MOże być zbudowany z klilku, połączonych +łożyskami, elementów. Najpopularniejszym zastosowaniem jest napędenie kół +samochodu. + +**Wałek skrętny** \- drążek skrętny zwany inaczej wałek skrętny to nic innego +jak element tylnego zawieszenia pojazdu. Najczęściej stosowany jest we +francuskich autach takich marek jak Peugeot, Renault oraz Citroen. Sprężysty +element, który posiada postać pręta, rury bądź wiązki płaskowników. Jeden z +końców pręta jest unieruchomiony w ramie bądź też w elementach nośnych +nadwozia auta. Drugi koniec drążka zaś wykonuje ruchy skrętne. + + +### Ponadto można wyróżnić wały podzielone na : + +* **Kształtowe** \- wały którym formuje się kształt przez obrabianie powierzchni, posiadają czopy +* **Jednolite** \- wały bez czopów, proste wały o jednolitej średnicy – rzadko używane +* **Składane** \- wały składane z wielu elementów +* **Drążone** \- wały drążone wewnątrz, dla lekkich konstrukcji maszynowych. Otwór wewnętrzny o średnicy drążonej dw = 0,5d obniza ciężar o 25% z obniżeniem wskaźnika wytrzymałości na zginanie jedynie 6% + +**W zależności od funkcji maszyny** +* Wał główny +* Wał pomocniczy +* Napędzający +* Napędzany (bierny) + diff --git a/frontend/src/content/podstawy-wytrzymałości-materiałów.md b/frontend/src/content/podstawy-wytrzymałości-materiałów.md new file mode 100644 index 0000000..22c600f --- /dev/null +++ b/frontend/src/content/podstawy-wytrzymałości-materiałów.md @@ -0,0 +1,455 @@ +--- +title: "Podstawy wytrzymałości materiałów" +date: 2024-02-15 22:14:37 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } +] +--- + +### Wytrzymałość materiałów + + + +### Stany naprężeń + + + +### Rodzaje obciążeń + + + +### Odkształcenie + +* ##### Odkształcenie całkowite +* ##### Odkształcenie rzeczywiste +* ##### Współczynnik koncentracji odkształceń +* ##### Odkształcenie obiętościowe + + +### Naprężenie + + + +### Analiza naprężeń i odkształceń + + + +### Rysowanie koła Mohra + + + +## Czym jest Wytrzymałość materiałów + + +**Wytrzymałość materiałów** \- to dziedzina nauki zajmująca się opracowywaniem +oraz analizą metod oceny zachowania elementów konstrukcyjnych pod wpływem +obciążeń. Podstawy wytrzymałości materiałów obejmują zagadnienia związane z +głównymi parametrami są **odkształcenia** i **naprężenia.** W celu +przewidywania zachowania danych konstrukcji należy wykonać **model tej +konstrukcji**. W zależności od dokładności z jaką chcemy przewidzieć +zachowanie, możemy wybrać mniej lub bardziej dokładny model obliczeniowy. + +Model konstrukcji zazwyczaj składa się z: +* Modelu matematycznego – obliczeń dokonuje się na podstawie wybranego kryterium wytrzymałościowego dla wybranej hipotezy wytężeniowej. +* Modelu materiałowego – według norm i badań +* Modelu geometrycznego – jako uzupełnienie do modelu matematycznego i materiałowego. Dla różnych metod obliczeniowych, stosuje inne modele geometryczne. Model analityczny wymaga geometrii jednolitej natomiast model obliczeniowy FEM (pl. MES) wymaga dyskretyzacji modelu geometrycznego. + +W celu utworzenia stabilnych zależności (zależy nam na tym, ponieważ każda +próbka materiału jest unikatowa) wprowadzono pewne uproszczenia, które mają +zastosowanie jedynie w przypadku materiałów liniowo sprężystych – to znaczy +takich które są sprężyste (wywierają siłę reakcj) proporcjonalnie do +odkształcenia. W podstawach wytrzymałości materiałów często stosuje się +uproszczenia aby zniwelować wpływ czynników losowych takie jak: +* Ciągłość materiału – założenie polegające na koncepcji materiału jednorodnego Stal żeliwa aluminium stopy miedzi polimery itp. Nie mają jednolitej struktury, posiadają one liczne wewnętrzne defekty, wtrącenia, puste przestrzenie i nieciągłości nie dające się przewidzieć. Dlatego takie założenie ma sens z matematycznego punktu widzenia jednak nie ma przełożenia na rzeczywistość. +* Jednorodność materiału – jest następstwem pierwszego założenia. Właściwości materiału nie są zależne od położenia w materiale co za tym idzie, właściwości materiału są takie same w każdym jego punkcie. Nie sprawdza się przy gradientach temperatur i spiętrzeniach naprężeń +* Izotropowość materiału – założenie, że materiał posiada takie same właściwości w każdym kierunku (osi) objętości ciała. W rzeczywistości tak nie jest i nawet sposób obróbki materiału może mieć wpływ na kształt i ułożenie ziaren kryształów materiału tym samym zmieniając parametry w danym kierunku. +* Liniowa sprężystośc materiału – założenie, że istnieje pewien bazowy, bezobciążeniowy stan ciała, do którego ciało dąży po odpuszczeniu obciążeń a w trakcie których, do pewnego stopnia, ciało zachowuje ciągłość struktury. + + +## Stany naprężeń + + +**Stany naprężeń** dzielimy na : + +**Jednoosiowy stan naprężeń** – gdy uczestniczy w nim jedno napręzenie główne +σ1 a dwa pozostałe wynoszą 0. Występuje on między innymi w + +**Dwuosiowy stan naprężeń** – gdy obecne naprężenia σ1 i σ2 w dwóch osiach +zwany także pod inną nazwą płaski stan naprężeń. Taki stan występuje +(oczywiście w akceptowalnym przybliżeniu) na przykład w elementach +dwuwymiarowych w których wymiar głębokości można pominąć. Płaski, dwuosiowy +stan naprężeń występuje w skorupach zbiorników, poszyciu pojazdów lub +płaskownikach. + +**Trójosiowy stan naprężeń** – gdy obecne są naprężenia σ1, σ2 i σ3 w trzech +osiach. Występuje w elementach kórych nie można pominąć wymiaru głębokości, +np. wsporniki, wachacze w pojazdach lub korpusy silników. + +Jeśli naprężenia główne są sobie równe to mamy do czynienia z hydrostatycznym +stanem naprężeń, gdy naprężenia na każdej ścianie elementu są jednakowe, +naprężenia takie zmieniają objętość bryły lecz nie zmieniają jej kształtu +(postaci) + +Tensor główny naprężeń można zapisać jako + +![](https://izaac.pl/wp-content/uploads/2023/11/2.20-tensor-naprezen- +glownych.jpg) + +Składowa zredukowana (naprężenia zredukowane) nie zmienia objętości ciała ale +za to zmienia jego postać. To właśnie napręzenia zredukowane odpowiadają, za +zniszczenie elementu. Napręzenia zdedukowane odpowiadają także za płynięcie +plastyczne materiału. + + +## Rodzaje obciążeń + + +**Podstawy wytrzymałości materiałów** opisują także zachowanie +obciążenia.**Obciążenia** to inaczej siły zewnętrzne działające na ciało które +dzielimy na: +* **Stałe obciążenia** zwane także **obciążeniami statycznymi** +* **Zmienne obciążenia** zwane inaczej **obciążeniami dynamicznymi** + 1. Pracy + 2. Otoczenia + 3. Transportowe i montażowe + +Gdzie: + +**Obciążenia stałe** to obciążenia niezmienne w czasie. Zazwyczaj odpowiadają +za nie ciężar własny konstrukcji oraz ciężar elementów podtrzymywanych. + +**Obciążenia zmienne** to obciążenia nie stałe w czasie. + +**Obciążenia wynikające z pracy** to obciążenia zmienne wynikające z +charakteru pracy układu. Należą do nich np. zmienne obciążenia wału, zmienne +obciążenia urządzeń cieplnych (np. tłok w silniku spalinowym). + +**Obciążenia otoczenia** to wpływ warunków w jakich pracuje konstrukcja np. +wiatr, temperatura, promieniowanie. + +**Obciążenia transportowe i montażowe** to obciążenia wynikające z procesu +transportu np. wibracje, szoki oraz sposobu montażu np. osadzanie ciasno +pasowanego łożyska na wale. + +Dodatkowo możemy je podzielić [na obciążenia +proste](https://izaac.pl/inzynieria-mechaniczna/podstawowe-rodzaje-obciazen-wkonstrukcji-maszyn) + + +## Naprężenie + + +**Naprężenie** \- jest wielkością fizyczną która opisuje siły wewnętrzne +wywierane przez sąsiednie cząstki materiału (ciągłego) wywierają na siebie. +Opisuje się ją poprzez siłę działającą na danej powierzchni, zatem opisuje się +ją poprzez orientację w przestrzeni i kierunek działania siły. + +Równanie ogólne naprężenia + +![](https://izaac.pl/wp-content/uploads/2023/11/2.12-Rownanie-ogolne- +naprezen.jpg) + +**S** \- naprężenia na powierzchni + +**F** \- siła + +**A** \- Pole powierzchni + +Zatem naprężenia fizycznie są siłą rozłożoną na danym polu powierzchni + +Naprężenia w punkcie: + +_![](https://izaac.pl/wp-content/uploads/2023/11/2.13-Naprezenia-w- +punkcie.jpg)_ + +Naprężenia mogą być zarówno normalne (prostopadłe) do płaszczyzny jak i +styczne (równolegle) do płaszczyzny. + +Naprężenia normalne – rozciągające lub ściskające. + +Naprężenia styczne – ścinające (tnące). + +Naprężenia inżynierskie – stosunek siły F do przekroju poprzecznego +początkowego na który działa siła.![](https://izaac.pl/wp- +content/uploads/2023/11/2.14-Naprezenia-inzynierskie.jpg) + +Przy założeniu że materiał odkształca się bez zmiany objętości. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.15-sila-przy-zalozeniu-ze- +material-odksztalca-sie-bez-zmiany-objetosci.jpg) + +Ao – początkowe pole przekroju. + +Lo– początkowa długość elementu. + +Au– pole przekroju po odkształceniu. + +Lu– długość elementu po odkształceniu – długość końcowa. + +Naprężenia osiągają więc wartość: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.16-naprezenia-300x105.jpg) + +**e** \- odkształcenia inżynierskie + +S - naprężenia inżynierskie + +K= σ/S - współczynnik koncentracji naprężeń + +Naprężenia σ_ij są naprężeniami działającymi na ściany + +![](https://izaac.pl/wp-content/uploads/2023/11/2.17-naprezenia-normalne.jpg) | \- naprężenia normalne +---|--- +![](https://izaac.pl/wp-content/uploads/2023/11/2.18-naprezenia-styczne-300x35.jpg) | \- naprężenia styczne + +Sprowadzając element do punktu przestrzennego można utworzyć macierz zwaną +tensorem naprężeń. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.19-macierz-tensor- +naprezen.jpg) + + +### Naprężenia główne + + +Każdy układ tensorów na nieskończenie małym elemencie w układzie kartezjańskim +da się sprowadzić i ustawić w taki sposób aby w danym zmodyfikowanym układzie +występowały tylko naprężenia normalne do powierzchni elementu nazywane +naprężeniami głównymi, gdzie tensor naprężenia w układzie współrzędnych +wyznaczonym przez wektory własne: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.10-tensor-naprezenia-w- +ukladzie-wspolrzednych-wyznaczonym-przez-wektory-wlasne-300x142.jpg) + +Umownie przyjęte zostało, że naprężenia główne porządkuje się w danej +kolejności + +![](https://izaac.pl/wp-content/uploads/2023/11/2.11-porzadek-naprezen- +glownych.jpg) + + +### Naprężenia resztkowe + + +naprężenia w ciele, na które nie działają siły zewnętrzne pozostające w stanie +równowagi w jednorodnej temperaturze. Naprężenia takie mogą być wynikiem +wytwarzania lub obróbki (np., kucia) materiału. W celu pozbycia się tych +naprężeń lub ich zredukowania stosuje się zabiegi odprężające. Jest to istotne +w celu zachowania wysokich dokładności wykonania geometrii przedmiotu. + + +## Odkształcenie + + +**Odkształcenie** to zmiana kształtu lub postaci ciała spowodowana działaniem +sił zewnętrznych w stosunku do kształtu, wymiaru lub postaci początkowej +(odkształcenie inżynierskie) określana bezwymiarowo + +Odkształcenie inżynierskie przyjmują postać według wzoru: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.1-Odksztalcenia- +inzynierskie-300x104.jpg) + +Gdzie: + +**ΔL** – zmiana wymiaru liniowego po lub w trakcie badania + +**Lo** – Wymiar początkowy + +**Odkształcenie całkowite** \- jest sumą odkształceń cząstkowych w stosunku do +chwilowego wymiaru próbki. + +**Odkształcenie rzeczywiste zatem przyjmuje postać:** + +![](https://izaac.pl/wp-content/uploads/2023/11/2.2-Odksztalcenia- +rzeczywiste-300x68.jpg) + +Zazwyczaj **L** odnosi się do długości odkształcenia liniowego + +Dodatkowo istnieje zależność odkształcenia rzeczywistego w przypadku +odkształceń złożonych:![](https://izaac.pl/wp- +content/uploads/2023/11/2.3-zaleznosc-odksztalcenia-rzeczywistego-w-przypadku- +odksztalcen-zlozonych-300x105.jpg) + +Gdzie: + +**E** – moduł Younga + +**Vp** – współczynnik Poissona w odkształceniach plastycznych + +**Vs** – współczynnik Poissona w odkształceniach statycznych + +**ε** – odkształcenia podłużne rzeczywiste + +**εd** – odkształcenia poprzeczne rzeczywiste + +**σ** – naprężenia powodujące odkształcenie + +**Współczynnik koncentracji odkształceń** + +![](https://izaac.pl/wp-content/uploads/2023/11/2.4-Wspolczynnik-koncentracji- +odksztalcen.jpg) + +Gdzie + +**ε** – odkształcenia rzeczywiste + +**e** – odkształcenia inżynierskie + +W wąskim zakresie deformacji odkształcenia plastyczne i sprężyste się sumują i +występuje zależność: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.5-odksztalcenia-plastyczne- +i-sprezyste.jpg) + +Gdzie: + +**ε_spr** – odkształcenia rzeczywiste w zakresie sprężystym + +**ε_pl** – odkształcenia rzeczywiste w zakresie plastycznym + +![](https://izaac.pl/wp-content/uploads/2023/11/2.6-odksztalcenia-plastyczne- +i-sprezyste-300x131.jpg) + +Gdzie: + +**σ** – naprężenia powodujące odkształcenie + +**K** – współczynnik wytrzymałości statycznej + +**n** – wykładnik umocnienia statycznego – opisuje on jak bardzo materiał się +umacnia w przypadku przejścia z zakresu sprężystego do zakresu plastycznego +(elementy teorii sprężystości) + + +### **Odkształcenie obiętościowe** + + +Aby opisać zmianę objętości „elementu” ciała potrzeba jest sześć składowych (3 +osie i 3 ustawienia kątowe) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.7-Odksztalcenie- +objetosciowe-1-1024x125.jpg) + +Dla obciążeń wieloosiowych odkształcenia związane z każdym z przyłożonych +obciążeń sumują się: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.8-Odksztalcenie- +objetosciowe-dla-obciazen-wieloosiowych-300x281.jpg) + +Gdzie : + +**V** – Liczba Poissona + +![](https://izaac.pl/wp-content/uploads/2023/11/2.9-naprezenia- +glowne-300x42.jpg) + + +## Spiętrzenie naprężeń + + +Spiętrzenie naprężeń – to lokalna koncentracja naprężeń materiału na przykład +wokół otworu i gwałtownych zmian geometrii + +Naprężenia nominalne i maksymalne w przekroju osłabionym + +![](https://izaac.pl/wp-content/uploads/2023/11/2.93-Naprezenia-nominalne-w- +przekroju-oslabionym.jpg) + +Dla przypadku gdy d=b'![](https://izaac.pl/wp- +content/uploads/2023/11/2.94.jpg) + +Gdzie + +b- średnica (wosokość) otworu + +d- średnica(szerokośc) otworu + +h- grubość blachy + +b'- szerokość blachy + +![](https://izaac.pl/wp-content/uploads/2023/11/2.95-wspolczynnik-spietrzenia-naprezen.jpg) | – współczynnik spiętrzenia naprężeń, można go znaleźć w tablicach, z danych empirycznych dla różnych wymiarów. +---|--- + +W anglojęzycznej literaturze α oznaczany jest literą k nazywaną +współczynnikiem koncentracji naprężeń (stress concentration factor). + + +## Analiza naprężeń i odkształceń + + +Zaczynając od jednokierunkowego stanu naprężeń jako najprostszy stan + +Rozpatrując wycinek efgh jako elementarny, nieskończenie mały + +**Wyznaczamy wartości naprężeń** + +![](https://izaac.pl/wp-content/uploads/2023/11/2.21-wartosci-naprezen.jpg) + +Analogicznie + +![](https://izaac.pl/wp-content/uploads/2023/11/2.22-wartosci-naprezen.jpg) + + +### Naprężenia w dwukierunkowym stanie naprężeń, dwukierunkowy (płaski) stan + +naprężeń + +Płaski stan naprężeń to taki który występuje w układach dwuwymiarowych. Ma +zastosowanie np. dla przypadku układu płyt cienkich, w których wymiar +głębokości (grubości) można pominąć. + +Rozpatrzmy płaską blachę: + +Płaski stan naprężeń można rozważyć jako złożenie (superpozycję) dwóch stanów +jednokierunkowych w dwóch osiach. + +Gdzie:![](https://izaac.pl/wp-content/uploads/2023/11/2.23-wartosci-naprezen- +dla-superpozycji-stanow-jednokierunkowych.jpg) + + +## **Rysowanie koła Mohra** + + +**Koło Mohra** – to opracowana przez niemieckiego inżyniera Christiana Mohra +metoda graficznej reprezentacji naprężeń dla danych stanów. Przedstawiany jest +w prostokątnym układzie współrzędnych **σ** i **τ** + +Opis metody wykreślnej rysowania koła Mohra + +1\. Wyznaczamy punkt C – środek koła Mohra, w odległości OC od środka układu +współrzędnych + +![](https://izaac.pl/wp-content/uploads/2023/11/2.24-srednia-arytmetyczna- +naprezen.jpg)– jest średnią arytmetyczną naprężeń σ 1 i σ 2. Obowiązuje +założenie, że ­­σ1 ≥ σ2 + +2\. Z punktu C zakreślamy koło o promieniu r równemu:![](https://izaac.pl/wp- +content/uploads/2023/11/2.25-promien-kola-mohra.jpg) + +3\. Zakreślamy kąt α hipotetyczny, nie jest to żaden konkretny kąt, jest to +każdy założony przez nas kąt przekroju. + +Punkt N odpowiada przekrojowi A-B blachy. Przekroje w których nie działają +naprężenia styczne a jedynie normalne nazywamy przekrojami głównymi i +odpowiadają one punktom N1 i N2 na rysunku. Odmierzane zgodnie z konwencją, +czyli z kierunkiem wskazówek zegara od punktu N1 wokół punktu C. + +**Koło Mohra dla układu przestrzennego** + + +### **Przestrzenny układ naprężeń** + + +Rozpatrzmy sześcienną kostkę reprezentującą przestrzenny stan naprężeń: + +Zakładając, że σ1 ≥σ2 ≥ σ3 oraz uwzględniając naprężenia na kostce w układzie +kartezjańskim + diff --git a/frontend/src/content/polityka-prywatności-i-regulamin.md b/frontend/src/content/polityka-prywatności-i-regulamin.md new file mode 100644 index 0000000..b395dd6 --- /dev/null +++ b/frontend/src/content/polityka-prywatności-i-regulamin.md @@ -0,0 +1,99 @@ +--- +title: "Polityka Prywatności i Regulamin" +date: 2024-11-23 14:55:28 +--- +**Polityka przetwarzania danych osobowych oraz regulamin korzystania z +katalogu firm na stronie izaac.pl** + + 1. Administrator danych + +Administratorem danych osobowych jest osoba fizyczna – Administrator strony +izaac.pl. + + * Kontakt: kontakt@izaac.pl + + 2. Zakres zbieranych danych + +W ramach formularza dodawania firmy do katalogu zbierane są następujące dane: + + * nazwa firmy, + * adres e-mail kontaktowy, + * adres strony internetowej, + * lokalizacja firmy (w tym dane GPS, jeśli użytkownik użyje przycisku „Użyj mojej lokalizacji”), + * imię i nazwisko osoby zgłaszającej. + + 3. Cel przetwarzania danych + +Dane są przetwarzane w celu: + + * publikacji zgłoszonej firmy na stronie izaac.pl, + * przedstawienia usług w katalogu firm oraz na mapie, + * zapewnienia kontaktu z administratorem w razie potrzeby edycji lub moderacji wpisu, + * zabezpieczenia formularza przed nadużyciami i zapewnienia prawidłowego działania strony. + + 4. Podstawa prawna przetwarzania + +Dane są przetwarzane zgodnie z: + + * 6 ust. 1 lit. b RODO – realizacja usługi polegającej na publikacji zgłoszenia, + * 6 ust. 1 lit. f RODO – uzasadniony interes administratora (prowadzenie serwisu, komunikacja, bezpieczeństwo). + + 5. Dobrowolność podania danych + +Podanie danych jest dobrowolne, ale konieczne do dodania wpisu w katalogu. + + 6. Udostępnianie danych + +Dane takie jak: nazwa firmy, lokalizacja, strona internetowa, e-mail firmowy +są publicznie dostępne w katalogu i na mapie. Imię i nazwisko zgłaszającego +oraz prywatny e-mail nie są publikowane, chyba że użytkownik sam zamieści je w +treści opisu. + + 7. Okres przechowywania danych + +Dane będą przechowywane przez okres obecności wpisu w katalogu lub do momentu +jego usunięcia na żądanie użytkownika. Po usunięciu wpisu dane mogą być +archiwizowane przez maksymalnie 12 miesięcy w celach bezpieczeństwa, +dowodowych lub technicznych. + + 8. Prawa użytkownika + +Użytkownik ma prawo do: + + * dostępu do swoich danych, + * ich sprostowania, usunięcia, ograniczenia przetwarzania, + * sprzeciwu wobec przetwarzania, + * przeniesienia danych, + * wniesienia skargi do Prezesa Urzędu Ochrony Danych Osobowych (PUODO). + + 9. Zautomatyzowane podejmowanie decyzji + +Dane nie są wykorzystywane do automatycznego podejmowania decyzji ani do +profilowania. + + 10. **Regulamin korzystania z katalogu (GeoDirectory)** + +10.1. Opis usługi Katalog firm (Mapa Ekspertów Technicznych) umożliwia +użytkownikom dodawanie danych firm, opisu usług oraz ich lokalizacji. Usługa +korzysta z systemu GeoDirectory. 10.2. Zasady dodawania firm Dodanie wpisu +jest możliwe po zaakceptowaniu niniejszego regulaminu. Użytkownik oświadcza, +że ma prawo do publikacji danych we wpisie. Administrator może edytować, +moderować lub usuwać wpisy naruszające regulamin, prawo lub dobre obyczaje. +10.3. Ograniczenie odpowiedzialności Administrator nie gwarantuje dostępności +katalogu przez cały czas – możliwe są przerwy techniczne, aktualizacje, błędy +GPS itp. Administrator nie odpowiada za treść wpisów dodanych przez +użytkowników ani za skutki korzystania z nich. Administrator nie pośredniczy w +kontaktach między użytkownikami a firmami i nie odpowiada za relacje +wynikające z wpisów. 10.4. Charakter informacyjny Dane mają charakter +informacyjny i nie stanowią oferty handlowej. Dodanie wpisu nie gwarantuje +uzyskania klientów, leadów ani efektów marketingowych. 10.5. Zawieszenie +usługi Administrator zastrzega sobie prawo do czasowego lub stałego +zawieszenia działania katalogu, również bez uprzedzenia. 10.6. Zgłaszanie +nadużyć Nadużycia, nieprawdziwe dane lub spam można zgłaszać na adres +kontakt@izaac.pl. Administrator podejmie decyzję w rozsądnym terminie. + + 11. Zmiany regulaminu + +Administrator zastrzega sobie prawo do zmiany niniejszego dokumentu. Aktualna +wersja zawsze dostępna jest na stronie izaac.pl. + diff --git a/frontend/src/content/polityka-prywatności.md b/frontend/src/content/polityka-prywatności.md new file mode 100644 index 0000000..4322760 --- /dev/null +++ b/frontend/src/content/polityka-prywatności.md @@ -0,0 +1,69 @@ +--- +title: "Polityka prywatności" +date: 2022-03-08 20:58:43 +--- +## **Polityka prywatności** + +#### **** + +#### **** + +#### **** + +#### Polityka prywatności serwisu www. Izaac.net +1\. Informacje ogólne +Niniejsza Polityka Prywatności określa zasady przetwarzania i ochrony danych +osobowych +przekazanych przez Użytkowników w związku z korzystaniem przez nich usług +izaac poprzez Serwis. +2\. Administratorem danych osobowych zawartych w serwisie jest Izaac. +zewnętrzne +procedury i zalecenia, które mają zapobiec udostępnieniu danych osobom +nieupoważnionym. Kontrolujemy ich wykonywanie i stale sprawdzamy ich zgodność +z +odpowiednimi aktami prawnymi - ustawą o ochronie danych osobowych, ustawą o +świadczeniu usług drogą elektroniczną, a także wszelkiego rodzaju aktach +wykonawczych i +aktach prawa wspólnotowego. +4\. Dane Osobowe przetwarzane są na podstawie zgody wyrażanej przez +Użytkownika oraz +w przypadkach, w których przepisy prawa upoważniają Administratora do +przetwarzania +danych osobowych na podstawie przepisów prawa lub w celu realizacji zawartej +pomiędzy +stronami umowy. +5\. Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich +zachowaniach w +następujący sposób: +a) poprzez dobrowolnie wprowadzone w formularzach informacje +b) poprzez gromadzenie plików “cookies” [patrz polityka plików “cookies”]. +6\. Serwis zbiera informacje dobrowolnie podane przez użytkownika. +7\. dane podane w formularzu są przetwarzane w celu wynikającym z funkcji +konkretnego +formularza np. w celu dokonania procesu obsługi kontaktu informacyjnego +8\. Dane osobowe pozostawione w serwisie nie zostaną sprzedane ani +udostępnione +osobom trzecim, zgodnie z przepisami Ustawy o ochronie danych osobowych. +9\. Do danych zawartych w formularzu przysługuje wgląd osobie fizycznej, która +je tam +umieściła. Osoba ta ma również praw do modyfikacji i zaprzestania +przetwarzania swoich +danych w dowolnym momencie. +10\. Zastrzegamy sobie prawo do zmiany w polityce ochrony prywatności serwisu, +na które +może wpłynąć rozwój technologii internetowej, ewentualne zmiany prawa w +zakresie +ochrony danych osobowych oraz rozwój naszego serwisu internetowego. O +wszelkich +zmianach będziemy informować w sposób widoczny i zrozumiały. +11\. W Serwisie mogą pojawiać się linki do innych stron internetowych. Takie +strony +internetowe działają niezależnie od Serwisu i nie są w żaden sposób +nadzorowane przez +serwis Izaac. Strony te mogą posiadać własne polityki dotyczące prywatności +oraz +regulaminy, z którymi zalecamy się zapoznać. +W razie wątpliwości co któregokolwiek z zapisów niniejszej polityki +prywatności jesteśmy do +dyspozycji - nasze dane znaleźć można w zakładce - KONTAKT. + diff --git a/frontend/src/content/połączenia-cierne-stożkowe.md b/frontend/src/content/połączenia-cierne-stożkowe.md new file mode 100644 index 0000000..bf6a61f --- /dev/null +++ b/frontend/src/content/połączenia-cierne-stożkowe.md @@ -0,0 +1,130 @@ +--- +title: "Połączenia cierne stożkowe" +date: 2025-01-05 15:14:14 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-cierne-stożkowe", + "category_name": "połączenia cierne stożkowe" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + } +] +--- + +### Czym są połączenia cierne stożkowe + + + +### Wady i zalety połączenia stożkowego + + + +### Obliczenia połączenia ciernego stożkowego + + + +## Czym są połączenia cierne stożkowe + + +**Połączenia cierne stożkowe - czopowe** to rodzaj połączeń mechanicznych, +wykorzystujących **tarcie** między stykającymi się powierzchniami stożkowymi +dwóch elementów, aby przenosić obciążenia i utrzymywać ich położenie względem +siebie. Są one stosowane w mechanizmach, w których wymagane jest pewne i łatwo +rozłączalne połączenie osiowe. Połączenia cierne stożkowe składają się z dwóch +wzpółpracujących ze sobą elementów w kształcie stożka. Jeden jest wałkiem w +kształcie stożka drugi otworem stożkowym. Tarcie między powierzchniami +stożkowymi ściśniętymi ze sobą zapewnia odporność na poślizg i utrzymuje +elementy w miejscu. + + +## Wady i zalety połączenia stożkowego + + + +### Zalety połączenia stożkowego : + + +**Zdolność przenoszenia obciążeń zmiennych,** + +**Centrowanie piasty w czopie** \- Kształt stożkowy pozwala na automatyczne +centrowanie elementów względem siebie, co zwiększa precyzję połączenia oraz +poprawia stabilność w czasie pracy. + +**Łatwość montażu i demontażu,** + +**Łatwość wykonania i produkcji (jednostkowej i małoseryjnej) -** Połączenia +te są stosunkowo łatwe do wytworzenia tradycyjnymi metodami +(toczenie/frezowanie) nawet w warunkach produkcji jednostkowej lub +małoseryjnej, co redukuje koszty i czas. + +**Możliwość przenoszenia siły wzdłużnej -** Dzięki tarciu i kształtowi +stożkowemu, połączenia stożkowe mogą skutecznie przenosić siły działające +wzdłuż osi czopa, w przeciwieństwie do [połączenia z wpustem +pryzmatycznym.](https://izaac.pl/inzynieria-mechaniczna/polaczenia-z-wpustempryzmatycznym) + + + + +### Wady połączenia stożkowego: + + +**Brak naprężeń montażowych,** + +**Brak pełnej normalizacji kształtu i pasowania -** Połączenia stożkowe nie są +w pełni znormalizowane, co oznacza, że trzeba stosować własne rozwiązania, co +może komplikować proces projektowania i dopasowania metodami prób i błędów. + + +## Obliczenia połączenia ciernego stożkowego + + +Obliczenia można wykonywać ze względu na: + +1) na wytrzymałość połączenia śrubowego, jeśli docisk generowany jest przez +śrubę + +2) na wgniatanie czopa z piastą + +Wzory obliczeniowe dla połączenia czopowego-stożkowego wraz z uwzględnieniem +śruby napinającej ( wywołującej wymaganą siłę **Pw = Sw**) + +**φ = α -** kąt połówkowy stożka + +**Ms_max** \- maksymalny moment którym możemy obciążyć połączenie + +**N = P_N** \- siła wypadkowa normalna do boku stożka + +**Nmax_śrb** \- maksymalne obciążenie jednej śruby + +**Npdop_max** \- maksymalna siła obciążenia połączenia ze względu na +wgniecenie czopa w piastę ( dla materiału słabszego w przypadku innych +materiałów) + +**P_dop** \- siła dopuszczalna + +**d_śr** \- średnica środka stożka , przyjmujemy że tam działają obciążenia + +**S_w** = **P_w** \- siła napięcia śruby + +**MmaxCśrb_s** \- maksymalny moment skręcający dla wytrzymałości połączenia +śrubowego + +**MmaxNdp_s** \- maksymalny moment skręcający dla połaczenia czopa z piastą + +**Smax_w** \- maksymalna siła, którą możemy obciążyć śrubę (dśr - w tym +przypadku jest średnicą śruby) + +**f** \- współczynnik osłabienia wynikający z wkręcania śruby kluczem + +**μ** \- współczynnik tarcia między materiałami czopa (stożka) i piasty + diff --git a/frontend/src/content/połączenia-mechaniczne.md b/frontend/src/content/połączenia-mechaniczne.md new file mode 100644 index 0000000..92824cb --- /dev/null +++ b/frontend/src/content/połączenia-mechaniczne.md @@ -0,0 +1,299 @@ +--- +title: "Połączenia mechaniczne" +date: 2021-10-12 16:19:45 +--- +# + +# [Gwinty: Kompleksowy Przewodnik – Od Opisu po +Tolerancje](https://izaac.pl/inzynieria-mechaniczna/gwinty-kompleksowy- +przewodnik-od-opisu-po-tolerancje) + +**Gwint i linia śrubowa** – Geometria opisująca wznoszący się spiralny kształt +stosowany w elementach złącznych. + +**Standardowe wymiary gwintów** – Określają typowe parametry gwintów stosowane +w różnych aplikacjach. + +**Przykłady oznaczeń gwintów** – Symbole używane do opisu rodzaju i wymiarów +gwintów na rysunku technicznym. + +**Standardy i normy gwintów** – Zbiór reguł określających wymiary, tolerancje +i sposób oznaczania gwintów. + +**Praktyczne wskazówki jak się z nimi obchodzić** – Zalecenia dotyczące +wyboru, montażu i konserwacji gwintów w celu zapewnienia trwałości połączenia. + + + +# [Technologia Śrub: Wszystko o projektowaniu połaczeń +śrobowych](https://izaac.pl/inzynieria-mechaniczna/technologia-srub-wszystko- +o-projektowaniu-polaczen-srobowych) + +**Projektowanie połączeń śrubowych** – Proces uwzględniający dobór +odpowiednich elementów i parametrów technicznych. + +# [Rodzaje konstrukcyjne śrub](https://izaac.pl/inzynieria- +mechaniczna/rodzaje-konstrukcyjne-srub) + +**Rodzaje łbów, nakrętek, podkładek i zakończeń śrub** – Elementy dodatkowe +definiujące funkcjonalność i kategoryzację śrub. + + + +# [Obliczanie Śrub Krok po Kroku](https://izaac.pl/inzynieria- +mechaniczna/obliczanie-srub-krok-po-kroku) + +**Obliczanie połączeń śrubowych** – Proces wyznaczania sił, momentów oraz +trwałości połączenia. + +**Przykład obliczeniowy połączenia śrubowego** – Instrukcja krok po kroku +ilustrująca proces analizy połączenia śrubowego. + +# [Technologia Spawania: Wszystko o spoinach i technikach spawania MIG TIG +MAG](https://izaac.pl/inzynieria-mechaniczna/technologia-spawania-wszystko-o- +spoinach-i-technikach-spawania-mig-tig-mag) + +**Typy spawania: MIG, MAG, TIG** – Najpopularniejsze metody łączenia metali za +pomocą spawania łukowego. + +**Gazy spawalnicze** – Substancje stosowane do ochrony łuku spawalniczego i +stabilizacji procesu. + +**Oznaczenia spoin na rysunkach technicznych** – Symbole używane do +jednoznacznego opisu rodzaju i lokalizacji spoin. + +**Zagrożenia związane ze spawaniem** – Ryzyka takie jak oparzenia, wdychanie +toksycznych gazów czy uszkodzenie wzroku. + + + +# [Obliczanie spoin – metodyka i przykłady obliczania połączeń +spawanych](https://izaac.pl/inzynieria-mechaniczna/obliczanie-spoin-metodyka- +i-przyklady-obliczania-polaczen-spawanych) + +**Metodyka obliczania połączeń spawanych** – Zasady przeprowadzania obliczeń +uwzględniających wytrzymałość i bezpieczeństwo. + +**Warunki wytrzymałościowe spoin** – Kryteria oceny, czy spoina spełnia +wymagania mechaniczne. + +**Wzory obliczeniowe dla spoin** – formuły stosowane do analizy różnych typów +obciążeń. + +**Przykłady obliczeniowe spoin z objaśnieniem** – Szczegółowe instrukcje +dotyczące analizy i obliczeń połączeń spawanych. + +# + +# [Połączenia z wpustem pryzmatycznym](https://izaac.pl/inzynieria- +mechaniczna/polaczenia-z-wpustem-pryzmatycznym) + +**Co to połączenie wpustowe** – Sposób łączenia wału z piastą za pomocą +wpustu. + +**Wpusty pryzmatyczne** – Prostokątne elementy stosowane do przenoszenia +momentu obrotowego. + +**Wpusty czółenkowe/półokrągłe (owalne)** – Elementy o zaokrąglonym kształcie, +stosowane w połączeniach wału z piastą. + +**Tabela wpustów w zależności od rozmiaru średnicy czopa wału** – Zestawienie +standardowych wymiarów wpustów w odniesieniu do średnicy wałów. + +**Zalety i wady połączenia z wpustem pryzmatycznym** – Omówienie mocnych i +słabych stron stosowania wpustów pryzmatycznych. + +**Pasowanie wpustów** – Określenie luzu lub napięcia między wpustem a +elementami współpracującymi. + +**Konstrukcyjne odmiany wpustów** – Różne rodzaje wpustów dostosowane do +specyficznych zastosowań. + +**Sposoby mocowania wpustu pryzmatycznego i czółenkowego do piasty** – +Techniki zabezpieczenia wpustów w połączeniu z piastą. + +**Obliczenia wytrzymałościowe połączenia z wpustem pryzmatycznym** – Analizy +nośności połączenia na różne obciążenia. + +**Obliczenia wytrzymałości wpustu pryzmatycznego** – Wyznaczenie wytrzymałości +materiału wpustu pod obciążeniem. + +**Obliczenia wytrzymałości piasty** – Sprawdzenie odporności piasty na +obciążenia przenoszone przez wpust. + +**Tabela wartości chropowatości dla chropowatości Ra oraz Rz** – Zestawienie +wartości parametrów chropowatości powierzchni Ra i Rz. + + + +# [Połączenia wielowypustowe](https://izaac.pl/inzynieria- +mechaniczna/polaczenia-wielowypustowe) + +**Połączenia wielowypustowe** – Łączenie wału z piastą za pomocą wielu +wypustów równomiernie rozmieszczonych na obwodzie. + +**Wady i zalety połączenia wielowypustowego** – Przegląd mocnych i słabych +stron połączeń wielowypustowych. + +**Zarysy wielowypustów stosowane w praktyce** – Typowe kształty i profile +wypustów używane w różnych zastosowaniach. + +**Główne wymiary zarysów połączeń wielowypustowych** – Standardowe wymiary +określające geometrię połączenia. + +**Obliczanie połączeń wielowypustowych** – Wyznaczanie wytrzymałości i +parametrów pracy dla danego połączenia. + +**Dopuszczalne naciski na połączeniach wielowypustowych** – Maksymalne +wartości sił, które mogą być przenoszone przez połączenie bez uszkodzenia. + + + +# [Połączenia cierne stożkowe](https://izaac.pl/inzynieria- +mechaniczna/polaczenia-cierne-stozkowe) + +**Wady i zalety połączenia stożkowego** – Przegląd korzyści, takich jak samo- +centrowanie, oraz wad, jak trudności w demontażu. + +**Obliczenia połączenia ciernego stożkowego** – Analizy sił tarcia i momentu +obrotowego w stożkowym połączeniu ciernym. + +# + +# [Połączenia wciskowe](https://izaac.pl/inzynieria-mechaniczna/polaczenia- +wciskowe) + +**Czym jest połączenie wciskowe** – Technika łączenia elementów przez ich +ścisłe dopasowanie na zasadzie wcisku. + +**Pasowanie dla połączeń wciskowych** – Określa precyzyjny zakres luzów i +napięć między elementami. + + * **Symbole tolerancji** – Graficzne oznaczenia wskazujące na dopuszczalne odchylenia wymiarowe. + * **Przykłady pasowań** – Typowe kombinacje tolerancji dla różnych zastosowań połączeń wciskowych. + +**Obciążenie złącza czopowo cylindrycznego ciernego (wciskowego)** – Siły +działające na złącze przy pracy. + +**Obciążalność złącza wciskowego w zakresie odkształceń plastycznych** – +Maksymalne obciążenie, które nie powoduje trwałego uszkodzenia. + +**Dopuszczalny moment gnący połączenia wciskowego** – Maksymalny moment +obrotowy, który złącze może przenieść. + +**Wytrzymałość złącza i elementów łączonych** – Zdolność złącza do +przenoszenia obciążeń bez uszkodzeń. + +**Wytrzymałość dla materiałów elasto-plastycznych** – Ocena wytrzymałości w +zakresie sprężystym i plastycznym. + + * **Dla czopów drążonych** – Analiza wytrzymałości dla czopów o pustym przekroju. + * **Dla czopów niedrążonych** , **pełnych** – Wytrzymałość czopów o pełnym przekroju. + * **Dla piast, opraw** – Ocena wytrzymałości elementów otaczających czop. + +**Odkształcenia elementów łączonych złącza wciskowego** – Zmiany wymiarów pod +wpływem siły wcisku. + +**Ogólny wzór na odkształcenia względne dla czopa drążonego wciskanego i +piasty** – Równanie opisujące odkształcenia. + +**Siła wtłaczania i rozłączania połączenia wciskowego** – Wymagana siła do +montażu lub demontażu połączenia. + +**Montażowe zmniejszenie wcisku** – Redukcja napięć podczas montażu. + +**Termiczne zmniejszenie wcisku** – Zmiana wcisku wynikająca z różnic +temperatury. + +**Temperatura ogrzania piasty złącza skurczowego i oziębienia czopa złącza +rozprężnego** – Warunki termiczne wymagane do zmiany wymiarów montowanych +elementów. + + * **Temperatura ogrzania piasty** – Wartość temperatury potrzebna do rozszerzenia piasty. + * **Temperatura schłodzenia czopa** – Wartość temperatury potrzebna do skurczenia czopa. + +**Obciążeniowe zmniejszenie wcisku** – Redukcja wcisku pod wpływem +działających sił. + + + +# **Połączenia mechaniczne** + +**Połączenia gwintowe** to sposób łączenia elementów mechanicznych, +wykorzystywany w wielu dziedzinach inżynierii. Polega na użyciu elementów z +gwintem, takich jak śruby, wkręty lub nakrętki, które pasują do siebie dzięki +odpowiednio ukształtowanym spiralnym rowkom. Gwinty mogą być zewnętrzne (jak +na śrubie) lub wewnętrzne (jak w nakrętce). +Mają one następujące znaczenie w Inżynierii + + * * **Wszechstronność i Adaptowalność** : Połączenia gwintowe są niezwykle wszechstronne. Można je stosować do niemal każdego zastosowania, od mikroskopijnych śrub w urządzeniach elektronicznych po gigantyczne śruby stosowane w budownictwie mostów czy konstrukcjach maszynowych. Największa Śruba - Rekordową śrubą pod względem wielkości jest prawdopodobnie użyta w konstrukcji mostu Golden Gate w San Francisco. Śruby te mają ponad **60 cm** średnicy. + + * **Siła i Wytrzymałość** : Są one projektowane tak, aby wytrzymać duże obciążenia, w tym nacisk, napięcie(rozciąganie) i skręcanie. Dzięki temu są niezastąpione w aplikacjach wymagających wysokiej wytrzymałości, jak w przemyśle lotniczym czy motoryzacyjnym. + + * **Precyzja i Kontrola Naprężenia** : W inżynierii precyzyjnej, gdzie kontrola siły nacisku jest kluczowa, połączenia gwintowe pozwalają na dokładne regulowanie siły. + + * **Łatwość konserwacji i naprawy** : Ze względu na możliwość demontażu, ułatwiają konserwację i naprawy maszyn i urządzeń. + +### Historia i Normalizacja + +Początek normalizacji gwintów przypada na XIX wiek , co było odpowiedzią na +rozwijającą się rewolucję przemysłową i potrzebę standaryzacji komponentów. + + * * **1841 - Gwint Whitwortha** : Jedna z pierwszych prób standaryzacji, zaproponowana przez Josepha Whitwortha, ustanawiająca jednolite kąty i skok gwintu. + * **XX wiek** : Rozwój i upowszechnienie nowych standardów, takich jak gwint metryczny ISO, szeroko stosowany na świecie, czy amerykańskie standardy UNC/UNF. + +### Produkcja i Rodzaje + +Światowa produkcja elementów gwintowanych jest ogromna i różnorodna. Istnieją +tysiące różnych rodzajów śrub, nakrętek, wkrętów, zależnych od ich +zastosowania, rozmiaru, materiału, rodzaju gwintu i wytrzymałości. Wytwarzane +są z różnych materiałów, od stali po specjalistyczne stopy, aby sprostać +różnym wymaganiom, jak odporność na korozję czy wysoką temperaturę. + +### Zastosowanie w Przemysłach + +Połączenia gwintowe są niezbędne w wielu sektorach przemysłowych: + + * **Aeronautyka i Kosmonautyka** : W lotnictwie i eksploracji kosmosu połączenia gwintowe są używane do mocowania skrzydeł, silników, paneli sterujących, a także w systemach paliwowych i hydraulicznych. Ich niezawodność i wytrzymałość na ekstremalne warunki są tutaj kluczowe. + + * **Przemysł Morski** : W budowie statków i podwodnych pojazdów połączenia gwintowe są wykorzystywane do mocowania kadłuba, pokładu, a także w systemach napędowych i sterowania. + + * **Przemysł Energetyczny** : W elektrowniach jądrowych, wiatrowych i wodnych, połączenia gwintowe są używane do konstrukcji turbin, reaktorów oraz innych krytycznych komponentów, gdzie ich odporność na wysokie temperatury i ciśnienie jest niezbędna. + + * **Medycyna** : W sprzęcie medycznym i chirurgicznym, takim jak implanty kostne czy aparatura diagnostyczna, wykorzystuje się małe, precyzyjne połączenia gwintowe, które muszą być bardzo niezawodne i często wykonane z biokompatybilnych materiałów. + + * **Telekomunikacja** : W urządzeniach takich jak anteny, moduły transmisyjne, połączenia gwintowe zapewniają solidne i stabilne mocowanie, co jest kluczowe dla zachowania ciągłości sygnału. + + * **Transport Kolejowy** : W lokomotywach, wagonach i infrastrukturze torowej, połączenia gwintowe są używane do łączenia ważnych elementów, takich jak koła, osie, a także w systemach hamulcowych. + + * **Przemysł Chemiczny i Petrochemiczny** : W rafineriach i zakładach chemicznych, gdzie często dochodzi do kontaktu z agresywnymi substancjami, połączenia gwintowe wykonane z materiałów odpornych na korozję są niezbędne do konstrukcji rurociągów, zbiorników i innych urządzeń. + + * **Inżynieria Lądowa** : W maszynach budowlanych, jak koparki, ładowarki, dźwigi, połączenia gwintowe są wykorzystywane do łączenia ciężkich elementów oraz w systemach hydraulicznych, które odpowiadają za ruchy maszyn. + +### Aplikacje w Hydraulice + +W hydraulice, połączenia gwintowe są kluczowe dla bezpieczeństwa i +efektywności. Stosowane są do mocowania rur i węży, zaworów, pomp i innych +komponentów. Ich zdolność do wytrzymywania wysokich ciśnień i zapewniania +szczelności jest niezbędna w systemach hydraulicznych, które znajdują +zastosowanie od maszyn budowlanych po zaawansowane systemy ciśnieniowe. + + + +**Poniżej znajdziesz artykuły dotyczące projektowania połączeń gwintowych** + +**Spawanie** to proces łączenia materiałów za pomocą wprowadzenia ciepła w +postaci palnika, łuku elektrycznego lub wiązki elektronów czy wiązki fotonów. +Spawanie jest kluczową techniką wytwarzania elementów w przemyśle. Proces +spawania rozpoczyna się od stopienia krawędzi łączonych elementów, a +następnie, w przypadku niektórych metod, dodaje się materiał spawalniczy, +który po zastygnięciu tworzy trwałe połączenie. Do najpopularniejszych metod +zaliczają się spawanie łukowe TIG, MIG/MAG. Istnieją także techniki bardziej +zaawansowane jak spawanie laserowe (za pomocą wysokoenergetycznej wiązki +fotonów) czy elektronowe (za pomocą wiązki przyśpieszonych elektronów). + +Your content goes here. Edit or remove this text inline or in the module +Content settings. You can also style every aspect of this content in the +module Design settings and even apply custom CSS to this text in the module +Advanced settings. + diff --git a/frontend/src/content/połączenia-wciskowe.md b/frontend/src/content/połączenia-wciskowe.md new file mode 100644 index 0000000..7dd294c --- /dev/null +++ b/frontend/src/content/połączenia-wciskowe.md @@ -0,0 +1,678 @@ +--- +title: "Połączenia wciskowe" +date: 2025-01-05 15:13:13 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-cierne-czop-cylinder", + "category_name": "połączenia cierne czop-cylinder" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + } +] +--- + +### Czym są połączenia wciskowe + + + +### Pasowanie dla połączeń wciskowych + +* #### Symbole Tolerancji +* #### przykłady pasowań + + +### Obciążenie złącza czopowo cylindrycznego ciernego (wciskowego) + + + +### + +### Obciążalność połączenia wciskowego w zakresie odkształceń plastycznych + + + +### + +### Połączenia wciskowe - Dopuszczalny moment gnący + + + +### + +### Wytrzymałość złącza i elementów łączonych + +* #### Wytrzymałość dla materiałów elasto-plastycznych +* #### Dla czopów drążonych +* #### Dla czopów niedrążonych, pełnych +* #### Dla piast, opraw + + +### Odkształcenia elementów łączonych złącza wciskowego + +* #### Ogólny wzór na odkształcenia względne dla czopa drążonego wciskanego i piasty + + +### + +### Siła wtłaczania i rozłączania połączenia wciskowego + + + +### + +### Połączenia wciwkowe - Montażowe zmniejszenie wcisku + + + +### + +### Termiczne zmniejszenie wcisku działające na połączenia wciskowe + + + +### + +### Temperatura ogrzania piasty złącza skurczowego i oziębienia czopa złącza + +rozprężnego +* #### Temperatura ogrzania piasty +* #### Temperatura schłodzenia czopa + + +### Połączenia wciskowe - Obciążeniowe zmniejszenie wcisku + + + + + +## Czym są połączenia wciskowe + + +**Połączenia wciskowe (cierne)** \- są jednym z podstawowych sposobów łączenia +dwóch elementów maszyn. Zazwyczaj czopa (części wystającej, zazwyczaj osiowej) +i piasty (części obejmującej, z otworem). Najważniejszą siłą zapewniającą +elementom współpracę i połączenie jest siła tarcia, która dodatkowo utrzymuje +oba elementy w określonej pozycji i umożliwia przenoszenie obciążeń +mechanicznych. + +![](https://izaac.pl/wp-content/uploads/2022/02/34-300x170.png) + + +## Pasowanie dla połączeń wciskowych + + +Powierzchnie styku czopa i piasty dla połączeń wciskowych powinny być +obrobione w konkretny sposób z zachowaniem odpowiednich pasowań otworu do +wału. + +W przypadku elementów wykonanych ze stali (materiału ciągliwego) – nie +obowiązują żadne zasady doboru pasowań. Jedynym warunkiem jest spełnienie. + +Pasowanie nie jest w tym przypadku aż tak ważne jak dla materiałów kruchych, +które mogą w trakcie montażu pęknąć, jedynie pod uwagę na wytrzymałość złącza +- siłę potrzebną do rozłączenia –a która nam uwarunkuje siłę wtłoczenia złącza +oraz temperaturą ogrzania. Należy zwrócić także szczególną uwagę na koszty +klas dokładności. Zazwyczaj jest to 8-7 klasa dokładności dla stałego +(uprzywilejowanego) otworu lub wału. + +![](https://izaac.pl/wp-content/uploads/2022/01/45-300x36.png) + +**Gdzie:** + +**F_1z** \- górna odchyłka wałka/czopa . + +**G_2w** \- dolna odchyłka piasty/otworu. + +**W** \- wcisk + +**d** \- średnica nominalna wałka i otworu. + +**ε_min** = **ε_w - ε_-** \- wcisk wymagany, wymagana różnica zewnętrznej +średnicy czopa do wewnętrznej średnicy piasty (zestawienie najmniejszego czopu +i największego możliwego otworu piasty z uwzględnieniem czynników +zmieniających wcisk) + +**Gdzie :** + +![](https://izaac.pl/wp-content/uploads/2022/01/35.png) + +**δε_z** –**zmiana wcisku względnego spowodowana obciążeniem zewnętrznym.** + +**δε_t** –**zmiana wcisku względnego spowodowana temperaturą.** + +**δε_R** –**montażowe zmniejszenie wcisku.** + +**Symbole Tolerancji** : + +**(A-H), (a-h)** \- dotyczą pasowań luźnych + +**(J-N), (j-n)** \- dotyczą pasowań mieszanych + +**(P-U), (p-u)** \- dotyczą pasowań ciasnych + +**Pasowania dla poszczególnych sposobów montażu połączeń wciskanych w +zależności od siły jaką mamy przykładać.** + +A, a | przestronne, bardzo luźne | M, m | wciskane +---|---|---|--- +B, b | przestronne luźne | N, n | mocno wciskane +C, c | przestronne zwykłe | P, p | bardzo lekko wtłaczane +CD, cd | przestronne obrotowe | R, r | lekko wtłaczane +D, d | obrotowe bardzo luźne | S, s | wtłaczane +E, e | obrotowe luźne | T, t | mocno wtłaczane +EF, ef | obrotowe półluźne | U, u | bardzo mocno wtłaczany 1 +F, f | obrotowe zwykłe | V, v | bardzo mocno wtłaczany 2 +FG, fg | obrotowe półciasne | X, x | bardzo mocno wtłaczany 3 +G, g | obrotowe ciasne | Y, y | bardzo mocno wtłaczany 4 +H, h | suwliwe lub podstawowe | Z, z | bardzo mocno wtłaczany 5 +JS, js | przylgowe symetryczne | ZA, za | bardzo mocno wtłaczany 6 +I, i | przylgowe | ZB, zb | bardzo mocno wtłaczany 7 +K, k | lekko wciskane | ZC, zc | bardzo mocno wtłaczany 8 + + +## Obciążenie złącza czopowo cylindrycznego ciernego (wciskowego) + + + +### +### **Warunek, który musi zostać spełniony aby zapewnić działanie złącza + +ciernego (wciskowego):** + +Obciążenie w postaci siły stycznej P nie może przekroczyć najmniejszej siły +tarcia w złączu. + +![](https://izaac.pl/wp-content/uploads/2022/01/1-3.png) + +Gdzie: + +**P** \- **[obciążenie](https://izaac.pl/inzynieria-mechaniczna/wytrzymaloscna-rozciaganie-skrecanie-scianie-oraz-zginanie) **minimalne zapewniające +stałość połączenia + +**T** \- rozporządzalna siła tarcia w złączu + +**F** \- pole powierzchni styku + +**μ** \- współczynnik tarcia między elementami + +**p** \- **[nacisk](https://izaac.pl/inzynieria-mechaniczna/podstawywytrzymalosci-materialow#5) **na połączenia wciskowe + +**d** \- średnica cylindra powierzchni styku + +**l** \- długość wcisku + +**Dopuszczalne obciążenie[momentem skręcającym](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#3) +połączenia ciernego czopowo cylindrycznego (wciskowego)** + +![](https://izaac.pl/wp-content/uploads/2022/01/2-3.png) + +**Najmniejszy wymagany nacisk na powierzchni styku połączenia ciernego :** + +Dla obciążenia siłą : + +![](https://izaac.pl/wp-content/uploads/2022/01/3-4.png) + +Dla obciążenia momentem: + +![](https://izaac.pl/wp-content/uploads/2022/01/4-2.png) + + +## Obciążalność połączenia wciskowego w zakresie odkształceń plastycznych + + + + + + +Warunek obciążalności wymaga aby jednostkowa siła P/F – siła przypadająca na +jednostkę powierzchni, była mniejsza od jednostkowej siły tarcia. Zatem co +najmniej + +![](https://izaac.pl/wp-content/uploads/2022/01/39.png) + +Gdzie +**μ -** współczynik tarcia między czopem a piastą na powierzchni styku +gwarantowanej w warunkach pracy + +**p_0** – gwarantowany nacisk jednostkowy. Tzn. taki który zapewnia +wytrzymałość złącza. + +Dla obciążenia momentem siły tarcie jednostkowe musi być conajmniej równe + +![](https://izaac.pl/wp-content/uploads/2022/01/40.png) + +**Względne obliczeniowe[odkształcenia](https://izaac.pl/inzynieriamechaniczna/podstawy-wytrzymalosci-materialow#4)** + +Połączenia wciskowe wtłaczane obowiązuje poniższa procedura: + +Odkształcenia plastyczne w przypadku połączenia wciskowego wtłaczanego nie +powodują osłabienia złącza. Ponadto nie wywołują także jego wzmocnienia, stąd +też można przyjąć wcisk względny obliczeniowy (używany w obliczeniach) +gwarantujący nam **p_0** większy niż ten przy przekraczaniu odkształceń +plastycznych **ε_Q** Wtedy w obliczeniach przyjmuje się, że **p_0** jest równe +naciskom **p_Q** występującym przy przekraczaniu odkształceń w zakres +odkształceń plastycznych. + +![](https://izaac.pl/wp-content/uploads/2022/01/41.png) + +Połączenia wciskowe skurczowe: + +dla połączeń skurczowych, zalecane jest aby przyjmować**p_0=1,5p_Q** dla +odkształcenia względnego wynoszącego więcej niż dwukrotność odkształceń +względnych przy przekraczaniu granicy palstyczności **ε_0 ≥ 2ε_Q** + +![](https://izaac.pl/wp-content/uploads/2022/01/42.png) + +Natomiast dla wartości **ε_Q < ε_0 < 2ε_Q** + +![](https://izaac.pl/wp-content/uploads/2022/01/43-1-300x49.png) + +Zależność jednostkowej siły tarcia od wcisku względnego + +Połączenie wtłaczane + +![](https://izaac.pl/wp-content/uploads/2022/02/31-290x300.png) + +Połączenie skurczowe + +![](https://izaac.pl/wp-content/uploads/2022/02/32-270x300.png) + + +## Połączenia wciskowe - dopuszczalny moment gnący + + + +### **Obciążenie złącza wciskowego momentem gnącym** + + +W przypadku obciążenia gnącego, rozkład naprężeń w połączeniu nie jest +równomierny co powoduje powstawanie różnicy nacisków. + +rozkład naprężeń promieniowych + +![](https://izaac.pl/wp-content/uploads/2022/02/37-300x186.png) + +rozkład naprężeń równoważący moment gnący + + + +![](https://izaac.pl/wp-content/uploads/2022/02/38-300x175.png) + +Minimalny **[nacisk powierzchniowy](https://izaac.pl/inzynieriamechaniczna/podstawy-wytrzymalosci-materialow#5)** **(p_min)** w złączu, który +musimy pozostawić uwzględniając obciążenie zginające aby nie doprowadzić do +powstawania luzu w złączu musi być + +![](https://izaac.pl/wp-content/uploads/2022/01/5-2.png) + +Z tego warunku wynika że + +![](https://izaac.pl/wp-content/uploads/2022/01/6-3.png) + +gdzie + +**p** \- nacisk powierzchniowy wywołany wciskiem + +Warunek obciążalności złącza wciskowego momentem gnącym + +![](https://izaac.pl/wp-content/uploads/2022/01/7-1.png) + +Gdzie + +**M_g** \- **[moment gnący](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie$4)** + +**p_M** \- średni nacisk + +**d** \- średnica połączenia + +**l** \- długość styku złącza + +**p** \- nacisk powierzchniowy + +![](https://izaac.pl/wp-content/uploads/2022/01/8-3-300x61.png) + +gdzie **p_M** \- nacisk wywołany obciążeniem momentem gnącym + + +## Wytrzymałość złącza i elementów łączonych + + + + +Naprężenia obwodowe i promieniowe w czopie i piaście + +**Naprężenia w[wale](https://izaac.pl/inzynieria-mechaniczna/projektowaniewalow) drążonym** + + +## **![](https://izaac.pl/wp-content/uploads/2022/02/35-300x284.png)** + + +**Naprężenia w wale pełnym** + + +## **![](https://izaac.pl/wp-content/uploads/2022/02/36-210x300.png)** + + + +### Wytrzymałość połączenia wciskowego dla materiałów elasto-plastycznych + + + +### **Dla czopów drążonych** + + +Z uwagi na prawo Lamiego (nie będziemy go tu omawiać jednak obejmuje ono +zagadnienie naprężeń występujących w rurach grubościennych w czopie drążonym) +największe naprężenia występują na powierzchni swobodnej (wewnętrznej), gdzie +występuje naprężenie normalne σ1 (wynikające z wcisku zapewniającego nacisk p) +na powierzchni styku - spiętrzone przez zmianę średnicy czopa i naprężenie +wynikające z nacisku p. + +Więc: + +![](https://izaac.pl/wp-content/uploads/2022/01/9-300x36.png) + +Gdzie: + +P_R1 = naciski na czopie + +![](https://izaac.pl/wp-content/uploads/2022/01/10.png) | -Współczynnik wydrążenia czopa +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/11.png) | -Osłabienie wytrzymałości czopa z uwagi na spiętrzenie naprężeń idące za zmianą geometrii przekroju czopa. +![](https://izaac.pl/wp-content/uploads/2022/01/12.png) | -Granica plastyczności dla materiału czopa + + +### **Dla czopów niedrążonych, pełnych** + + +W czopach pełnych, naprężenia normalne σ1 (wynikające z wcisku zapewniającego +nacisk p), równe są naciskowi p + +Zgodnie z hipotezą największej energii odkształcenia (Hubera, von Missesa) +Naprężenia zastępcze: + +![](https://izaac.pl/wp-content/uploads/2022/01/13-300x45.png) + + +### **Wytrzymałość połączenia wciskowego Dla piast i opraw:** + + +W piastach największe naprężenia występują na punkcie styku z czopem, gdzie +występuje naprężenie obwodowe σ2 na powierzchni styku (wynikające z wcisku +zapewniającego nacisk p) spiętrzone przez zmianę średnicy piasty, oraz naciski +p wcisku zapewniające wytrzymałość złącza. + +Wytrzymałość: + +![](https://izaac.pl/wp-content/uploads/2022/01/14.png) + +Lub : + +![](https://izaac.pl/wp-content/uploads/2022/01/15-300x102.png) + +P_R2 = naciski na piaście + +![](https://izaac.pl/wp-content/uploads/2022/01/16.png) | -Granica plastyczności dla materiału piasty +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/17.png) | -Współczynnik wydrążenia piasty +![](https://izaac.pl/wp-content/uploads/2022/01/18.png) | -Osłabienie wytrzymałości piasty z uwagi na spiętrzenie naprężeń idące za zmianą geometrii przekroju piasty + + +## Odkształcenia elementów łączonych złącza wciskowego + + + +### Rozważymy obciążenie złącza wciskowego momentem gnącym. Rysunki + +schematycznie przedstawiają elementy przed i po montażu. + +przed zmontowaniem, przygotowanie elementów do wcisku. Warto zwrócić uwagę na +fazki elementów współpracujących ze sobą. + +![](https://izaac.pl/wp-content/uploads/2022/02/33-300x160.png) + +po zmontowaniu. Wydrążony czop zostaje wciśnięty do środka natomaist wydrążona +piasta zostaje rozepchana. + +![](https://izaac.pl/wp-content/uploads/2022/02/34-300x170.png) + +naprężenia na elementach łączonych + +![](https://izaac.pl/wp-content/uploads/2022/02/39-291x300.png) + + +### Ogólny wzór na odkształcenia względne dla czopa drążonego wciskanego i + +piasty + +![](https://izaac.pl/wp-content/uploads/2022/01/19-300x44.png) + +Gdzie : + +**ε** \- odkształcenie względne - stosunek wcisku do zakładanej średnicy +połączenia + +![](https://izaac.pl/wp-content/uploads/2022/01/20.png) + +Wymagane odkształcenie względne, zapewniające wytrzymałość złącza + +![](https://izaac.pl/wp-content/uploads/2022/01/21-300x41.png) + +Gdzie: + +![](https://izaac.pl/wp-content/uploads/2022/01/22.png) + +Ww- wcisk wymagany, wymagana różnica zewnętrznej średnicy czopa do wewnętrznej +średnicy piasty + +![](https://izaac.pl/wp-content/uploads/2022/01/23.png) | \- stosunek naprężeń obwodowych do nacisku w złączu dla czopa, na powierzchni styku +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/24.png) | \- stosunek naprężeń obwodowych do naisku w złączu dla piasty, na powierzchni styku +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/25.png) | -współczynnik wydrążenia czopa +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/26.png) | -współczynnik wydrążenia piasty + +**v1, v2** \- Liczby Poissona dla materiału czopa i piasty + +**E1 i E2** \- Moduły sprężystości podłużnej materiałów czopa i piasty [GPa] + +Odkształcenia na powierzchniach swobodnych, należy liczyć , gdy te stykają się +z innymi elementami, np. oprawą łożyska . + +Odkształcenia powierzchni swobodnej + +![](https://izaac.pl/wp-content/uploads/2022/01/27.png) + +![](https://izaac.pl/wp-content/uploads/2022/01/28.png) + + +## Siła wtłaczania i rozłączania połączenia wciskowego + + +Występują dwa przypadki dla wtłaczania i wytłaczania. Z odkształceniem +plastycznym oraz z odkształceniem sprężystym. + +Rodzaj | Wtłaczanie | Wytłaczanie /Rozłączanie +---|---|--- +Schemat | _![](https://izaac.pl/wp-content/uploads/2022/02/40-211x300.png)_| ![](https://izaac.pl/wp-content/uploads/2022/02/41-211x300.png) +Odkształcenie sprężyste +Odkształcenie plastyczne + +Dla odkształcenia sprężystego elementów łączonych + +![](https://izaac.pl/wp-content/uploads/2022/01/46-300x35.png) + +Przy czym P_max dla takiego połączenia równe jest naprężeniom maksymalnym dla +danego kryterium – dla naprężeń nie przekraczających granicy sprężystości lub +granicy plastyczności + +Dla odkształceń plastycznych + +Siła Pr potrzebna do rozłączenia połaczenia przy występowaniu odkształceń +plastycznych jest o 20-50% większa niż Pw z uwagi na wzrost współczynnika +tarcia. + + +## Połączenia wciskowe - Montażowe zmniejszenie wcisku + + +W przypadku złącza wtłaczanego następuje zmniejszenie wcisku wynikające z +odkształcenia plastycznego wierzchołków nierówności +(**[chropowatość](https://izaac.pl/inzynieria-mechaniczna/oznaczaniechropowatosci-powierzchni-i-obrobki-powierzchniowej)**) czopa i tulei + +Gdy połączenie jest wtłączane, wcisk ulega zmniejszeniu z uwagi na +odkształcenia plastyczne nierówności wykonania czopa i tulei + +W takim razie, zmiana wcisku równa jest: + +![](https://izaac.pl/wp-content/uploads/2022/01/30.png) + +**Rz1** \- średnia wysokość chropowatości czopa + +**Rw2** \- średnia wysokość chropowatości piasty + +**a=0,8÷1,2** + +W przypadku połączenia skurczowego ∆W=0 poprzez brak uplastyczniania +wierzchołków nierówności poprzez brak wciskania. + +Więc + +![](https://izaac.pl/wp-content/uploads/2022/01/31.png) + +**δε_R** \- montażowe zmniejszenie wcisku względnego, Jest to stosunek różnicy +średnich wysokości chropowatości (ścieranych przez wcisk) do średnicy +zakładanej połączenia wciskowego. + + +## Termiczne zmniejszenie wcisku działające na połączenia wciskowe + + +W przypadku złącza montowanego termicznie poprzez ogrzanie piasty i +spowodowanie poszerzenia średnicy otworu na skutek rozszerzalności cieplnej, +lub ochłodzenie czopa i zmniejszenie średnicy wału na skutek skurczu +cieplnego. + +Należy jednak pamiętać , że zmiana wcisku na skutek działania odkształceń +cieplnych, wynikać może także z tego, że temperatura montażu elementów może +różnić się od temperatury pracy. Może także ulec zmianie w trakcie samej +pracy, w wyniku nagrzewania się elementów. + +Zmiana wcisku w takim wypadku (nie montażowym) + +![](https://izaac.pl/wp-content/uploads/2022/01/32.png) + +Gdzie + +**δε_t** \- zmiana wcisku względnego spowodowana odkształceniami cieplnymi, +Jest to stosunek odkształcenia cieplnego do średnicy zakładanej połączenia. + +**α_1** \- współczynnik rozszerzalności cieplnej czopa + +**α_2** \- współczynnik rozszerzalności cieplnej piasty + +**t1** \- temperatura czopa w trakcie pracy + +**t2** \- temperatura piasty w trakcie pracy + +**t_m** \- temperatura montażu + +Często w wyniku wysokiej przewodności cieplnej metali zakłada się dla +materiałów metalowych, że + +**t1=t2=t_m** + + + + +## Temperatura ogrzania piasty złącza skurczowego i oziębienia czopa złącza + +rozprężnego + + + + + + +### **Temperatura ogrzania piasty** + + +![](https://izaac.pl/wp-content/uploads/2022/01/47.png) + +Gdzie + +**α_t** \- współczynnik rozszerzalności cieplnej + +**t_m** \- temperatura montażu + +**δε_m** \- wymagany względny luz montażowy **(0,001- 0,0015)** + + +### **Temperatura schłodzenia czopa** + + +**![](https://izaac.pl/wp-content/uploads/2022/01/48.png)** + + + + +## Połączenia wciskowe - obciążeniowe zmniejszenie wcisku + + +Elementami łączonymi wciskowo są bardzo często wały i elementy na nich +osadzone, które (np. w przemyśle lotniczym) osiągają bardzo wysokie prędkości +obrotowe. Ale także np. pod działaniem ciśnienia czynnika. Z uwagi na ten fakt +wcisk może poprzez działanie siły odśrodkowej lub ciśnienia, lub innych +czynników ulec zmniejszeniu lub zwiększeniu. Wtedy oznaczamy taką poprawkę +jako + +**δε_z** – zmiana wcisku względnego spowodowana obciążeniem zewnętrznym. + +Ponadto + +Zależność nacisku jednostkowego na powierzchni styku od wcisku względnego + +Dla określonej wartości wcisku względnego + +![](https://izaac.pl/wp-content/uploads/2022/02/43-289x300.png) + +Przy wybranym pasowaniu + +![](https://izaac.pl/wp-content/uploads/2022/02/44-300x278.png) + +Minimalny wcisk względny z uwzględnieniem poprawek wcisku względnego +(zestawienie najmniejszego czopu i największego możliwego otworu piasty z +uwzględnieniem czynników zmieniających wcisk) równy jest: + +![](https://izaac.pl/wp-content/uploads/2022/01/34.png) + +Gdzie + +![](https://izaac.pl/wp-content/uploads/2022/01/35.png) + +Maksymalny wcisk względny z uwzględnieniem poprawek wcisku względnego +(zestawienie największego możliwego czopu z najmniejszym otworem piasty) z +uwzględnieniem czynników zmieniających wcisk) równy jest: + +**δε_max -** maksymalna zmiana wcisku + +**δε_min -** minimalna zmiana wcisku + +![](https://izaac.pl/wp-content/uploads/2022/01/36.png) + +lub : + +![](https://izaac.pl/wp-content/uploads/2022/01/37.png) + +![](https://izaac.pl/wp-content/uploads/2022/01/38.png) + diff --git a/frontend/src/content/połączenia-wielowypustowe.md b/frontend/src/content/połączenia-wielowypustowe.md new file mode 100644 index 0000000..ae3b1d2 --- /dev/null +++ b/frontend/src/content/połączenia-wielowypustowe.md @@ -0,0 +1,182 @@ +--- +title: "Połączenia wielowypustowe" +date: 2025-01-03 21:29:47 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-wielowypustowe", + "category_name": "połączenia wielowypustowe" + } +] +--- + +### Czym są połączenia wielowypustowe + + + +### Wady i zalety połączenia wielowypustowego + + + +### Zarysy wielowypustów stosowane w praktyce. + + + +### Główne wymiary zarysów połączeń wielowpustowych + + + +### Obliczanie połączeń wielowypustowych + + + +### Dopuszczalne naciski na połączeniach wielowypustowych + + + +## Czym są połączenia wielowypustowe + + +**Połączenia wielowypustowe** to połączenia mechaniczne, które umożliwiają +przenoszenie **[momentu obrotowego](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#3)** +pomiędzy **[wałem](https://izaac.pl/inzynieria-mechaniczna/podstawoweinformacje-o-walach-i-osiach) **a piastą. Połączenie wielowypustowe składa się +z wielu koncentrycznie ułożonych wokół osi wału wypustów (zębów), które są +rozmieszczone równomiernie i osadzone są w rowkach na piastach. +Wypusty mogą mieć różne kształty, np. trapezowe, prostokątne, ewolwentowe. + +Połączenia wielowypustowe znajdują zastosowanie w mechanizmach, gdzie +konieczne jest precyzyjne przenoszenie momentu obrotowego oraz w układach +przeniesienia napędu, takich jak skrzynie biegów, układy kierownicze. + + +## Wady i zalety połączenia wielowypustowego + + + + +**Zalety:** +* Zdolność przenoszenia **[obciążeń zmiennych](https://izaac.pl/inzynieria-mechaniczna/podstawy-wytrzymalosci-materialow#3)** , +* Centrowanie piasty w czopie, +* Łatwość montażu i demontażu, +* Łatwość wykonania i produkcji (jednostkowej i małoseryjnej), +* Możliwość przenoszenia siły wzdłużnej + +**Wady:** +* Brak **[naprężeń](https://izaac.pl/inzynieria-mechaniczna/podstawy-wytrzymalosci-materialow#5) **montażowych, +* Brak pełnej normalizacji kształtu i pasowania + + +## Zarysy wielowypustów stosowane w praktyce. + + +a) proste zarysy boków + +![](https://izaac.pl/wp-content/uploads/2022/02/13-300x102.png) + +b) wielokarbowe + +![](https://izaac.pl/wp-content/uploads/2022/02/14-300x154.png) + +c) ewolwentowych + +![](https://izaac.pl/wp-content/uploads/2022/02/15-300x156.png) + +Kształty wypustów (zarysy) dobiera się w zależności od rodzaju środkowania +(centrowania czopa w piaście) i sposobu obróbki. + +Wyróżnia się centrowanie za pomocą: + +Bocznych powierzchni wypustu b | ![](https://izaac.pl/wp-content/uploads/2022/02/16-1-300x197.png) +---|--- +Średnicy zewnętrznej wypustu D - obróbka kształtowa | ![](https://izaac.pl/wp-content/uploads/2022/02/17-1-300x197.png) +Średnicy wewnętrznej wypustu d - najczęściej stosowana metoda. - obróbka obwiedniowa | ![](https://izaac.pl/wp-content/uploads/2022/02/18-300x197.png) + + + +## Główne wymiary Zarysów połączeń wielowpustowych : + + +Dla zarysów prostych - + +Liczba wypustów | _d [mm]_ | _D [mm]_ | _b [mm]_ +---|---|---|--- +6 | 23 | 26 | 6 +26 | 30 | 6 +28 | 32 | 7 +8 | 32 | 36 | 7 +36 | 40 | 7 +42 | 46 | 8 +46 | 50 | 9 +52 | 58 | 10 +56 | 62 | 10 +62 | 68 | 12 +10 | 72 | 78 | 12 +82 | 88 | 12 +92 | 98 | 14 +102 | 108 | 16 +112 | 120 | 18 + + + +## Połączenia wielowypustowe - obliczania + + +Warunkiem obliczeniowym wypustów jest wytrzymałość zęba (wypustu) na naciski +dopuszczalne + + +### **Obciążenie maksymalne dopuszczalne, przypadające na jeden ząb + +połączenia wielowypustowego** + +![](https://izaac.pl/wp-content/uploads/2022/01/4-1.png) + +**z** \- liczba zębów + +**w** \- współczynnik wożenia - o wartości 0,75. Opisuje on przenoszalność +obciążenia przez zęby spowodowaną nierównomiernością obróbki. Oznacza, że 75% +powierzchni zębów bierze udział w przenoszeniu obciążeń + +**l** \- długość czopa przenosząca obciążenie + +**Pmax** \- maksymalna siła + +**p_dop** \- naciski dopuszczalne (uwarunkowane właściwościami materiałowymi i +współczynnikiem bezpieczeństwa) + +**D** \- średnica zewnętrzna obrysu wypustów + +**d** \- Średnica wewnętrzna obrysu wypustów + + +## Dopuszczalne [naciski](https://izaac.pl/inzynieria-mechaniczna/podstawywytrzymalosci-materialow#5) na połączeniach wielowypustowych + + +1) Dla obciążeń uderzeniowych kierunkowo- zmiennych z ograniczonym +smarowaniem, małej dokładności wykonania + +2) Dla obciążeń zmiennych ze standardowym smarowaniem, dla materiałów o +średniej wytrzymałości i obróbce + +3) Dla obciążeń jednokierunkowych i dobrego smarowania, dla materiałów o +wysokiej wytrzymałości i dobrej obróbce + +Rodzaj połączenia | Warunki pracy | Powierzchnie robocze czopa nieutwardzone [MPa] | Powierzchnie robocze czopa ulepszone lub hartowane [MPa] +---|---|---|--- +Połączenie spoczynkowe czopu z piastą | 1) 2) 3) | ~35-50 ~60-100 ~80-120 | ~40-70 ~100-140 ~120-200 +Połączenia przesuwne czopu z piastą bez obciążenia | 1) 2) 3) | ~15-20 ~20-30 ~25-40 | ~20-35 ~30-60 ~40-70 +Połączenia przesuwne czopu z pisatą pod obciążeniem | 1) 2) 3) | - - - | ~3-10 ~5-15 ~10-20 + +Tabela pozyskana z "Podstawy konstrukcji maszyn, Witold Korewa, 1965" + diff --git a/frontend/src/content/projektowanie-sprężyn.md b/frontend/src/content/projektowanie-sprężyn.md new file mode 100644 index 0000000..57e9203 --- /dev/null +++ b/frontend/src/content/projektowanie-sprężyn.md @@ -0,0 +1,521 @@ +--- +title: "Projektowanie Sprężyn" +date: 2025-01-12 18:45:34 +categories: [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } +] +--- + +### Projektowanie sprężyn o pręcie skręcanym + +* #### Projektowanie sprężyny o pręcie skręcanym dla obciążeń statycznych +* #### Wytrzymałość sprężyny liczona za pomocą współczynnika kształtu i wymiaru przekroju +* #### Sprężyny śrubowe walcowe, naciskowe z drutu okrągłego +* #### Zestawienie wzorów dla sprężyn o pręcie skręcanym. + + +### Projektowanie sprężyn dla obciążeń dynamicznych + +* #### Projektowanie sprężyn dla obciążeń dynamicznych + + +### Sprężyny zginane + +* #### Obliczenia sprężyn o pręcie zginanym +* #### Wzory obliczeniowe dla sprężyn zginanych + + +## Projektowanie sprężyn o pręcie skręcanym + + +Projektowanie sprężyn należy zacząć od określenia charakteru obciążeń na +sprężynie. Należy wziąć pod uwagę wykonanie obliczeń dla dwóch przypadków. +Pierwszy to przypadek statyczny, w którym obciążenia się nie zmieniają a +sprężyna jest stale obciążona niezmienną siłą. Drugi to przypadek dynamiczny, +dla którego siła działająca na sprężynę ulega zmianie dynamicznie w czasie. + +Klasyczne sprężyny zawinięte, obciążone wzdłuż osi walca, po którym są +zawinięte należą do sprężyn o pręcie skręcanym, gdyż mimo tego, że siła ściska +sprężynę to poprzez taką geometrię **[skręca](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#3) +**pręt. + +W przypadku skręcania pręta zawiniętego (np. klasyczne sprężyny śrubowe) , +rozkład[ **naprężeń ścinających** ](https://izaac.pl/inzynieriamechaniczna/podstawy-wytrzymalosci-materialow#5)wywołanych momentem +skręcającym, poprzez zagięcie pręta nie jest rozmieszczone wokół osi +centralnej przekroju pręta sprężyny. Efekt ten uwzględniany jest w +obliczeniach poprzez dodanie **η_AS** \- **współczynnika równomierności +rozmieszczenia naprężeń** + +![](https://izaac.pl/wp-content/uploads/2022/01/w18-300x213.png) + +Głównym kryterium przy projektowaniu sprężyny o pręcie skręcanym jest +wytrzymałość pręta na skręcanie, zatem naprężenia styczne. + +Naprężenia styczne muszą być mniejsze niż dopuszczalne naprężenia dla danego +materiału. + +Gdzie: + +**τ_s** \- naprężenia styczne wywołane momentem skręcającym. Maksymalne +naprężenia styczne to **τ_max**. Nie mogą one przekraczać [**k_s - +dopuszczalnych naprężeń stycznych w materiale.**](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#1-1) + +**W_o** \- wskaźnik przekroju pręta na skręcanie + +**M_st/M_s** \- moment skręcający + +[**G - moduł Kirchoffa**](https://izaac.pl/inzynieria-mechaniczna/modulyounga-i-statyczna-proba-rozciagania#1) + +[**J_o - osiowy moment bezwładności przekroju pręta pręta sprężyny (pod +linkiem tabele dla danych przekrojów)**](https://izaac.pl/pomoceinzynierskie/tabele-geometryczne) + +**η_AS** \- **współczynnik równomierności rozmieszczenia naprężeń** w pręcie +skręcanym - wywołany zagięicem pręta wokół osi i przesunięciem naprężeń +skręcanych w kierunku osi sprężyny czasami oznaczany **η_A** + +**k_s** \- wartośc naprężeń stycznych dopuszczalnych dla mateirału z którego +zrobiona jest sprężyna + +**φ** \- kąt skręcenia + + +### Projektowanie sprężyny o pręcie skręcanym dla obciążeń statycznych + + +W pierwszej kolejności, w jaki sposób należy liczyć naszą spręzynę należy +wziąć pod uwagę poniższe wzory. + +![](https://izaac.pl/wp-content/uploads/2022/01/graniczna-wartosc-wspolczynnika-stalosci-obciazenia.png) | Jest to graniczna wartość współczynnika stałości obciążenia, przy której uzyskuje się jednakowe bezpieczeństwo w warunkach statycznych i dynamicznych +---|--- +Jeśli współczynnik stałości obciążenia wynosi ![](https://izaac.pl/wp-content/uploads/2022/01/graniczna-wartosc-wspolczynnika-stalosci-obciazenia-2-.png) | To o wytrzymałości decyduje wytrzymałość statyczna +Jeśli współczynnik stałości obciążenia wynosi ![](https://izaac.pl/wp-content/uploads/2022/01/graniczna-wartosc-wspolczynnika-stalosci-obciazenia-3.png) | To o wytrzymałości decyduje wytrzymałość zmęczeniowa + +Gdzie: + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-2.png) | \- **współczynnik stałości obciążeń**. +---|--- + +**k_sj -** dopuszczalne naprężenia skręcające jednostronnie zmienne. + +**k_s** \- dopuszczalne naprężenia skręcające dla obciażeń stałych. + +**P_min** \- Siła minimalna o charakterze zmiennym występująca w sprężynie. + +**P_max** \- Siła minimalna o charakterze zmiennym występująca w sprężynie. + +**Re** \- [**Granica plastyczności**](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#1) w +próbce rozciąganej. + +**Rm** \- **[granica wytrzymałości](https://izaac.pl/inzynieriamechaniczna/modul-younga-i-statyczna-proba-rozciagania#2) **\- stosowane dla +stali twardych, pękających. + +[**Współczynnik bezpieczeństwa**](https://izaac.pl/inzynieriamechaniczna/wspolczynniki-bezpieczenstwa) dla Granicy plastyczności i granicy +wytrzymałości + + +### Wytrzymałość sprężyny liczona za pomocą wsółczynnika kształtu i wymiaru + +przekroju: + +**g_k** \- współczynnik kształtu + +**g_w** \- współczynnik przekroju, zazwyczaj pozyskiwane z gotowych tablic + +**g_f** \- współczynnik wytrzymałości przekroju pręta + +Tablica wartości powyższych współczynników dla sprężyn o pręcie skręcanym o +przekroju okrągłym + +**D/d** | **3** | **4** | **5** | **6** | **7** | **8** | **9** | **10** | **12** | **14** | **16** +---|---|---|---|---|---|---|---|---|---|---|--- +**g_k** | 0,645 | 0,725 | 0,775 | 0,813 | 0,833 | 0,855 | 0,870 | 0,884 | 0,905 | 0,918 | 0,925 +**g_d** | 0,292 | 0,268 | 0,248 | 0,232 | 0,2175 | 0,206 | 0,196 | 0,187 | 0,173 | 0,161 | 0,152 +**g_f** | 0,1075 | 0,0905 | 0,0775 | 0,0677 | 0,0595 | 0,0534 | 0,0489 | 0,0446 | 0,0381 | 0,033 | 0,0194 + +d_o - średnica[ **próbki służącej do wyznaczania cech wytrzymałościowych +materiału**](https://izaac.pl/inzynieria-mechaniczna/modul-younga-i-statycznaproba-rozciagania#2) + +Zazwyczaj: + +Uwzględniając współczynniki kształtu i wymiaru przekroju [**naprężenia +ścinające**](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#2): + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-7.png) | \- **dopuszczalne naprężenie** dla pręta prostego uwzględniające wymiary przekroju i warunki obciążenia +---|--- + +Oraz + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-10.png) | \- współczynnik wytrzymałościowy średnicy pręta +---|--- + +Wzór na poel przekroju (a zatem także pośrednio wzór na średnicę pręta) pręta +sprężyny wynosi więc : + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn- +wzor-12.png) + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-11.png) | \- współczynnik wytrzymałości przekroju pręta +---|--- +F | \- pole przekroju pręta sprężyny + + +### Zestawienie wzorów dla sprężyn o pręcie skręcanym + + +Najważniejsze wzory dla drążka skrętnego. + +Naprężenie w drążku skręcanym | Kąt skręcenia drążka skrętnego | **[Współczynnik sztywności dla drążka skręcanego](https://izaac.pl/inzynieria-mechaniczna/sprezyna#3)** | Praca odkształcenia sprężyny | Zdolność akumulowania energii drążka skrętnego +---|---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-14.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-15.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-16.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-17.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-18.png) + +Najważniejsze wzory dla sprężyny śrubowej o różnych przekrojach. + +Naprężenie w sprężynie śrubowej | Strzałka ugięcia sprężyny śrubowej | Współczynnik sztywności sprężyny śrubowej | Praca odkształcenia sprężyny śrubowej | Zdolność akumulowania energii sprężyny śrubowej +---|---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-19.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-20.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-21.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-22.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-23.png) + + +Dla pręta o przekroju okrągłym. + +Średnica, przekrój pręta | Ugięcie zwoju f/i | Wskaźnik wytrzymałości przekroju w osi przekroju | Moment bezwładności przekroju w osi | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-24.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-25.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-26.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-27.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-28.png) + + +Dla pręta o przekroju prostokątnym. + +Średnica, przekrój pręta (g_f i k_w z wzorów powyżej) | Ugięcie zwoju f/i | Wskaźnik wytrzymałości przekroju w osi przekroju | Moment bezwładności przekroju w osi | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-29.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-30.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-31-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-32-1.png) | + +Wartości współczynników do obliczania spręzyn śrubowych o prostokątnym pręcie +skręcanym + +b/h | 1,0 | 1,5 | 2 | 3 | 4 | 5 +---|---|---|---|---|---|--- +η_2 | 0,208 | 0,231 | 0,246 | 0,267 | 0,282 | 0,29 +η_3 | 0,140 | 0,196 | 0,229 | 0,263 | 0,281 | 0,29 +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-34.png) | 0,308 | 0,272 | 0,264 | 0,272 | 0,282 | 0,29 +γ | 5,60 | 2,67 | 1,70 | 1 | 0,7 | 0,54 + + +### Sprężyny śrubowe walcowe, naciskowe z drutu okrągłego: + + +Sprężyny śrubowe o niewielkich wymiarach i masie charakteryzują się szeregiem +korzystnych właściwości, które sprawiają, że są one efektywnym elementem +konstrukcyjnym w różnych zastosowaniach. + +**Wysoka podatność** – dzięki niewielkim wymiarom mogą ulegać odkształceniom, +co pozwala na ich elastyczne zastosowanie w mechanizmach. +**Zdolność do akumulacji energii** – ich budowa umożliwia magazynowanie +energii mechanicznej. +**Brak dodatkowych uchwytów** – pozwala to na oszczędność przestrzeni oraz +uproszczenie konstrukcji. +**Efektywne wykorzystanie materiału i przestrzeni** – kompaktowe wymiary i +przemyślana konstrukcja maksymalizują funkcjonalność przy minimalnym zużyciu +surowca. +**Centryczne przeniesienie siły** – konstrukcja śruby umożliwia równomierne +rozłożenie obciążeń, co zwiększa jej trwałość i niezawodność. + +Końce takich śrub są precyzyjnie zaciśnięte oraz szlifowane **na co najmniej ¾ +obwodu** , co zapewnia ich stabilność i dokładność działania. W przypadku +sprężyn o dużych średnicach (oznaczanych jako duże d), końcówki są dodatkowo +rozkuwane, co wzmacnia ich konstrukcję i poprawia ich parametry użytkowe. + +Dla sprężyny w stanie nieobciążonym **[kąt wznosu linii +śrubowej](https://izaac.pl/inzynieria-mechaniczna/gwinty-kompleksowyprzewodnik-od-opisu-po-tolerancje#Podstawowe-Informacje-o-Gwintach) powinien +wynosić 8°**. Taka wartość zapewnia odpowiednie warunki pracy sprężyny, +pozwalając na jej optymalne odkształcenie oraz efektywne gromadzenie i +oddawanie energii. Zachowanie tego parametru gwarantuje równowagę pomiędzy +wytrzymałością a elastycznością konstrukcji. + +Jednym z parametrów obliczeniowych sprężyn jest [**strzałka +ugięcia**](https://izaac.pl/pomoce-inzynierskie/wzory-i-wykresy-dla-zginaniabelek-przy-stalym-obciazeniu) jednego zwoju + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-35.png) | \- całkowita liczba zwojów sprężyny, wartość 1,5...2 wynika z zagięcia i zeszlifowania pierwszego i ostatniego zwoju sprężyny w celu zapewnienia odpowiedniego podparcia +---|--- +| + + + +### Wysokość sprężyny + + +Sprężyna powinna być zaprojektowana w taki sposób, aby nawet przy największym +dopuszczalnym obciążeniu (**Qmax**) został zachowany minimalny luz między +zwojami. Jest to ważne dla zapewnienia trwałości sprężyny oraz jej efektywnej +pracy, zapobiegając zjawisku trwałego odkształcenia i nadmiernego zużycia. + +Przyjmuje się, że w stanie zwartym w przekroju pręta osiowego wartość +naprężenia równa jest granicy sprężystości. + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-36.png) | \- wysokość spreżyny zwartej (ściśniętej do punktu zwarcia zwojów) +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-37.png) | \- wysokość sprężyny obciążonej +---|--- + + +Gdzie + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn- +wzor-38.png) + +**e - najmniejszy luz między zwojami pod obciążeniem P_max** + + + +dodatkowo + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-39.png) | \- wysokość sprężyny zamontowanej pod obciążeniem P_min +---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-40.png) | \- wysokość sprężyny w stanie wolnym - nieobciążonej + +Dla dużych sprężyn o dużym stosunku Hw/D może [**wystąpić +wyboczenie**](https://izaac.pl/inzynieria-mechaniczna/obliczenia-belekzginanych-skrecanych-i-sciskanych-rozklady-naprezen-w-belkach-wyboczeniepretow#3). + +Dla sprężyn stalowych + +Gdzie: + +**α - współczynnik zależny od sposobu osadzenia i obciążenia sprężyny** +* α≅1 - dla sprężyn bez prowadzenia +* α≅0,5 - dla sprężyn dokładnie prowadzonych +* α≅2 - dla sprężyn dodatkowo zginanych + + +### Wyboczenie sprężyny + + +**Wyboczenie sprężyny** to zjawisko polegające na utracie stabilności osiowej +sprężyny pod wpływem siły ściskającej, co prowadzi do jej deformacji w +kierunku poprzecznym. Wyboczenie jest szczególnie istotnym problemem w +sprężynach o dużej smukłości, czyli takich, gdzie stosunek długości sprężyny +do średnicy jest wysoki. + +Wyboczenie sprężyny możliwe jedynie przy + +Wybór stosunków obciążeń: + + +## Projektowanie sprężyn dla obciążeń dynamicznych - zmęczeniowych + + +Dopuszczalne naprężenia ścinające przy obciążeniu jednostronnie zmiennym +(tętniącym) + +Gdzie: + +Dla ograniczonej liczby zmian 10^3 < N < 10^6 Zamiast Zso przyjąć odpowiedną +wartość z krzywej Wohlera dla próbki skręcanej. + +przykładowe orientacyjne wartości parametrów dla Prętów skręcanych + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn- +wzor-13.png) + +Parametry wytrzymałościowe dla druta d_o=5mm ze stali węglowej lub stopowej +ciągnionego i zwijanego na zimno + +**Rodzaj drutu** | **Z_so** | **k_s** | **k_sj** | **k_sj/k_s** +---|---|---|---|--- +**Drut ciągniony** | 150-170 | 500-550 | 220,5-250,5 | 0,40-0,45 +**Drut szlifowany** | 200-250 | 550-600 | 300-370,5 | 0,55-0,65 +**Drut szlifowany oraz hartowany i niskoodpuszczany** | 280-320 | 600-750 | 420-480 | 0,65-0,75 + +**Parametry wytrzymałościowe dla grubego druta zwijanego na gorąco, +hartowanego i nisko odpuszczanego** + +**Rodzaj drutu** | **Z_so** | **k_s** | **k_sj** | **k_sj/k_s** +---|---|---|---|--- +**Walcowany** | 40-60 | 300-405 | 60-90 | 0,2-0,3 +**Szlifowany** | 100-160 | 400-550 | 150-240 | 0,35-0,45 + +**Parametry wytrzymałościowe dla pręta ze stali - sprężynowej chromowo- +wanadowej 50HF PN-74/H-84032 hartowany i niskoodpuszczony** + +**Rodzaj Pręta** | **Z_so** | **k_s** | **k_sj** | **k_sj/k_s** +---|---|---|---|--- +| Ø20 | Ø40 | Ø60 | | | +**Pręt szlifowany** | 200 | 170 | 100 | 500-650 | 150-300 | 0,3-0,45 +**Pręt zgniatany** | 300 | 280 | 200 | 300-405 | 300-450 | 0,5-0,6 + + +## Sprężyny zginane + + +**Sprężyny o[pręcie zginanym](https://izaac.pl/inzynieriamechaniczna/obliczenia-belek-zginanych-skrecanych-i-sciskanych-rozkladynaprezen-w-belkach-wyboczenie-pretow)** to szczególny rodzaj sprężyn, w +których głównym mechanizmem pracy jest odkształcenie sprężyste pręta pod +wpływem działania momentu zginającego. Ich konstrukcja i zasada działania +różnią się od klasycznych sprężyn opartych na ściskaniu, rozciąganiu lub +skręcaniu. + +Linie ugięcia sprężyn płaskich, dla różnych wariantów obciążeń + +Przyjmuje się , że sprężyna płaska ma małą krzywiznę, tzn. promień gięcia +znajduje się w nieskończoności ρ≈∞. + +Sprężyny o zmiennym przekroju stosuje się dla zwiększenia podatności. Opisują +je modele belki o równej wytrzymałości (naprężenia równe na całej długości). + +**Przykład prętów o równej wytrzymałości** + +a) Pręt o stałym przekroju obciążony momentem gnącym. Taki pręt jest +równomiernie obciążony na całej długości + +![](https://izaac.pl/wp-content/uploads/2022/01/w21-300x218.png) + +b) Pręt trójkątny obciążony siłą na końcu. Taki pręt również obciążony jest +równomiernie na całej długości + +![](https://izaac.pl/wp-content/uploads/2022/01/w22-300x213.png) + + +## Obliczenia sprężyn o pręcie zginanym + + +Pręt sprężyny ugina się pod wpływem obciążenia, co powoduje gromadzenie +energii potencjalnej w wyniku odkształcenia materiału. Po usunięciu obciążenia +sprężyna powraca do pierwotnego kształtu dzięki sprężystości materiału. + +Warunki obliczeniowe + +Gdzie: + + +### Wytrzymałość zmęczeniowa dla stali sprężynowej: + + +Z wykresu Haigha + +Dodatkowo : + +δ-współczynnik stałości obciążenia pręta zginanego + +W pierwszej kolejności, w jaki sposób należy liczyć naszą sprężynę, należy +wziąć pod uwagę poniższe wzory. + +![](https://izaac.pl/wp-content/uploads/2022/01/graniczna-wartosc-wspolczynnika-stalosci-obciazenia.png) | Jest to graniczna wartość współczynnika stałości obciążenia, przy której uzyskuje się jednakowe bezpieczeństwo w warunkach statycznych i dynamicznych +---|--- +Jeśli współczynnik stałości obciążenia wynosi ![](https://izaac.pl/wp-content/uploads/2022/01/graniczna-wartosc-wspolczynnika-stalosci-obciazenia-2-.png) | To o wytrzymałości decyduje wytrzymałość statyczna +Jeśli współczynnik stałości obciążenia wynosi ![](https://izaac.pl/wp-content/uploads/2022/01/graniczna-wartosc-wspolczynnika-stalosci-obciazenia-3.png) | To o wytrzymałości decyduje wytrzymałość zmęczeniowa + + +Gdzie: + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-2.png) | \- **współczynnik stałości obciążeń**. +---|--- + +**k_sj -** dopuszczalne naprężenia skręcające jednostronnie zmienne. + +**k_s** \- dopuszczalne naprężenia skręcające dla obciażeń stałych. + +**P_min** \- Siła minimalna o charakterze zmiennym występująca w sprężynie. + +**P_max** \- Siła minimalna o charakterze zmiennym występująca w sprężynie. + +Naprężenia dopuszczalne skręcające przy obciążeniu statycznym: + +Naprężenia dopuszczalne skręcające dla wytrzymałości zmęczeniowej: + +Współczynnik bezpieczeństwa można przyjąć + + +### Przykładowe orientacyjne wartości parametrów wytrzymałościowych dla + +Prętów zginanych + +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn- +wzor-13-1.png) + +Pręt ze stali stopowej hartowanej i nisko odpuszczonej z Re~ 1400MPa + +**Rodzaj Pręta** | **Z_go** | **k_g** | **k_gj** | **k_gj/k_g** +---|---|---|---|--- +**Pręt walcowany** | 130-210 | 550-750 | 160-250 | 0,25-0,35 +**Pręt kulkowany** | 310-340 | 650-900 | 370-400 | 0,45-0,55 +**Pręt szlifowany** | 410-460 | 700-950 | 500-550 | 0,55-0,70 + + +### Wzory obliczeniowe dla sprężyn zginanych + + +Wzór wytrzymałościowy, po lewej stronie jednakowy dla warunków statycznych i +zmęczeniowych - w przypadku zmęczeniowych podstawiamy wartości momentów +zmęczeniowych oraz zmieniamy **k** \- które dla statycznych wynosi **k_g** +ulega zmianie na **k_gj** : + +**gw** \- współczynnik wymiarowy, można przyjąć taki sam dla prętów skręcanych + +**gk** \- współczynnik kształtu pręta, jedynie uwzględniany w przypadku dużej +krzywizny pręta (duży stosunek wymiaru przekroju do promienia krzywizny w +płaszczyźnie działania momentu gnącego + +**k_g** \- dopuszczalne naprężenia dla materiału w przypadku zginania. + +**k_gj** \- dopuszczalne naprężenia dla materiału w przypadku zginania +jednostronnego zmiennego. + +Współczynniki kształtu dla pręta zginanego sprężyny + +**D/d lub Ds.** | **3** | **4** | **5** | **6** | **8** | **10** +---|---|---|---|---|---|--- +**Przekrój okrągły** | 1,33 | 1,23 | 1,17 | 1,13 | 1,08 | 1,05 +**Prostokątny** | 1,29 | 1,20 | 1,15 | 1,12 | 1,08 | 1,06 + + +### Według rodzaju pręta + + +**Dla pręta o stałym przekroju** + +Naprężenia od zginania (charakter normalny do powierzchni przekroju) | Strzałka ugięcia | Kąt wychylenia końca pręta | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-42.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-43.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-44.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-45.png) + + +**Dla pręta trapezowego** + +Naprężenia od zginania (charakter normalny do powierzchni przekroju) | Strzałka ugięcia | Kąt wychylenia końca pręta | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-46.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-47.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-48.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-49.png) + +Współczynniki dla pręta trapezowego + +**b_o/L** | **1,0** | **0,8** | **0,6** | **0,4** | **0,2** | **0** +---|---|---|---|---|---|--- +**y1** | 1,0 | 1,05 | 1,12 | 1,20 | 1,31 | 1,5 +**y2** | 1,0 | 1,07 | 1,17 | 1,30 | 1,49 | 2,0 +**ηA** | 0,111 | 0,130 | 0,155 | 0,19 | 0,242 | 0,333 + + +Dla pręta obciążonego momentem gnącym + +Naprężenia od zginania (charakter normalny do powierzchni przekroju) | Strzałka ugięcia | Kąt wychylenia końca pręta | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-50.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-51.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-52.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-53.png) + + + +**Gdzie współczynniki rozróżniamy w zalezności od rodzajów pręta** + +Współczynniki dla pręta prostokątnego + +**[Wskaźnik wytrzymałości przekroju](https://izaac.pl/pomoce-inzynierskie/tabele-geometryczne)** | **[Moment bezwładności przekroju](https://izaac.pl/pomoce-inzynierskie/tabele-geometryczne)** | Obiętość czynna pręta sprężyny | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-54.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-55.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-56.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-57.png) + + +Dla pręta okrągłego + +Wskaźnik wytrzymałości przekroju | Moment bezwładności przekroju | Obiętość czynna pręta sprężyny | Współczynnik równomierności rozmieszczenia naprężeń +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-58.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-59.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-60.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/projektowanie-sprezyn-wzor-61.png) + diff --git a/frontend/src/content/projektowanie-wałów-napędowych.md b/frontend/src/content/projektowanie-wałów-napędowych.md new file mode 100644 index 0000000..0590e16 --- /dev/null +++ b/frontend/src/content/projektowanie-wałów-napędowych.md @@ -0,0 +1,533 @@ +--- +title: "Projektowanie wałów napędowych" +date: 2025-01-05 19:59:18 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "śmieszne", + "category_name": "śmieszne" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } +] +--- + +### Proces projektowania wałów napędowych + +* #### Funkcja wału napędowego +* #### Wyznaczenie minimalnych średnic wału +* #### Obrys wstępny wału na zarysie teoretycznym +* #### Podstawowe wymiarowanie wałów napędowych +* #### Ustalenia szczegółowe +* #### Zapewnienie współpracy wału z innymi elementami maszyny + + +### Projektowanie wałów napędowych ze względu na kryterium wytrzymałościowe + + + +### Współczynnik redukcyjny dla obciążeń statycznych + + + +### Projektowanie wałów napędowych ze względu na kryterium sztywności + + + +### Obliczenia sztywności skrętnej wałów. + + + +### Konsturkcyjne porady przy projektowaniu wałów napędowych + +* #### Statyczne wyważanie wału +* #### Dynamiczne wyważanie wału +* #### Unikanie ostrych karbów +* #### Dobrać odpowieni materiał na wały + + +## Proces projektowania wałów napędowych + + +Aby poprawnie rozpocząć proces projektowania wałów napędowych należy wiedzieć +jak wygląda cały przebieg i proces projektowania wału. Poniżej przedstawiliśmy +w punktach krok po kroku jak wygląda taki proces projektowania. + +**1\. Funkcja wału** **napędowego** – co jest na nim obsadzone i w którym +miejscu. + +Pierwszym krokiem w projektowaniu wałów napędowych jest dokładne określenie +funkcji **[wału](https://izaac.pl/inzynieria-mechaniczna/podstawoweinformacje-o-walach-i-osiach) **w maszynie oraz elementów, które będą na nim +osadzone. Ważne jest, aby wyznaczyć miejsca, gdzie znajdują się koła zębate, +**[łożyska](https://izaac.pl/inzynieria-mechaniczna/lozyskowanie-maszynprzewodnik-po-obliczeniach-i-praktyczne-wskazowki)** , lub inne komponenty. +Wyznaczenie tych elementów pozwala na wyznaczenie obciążeń oraz na wykonanie +dokładnego schematu, **[który posłuży do dalszych obliczeń uproszczonych +(belkowych) i pozwoli](https://izaac.pl/inzynieria-mechaniczna/obliczeniabelek-zginanych-skrecanych-i-sciskanych-rozklady-naprezen-w-belkachwyboczenie-pretow)** określić, w jakich miejscach wał będzie najbardziej +zagrożony. Schemat obciążeń jest kluczowy do dalszych etapów projektowania, w +tym obliczeń wytrzymałościowych i zmęczeniowych. + +**2.Wyznaczenie minimalnych średnic wału w miejscach charakterystycznych** +\- Kolejnym etapem jest wyznaczenie minimalnych średnic wału w miejscach, +gdzie występują szczególne obciążenia, takie jak czopy, osadzenia łożysk czy +koła zębate. + +W tym etapie określamy, jakie średnice są wymagane, aby spełniały kryteria +wytrzymałościowe, sztywnościowe lub zmęczeniowe. To pozwala na dobór +odpowiednich wymiarów wału w poszczególnych miejscach, gdzie występują +naprężenia. Może to również obejmować obliczenia oparte na dopuszczalnych +naprężeniach, które pomogą w określeniu optymalnych średnic. + +Wyznaczenie teoretycznego zarysu wału - Teoretyczny zarys wału to najmniejszy +dopuszczalny teoretyczna geometria dla wału, który powinien spełniać wymagania +zgodne z danym kryterium. Nie uwzględnia taki zarys tolerancji, pasowań, +rzeczywistych średnic czopów ani podcięć obróbkowych. + +**3\. Obrys wstępny wału na zarysie teoretycznym -** obrysowanie rzeczywistych +wyidealizowanych geometrii wału dla danego zarysu teoretycznego. + +Na tym etapie dokonujemy szczegółowego obrysowania rzeczywistego kształtu wału +w oparciu o teoretyczny zarys. Uwzględnia się wszystkie istotne elementy, +takie jak podcięcia, rowki, otwory na łożyska, a także miejsce osadzenia kół +zębatych. W tym momencie warto zwrócić uwagę na takie parametry jak grubość +ścianek, promienie zaokrągleń i dokładność wykonania. Obrys ten staje się +wyjściowym punktem do dalszego szczegółowego wymiarowania. + +**4\. Podstawowe wymiarowanie wałów napędowych-** określenie gabarytowej +geometrii i najważniejszych średnic. + +W tym kroku określamy gabarytową geometrię wału, uwzględniając najważniejsze +średnice, takie jak średnice czopów, które będą pełniły rolę osadzenia kół +zębatych, łożysk lub innych elementów. Dokonujemy analizy, aby upewnić się, że +średnice czopów są wystarczająco duże, by zapewnić odpowiednią wytrzymałość +zmęczeniową, co jest szczególnie ważne w przypadku obciążeń cyklicznych. + +Zaleca się aby skok sąsiednich średnic spełniał warunek **D/d ≤ 1,2 aby +zapobiec koncentracji naprężeń przy przejściu średnic.** + +**5\. Ustalenia szczegółowe -** Ten etap obejmuje bardzo szczegółowe aspekty +wykonania wału, które są kluczowe dla jego długotrwałej eksploatacji oraz +efektywności pracy w maszynie. Ważne jest ustalenie: +* **Dokładności wykonania pasowań –** zapewnienie, że pasowania wału i elementów z nim współpracujących będą odpowiednie dla zapewnienia bezpiecznej pracy (np. pasowania łożysk, **[pasowania czopów pod połączenie](https://izaac.pl/inzynieria-mechaniczna/polaczenia-wciskowe#2)**). +* **Promienie zaokrągleń** – odpowiedni dobór promieni zaokrągleń w miejscach przejść między różnymi średnicami zapobiega koncentracji naprężeń i zwiększa wytrzymałość zmęczeniową. Można zastosować podcięcia obróbkowe i technologiczne z **PN−58/M−02043.[Geometrie dostępne także na naszej stronie z rysunkiem technicznym.](https://izaac.pl/inzynieria-mechaniczna/rysunkek-techniczny-wszystko-co-musisz-wiedziec#20)** +* **Znormalizowanie rowków i podcięć na wale** – jeśli wał ma rowki pod łożyska, gwinty lub inne elementy, ważne jest, aby były one zaprojektowane zgodnie z normami. +* [**Chropowatość powierzchni**](https://izaac.pl/inzynieria-mechaniczna/oznaczanie-chropowatosci-powierzchni-i-obrobki-powierzchniowej) – odpowiednia chropowatość powierzchni wału ma wpływ na jego trwałość, szczególnie w miejscach współpracy z łożyskami czy kołami zębatymi. +* **Tolerancje kształtu i położenia** – dokładność wykonania poszczególnych elementów wału jest istotna dla poprawnej współpracy z innymi komponentami. +* **Obróbka cieplno-chemiczna** – zaprojektowanie odpowiednich procesów obróbki cieplno-chemicznej, takich jak hartowanie, nawęglanie, czy azotowanie, ma na celu poprawę twardości powierzchni wału i zwiększenie jego odporności na zużycie oraz zmęczenie. + +**6\. Zapewnienie współpracy wału z innymi elementami maszyny** + +Wał jest częścią szerszego układu maszynowego, dlatego konieczne jest +zapewnienie jego odpowiedniej współpracy z innymi elementami. Należy +uwzględnić elementy takie jak sprzęgła, czy inne mechanizmy napędowe +współpracujące z wałem. + + 1. + + +## Projektowanie wałów napędowych ze względu na kryterium wytrzymałościowe + + + + +Pierwszą czynnością którą musimy zrobić to sprowadzić wał do konstrukcji +belkowej z oznaczonymi siłami i reakcjami na podporach. Z tego wyznaczamy +momenty działające na wale oraz rozkłady obciążeń ścinających i skręcających. +Zazwyczaj w wałach głównym komponentem naprężeń jest moment skręcający i gnący +i to na nich skupimy się w dalszych rozważaniach. Dla wałów dlugich dla +których l/d > 5, należy dodać komponent od ścinania. + +Moment wypadkowy gnący występuje w dwóch płaszczyznach XY, XZ zaznaczonych na +rysunku, przecinających się w osi geometrycznej wału. Poniżej przedstawiono +rysunek w aksonometrii przedstawiający momenty gnące oraz moment zastępczy +będący sumą wektorową tych momentów. + +Wzór na moment gnący wypadkowy przyjmuje postać : + +W przypadku obciążeń zmiennych nie można stosować hipotezy wytężeniowej +Hubera, z uwagi na to, iż wał się obraca – często z wysoką prędkością – stąd +też obciążenie jest zmienne + +Wzór przekształcający hipotezę Hublera, uwzględniający zmienne obciążenie wału + +gdzie: + +a - współczynnik redukcyjny + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac-3.png) + +Gdzie : + +**Zg** \- trwała wytrzymałość zmęczeniowa przy zginaniu + +**Zgo** \- z obracającym się wektorem obciążenia + +**Zgj** \- z jednostronnym wektorem obciążenia + +**Zs** \- trwała wytrzymałość zmęczeniowa przy skręcaniu + +**Zso** \- z obracającym się wektorem obciążenia + +**Zsj** \- z jednostronnym wektorem obciążenia + +Istotny stosunek długości wału do średnicy: + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac-2.png) | Gdy stosunek długości do średnicy wału jest większy niż 5 to nie liczymy **τ t** z uwagi na zbyt mały udział naprężeń stycznych. +---|--- + + +### Współczynnik redukcyjny dla obciążeń statycznych: + + +Dla obciążeń statycznych można przyjąć, że**[granica +plastyczności](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#1)** w przypadku +**[zginia](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#4) **i +**[rozciągania](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#1)** jest 1,73 większa niż granica +plastyczności w przypadku **[skręcania.](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#3)** + +dla obciążeń statycznych → | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac-4.png) +---|--- + +Naprężenia zredukowane dla wałów rozszerzone o współczynnik redukcyjny +przyjmują postać + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac-5.png) + + +### Zasady redukowania momentów występujących na wale do momentu zastępczego : + + +W przypadku dominacji momentu gnącego **Mg** należy zastosować poniższe wzory +aby zredukować moment do momentu zastępczego. Poniższe równania przedstawiają +także wzór na średnicę minimalną wału w ranym przekroju. + + + +Gdzie: + +**[x - współczynnik bezpieczeństwa](https://izaac.pl/inzynieriamechaniczna/wspolczynniki-bezpieczenstwa)** + +W przypadku dominacji momentu skręcającego **Ms** wzory redukcyjne przyjmują +poniższe formy: + +Wały obciążone tylko momentem skręcającym obliczamy z warunku zawartego +równaniem: + +Gdzie: + +**k_s** \- naprężenia dopuszczalne dla materiału z którego wykonany jest wał. + +**W_o** \- wskaźnik wytrzymałości przekroju na skręcanie + +Uzależniając obliczenia od przenoszonej mocy **N** i prędkości obrotowej wału +**n.** + +**Poniżej przrdstawiony został wzór na średnicę czopa wału w zależności od +przenoszonej mocy i prędkości obrotowej wału.** + +Gdzie: + +k_so,sj.s - naprężenia dopuszczalne dla materiału, z którego wykonany jest +wał, na skręcanie obustronne, skręcanie jednostronne i ścinanie. + + +## Projektowanie wałów napędowych ze względu na kryterium sztywności + + + + + + +**Obliczenia sztywności wałów poprzecznej – giętej** + +Maszyny w których sztywność wału jest ważniejsza niż wytrzymałość: +* wrzeciona obrabiarek +* przekładnie zębate +* długie wały przenoszące obciążenia na inne elementy –np. pasy i koła zębate + +Miarą odkształcenia (sztywności) jest ugięcie **y** i kąt pochylenia linii +ugięcia (przekoszenie) **β**. Najczęściej interesuje nas maksymalna strzałka +ugięcia oraz kat pochylenia linii ugięcia **f max **[mm] w miejscu usadowienia +podpór, w przypadku wałów – na łożyskach. + +Schemat wału obciążonego niewyważoną masą **a** \- w spoczynku, **b** \- w +ruchu + +Przybliżone równanie lini ugięcia belki - elementu wyjściowego do obliczania +wałów: + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac-10.png) + +Kąt przekoszenia **β:** + +**![](https://izaac.pl/wp-content/uploads/2022/01/izaac-11.png)** + +Ugięcie: + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac-12.png) + +Maksymalna strzałka ugięcia **nie powinna** przekraczać: + +dla wałów maszynowych | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac-13-300x16.png) +---|--- +dla wałów przekładni zębatych | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac-14-300x19.png) +dla silników elektrycznych | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac-15-300x15.png) + +**Maksymalne przenoszenie:** + +\- w łożyskach ślizgowych: +* sztywnych **β dop **= 0,3 · 10-³ [rad] = 0,017 [º] +* samonastawnych **β dop **= 1 · 10-³ [rad] = 0,057 [º] + +\- w łożyskach samonastawnych: +* **β dop **= 1 · 10-³ [rad] = 0,057 [º] + +\- w łożyskach tocznych stożkowych: +* **β dop **= 1 · 10-³ [rad] = 0,057 [º] + +\- w łożyskach tocznych walcowych +* typu N i NU **β dop **= 25 · 10-³ [rad] = 1,432 [º] +* inne postacie: **β dop **= 0,5 · 10-³ [rad] = 0,029 [º] + +Maksymalna strzałka ugięcia jak i kąt przenoszenia może ulegać zmianie w +zależności od wymagań stawianych elementom maszyn. + + +## Obliczenia sztywności skrętnej wału napędowego. + + + + + + +**Sztywność skrętna** \- oceną parametru sztywności skrętnej jest +odkształcenie kąta skręcenia **φ** na odcinku **l** od zadanego momentu +skręcającego + +Gdzie: + +**M s** \- moment skręcający [Nm] + +**G** \- moduł sprężystości poprzecznej [N/m²] + +**I o** \- biegunowy moment bezwładności przekroju [m^4]: + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac-17.png) + +Dla wału kształtowego złożonego z wielu mas ustawionych w szeregu: + +Dopuszczalne wartości kąta skręcenia dla wału o długości **l** = 1m → +0,25º-2,5º + + +## Konstrukcyjne porady przy projektowaniu wałów napędowych + + + + +**Aby zapewnić wałom jak najlepsze parametry pracy oraz wydłużyć ich trwałość +podaliśmy poniżej ogólne porady konstrukcyjne. Te porady zapewnią jak +najlepsze użytkowanie, zminimalizują szansę na uszkodzenia wału w trakcie +pracy oraz zapewnią lepszą współpracę wału z innymi urządzeniami w maszynie.** + + + + + + +### Wyważanie wału statyczne i dynamiczne - wyważanie wału w celu usunięcia + +momentu od pary sił odśrodkowych. + +Wyważanie wału to proces, którego celem jest zminimalizowanie lub całkowite +usunięcie sił i momentów powstających w wyniku nierównomiernego rozkładu masy. +Te siły mogą powodować drgania, hałas, zużycie łożysk oraz inne niepożądane +efekty w działaniu wału i całej maszyny. + + +### **Statyczne wyważanie wału** + + +Statyczne wyważanie odnosi się do sytuacji, gdy środek masy wału znajduje się +poza jego osią obrotu, ale wał jako całość nie ma momentów bezwładności +związanych z niesymetrycznym rozkładem masy. + +Wał jest montowany na dwóch swobodnie obracających się rolkach. Jeśli wał nie +jest wyważony, cięższy punkt powoduje obrót wału do pozycji dolnej. Korekcja +wyważenia polega na dodaniu masy w przeciwnym miejscu lub usunięciu +nadmiarowej masy, aby środek masy wału znalazł się na osi obrotu. + +Wał jest wyważony w stanie spoczynku (statycznie). Wyważanie statyczne jest +odpowiednie dla wałów obracających się z niskimi prędkościami, gdzie siły +dynamiczne nie mają znaczącego wpływu. + +Statyczne wyważanie nie eliminuje momentów wynikających z par sił +odśrodkowych, które mogą się pojawiać w ruchu obrotowym przy wyższych +prędkościach. + + +### **Dynamiczne wyważanie wału** + + +Uuwzględnia nie tylko przesunięcie środka masy wału, ale także momenty +generowane przez pary sił odśrodkowych na różnych płaszczyznach wału podczas +ruchu obrotowego. + +Wał jest montowany w maszynie wyważającej, która może obracać go z określoną +prędkością. Czujniki w maszynie wyważającej wykrywają Siły odśrodkowe: +Wynikające z nierównomiernego rozmieszczenia masy oraz moment generowany przez +pary sił odśrodkowych działające w różnych płaszczyznach. + +Proces korekcji wyważania polega na dodaniu masy w odpowiednich miejscach i +usunięciu masy w miejscach przeciwnych. + +Wyważanie może być przeprowadzane w jednej płaszczyźnie (dla krótkich wałów) +lub w dwóch (dla dłuższych i złożonych). + +Dynamiczne wyważenie eliminuje zarówno siły odśrodkowe, jak i momenty wywołane +przez pary sił. Wał jest stabilny podczas pracy z wysokimi prędkościami +obrotowymi, minimalizując drgania i zużycie. + +Przykład momentu od pary sił odśrodkowych + +Jeśli wał ma nierównomiernie rozłożoną masę, mogą wystąpić sytuacje, gdzie w +różnych częściach wału pojawią się niesymetryczne siły odśrodkowe. Siły te +działają w przeciwnych kierunkach w różnych punktach wału, tworząc parę sił, +która generuje moment odśrodkowy. Moment ten powoduje drgania giętne i +obciążenie łożysk. Przy wyższych prędkościach obrotowych może doprowadzić do +rezonansu i awarii. + + +### Unikanie ostrych karbów + + +Ostre karby są miejscami koncentracji naprężeń, mogącymi prowadzić do pękania +zmęczeniowego i skrócenia żywotności wału. Unikanie ich w projektowaniu wałów +jest kluczowe dla zapewnienia wytrzymałości, trwałości i niezawodności całego +układu mechanicznego. + + +### Czym są karby i dlaczego są niebezpieczne? + + +Karby to zmiany geometryczne, jak nagłe przejścia między średnicami, rowki, +otwory, gwinty czy krawędzie, które powodują lokalne zwiększenie naprężeń w +materiale. + +Ostre krawędzie [**zwiększają lokalne naprężenia (spiętrzenie +naprężeń)**](https://izaac.pl/inzynieria-mechaniczna/spietrzenie-naprezen) +nawet kilkukrotnie w stosunku do naprężeń nominalnych. To zjawisko znacznie +przyspiesza proces zmęczeniowy i może prowadzić do pęknięć. + +**Stosowanie łagodnych zaokrągleń.** Zamiast ostrych przejść między średnicami +wału, stosuj promienie zaokrągleń. + +**Minimalny promień.** Zaleca się, aby promień zaokrąglenia był co najmniej +0,1–0,2-krotnością mniejszej średnicy wału. Większy promień zmniejsza +koncentrację naprężeń, rozkładając je bardziej równomiernie. + +Promienie przejściowe w odsadzeniach ustalających (takich na których tworzą +powierzchnię oporową) - **R ≥ 0,5h. Dla odsadzeń swobodnych promień najlepiej +jeśli możliwie duży.** + +**h-** wysokość ścianki osadzonej + +Osadzenia piast w celu redukcji naprężeń + +![](https://izaac.pl/wp-content/uploads/2022/03/15.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/13.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/14.png) +---|---|--- + +**Unikanie nagłych zmian średnicy - Stopniowe przejścia.** Jeśli zmiana +średnicy jest konieczna, projektuj stopniowe przejścia lub stożkowe zwężenia. +Tak aby większa średnica była w stosunku ok. 1.2 do mniejszej średnicy. Zaleca +się także stosowanie małych kątów (np. 15–30°) w przypadku stożków. + +Wysokość odsadzeń czopów **h ≤ 0,1d** + +**d-** średnica czopa + +Odpowiednie dobranie wymiarów + +![](https://izaac.pl/wp-content/uploads/2022/02/9-2-300x288.png) + +Odsadzenia wałów + +![](https://izaac.pl/wp-content/uploads/2022/02/7-2-300x90.png) + + +### Optymalizacja rowków i otworów + + +**Rowki na pierścienie osadcze** projektuje się z łagodnymi krawędziami i +promieniami. Należy unikać rowków, które mają ostre krawędzie. W przypadku +wykonywania otworów w wale, należy zlokalizować je w miejscach o niższym +naprężeniu. + +**Gwinty są w rzeczywistości karbami** , które mogą prowadzić do koncentracji +naprężeń. Należy unikać nagłego zakończenia gwintu. + +**Obróbka powierzchniowa** w miejscach zaokrągleń zmniejsza ryzyko powstawania +mikropęknięć. Takich jak polerowanie lub inne zmniejszenie chropowatości. Dla +czopów szlifowanych – stosuje się uskok –**0,3-0,6 mm** dla wybiegu tarczy +szlifierskiej o łagodnym zaokrągleniu odsadzenia. + +zbyt bliskie usadowienie wpustu powoduje spiętrzenie naprężeń między ujściem +czopa a karbem na wpuście. Należy unikać. + +![](https://izaac.pl/wp-content/uploads/2022/02/11-2-300x247.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/12.png) +---|--- + + +Użycie metod **obliczeniowych lub cyfrowych modeli obliczeniowych** , aby +określić wpływ geometrii na koncentrację naprężeń. **Analiza metodą elementów +skończonych** (FEM/MES) pozwoli zlokalizować miejsca koncentracji naprężeń i +zoptymalizować kształt w formie cyfrowej, przed fizycznym wykonaniem wału. + + +### Dobrać odpowieni materiał na wały + + + +### 1.Wytrzymałość mechaniczna + + +Materiał musi wytrzymywać obciążenia statyczne i dynamiczne (moment +skręcający, siły zginające, ugięcia). Wały narażone na wysokie naprężenia +powinny być wykonane z materiałów o wysokiej wytrzymałości na rozciąganie. + + +### 2.Odporność na zmęczenie + + +Wały pracujące pod zmiennymi obciążeniami wymagają materiałów o wysokiej +**trwałej wytrzymałości na obciążenia zmienne.** + + +### 3.Odporność na korozję + + +W warunkach agresywnych środowisk (np. morskim, chemicznym) należy stosować +materiały odporne na korozję, takie jak stal nierdzewna lub stopy aluminium. + + +### 4.Możliwość obróbki cieplnej i mechanicznej + + +Materiał powinien nadawać się do hartowania, odpuszczania lub innych metod +obróbki cieplnej w celu zwiększenia twardości powierzchniowej i wytrzymałości. + +Wały o skomplikowanych kształtach, np. wały okrętowe, wymagają materiałów +łatwych w obróbce skrawaniem. + + +### 5.Koszty + + +Wybór materiału zależy również od budżetu. Trwałe materiały, takie jak stale +stopowe, są droższe, ale oferują dłuższą żywotność wału. Mimo to wybór zawsze +powinien być taki, aby spełniać wszystkie wymagania jak najniższym kosztem. + diff --git a/frontend/src/content/przekładnie---informacje-ogólne-i-podstawowe-parametry-przekładni.md b/frontend/src/content/przekładnie---informacje-ogólne-i-podstawowe-parametry-przekładni.md new file mode 100644 index 0000000..704cac3 --- /dev/null +++ b/frontend/src/content/przekładnie---informacje-ogólne-i-podstawowe-parametry-przekładni.md @@ -0,0 +1,282 @@ +--- +title: "Przekładnie - informacje ogólne i podstawowe parametry przekładni" +date: 2025-01-29 19:07:44 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Czym jest przekładnia i jak działa + + + +### Rodzaje przekładni i ich przeznaczenie + + + +### Podstawowe parametry przekładni mechanicznej + + + +### Projektowanie przekładni krok po kroku + + + +## Czym jest przekładnia i jak działa + + +**Przekładnie** to mechanizmy, służące do zmiany parametrów ruchu i energii +mechanicznej. Przekładnie przenoszą moment obrotowy z jednostki napędowej (np. +silnik) na element odbiorczy (np. koło, śrubę). Przekładnie umożliwiają +dopasowanie charakterystyk napędu (np. silnika elektrycznego, hydraulicznego +lub spalinowego) do wymagań maszyny roboczej – urządzenia odbierającego +energię z silnika. Elementem mechanicznym służącym do połączenia ze sobą +przekładni i jednostki napędowej jest sprzęgło. Są stosowane w różnych +urządzeniach, od prostych maszyn ręcznych po zaawansowane układy w przemyśle +lotniczym, motoryzacyjnym i energetycznym. Podstawowymi rolami przekładni w +układach mechanicznych są : + +**Zmiana prędkości i momentu obrotowego** \- Przekładnie zazwyczaj służą do +zmiany prędkości i momentu obrotowego. Mogą zarówno zmniejszać jak i zwiększać +prędkość obrotową w zależności od wymagań aplikacji. Na przykład, +**przekładnie redukcyjne** zmniejszają prędkość, zwiększając jednocześnie +moment obrotowy. Zmniejszenie prędkości obrotowej wiąże się z proporcjonalnym +wzrostem momentu obrotowego, co jest korzystne w przypadku maszyn wymagających +dużej mocy napędowej. Przekładnie zwiekszające prędkość i zmniejszające moment +obrotowy wału nazywane są **przekładanimi multiplikacyjnymi**. W zależności od +zastosowania, przekładnie mogą być projektowane jako lekkie i kompaktowe (np. +w motoryzacji) lub masywne i wytrzymałe (np. w energetyce wiatrowej). + +**Zmiana Kierunku Ruchu** \- Przekładnie, takie jak stożkowe lub planetarne, +mogą zmieniać kierunek ruchu obrotowego osi, umożliwiając pracę w +skomplikowanych układach ze zmianą obrotu osi. + + +## Rodzaje Przekładni i Ich Przeznaczenie + + +**Przekładnie Zębate** \- Używane w precyzyjnych układach o wysokiej +sprawności. Stosowane są szeroko w motoryzacji, robotyce i maszynach +przemysłowych. + +**Przekładnie Ślimakowe** – Używane do przekazywania dużych momentów przy +małych prędkościach. Można je znaleźć w podnośnikach, dźwigach i systemach +regulacji pozycji. + +**Przekładnie Planetarne** \- Są bardzo kompaktowe i wytrzymałe. Szeroko +stosowane w automatycznych skrzyniach biegów oraz maszynach budowlanych. + +**Przekładnie Bezstopniowe (CVT)** \- Umożliwiają płynną zmianę parametrów +ruchu bez skoków przełożenia. Często wykorzystywane w pojazdach oraz +urządzeniach wymagających zmiennej dynamiki pracy. + +**Przekładnie Pasowe** \- Służą do przenoszenia momentu obrotowego i mocy za +pomocą elastycznego pasa pomiędzy kołami pasowymi. Charakteryzują się prostotą +konstrukcji, cichą pracą i możliwością pracy na dużych odległościach osiowych. + +**Przekładnie cierne** \- Służą do przenoszenia momentu obrotowego i mocy za +pomocą siły tarcia występującej bezpośrednio między powierzchniami dwóch kół +lub tarcz, dociśniętych do siebie. Umożliwiają płynną regulację przełożenia i +cichą pracę. + +**Przekładnia Falowa (przekładnia harmoniczna)** + +Przekładania falowa to przekładnia, która do przenoszenia momentu obrotowego i +mocy używa odkształcalnego pierścienia wewnętrznego współpracującego z +generatorem fal oraz sztywnym kołem zewnętrznym. Umożliwia niezwykle wysoką +precyzję, kompaktową zabudowę oraz możliwość uzyskania bardzo dużych przełożeń +w jednym stopniu przekładni. + +Przekładania falowa składa się z 3 podstawowych elementów umożliwiających +realizację przełożenia. + +**Flexspline** – cienkościenny odkształcalny pierścień posiadający po +zewnętrznej stronie zęby nachodzące na sztywne koło, który dzięki elastycznemu +odkształceniu umożliwia współpracę z kołem sztywnym. + +**Generator fal** \- Zazwyczaj Eliptyczny element obracający się wewnątrz +flexspline. Obracając się deformuje jego powierzchnię i powoduje zazębianie w +dwóch punktach na sztywnym pierścieniu zewnętrznym. + +**Sztywne** **koło zewnętrzne** \- Stacjonarny lub obracający się element z +uzębieniem wewnętrznym, współpracujący z flexspline. + + +## Podstawowe parametry Przekładni Mechanicznej + + + +### Przełożenie + + +**Przełożenie** to współczynnik określający stosunek prędkości obrotowych lub +momentów obrotowych kół - napędowego i napędzanego. Określa on w jaki sposób +przekładnia modyfikuje parametry ruchu. + +![wzór na przełożenie](https://izaac.pl/wp-content/uploads/2025/01/wzor-naprzelozenie.jpg) + +Dla kół zębatych + +![wzór na przełożenie koła zębatego](https://izaac.pl/wpcontent/uploads/2025/01/wzor-na-przelozenie-kola-zebatego.jpg) + +n_1 – prędkość obrotowa koła napędzającego + +n_2 – prędkość obrotowa koła napędzanego + +z_1 – liczba zębów koła napędzającego (w przypadku przekładni zębatych) + +z_2 – liczba zębów koła napędzanego (w przypadku przekładni zębatych) + + +### Sprawność + + +**Sprawność** jest parametrem fizycznym opisującym straty energii. W przypadku +przekładni mechanicznej opisuje on straty energii (jakże by inaczej) +mechanicznej. Przekładnie składają się z wielu elementów, między którymi +następuje wymiana energii – np. poprzez tarcie. Tarcie generuje ciepło, które +jest rozpraszane w układzie. Ciepło i odkształcenia materiału w trakcie +przekazywania momentu "są" stratami energii, które nie są przekazywane dalej +na maszynę roboczą. Sprawność jest zależna od czynników takich jak rodzaj +przekładni, materiału, jakości wykonania oraz smarowania przekładni. +Przekładnie mechaniczne posiadające najwyższą sprawność to przekładnie zębate +(do 98%). Mniej efektywne są kolejno pasowe ~90%, cierne ~(80%-90%) i +hydrauliczne ~(80%-90%) . + + +### Moment obrotowy + + +**![wzór na zmianę momentu obrotowego przekładni](https://izaac.pl/wpcontent/uploads/2025/01/wzor-na-zmiane-momentu-obrotowego-przekladni.jpg)** + +**η** – sprawność układu (wyrażona jako ułamek dziesiętny np. dla przekładni +zębatych można założyć **η = 0.98**) + +**M_1** – moment koła napędzającego + +**M_2** – moment koła napędzanego + +**i** – przełożenie + + +## \- Projektowanie przekładni krok po kroku + + +Poniżej przedstawione zostaną etapy projektowania przekładni - każdej. Stanowi +to ogólny ogląd na proces projektowania. + + +### 1\. Na wstępie należy zweryfikować wymagania i warunki brzegowe dla + +przekładni takie jak: + +**Moc wejściowa i wyjściowa** (P): moc przenoszona przez napęd i niezbędna do +pracy maszyny roboczej + +**Prędkość obrotowa na wejściu i wyjściu** (n1, n2): liczba obrotów na minutę +(obr/min). + +**Moment obrotowy** (M1, M2): + +**Przełożenie (i)** stosunek prędkości wejściowej do wyjściowej. + +**Uwzględnienie sprawności** + +**kompaktowość, cicha praca czy wymagania wytrzymałościowe.** + + + + +### 2\. Wybór rodzaju przekładni + + +Na podstawie danych wejściowych i warunków pracy należy wybrać typ przekładni +np. Zębata, pasowa, cierna, hydrauliczna itp. + + +### 3\. Obliczenia wstępne dla przekładni + + +**Przełożenie przekładni - musimy określić jakie przełożenie chcemy uzyskać** + +**Moment wyjściowy (M2) - Należy sprecyzować jaki moment wyjściowy uzyskamy za +pomocą naszej przekładni** + +**Siły na kołach,[wale](https://izaac.pl/inzynieria-mechaniczna/projektowaniewalow) i [łożyskach](https://izaac.pl/inzynieria-mechaniczna/lozyskowaniemaszyn-przewodnik-po-obliczeniach-i-praktyczne-wskazowki)** + + + + + + +### 4\. Projektowanie elementów przekładni + + +Na tym etapie należy określić wymiary elementów przekładni w oparciu o +wymagania wytrzymałościowe i technologiczne: + +**Dobór odpowiednich materiałów** dla kół, wałów i innych elementów. + +**Dla przekładni zębatej należy określić na początku projektowania:** + +**Średnice kół** powinny być dopasowywane do wymagań przełożenia oraz +przestrzeni dostępnej w układzie. + +**Wielkość i geometria zębów** oraz rozmiar kół zębatych tak aby były zdolne +do poprawnego przeniesienia obciążeń. + +[**Dla przekładni pasowej należy określić na początku +projektowania:**](https://izaac.pl/inzynieria-mechaniczna/przekladnie-pasoweinformacje-podstawowe) + +**Dobór rodzaju pasa** (klinowy, zębaty, płaski) w zależności od przenoszonej +mocy, prędkości i obciążeń. + +**Średnice kół.** Należy dobrać je tak aby spełniały wymagane przełożenie i +mieściły się w określonych wymiarach przekładni. + +**Projektowanie naciągu pasa** : Należy obliczyć minimalna siłę naciągu, która +zapewnia odpowiednie przeniesienie mocy bez poślizgu. + + +### 5\. Wytrzymałość przekładni i układów napędowych. + + +Weryfikacja wytrzymałości elementów przekładni ma na celu sprawdzenie, czy +zaprojektowane elementy są w stanie wytrzymać przewidywane obciążenia bez +uszkodzeń: + +**Dodatkowo dla kół zębatych należy wziąć pod uwagę:** wytrzymałość zębów na +naciski i zmęczenie materiału, aby zapewnić trwałość przekładni podczas +długotrwałego użytkowania. Dodatkowo należy przeprowadzić obliczenia +wytrzymałościowe ścinania zębów. + + +### 6\. Współpraca Kół z wałami i łożyskami: + + +**Projektowanie wałów w zależności od kryterium**. Np. **[Wytrzymałość wałów +na momenty zginające, skręcające i siły](https://izaac.pl/inzynieriamechaniczna/projektowanie-walow#2)** działające wzdłuż osi. **[Lub sztywność +wału](https://izaac.pl/inzynieria-mechaniczna/projektowanie-walow#4)**. Można +oba. + +**[Projektowanie węzła łożyskowego](https://izaac.pl/inzynieriamechaniczna/lozyskowanie-maszyn-przewodnik-po-obliczeniach-i-praktycznewskazowki#4),** w którym sprawdza się trwałość i układ łożysk. + + +### 7\. Uwzględnienie smarowania i tolerancji montażowych + + diff --git a/frontend/src/content/przekładnie-cierne---informacje-i-obliczenia.md b/frontend/src/content/przekładnie-cierne---informacje-i-obliczenia.md new file mode 100644 index 0000000..26aad3c --- /dev/null +++ b/frontend/src/content/przekładnie-cierne---informacje-i-obliczenia.md @@ -0,0 +1,302 @@ +--- +title: "Przekładnie cierne - informacje i obliczenia" +date: 2025-01-29 19:07:34 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Czym są przekładnie cierne + +* #### Podział i rodzaje przekładni ciernych + + +### Zalety i wady przekładni ciernych + + + +### Przekładnie cierne walcowe – opis i obliczenia + + + +### Przekładnie cierne o zmiennym przełożeniu + + + +### Przekładnie walcowe z kołami rowkowymi + + + +### Przekładnie cierne stożkowe + + + +## Czym są przekładnie cierne + + +**Przekładnie cierne** to mechanizmy przenoszące moment obrotowy między wałami +za pomocą tarcia na powierzchniach styku elementów obrotowych. W przekładniach +ciernych nie ma zazębienia, powierzchnie są płaskie a siła przenoszona jest +dzięki dociskowi między elementami. + +Przekładnie cierne są stosowane w maszynach przemysłowych. Głównie w przemyśle +motoryzacyjnym: Przekładnie CVT w skuterach, samochodach osobowych (np. +przekładnie bezstopniowe) i maszynach rolniczych. + + +### Podział i rodzaje przekładni ciernych + + +Przekładnie cierne możemy podzielić na wiele rodzajów w zależności od +konstrukcji i zasady działania, a także od rodzaju przełożenia. + + +### Podział przekładni ciernych ze względu na kształt elementów roboczych: + +* **Przekładnie walcowe** : Przenoszą moment za pomocą walców o równoległych osiach. + +* **Przekładnie stożkowe** : Stosowane do zmiany kierunku ruchu obrotowego (osie pod kątem, np. 90°). + +* **Przekładnie tarczowe** : Jedna tarcza współpracuje z rolką lub inną tarczą. +* **Przekładnie z kołami rowkowymi** + +**Ze względu na sposób docisku:** +* **Przekładnie o stałym docisku** : W tych przekłądniach siła tarcia jest generowana przez stały docisk. +* **Przekładnie o zmiennym docisku** : Docisk zmienia się w zależności od obciążenia. + +**Ze względu na regulację przełożenia:** +* **Przekładnie o stałym przełożeniu** : Proporcja prędkości kątowej między elementami roboczymi jest stała. +* **Przekładnie o zmiennym przełożeniu** : Możliwa regulacja prędkości, np. przez zmianę punktu styku (stosowane np. w przekładniach CVT – bezstopniowych). + + +## Zalety i wady przekładni ciernych + + +**Zalety przekładni ciernych** +* **Płynna praca** +* **Prosta budowa** \- Przekladnie cierne zazwyczaj nie mają skomplikowanych kształtów, co zmniejsza koszty produkcji. +* **Możliwość zmiany przełożenia** +* **Tłumienie drgań** + +**Wady przekładni ciernych** +* **Ograniczona przenoszona moc** : Zależna od współczynnika tarcia i siły docisku. + +* **Ryzyko wystąpienia poślizg** + +* **Zużycie elementów roboczych** + +* **Wrażliwość na zanieczyszczenia** : Brud, olej lub inne substancje na powierzchniach mocno wpływają na pracę układu. + + +## Przekładnie cierne walcowe - opis i obliczenia + + + + +Przekładnia cierna walcowa to rodzaj przekładni, w której moment obrotowy jest +przenoszony przez styczną siłę tarcia pomiędzy dwoma walcami (jeden +napędzający, drugi napędzany) dociskanych do siebie, ustawionymi względem +siebie tak, aby miały równoległe osie obrotu. Współpracują ze sobą poprzez +kontakt na powierzchni cylindrycznej. + +Schemat przekładni ciernej walcowej o kołach gładkich + +Prędkość kątowa i moment zależą od średnic walców zgodnie z zasadą proporcji, +zatem przełożenie również będzie opisane analogiczną proporcją: + +![](https://izaac.pl/wp-content/uploads/2022/04/5-1.png) + +**ε** – wartość poślizgu ( można przyjąć 0,2% do 3%). + +Wyznaczenie precyzyjnie tej wartości jest problematyczne i wymaga danych +empirycznych, więc wpływ poślizgu na wartość przełożenia pomijamy i stosujemy +ogólną zależność zgodnie z zasadą proporcji: + +![](https://izaac.pl/wp-content/uploads/2022/04/w6-1.png) + +Rozstaw osi walców dla przekładni ciernej walcowej: + +![](https://izaac.pl/wp-content/uploads/2022/04/w7-1-300x51.png) + +PŚrednica kół **D 1** i **D 2**: + +![](https://izaac.pl/wp-content/uploads/2022/04/w8-1-300x135.png) + +Zgodnie z naciskami **_Hertza_** przy obliczaniu nacisków powierzchniowych +(**p**) dwóch walców uwzględniamy promienie krzywizn stykających się walców +**ρ 1** i **ρ2**. + +Dla kół ciernych wprowadzamy zastępczy promień krzywizny powierzchni styku +**ρ** : + +![](https://izaac.pl/wp-content/uploads/2022/04/w9-1-300x72.png) + +Aplikująć [II] do [III] otrzymujemy: + +![](https://izaac.pl/wp-content/uploads/2022/04/w10-1.png) + +**Szerokość kół czynnych:** + +Ogólnie przyjmuje się następujące zalecenia: + +**b = φ** ⋅**a ⇒b = (0,2÷0,4)a** + +Zależność między **F n ** (siłą którą dociskane są koła cierne) a przenoszoną +siłą obwodową **F** (równą sile tarcia) wynosi: + +**F n ⋅** **μ = β** ⋅**F[V]** + +**μ** – współczynnik tarcia poślizgu; + +**β** – współczynnik pewności **β= (1,4¸ 2)**. + + +## Przekładnie cierne o zmiennym przełożeniu + + +**Przekładnie cierne o zmiennym przełożeniu** (np. przekładnie CVT – +Continuously Variable Transmission) umożliwiają płynną zmianę przełożenia w +szerokim zakresie bez konieczności przerywania pracy lub skokowego skoku +przełożenia. Przekąłdnie o zmiennym przełożeniu działają na na zasadzie zmiany +średnicy roboczej elementów współpracujących. Dzieki zmainy średnicy zmienia +się stosunek średnic i prędkości obrotowych co zapewnia płynne przełożenie. + +![](https://izaac.pl/wp-content/uploads/2022/04/w6-1.png) + +Bezstopniową skrzynię biegów (czyli przekładnię **o zmiennym przełożeniu)** +nazywa się także **wariatorem.** + +Standardowym parametrem przekładni o zmiennym przełożeniu jest **k** – zakres +regulacji przełożeń. Jest to cąłkowity zakres przełożenia, w którym operuje +przekładnia. + +![](https://izaac.pl/wp-content/uploads/2022/04/w27.png) + + +### Rodzaje przekładni ciernych o zmiennym przełożeniu: + +* **Przekładnie z walcem (przekładnia tarczowa)** przesuwającym się po powierzchni stożkowej lub płaskiej tarczy, zmieniając promień styku i w konsekwencji przełożenie. +* **Przekładnie z dwiema tarczami stożkowymi (przekładnia stożkowa)** , między którymi znajduje się rolka. Takie tarcze umożliwiają regulację przełożenia przez zmianę punktu styku na stożkach. +* **Przekładnie toroidalne posiadają element w kształcie pierścienia (przekładnia toroidalna)** , w których zmiana przełożenia zachodzi przez przesunięcie punktu styku między wałem napędowym i napędzanym. + +Jedną z najprostszych konstrukcji stanowi przekładnia tarczowa, dla której +zakres regulacji przełożenia k wynosi od 3 do 4. + + + + +### + +Przekładnia tarczowa i Przekładnia wielotarczowa + + + +## Przekładnie walcowe z kołami rowkowymi + + +Przekładnia cierna walcowa z kołami rowkowymi + +Jednym z rodzajów przekładni walcowej jest przekadnia z kołami rowkowymi. +Dążąc do zmniejszenia **F n **dla przekładni ciernych walcowych szukać +będziemy par materiałów o dużym **współczynniku tarcia** , lub możemy +zastosować właśnie przekładnie z rowkami. W przekładni tej koła mają rowki, +które zwiększają pole powierzchni styku i zwiększają efektywność działania +mimo zmniejszeniu siły docisku kół do siebie **F n**. W kołach tych +przeniesienie **F** następuje w wyniku działania **F n** prostopadłej do +współpracujących powierzchni ciernych. W przypadku kół rowkowych potrzebna +jest kilkakrotnie mniejsza siła docisku dla uzyskana tej samej siły obwodowej +F. + +Na każdej powierzchni trącej siła **F n1** jest równa: + +![](https://izaac.pl/wp-content/uploads/2022/04/w19.png) + +gdzie: + +**F** \- siła + +**z** – liczba powierzchni współpracujących (po dwie na każdym rowku). + +**μ** \- współczynnik tarcia + +**β – współczynnik pewności β = (1,4 ¸ 2).** + + + +Całkowita siła docisku koła rowkowego będzie wynosiła: + +![](https://izaac.pl/wp-content/uploads/2022/04/w20-300x42.png) + +gdzie: + +**α** \- półkąt rozwarcia rowka na kole**(α= 15° ÷ 22,5°)**. + +Znając średnice kół **D z1 **i **D z2** wyznaczamy rozstaw osi **a** : + +![](https://izaac.pl/wp-content/uploads/2022/04/w21.png) + +gdzie: + +**t** – głębokość rowka **(t ≤D min/16)**. + +Przełożenie dla tych przekładni ustalamy na podstawie średnic skutecznych **D +1 **i **D 2** (odpowiadają one średnicom zastępczym kół gładkich, dla tego +samego **a** i **i**). + +**D 1 = Dz1 – 1.6t** + +**D 2 = Dz2 – 0,4t** + + +## Przekładnie cierne stożkowe + + +Kolejnym rodzajem przekładni ciernej, jest przekładnia cierna stożkowa. Składa +się z ciernych powierzchni stożkowych, zazwyczaj ustawionych pod kątem 90 +stopni do siebie. Przekładnie te stosuje się do przenoszenia napędu pomiędzy +wałami o przecinających się osiach, jeżeli wierzchołki stożków znajdują się w +jednym punkcie wówczas nie powinny wystepować poślizgi geometryczne - co nie +do końca jest prawdą, jednak na potrzeby uproszczeń obliczeń tak się zakłada. +Dzięki temu, że nie występują poślizgi sprawność przekładni wzrasta. W +przypadku kół ciernych stożkowych, których osie przecinają się pod kątem 90° +przełożenie oblicza się podobnie jak w kołach zębatych stożkowych. + +. + + +### + +Przekładnia cierna stożkowa (kątowa) + + +Wzór na przełożenie przekładni ciernej stożkowej + +![](https://izaac.pl/wp-content/uploads/2022/04/w23-1.png) + +Wzory na tworzącą stożka oraz wymiary średnic kół przekładni ciernej stożkowej +liczymy z poniższych wzorów: + +![](https://izaac.pl/wp-content/uploads/2022/04/w24-300x291.png) + +Tak jak w przypadku poprzednich przekladni ciernych, w tej również należy +wprowadzić siłę docisku. W tym przypadku nazwiemy ją **F w** i uzyskuje się ją +fizycznie np. przez przesuwanie koła (zwykle mniejszego) wzdłuż osi wału. Przy +rozstawieniu osi o 90 stopni ruch wzdłuż osi generuje siłę nacisku równą: + +![](https://izaac.pl/wp-content/uploads/2022/04/w25-300x81.png) + diff --git a/frontend/src/content/przekładnie-pasowe-_-informacje-podstawowe.md b/frontend/src/content/przekładnie-pasowe-_-informacje-podstawowe.md new file mode 100644 index 0000000..c1e797d --- /dev/null +++ b/frontend/src/content/przekładnie-pasowe-_-informacje-podstawowe.md @@ -0,0 +1,444 @@ +--- +title: "Przekładnie pasowe – informacje podstawowe" +date: 2025-01-29 19:07:27 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Charakterystyczne cechy przekładni pasowej + +* #### Zalety przekładni pasowej: +* #### Wady przekładni: + + +### Podział pasów przekładni pasowych (cięgnowych) + + + +### Przykłady oznaczeń przekładni pasowych + + + +### Wstępny naciąg pasa + + + +### Koła pasowe przekładni pasowej + +* #### Koła pasowe przekładni pasowej + + +### Pasy płaskie + +* #### Wymagania wobec pasów płaskich +* #### Czynniki wpływające na wybór materiału pasa +* #### Metody łączenia pasów płaskich +* #### Materiały stosowane na pasy płaskie + + +### Pasy Okrągłe + + + +### Pasy zębate + + + +### Wytrzymałość pasów + + + +## Charakterystyczne cechy przekładni pasowej** ____** + + +Przekładnia pasowa to mechanizm przenoszenia ruchu obrotowego i mocy między +dwoma lub więcej **kołami pasowymi** za pomocą elastycznego cięgna w **postaci +pasa**. Jej zasada działania opiera się na tarciu między powierzchnią pasa a +powierzchniami kół pasowych lub na kształtowym zazębieniu (w przypadku pasów +zębatych). Moc zatem i moment obrotowy przenoszony jest za pomocą sił tarcia +lub przez zazębianie się koła z cięgnem. Przekładnie pasowe znajdują swoje +zastosowanie w wielu dziedzinach przemysłu, takich jak: +* Napędy maszyn przemysłowych (obrabiarki, pompy). +* Układy napędowe w pojazdach (rozrząd). +* Transportery taśmowe w liniach produkcyjnych. + + +### Zalety przekładni pasowej: + +* * zapewnienie płynności ruchu i cichobieżności +* zabezpiecza mechanizm napędu przed nadmiernymi przeciążeniami (poślizg); +* umożliwia dowolność rozstawu kół (do **15 metrów** dla przekładni z pasem, do **8 metrów** dla przekładni łańcuchowych); +* przenoszenie różnych mocy (do **1500 kW** dla przekładni pasowej) (do **3500 kW** przekładni łańcuchowej); +* Różne prędkości liniowe do **15m/s** dla przekładni łańcuchowej, do **50m/s** dla przekładni pasowej. + + +### Wady przekładni: + +* * przekładnie pasowe zajmują dużo miejsca (mniej miejsca zajmują łańcuchowe, jednak dalej znacznie więcej niż przekładnie zębate) +* wyciąganie i niszczenie pasa - Pas jest mniej trwały niż koła zębate lub koła cierne. +* duże naciski na wały i łożyska - spowodowane napięciem pasa; +* niezbyt wysoka sprawność; +* elektryzacja pasa - obracający i ocierający o koło pas ma tendencję do zbierania ładunków elektrycznych. Mogą one być szkodliwe dla nowoczesnej elektroniki lub w przypadku pyłów doprowadzić do niekontrolowanego zapłonu. +* niestałość przełożenia. + + +## Podział pasów przekładni pasowych (cięgnowych) + + +Przekładnie pasowe dzielimy w zależnośći od rodzaju cięgna (pasa): +* * **Pasy płaskie** : Pasy płaskie z gładką powierzchnią. +* **Pasy klinowe** : rowki w kształcie litery V dopasowane do profilu pasa. +* **Pasy zębate** : specjalne uzębienie na kole zapewniające kształtowe przeniesienie momentu +* **Pasy okrągłe:** o okrągłym przekroju +* **Łańcuchowe** : Pas w tym przypadku ma formę łańcucha - na przykład płytkowy, zębaty). + + +### +## Przykłady oznaczeń przekładni pasowych + + +Przykład oznaczenia pasów klinowych o przekroju C i L =2000[mm]. + +Dla pasa pojedynczego: + +**pas klinowy C 2000 PN-66/M-85201** + +;dla zespołu pięciu pasów klinowych pracujących w przekładni: + +**zespół pasów klinowych 5 C 2000 PN-66/M-85201** + +Przykład oznaczenia wieńca koła rowkowego z pięcioma rowkami wielkości C o +średnicy skutecznej dp =315[mm]. + +**Wieniec rowkowy 5 C 315 PN-66/M-85202** + + +### +Przekładnie cięgnowe: a) z pasem płaskim, klinowym lub okrągłym + + +b) łańcuchowe + +c) rodzaje pasów i łańcuchów + +Przkekładnie pasowe możemy także podzielić w zależności od układu przekładni w +jakim pracują: +* przekładnie otwarte (z przesuwną rolką kierującą, z rolkami kierującymi); +* pokrzyżowane (z rolką kierującą lub bez); +* przekładnie skrzyżowane (gdy następuje zmiana kierunku obrotu + +Rodzaje przekładni pasowych: + +a), b), c) otwarte + +d), e) pokrzyżowane + +f) skrzyżowane + + +## Wstępny naciąg pasa + + +Wstępny naciąg pasa to siła, z jaką pas jest naprężany przed rozpoczęciem +pracy przekładni pasowej aby zapewnić odpowiednie tarcie między pasem a kołami +pasowymi, umożliwiając efektywne przenoszenie mocy i momentu obrotowego. +Regulacja napięcia pasa może być realizowana w sposób ciągły lub okresowy. +Ciągły polega na napinaniu pasa przez cały czas pracy, natomiast okresowy +polega na regularnym napinaniu pasa do pożądanej wartości siły. Co jakiś czas +pas się luzuje i należy powtórzyć czynność. Naciąg wstępny pasa może być +zrealizowany poprzez zastosowanie dodatkowych elementów mechanicznych takich +jak: + +**Rolki napinające** – elementy zwiększające naciąg pasa i kąt opasania. + +**Rolki kierujące** – elementy zmieniające kierunek pasa. powodują uzyskanie +odpowiedniego toru biegu pasa. + +Mechanizm cięgnowy bez ciągłego napięcia pasa + +mechanizmy cięgnowe ze stałym napinaniem pasa + +**Zmiana prędkości** **obrotowej** w przekładniach pasowych może przebiegać w +**sposób ciągły** lub **skokowo**. + +Przekładnie pasowe o zmiennym przełożeniu: + +a), skokowo + +b) w sposób ciągły + + +## Koła pasowe przekładni pasowej + + +Koła pasowe sa elementem przekładni pasowej służącym do przenoszenia momentu +obrotowego i mocy za pomocą pasa, opasającego ich powierzchnię. + +Konstrukcja przekładni pasowej uwarunkowana jest średnicą kół, bezpośrednio +związaną z [**przełozeniem** i **parametrami +ruchu**.](https://izaac.pl/inzynieria-mechaniczna/przekladnie-informacjeogolne-i-podstawowe-parametry-przekladni#3) + + +### Zalecane średnice kół pasowych + + +Średnice kół staramy się dobrać z szeregu średnic normalnych: 50, 56, 63, 70, +80, 90, 100, 110, 125, 140, 160, 180, 200, 220, 250, 280, 315, 400, 500, 560, +.... , 4000 [mm] + + +### Maksymalne prędkości liniowe kół wykonanych z różnych materiałów + +* dla kół żeliwnych **v < 30 m/s**; +* dla kół staliwnych **v < 45 m/s**; +* stal zwykła **v < 60 m/s**; +* stopy lekkie **v < 80 m/s**; +* stal stopowa lub duraluminium **v < 100 m/s**; +* tekstolit **v < 25 m/s**; +* drewno **v < 15 m/s**. + +**![](https://izaac.pl/wp-content/uploads/2022/05/35.png)** + + +### Szerokość wieńca dla koła pasowego + + +Szerokość koła pasowego stalamy z zależności: + +**B = 1,1b + ( 5¸ 15) mm** – przekładnie otwarte, przy **b = (30¸ 90) +mm** + +**B = 1,4b + 10 mm** – przekładnie półskrzyżowane i skrzyżowane, przy **b = +(30¸ 90) mm** + +**B = b + 10 mm,** przy **b = (100¸ 275) mm** + +**B = b + 25 mm ,** przy **b = (300¸ 550) mm** + +**B = b + 50 mm** + + + + +### Koła pasowe wypukłe + + +Koła pasowe wypukłe to koła, których wypukły kształt zapobiega spadaniu pasa. +W przekładniach wolno- i średniobieżnych wypukłość dotyczy zazwyczaj jedynie +większego koła. Natomiast w przekładniach szybkobieżnych oba koła mają wieńce +o wypukłym profilu. W niektórych przypadkach koło wypukłe zastępuje się kołem +z obrzeżami stożkowymi, co jest prostszym rozwiązaniem, szczególnie przy +szerokich wieńcach. Powierzchnia zewnętrzna wieńca powinna cechować się +chropowatością nie większą niż **Ra = 2,5um.** + +**![](https://izaac.pl/wp-content/uploads/2022/05/36-300x117.png)** + +**y = (0,01¸ 0,02)B** + +**s = 0,005D + (3¸ 5) mm** – dla kół żeliwnych + +**s = 0,002(D + 2b) + 3 mm** – dla kół stalowych +* grubość brzegu wieńca koła pasowego **s = 0,005D + 3 mm** +* średnica piasty koła pasowego**d 1 = (1,8 ¸ 2)d** +* długość piasty koła pasowego**L = (1,5¸ 2)d;** dla **B < 1,5d** + +**L = B** +* grubość tarczy koła pasowego **a = (0,25¸ 0,35)d** – minimum **8 mm** +* zgrubienie wieńca koła pasowego **e = s + 0,02 B** + +Koła pasowe żeliwne o średnicach **D< 280 mm **wykonywane są jako +tarczowe. + +B≤300[mm] ramiona rozmieszczamy w jednym rzędzie, koła szersze w dwurzędach. +Liczba ramion zależna od średnicy koła – do 500[mm] – 4 ramiona; +* od 500 do 1600[mm] – 5 ramion; +* od 500 do 600[mm] – koła spawane. + + +## Pasy płaskie + + +Pasy płaskie to jeden z rodzajów cięgien stosowanych w przekładniach pasowych. + + +### Wymagania wobec pasów płaskich + + +Aby pasy płaskie działały efektywnie i niezawodnie, muszą spełniać następujące +kryteria: + +**Mocne sprzężenie z kołem pasowym:** +Tarcie między pasem a powierzchnią koła powinno być wystarczające, aby +zapobiegać poślizgowi. +**Wysoka sprawność przekładni:** +Minimalne straty energii podczas przenoszenia mocy. +**Odporność na obciążenia i długowieczność:** +Pas powinien być wytrzymały i odporny na zużycie podczas intensywnej +eksploatacji. + + +### Czynniki wpływające na wybór materiału pasa + + +Dobór materiału pasa zależy od warunków eksploatacyjnych i wymagań aplikacji, +takich jak: + + +**Warunki pracy -** Obciążenie, temperatura, wilgotność, obecność substancji +chemicznych. +**Wymiary pasa -** Szerokość, grubość i długość. +**Średnica kół pasowych** +**Materiał** \- musi być odpowiednio elastyczny, aby pracować z kołami o +różnych średnicach. +**Prędkość obrotowa** \- Wyższe prędkości wymagają bardziej wytrzymałych i +odpornych na rozciąganie materiałów. +**Środowisko pracy** \- Odporność na czynniki zewnętrzne, takie jak wilgoć, +oleje czy pył. + + +### Metody łączenia pasów płaskich + + +Pasy płaskie mogą być produkowane jako zamknięte (bez końców) lub wymagają +łączenia na miejscu. Sposoby łączenia obejmują: + +**Zszywanie -** Wykonywane za pomocą troków lub dratwy, w układzie czołowym +lub zakładkowym. +**Klejenie lub klejenie połączone ze zszywaniem** \- Zapewnia mocne i trwałe +połączenie końców pasa. +**Elementy metalowe** \- Stosowane w niektórych systemach jako szybkie i łatwe +rozwiązanie. +**Spawanie lub zgrzewanie** \- Technika dedykowana głównie pasom metalowym lub +z tworzyw sztucznych. + + +### Materiały stosowane na pasy płaskie + + +W zależności od zastosowania i wymagań, pasy płaskie są wytwarzane z różnych +materiałów, takich jak: + +**Skóra** \- Obecnie rzadko stosowana ze względu na wysoką cenę. +**Guma** \- Często w połączeniu z tkaniną bawełnianą i warstwą gumy nośnej. +**Balat lub naturalny kauczuk** \- Materiały elastyczne i wytrzymałe. +**Bawełna i wełna** \- Tradycyjne materiały, obecnie rzadziej używane. +**Tworzywa sztuczne** \- Poliamid z wtopionymi linkami stalowymi dla +zwiększenia wytrzymałości. +**Stal** \- Stosowana w pasach o małym przekroju i dużej wytrzymałości. +**Tkaninowo-gumowe** \- Składające się z kilku warstw gumy i tkanin, +zapewniające dobrą elastyczność i trwałość. + +Niektóre pasy tekstylne oraz z tworzyw sztucznych są produkowane jako +zamknięte, dostępne w standardowych długościach handlowych. Pasy, które nie są +bez końca, wymagają połączenia ich końców przed montażem lub w trakcie +instalacji. + + +## Pasy okrągłe + + +Pasy okrągłe mają okrągły przekrój poprzeczy. Są stosowane wyłącznie do +przenoszenia bardzo małych mocy, a więc w przypadkach, gdy zależy nam przede +wszystkim na otrzymaniu przekładni o lekkiej budowie i stosunkowo niewielkich +wymiarach. Pasy okrągłe są wykonywane z nici bawełnianych, tworzyw sztucznych +poliamidowych lub ze skóry; średnice pasów wynoszą **3 ÷10 mm** . + +Stosuje się koła z rowkiem półokrągłym o promieniu równym promieniowi pasa lub +koła z rowkiem trapezowym o kącie rozwarcia **40°**. + +![](https://izaac.pl/wp-content/uploads/2022/05/66.png) + + +## Pasy zębate + + +stanowią specjalną odmianę przekładni pasowych, ponieważ pasy są powiązane +kształtowo z kołami, co upodabnia je do przekładni łańcuchowych. Przekładnie +te nie wymagają wstępnego napinania pasa i pozwalają na uzyskanie przełożeń do +**i = 30**. Przy **i > 3,5. **Duże koło może być gładkie. + +Pasy zębate wykonuje się ze sztucznej gumy (np. neoprenowej) lub z +poliuretanu, odznaczających się bardzo dobrymi własnościami sprężystymi i +odpornością chemiczną. Warstwę nośną w tych pasach stanowią linki stalowe lub +poliamidowe. + +![](https://izaac.pl/wp-content/uploads/2022/05/67.png) + + +## Wytrzymałość pasów + + +Wytrzymałość pasa liczymy z warunku wytrzymałości na[**dopuszczalne +naprężenia**](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#1-1) materiału pasa. + +Naprężenia w pasie powstają w wyniku działania sił: +* [**rozciągających**](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#1-1) +* [**zginających**](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#4) +* **bezwładności** – pod wpływem siły odśrodkowej. + +Rozkład naprężeń panujących w pasie. + +**Naprężenia rozciągające można opisać poniższym w zorem:** + +**![](https://izaac.pl/wp-content/uploads/2022/05/w53.png)** + +[**Naprężenia zginające**](https://izaac.pl/inzynieriamechaniczna/wytrzymalosc-na-rozciaganie-skrecanie-scianie-oraz-zginanie#4)– +występują w pasie przy jego wejściu i schodzeniu z koła pasowego. + +Aby obliczenia miały sens musimy założyć, że odkształcenia wywołane zginaniem +mieszczą się w granicach odkształceń sprężystych. + +Wartość naprężeń zginających w pasie wyznaczamy na podstawie [**prawa _Hooke_ +_'a_**](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-na-rozciaganieskrecanie-scianie-oraz-zginanie#1). Traktując pas jako element jednowymiarowy +- liniowy ciągły. + +![](https://izaac.pl/wp-content/uploads/2022/05/w54-300x83.png) + +gdzie: + +**E g – [moduł sprężystości (Moduł Younga)](https://izaac.pl/inzynieriamechaniczna/modul-younga-i-statyczna-proba-rozciagania)** pasa przy zginaniu. + +Z wzoru wynika, że największe naprężenia zginające występują w małym kole. +Dlatego dążymy do doboru: + +![](https://izaac.pl/wp-content/uploads/2022/05/w55-300x58.png) + +Obciążeniem powodującym powstawanie w pasie dodatkowych naprężeń +rozciągających są siły bezwładności (siły odśrodkowe) **F b**. + +![](https://izaac.pl/wp-content/uploads/2022/05/w56-300x151.png) + +gdzie: + +**δ** \- (delta) – gęstość materiału pasa [kg/m3]; + +**S** – pole przekroju pasa [m2]; + +**v** – prędkość pasa [m/s]; + +**F b** – siła bezwładności. + +Wartość naprężeń **σ b** wywrze swój wpływ na wytrzymałość pasa. przy **v > 30 +m/s. W przypadku małych prędkości obrotowych v < 10 m/s **– naprężenia +wywołane siłami bezwładności możemy pominąć. + +Warunek wytrzymałości pasa: + +**σ = σ1 \+ σgmax \+ σb ≤k r** + diff --git a/frontend/src/content/przekładnie-z-pasem-klinowym.md b/frontend/src/content/przekładnie-z-pasem-klinowym.md new file mode 100644 index 0000000..47d2e97 --- /dev/null +++ b/frontend/src/content/przekładnie-z-pasem-klinowym.md @@ -0,0 +1,247 @@ +--- +title: "Przekładnie z pasem klinowym" +date: 2025-01-29 19:07:31 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Czym są przekładnie z pasem klinowym + + + +### Co to pas klinowy + + + +### Normy opisujące pasy klinowe + + + +### Budowa pasa klinowego + + + +### Koła do przekładni z pasem klinowym + + + +### Obliczanie przekładni z pasem klinowym. + + + +## Czym są przekładnie z pasem klinowym + + +**Przekładnie z pasem klinowym** to mechanizmy przenoszące napęd między kołami +pasowymi za pomocą elastycznego pasa o trapezowym przekroju, który klinuje się +w rowkach kół pasowych. Dzięki temu zapewniają płynną i cichą pracę, a także +tłumią drgania oraz przeciążenia. + + +## Co to pas klinowy + + +**Pas klinowy** to element napędowy, przekazujący ruch - w tym moment obrotowy +z koła napędowego na koło napędzane za pomocą tarcia. Charakteryzuje się +trapezoidalnym przekrojem zazwyczaj o kącie rozwarcia 40°, pozwalającym na +lepsze przenoszenie siły dzięki zwiększonej powierzchni kontaktu (o boczne +krawędzie) z rowkiem koła pasowego co pozwala zmniejszyć kąt opasania do 70°. +Dzięki temu pas klinowy powzala na większe przełożenie w stosunku do pasów +płaskich, zmniejszyć rozstaw osi kół oraz przenosić napęd na jeden lub trzy +wały, także pod pionowym ustawieniem wałów. Lepsza przyczepność do koła +pozwala dodatkowo zmniejszyć napięcie wstępne pasa (co za tym idzie zmniejszyć +naciski na wały i łożyska). Jest szeroko stosowany w maszynach przemysłowych, +motoryzacji, rolnictwie i innych dziedzinach techniki. + +Pojęcia "pas klinowy" i "pasek klinowy" są często używane zamiennie, jednak w +praktyce **pasek klinowy** zazwyczaj odnosi się do **pasów stosowanych w +napędach pojazdów mechanicznych** , podczas gdy pas klinowy może mieć szersze +zastosowanie przemysłowe. W obu przypadkach zasada działania i budowa są +podobne. + +Pasy klinowe – zastosujemy dla małego rozstawu kół i dużych przełożeń. Są to +pasy bez końca. + +Główne wady pasów klinowych: +* mniejsza żywotność pasa klinowego - z uwagi na większe momenty przenoszenia +* mniejsza sprawność przekładni (większe naprężenia gnące) +* trudność łączenia pasa – + +Normy opisujące pasy klinowe + +Pasy klinowe są znormalizowane pod względem przekroju oraz długości. Rozróżnia +się profile pasów klinowych, które odpowiadają określonym szerokościom rowków: +Z, A, B, C, D, E. Każdy z tych profili jest dostosowany do różnych obciążeń i +wymagań pracy. Pozwala to na dobór pasa w zależności od specyfiki +zastosowania. + +**Normami definiującymi pasy klinowe są:** + +**DIN 2215** – Określa wymiary pasów klinowych klasycznych i ich zakresy +stosowania. + +**ISO 4184** – Międzynarodowa norma definiująca wymiary i wymagania dla pasów +klinowych napędowych. + +**RMA/MPTA IP-20** – Amerykański standard określający specyfikacje pasów +klinowych. (Można je spotkać w pojazdach amerykańskich, np. maszynach +rolniczych John Deere) + + +### Budowa pasa klinowego + + +Wymiary rowków i pasów klinowych są tak ustalone aby pas nie wystawał poza +średnicę zewnętrzną koła i nie opierał się o dno rowka koła napędowego. + +Przekrój i budowa pasa klinowego + +gdzie: + +1 – powierzchnia zewnętrzna + +2 – powierzchnia wewnętrzna + +3 – powierzchnia boczna + +4 – powierzchnia skuteczna + +5 – warstwa rozciągana + +6 – warstwa nośna + + +### Koła do przekładni z pasem klinowym + + +Najprostsza przekładnia z pasem klinowym składa się z dwóch kół rowkowych, +opasanych jednym pasem klinowym. Często stosuje się również przekładnie pasowe +z kół wielorowkowych, wykorzystujące odpowiednią liczbę równoległych pasów +klinowych. Takie układy są zdolne do przenoszenia momentu obrotowego na 1 do 3 +wałów. + +Kształty i wymiary koła pasowego rowkowego: z jednym rowkiem i z kilkoma +rowkami + +Wieńce kół pasowych dobiera się zgodnie z normą **ISO 4183 ( norma** +**PN-66/M-85202 została wycofana)** , natomiast elementy takie jak piasta, +tarcza czy ramiona projektuje konstruktor według wymagań aplikacji. + +Rowki kół pasowych mają różne kąty rozwarcia, zależnie od zastosowania, +najczęściej wynoszą one **34°, 36° lub 38°**. Powierzchnie robocze kół +pasowych powinny być bardzo gładkie, co minimalizuje zużycie pasa i zwiększa +efektywność napędu. Typowo wymagana jest chropowatość rzędu **Ra 0,8–1,6** +**μm.** + +Koła pasowe muszą być lekkie i dobrze wyważone, aby zapobiec drganiom i +nierównomiernemu zużyciu. **Proces wyważania** polega na usunięciu +niewyważenia masy poprzez odjęcie materiału lub dodanie mas przeciwwag w +odpowiednich miejscach koła. + +Regulacja napięcia pasa odbywa się podobnie jak w przekładniach z pasem +płaskim, np. za pomocą napinaczy lub innych konstrukcyjnych rozwiązań +umożliwiających precyzyjne ustawienie minimalnej i maksymalnej odległości +między osiami kół (dmax i dmin) + + +## Obliczanie przekładni z pasem klinowym. + + +Obliczenia pasa klinowego przypominają obliczenia dla pasa płaskiego, dla +przekładni pasowej. Założenia wstępne dla obliczania pasa klinowego wyglądają +następująco : +* kąt opasania **α** na małym kole przyjmuje się powyżej **70°** (dla pasów płaskich zakłada się powyżej 120°), co wynika m.in. z mniejszych odległości osi kół; +* odległość osi przyjmuje się orientacyjnie - **0,5(d p1 \+ dp2) + 50 mm < a ≤2 (d p1 \+ dp2)**; +* dla pasów klinowych przyjmuje się współczynnik napędu **φ**g** r = 0,5 ÷0,7** oraz dopuszczalną częstotliwość zginania **G max = 20 ÷40s – 1;** +* zamiast średnic kół gładkich wykorzystujemy we wzorach średnice skuteczne koła na pas klinowy(dp) . + + + +**Norma opisująca obliczenia pasów klinowych: PN – 67/M – 85203.** + +**Przy projektowaniu przekładni z pasem klinowym należy na wstępie ustalić** +Moc **P** , prędkość obrotową **n** oraz przełożenie **i.** Na podstawie +złożeń konstrukcyjnych przyjmujemy średnice skuteczne **d p1**, **d p2**. W +zależności od **przełożenia** przyjmujemy współczynnik **k 1** i obliczamy +średnice równoważne. + +**D e = dp1 ·k 1** + +gdzie: + +**k 1 **= **1** dla **i = 1** + +**k 1 = 1,15 **dla **i = 0,55 ÷1,8** + +**d p1 – **średnica koła mniejszego. + +Następnie należy obliczyc prędkość liniową pasa: + +![](https://izaac.pl/wp-content/uploads/2022/05/w61.png)Sprawdzamy warunek +odległości osi kół pasowych a. + +**0,5(d p1 \+ dp2) + 50 < a < 2(dp1 \+ dp2)** + +Obliczamy kąt **opasania koła α **mniejszego. + +![](https://izaac.pl/wp-content/uploads/2022/05/w62-300x111.png) + +Obliczamy kąt rozwarcia cięgien **g**. + +**γ = π\- απ= 180°** + +Długość pasa klinowego liczymy z poniższego wzoru: + +![](https://izaac.pl/wp-content/uploads/2022/05/w63-300x37.png) + +Na podstawie wyników teoretycznych dobieramy rzeczywistą długość pasa +klinowego **L** z tablic dla znormalizowanych rozmiarów pasów klinowych. + +Sprawdzamy wytrzymałość pasa klinowego oraz obliczamy liczbę niezbędnych pasów +w układzie przekładni. +![](https://izaac.pl/wp-content/uploads/2022/05/w64-300x125.png) + +gdzie: + +**P** – moc przenoszona przez przekładnię z pasem klinowym; + +**P 1 – **moc przenoszona przez jeden pas klinowy; + +**kT – **współczynnik trwałości pasa klinowego zależny od czasu pracy +pracy na dobę **h,kT **mieści się w przedzale od**1** do **1,8** ; + +**k L – **współczynnik trwałości pasa klinowego zależny od typu i długości **k +L **mieści się w przedzale od **0,72** do **1,2.** + +**k φ(α) – **współczynnik kąta opasania, **k φ= (0,7 ÷1)** ; + +**φ - kąt opasania;** + +trwałość pasa klinowego sprawdzamy z warunku. + +![](https://izaac.pl/wp-content/uploads/2022/05/w65-300x99.png) + +Gdzie: + +**G max = 40 s – 1** + +dla dwóch kół **z = 2** + +dla dwóch kół i rolki**z = 3** + diff --git a/frontend/src/content/przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni.md b/frontend/src/content/przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni.md new file mode 100644 index 0000000..ad2737b --- /dev/null +++ b/frontend/src/content/przekładnie-łańcuchowe--informacje-i-projektowanie-przekładni.md @@ -0,0 +1,409 @@ +--- +title: "Przekładnie łańcuchowe -informacje i projektowanie przekładni" +date: 2024-01-20 18:30:34 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "przekładnie", + "category_name": "Przekładnie" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Czym są przekładnie łańcuchowe + +* #### Zastosowanie Przekładni Łańcuchowych + + +### Wady i zalety przekładni łańcuchowych + + + +### Przykład oznaczenia łańcucha dla przekładni łańcuchowej: + + + +### Porady eksploatacyjne + +* #### Smarowanie +* #### Koła łańcuchowe +* #### Regulacja zwisu łańcucha + + +### Obliczanie przekładni łańcuchowych + + + +## Czym są przekładnie łańcuchowe + + +**Przekładnie łańcuchowe** – to mechanizmy przenoszenia ruchu obrotowego i +mocy między dwoma lub więcej **kołami łańcuchowymi. Przekładnia łańcuchowa** +Składa się z (jakże by inaczej) dwóch lub więcej kół łańcuchowych o +specjalnym kształcie zębów, które współpracują z łańcuchem przenoszącym ruch i +moc. Łańcuch składa się z połączonych przegubowo ogniw, co zapewnia +elastyczność i możliwość pracy w różnych warunkach. + +Zastosowanie Przekładni Łańcuchowych + +Przekładnie łańcuchowe są stosowane w sytuacjach, w których trudno zastosować +inne rodzaje przekładni, takie jak zębate lub +[**pasowe**](https://izaac.pl/inzynieria-mechaniczna/przekladnie-pasoweinformacje-podstawowe), ze względu na specyficzne wymagania techniczne i +warunki pracy. Przy zastosowaniu przekładni zębatych należy brać pod uwagę +główne cechy: + +**Duża odległość między osiami (a):** +W przekładniach zębatych zwiększenie odległości wymagałoby stosowania bardzo +dużych kół zębatych, co jest niepraktyczne. W przekładniach pasowych z kolei +dłuższy pas wiąże się z większym ryzykiem poślizgu i koniecznością dodatkowego +napinania. + +**Duża siła obwodowa:** +Przekładnie pasowe mogą nie wytrzymać dużych sił obwodowych, ponieważ pasy +mogą się rozciągać lub ślizgać. Przekładnie zębate przy dużych siłach wymagają +bardzo wytrzymałych kół, co znacząco zwiększa ich masę i koszty. + +**Stałe przełożenie (i = const):** +W przypadku przekładni zębatych i pasowych trudniej jest osiągnąć stabilne +przełożenie w dłuższym czasie przy dużych obciążeniach. Przekładnie łańcuchowe +dzięki kształtowemu zazębieniu zapewniają stałość przełożenia. + + +### Wyróżniamy kilka rodzajów łańcuchów napędowych + + +**Łańcuchy Nośne (Dźwigowe)** \- Charakteryzują się dużą wytrzymałością na +zerwanie i odpornością na zmęczenie. Przenoszą duże obciążenia w takich +urządzeniach jak: +* * Dźwigi. +* Wciągniki. +* Podnośniki maszynowe. +* transportowe (podnośnikowe);napędowe. + +**Łańcuchy Transportowe (Podnośnikowe)** \- Zapewniają możliwość pracy na +dużych odległościach przy równoczesnym podnoszeniu lub przesuwaniu +ciężarów.Stosowane do przenoszenia ładunków w systemach transportowych i +podnośnikowych, takich jak: +* * Przenośniki taśmowe i kubełkowe (np. zwałowarki węglowe) +* Systemy transportowe w magazynach. + +**Łańcuchy Napędowe** \- Używane do przenoszenia mocy w układach napędowych, +takich jak: +* * Napęd rowerów, motocykli i pojazdów. +* Maszyny przemysłowe (tokarki, frezarki, wtryskarki). +* Maszyny rolnicze (kombajny, młocarnie). + + +## Przekładne łańcuchowe - Wady i zalety + + +Każda przekładnia ma swoje mocne i słabe strony. Poniżej przedstawiliśmy jak +się przedstawiają dla przekładni łańcuchowej. + + +### Zalety przekładni łańcuchowych + +* **Stałość przełożenia:** Przekładnie łańcuchowe zapewniają stały stosunek prędkości obrotowych dzięki kształtowemu zazębieniu łańcucha i kół. +* **Brak poślizgu:** Łańcuchy, dzięki współpracy z zębami kół, eliminują ryzyko poślizgu, co gwarantuje stabilne przenoszenie mocy. +* **Małe obciążenie łożysk:** Napęd łańcuchowy równomiernie rozkłada siły, minimalizując nacisk na łożyska. +* **Łatwy montaż i demontaż:** Przekładnie łańcuchowe charakteryzują się prostą konstrukcją przekładni, a to umożliwia szybkie składanie i rozkładanie elementów w razie potrzeby. +* **Duża trwałość i zwartość konstrukcji:** Łańcuchy są wytrzymałe na zużycie, a ich konstrukcja zajmuje niewiele miejsca w porównaniu z innymi przekładniami. +* **Przenoszenie dużej siły obwodowej:** Przekładnie łańcuchowe radzą sobie z dużymi obciążeniami, zachowując efektywność i trwałość. +* **Przenoszenie napędu na dwa lub więcej wałów przy ich pionowym ustawieniu:** Łańcuchy umożliwiają synchronizację i napęd kilku wałów w różnych układach. +* **Duża sprawność (η = 96–98%):** Dzięki minimalnym stratom energii w przekładni osiągana jest wysoka sprawność mechaniczna. + + +### Wady przekładni łańcuchowych: + +* **Nierównomierność biegu w przypadku zbyt małej liczby zębów w kole** : Mała liczba zębów powoduje większe zmiany kąta zazębienia, co prowadzi do nierównomiernej pracy. +* **Duży koszt i dokładność wykonania łańcucha** : Produkcja łańcuchów wymaga precyzyjnej obróbki i wysokiej jakości materiałów dla bardzo dużej liczby elementów, z których składa się łańcuch, co zwiększa ich koszt. +* **Konieczność smarowania łańcucha** : Regularne smarowanie jest niezbędne aby zachować odpopwiednią współpracę powierzchni trących - przenoszących moment. W tym celu stosowane są smary i oleje. +* **Konieczność regulacji zwisu** : Wymagana jest kontrola napięcia łańcucha. W tym celu stosowane są napinacze. +* **Pewna nierównomierność ruchu na skutek układania się łańcucha na wielokącie** : Kształt kół powoduje, że łańcuch układa się z niewielkimi odchyleniami, co generuje wibracje i zmienność ruchu. W przypadku niedokłanie wykonanych lub uszkodzonych kół może to doprowadzić do uszkodzenia maszyny. +* **Hałas i nierównomierność przenoszenia momentu przy osiach wichrowatych** : Nieidealne ustawienie osi prowadzi do hałasu i zmniejszenia efektywności przekładni. +* **Niezabezpieczenie innych mechanizmów napędu od przeciążeń** : Łańcuchy nie amortyzują przeciążeń, co może powodować uszkodzenia w pozostałych elementach układu. + +Łańcuchy: + +a) sworzniowy, + +b) tulejkowy, + +c) rolkowy, + +d) zębaty + +Podział Łańcuchów w zależności od budowy + +Łańcuchy można podzielić także pod kątem ich konstrukcji. Wyróżniamy łańcuch +płytkowy, sworzniowy, tulejowy, rolkowy i zębaty. + +**Łańcuch płytkowy** – podstawowa grupa łańcuchów napędowych. Ogniwa łańcucha +składają się z cienkich płytek stalowych, połączonych przegubowo ze sworzniami +(łańcuch **_Galla_**). + +**Łańcuch sworzniowy** – składa się z płytek wewnętrznych, osadzonych luźno na +czopach sworzni i płytek zewnętrznych, osadzonych na wcisk. Prędkość do **0,5 +m/s** (znikome zastosowanie). + +**Łańcuch tulejowy** – na sworzeń jest osadzona obrotowo tulejka hartowana. +Płytki wewnętrzne są osadzone na wcisk na tulejkę, a płytki zewnętrzne również +wciskowo na sworzeń. Prędkość do **15 m/s**. + +**Łańcuch rolkowy** – składają się na przemian z ogniw zewnętrznych i +wewnętrznych, o konstrukcji podobnej do łańcucha tulejkowego. Wprowadzono +dodatkową rolkę obracającą się swobodnie względem tulejki osadzonej na +sworzniu. + +**Łańcuch zębaty** – ogniwa złożone są z cienkich płytek **(1,5¸ 2mm)** o +specjalnym zarysie ułożonych na przemian parami i połączonych przegubowo. +Płytki mają zęby, w których powierzchnie robocze tworzą kąt **a = 60°**. +Jako zabezpieczenie od przesunięć bocznych służą płytki prowadzące umieszczone +w środku łańcucha lub po bokach. Biorą one udział w przenoszeniu siły. +Pożądana parzysta liczba ogniw. + + +## Przykład oznaczenia łańcucha dla przekładni łańcuchowej: + + +Łańcuch napędowy tulejkowy o podziałce **t = 15 mm** , średnicy tulejki **d 1 += 9 mm**, rozstawie płytek wewnętrznych **b 1 = 14 mm**, składający się ze 102 +ogniw wraz z ogniwem złącznym prostym, zabezpieczonym zatrzaskiem +sprężynującym. + + +### **ŁAŃCUCH 15M – 102 PS** + + +**P –** ogniwo złączne proste; + +**W** – ogniwo wygięte; + +**S** – zatrzask sprężynujący; + +**Z** – zawleczka; + +**D** – drut. + + +## Przekładnie łańcuchowe - Porady eksploatacyjne + + +Zwiększyć trwałość łańcucha możemy poprzez chronienie go przed pyłem i +zanieczyszczeniami (wg możliwości eksploatacyjnych). Na przykład poprzez +smarowanie lub osłony. Dodatkowym czynnikiem wpływającym na wytrzymałość +zmęczeniową ma odpowiedni stopień zwisu łańcucha, gdyż nie może być on zbyt +luźny. + + +### Smarowanie + + +Smarowanie znacząco wpływa na wydłużenie żywotności elementów, redukcję +zużycia oraz zwiększenie wydajności. W zależności od warunków pracy bez osłon, +z osłoną, w zamkniętej obudowie) oraz prędkości obwodowej, stosuje się różne +metody smarowania. Można to zrobić za pomocą pędzla, olejarki lub przez +zanurzenie łańcucha w oleju. + +**Przekładnie bez osłon, z małą prędkością** \- zwykle są narażone na kontakt +z zanieczyszczeniami, kurzem i wilgocią. Ponieważ brak osłon nie chroni +mechanizmu przed wpływem środowiska niezbędne jest smarowanie okresowe. + +**Przekładnie w obudowie** – Są chronione obudową przed zanieczyszczeniami, +która minimalizuje wpływ czynników środowiskowych. Ten typ rozwiązania stosuje +się przy wyższych wymaganiach dotyczących wydajności i trwałości. smarowanie +ciągłe (rozbryzgowe, natryskowe, zanurzeniowe). +* **Smarowanie Rozbryzgowe:** Olej jest rozpylany na elementy przekładni podczas pracy. Rozbryzg generowany jest przez ruch łańcucha lub specjalne łopatki znajdujące się w układzie. + +* **Smarowanie Natryskowe** : Smarowanie odbywa się poprzez aplikację oleju za pomocą dysz, natryskujących bezpośrednio na łańcuch i zębatki. Metoda ta wymaga pompy oleju i jest stosowana w bardziej zaawansowanych systemach. + +* **Smarowanie Zanurzeniowe** : Dolna część łańcucha zanurzona jest w oleju w specjalnym zbiorniku. Podczas ruchu łańcuch transportuje olej na swoje ogniwa i zębatki. + + +### Koła łańcuchowe + + +Profil zęba koła łańcuchowego, oraz jego przekrój poprzeczny jest objęty +normami **ISO 10823** , **DIN 8188**. Ogólne zasady budowy kół, jak przy +kołach zębatych i pasowych. + +Przykłady kół do łańcuchów + +Kształt poprzeczny przekroju koła łańcuchowego zależy od stosunku szerokości +wieńca zębatego do średnicy piasty, co ma znaczenie dla zapewnienia +odpowiedniej wytrzymałości i stabilności całego elementu. Jeśli grubość wieńca +jest zbyt mała w stosunku do średnicy piasty, może to prowadzić do powstawania +drgań poprzecznych wieńca koła i wzrostu nacisków powierzchniowych, co +negatywnie wpływa na pracę przekładni i może skracać jej żywotność, lub +doprowadzić do jej zniszczenia. + +Aby zapewnić optymalną trwałość, wieniec koła i piasta mogą być wykonane z +różnych materiałów. Taka konstrukcja pozwala na zastosowanie bardziej +wytrzymałych materiałów w wieńcu zębatym, który bezpośrednio współpracuje z +łańcuchem i jest narażony na większe zużycie, oraz materiałów bardziej +odpornych na zmęczenie i obciążenia dynamiczne w piaście. Dzięki temu uzyskuje +się korzystny kompromis między trwałością, wagą i kosztami produkcji. Można +także zastosować obróbkę powierzchniową w miejscu kontaktu. + + +### Materiały do kół łańcuchowych + + +**Żeliwo szare i modyfikowane -** Stosowane głównie w przekładniach +wolnobieżnych, gdzie prędkość obwodowa (v) jest mniejsza niż 3 m/s. + +**Stale węglowe i niskostopowe -** Idealne do przekładni średnio- i +szybkobieżnych, gdzie wymagana jest duża odporność na ścieranie i obciążenia +dynamiczne. +* **St5, St6:** Stale konstrukcyjne o umiarkowanej wytrzymałości, stosowane w mniej wymagających układach. + +* **40Cr, 40NiCr:** Stale niskostopowe zawierające chrom i nikiel, charakteryzujące się większą wytrzymałością i twardością po obróbce cieplnej. +* Przekładnie szybkobieżne powinny mieć twartość powierzchni roboczej: **HRC> 45** + + + + +### + +Regulacja zwisu łańcucha + + + +### Regulacja zwisu łańcucha: + + +Osie kół należy umieszczać w płaszczyźnie poziomej lub pod kątem **60°**. +tak aby część czynna cięgna była na górze. + +Prawidłowe napięcie wstępne łańcucha zapewnia zgodność teoretycznej (wg +wymiarów przekładni) i rzeczywistej długości łańcucha. Aby zapewnić poprawne +ukłożenie się łańcucha, należy zapewnić zwis (**1÷2%)a**. + +**W praktyce** napięcie często jest wynikiem ciężaru łańcucha i prawidłowego +ułożenie kół. + +**Regulacja** – przez przesuwanie osi koła, zastosowanie rolek napinających, +wyrzucanie ogniw (skrócenie do **1,5% L**) – nie więcej niż dwa ogniwa. + + +## Obliczanie przekładni łańcuchowych + + + + +Przy doborze liczby zębów kierować się należy następującymi zaleceniami krok +po kroku: + + +### 1\. Dobór zębów w małym kole w zależności od prędkości liniowej + +przekładni łańcuchowej + +**z = 6 ÷10** **-** napęd ręczny + +**z = 8 ÷10v < 1 m/s** + +**z = 11 ÷13 - v < 4 m/s **, **t < 20 mm** + +**z = 14 ÷16 - v < 7 m/s **, spokojna praca +* Zbyt mała liczba zębów na**z 1 **spowoduje nierównomierność biegu, przeciążenie i hałas; +* Zbyt duża liczba zębów na**z 2** spowoduje, że przy wydłużeniu łańcucha nastąpi jego zeskakiwanie; + + +### 2\. Dobór liczby zębów w zależności od przełożenia przekładni łańcuchowej + + +W tym przypadku dobiera się według tablic np. **PN-73/M-84161**(przełożenie +i jest ograniczone przez **z 1 min** i **z 2 max**); + + +### 3\. Dobór podziałki t łańcucha + + +Przedziałkę t - czyli odległość między ogniwami dobieramy wg katalogu np. +**DIN 8187 / ISO R606-1984** (przekładnia szybkobieżna, **t** – możliwie +małe); + +Dobór średnicy podziałowej (łańcuch tulejkowy, rolkowy) wyznaczamy z +zależności: + +![](https://izaac.pl/wp-content/uploads/2022/05/w71-300x127.png) + +Rozstaw osi kół: **a** – wg założeń konstrukcyjnych. Im mniejsze **a** , tym +większy [**kąt opasania**](https://izaac.pl/inzynieria-mechaniczna/hamulceinformacje-ogolne-i-podstawoweobliczenia#:~:text=gdzie%3A-,K%C4%85t%20opasania%20%CE%B1,-To%20k%C4%85t%20%2C%20kt%C3%B3ry), +który zaleca się aby był **α = 120°. W praktyce można zastosować :** + +**a = (30 ¸ 50)t** + +8\. Gdy **α > 120°** przyjmuje się **a w zależności od przełożenia** : + +![](https://izaac.pl/wp-content/uploads/2022/05/w72-300x122.png) + +Gdzie: + +**D 1**, **D 2 **– średnice zewnętrzne kół łańcuchowych. + +9.**Długość łańcucha L i liczba ogniw** są związane zależnością: + +![](https://izaac.pl/wp-content/uploads/2022/05/w73-300x43.jpg) + +skąd: + + +### **L = m · t** + + +We wzorze **[I]** wykorzystano uproszczenie: **π·D = z ·t** + + +### 4\. Wyznaczenie średniej prędkości łańcucha: + + +![](https://izaac.pl/wp-content/uploads/2022/05/w74.png)**n** \- prędkość +obrotowa + + +### 5\. Wartość siły obwodowej: + + +![](https://izaac.pl/wp-content/uploads/2022/05/w76.png) + +gdzie: + +**P** – przenoszona moc; + +**v** – prędkość łańcucha; + +**K 1 **– współczynnik zależny od warunków pracy **k 1 = (0,63 ÷4,55)**. + + +### 6.Obliczenia wytrzymałościowe łańcuchów + + +Łańcuchy liczy się na zerwanie oraz naciski powierzchniowe – Obliczenia można +zrealizować zgodnie z normą **PN – 81/M – 04100** + +W praktyce obliczenia sprowadzają się do sprawdzenia +warunku:![](https://izaac.pl/wp-content/uploads/2022/05/w75.png) + +gdzie: + +**x** – [**współczynnik bezpieczeństwa**](https://izaac.pl/inzynieriamechaniczna/wspolczynniki-bezpieczenstwa); + +**x R – **wymagany współczynnik bezpieczeństwa **(x R > 5)**; + +**F r – **obciążenie zrywające; + +**F –** siła obciążająca łańcuch + diff --git a/frontend/src/content/przeliczniki-jednostek-podstawowych-wielkości-fizycznych.md b/frontend/src/content/przeliczniki-jednostek-podstawowych-wielkości-fizycznych.md new file mode 100644 index 0000000..496355e --- /dev/null +++ b/frontend/src/content/przeliczniki-jednostek-podstawowych-wielkości-fizycznych.md @@ -0,0 +1,142 @@ +--- +title: "Przeliczniki jednostek podstawowych wielkości fizycznych" +date: 2022-11-19 22:40:52 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Zamiana jednostek podstawowych wielkości fizycznych** + + +Wielkość fizyczna Symbol ogólny Symbol wymiarowy | Jednostki +---|--- +Nazwa | Symbol | Wartość +Długość | s, l +L | metr | m | 1m=100cm=1000mm +kilometr | km | 1km =1000m +decymetr | dm | 1dm=0,1m=10cm +centymetr | cm | 1cm=0,01m=10mm +milimetr | mm | 1mm=0,001m=1000µm +mikrometr | µm | 1µm = 10-6m +angstrem | å | 1Å =10-10m +mila morska | - | 1 mila morska=1852m +Pole | A,S,F L^2 | metr kwadratowy | m2 | 1m2 =102 cm2 = 104­ cm2 = 10-6 km2 +decymetr kwadratowy | dm2 | 1 dm2 =10-2 m2 = 102 cm2 +centymetr kwadratowy | cm2 | 1 cm2 = 10-4 m2 = 102 mm2 +milimetr kwadratowy | mm2 | 1mm2 = 10-6 = 10-2 cm2 +ar | a | 1a = 102 m2 +hektar | ha | 1ha = 104 m2 = 102 a +Objętość | v,V L^3 | metr sześcienny | m3 | 1m3 = 103dm3 = 106cm3 = 10-9km3 +decymetr sześcienny | dm3 | 1dm3 = 10-3m3 = 103cm3 +centymetr sześcienny | cm3 | 1cm3 = 10-6m3 +milimetr sześcienny | mm3 | 1mm3 = 10-6m3 +litr | l | 1l = 10-3m3 = 102l +hektolitr | hl | 1hl = 10-1m3 = 102l +mililitr | ml | 1ml = 10-6m3 = 10-3l +czas | t, T T | sekunda | s;(sec);(sek) | 1s = 1/60 min = 1/3 600 h +milisekunda | | 1ms = 10-3s +minuta | ms | 1min = 60s=1/60h +godzina | min h: (godz) | 1h = 3600s = 60min +Kąt płaski | Α,β,γ… L/L | radian | rad | 1rad=57,2958˚ +obrót, kąt pełny | obr, P | 1P = 2π rad =360˚ +kąt prosty | D,L | 1D = (pi)/4 rad = 90˚ +stopień kątowy | o | 1˚ = pi/180 rad = 60’ +minuta kątowa | ‘ | 1’ = pi/180 * 60 rad +sekunda kątowa | ‘’ | 1’’ = pi/180*60*60 rad +grad | g | 1g = pi/200 rad =1/100 D +Kąt bryłowy | Ωω L3/L3 | steradian | sr | - +Prędkość liniowa | u, v, w, c L/T | Metr na sekundę | m/s | 1m/s =60 m/min = 10-3 km/s +Metr na minutę | m/min | 1m/min = 1/60 m/s +Kilometr na sekundę | km/s | 1km/s = 103 m/s + Kilometr na godzinę | km/h | 1km/h = 10/36 m/s +Przyspieszenie liniowe | a, LT-2 | Metr na sekundę kwadrat | m/s2 | 1m/s2 = 102 cm/s2 +Centymetr na sekundę kwadrat (gal) | cm/s2 | 1cm/s2 = 10-2m/s2 +Prędkość kątowa (obrotowa) | (‘), n rad T-1 | Radian na sekundę | rad/s | 1rad/s ≈ 9,549 obr/min = 0,15915obr/s +Obrót na sekundę | obr/s; P/s | 1obr/s = 2pi rad/s =60obr/min +Obrót na minutę | obr/min | 1obr/min = pi/30 rad/s = 1/60 obr/s +Przyspieszenie kątowe | α,ε rad T-2 | Radian na sekundę kwadrat | rad/s2 | 1rad/s2 = 0,15915obr/s2 +Obrót na sekundę kwadrat | obr/s2 | 1obr/s2 = 2pi rad/s2 +Obrót na minutę kwadrat | obr/min2 | 1obr/min2 = pi/18*102 rad/s2 +Masa | m M | Kilogram | kg | 1kg=103g=103t +---|---|---|---|--- +Gram | g | 1g=10-3kg=103mg +Miligram | mg | 1mg=10-6kg=10-3g +Tona | t | 1t=103kg +Kwintal | q | 1q=102kg=100kg +Centar | ctnr | 1ctnr=50kg +Karat | kr | 1kr = 2*104kg=0,2g +Jednostka techniczna masy | j.t.m | 1 jtm = 9,80695kg +Gęstość (masa właściwa) | ρ ML-3 | Kilogram na metr sześcienny | kg/m3 | 1kg/m3 = 10-3kg/dm3=10-3g/cm3 +Kilogram na decymetr sześcienny | kg/dm3 | 1kg/dm3=103kg/m3=1g/cm3=1t/m3 +Gram na centymetr sześcienny | g/cm3 | 1g/cm3=103kg/m3=1kg/dm3 +Tona na metr sześcienny | t/m3 | 1t/m3=103kg/m3=1kg/dm3 +Gram na litr | g/l | 1g/l=1g/dm3=1kg/m3 +Gram na mililitr | g/ml | 1g/ml=103g/l=1kg/dm3=103kg/m3 +Objętość właściwa | v L3M-1 | Metr sześcienny na kilogram | m3/kg | 1m3/kg=103cm3/kg +Centymetr sześcienny na gram | cm3/g | 1cm3/g=10-3m3/kg +Objętościowe natężenie przepływu (objętość strumienia) | Qv, V̇, v̇ L3T-1 | Metr sześcienny na sekundę | m3/s | 1m3/s=106cm3/s +Centymetr sześcienny na sekundę | cm3/s | 1cm3/s=10-6m3/s +Litr na sekundę | 1/s; dm3/s | 1l/s=10-3/s=1dm3/s +Masowe natężenie przepływu (strumień masy) | Qm, ṁ MT-1 | Kilogram na sekundę | kg/s | 1kg/s=36*102kg/h=103g/s +Kilogram na godzinę | kg/h | 1kg/h=277,8*10-6kg/s=277,8*10-3g/s +Gram na sekundę | g/s | 1g/s=10-3kg/s=3600kg/h +Moment bezwładności masy | I L^2M | Kilogram metr kwadratowy | kgm2 | 1kg*m2=0,1019716kp*m*s2=0,1019716kG*m*s2 +Gram centymetr kwadratowy | gcm2 | 1g*cm2=10-7kg*m2 +Kilopond metr sekunda do kwadratu | kpms2 | 1kp*m*s2=9,80665kg*m2 +Moment bezwładności pola (moment statyczny) | J L^4 | Metr do potęgi czwartej | m4 | m4=108cm4=1012mm4 +Centymetr do potęgi czwartej | cm4 | 1cm4=108m4 +Siła (ciężar) | F,P,Q LMT^-2 | Niuton | N; kgm/s2 | 1N=1kg*m/s2=0,102kp=0,102kG=105dyn +Dyna | dyn*g*cm/s2 | 1dyn=10-5N +Kilogram siła | kG==kp | 1kG=1kp=9,80665N +Kilopond | Kp==KG | +Gram-siła | G==p | 1G=1p=9,80665*10-3N +pond | P==G | +Ciężar właściwy | γ L^-2MT^-2 | Niuton na metr sześcienny | N/m3; kg/m2s2 | 10/m3 +Kilogram siła na metr sześcienny | Kp/m3;kG/m3 | 1kG/m3=9,80665N/m3 +Moment siły (moment zginający) | M L^2MT^-2 | Niutonometr | Nm;kgm2/s | 1N*m=107dyn*cm +dynocentymetr | Dyn*m*gcm2/s2 | 1dyn*cm=10-7N*m +kilogram-siła metr | kp*m*kG*m | 1kG*m=9,80665N*m +Ciśnienie, naprężenie | p,σ,τ L^-1MT-2 | Niuton na metr kwadratowy (paskal) | N/m2; kg/(ms2) | 1N/m2=1Pa +Niuton na milimetr kwadratowy | N/mm2 | 1 N/mm2=106 N/m2=1MPa +kiloniuton na milimetr kwadratowy | kN/mm2 | 1 000N/mm2=109N/m2=1GPa +atmosfera fizyczna | atm | 1atm=760mmHg=1,013250bar= 101325N/m2 +atmosfera techniczna | at; kG/cm2 | 1at=1kG/cm2=9,80665N/cm2=98066,5N/m2≈10mH2O +milimetr słupa rtęci, tor | mmHg Tr | 1mmHg=1Tr=133,322N/m2=1,333224mbar +milimetr słupa wody bar | mmH2O bar | 1mmH2O=9,80665 N/m2=10-4at 1bar=105N/m2 +Praca, energia | A,L,E,W L^2MT^-2 | Dżul | J ; N*m,; kg*m2/s2 | 1J=1N*m=2,38844*10-4kcal = 0,23884cal = 0,1019716 kG*m = 107erg +Kilodżul | kJ | 1kJ=103N*m=238.85cal +Megadżul | MJ | 1MJ=106J +Kilogram-siła metr | kG*m | 1kG*m=9,80665J=2,34225*103kcal +Kilowatogodzina | kW*h | 1kWh=3,6*106J=859,84J +Kaloria | cal | 1cal=4,1868J=0,426939kGm +kilokaloria | kcal | 1kcal=1000cal +Elektronowolt | eV | 1eV=1,60206*10-19J +erg | erg; g*cm2/s2 | 1erg=10-7J=1dyn*cm +Moc | P,N L^2MT^-3 | Wat | W;J/s | 1W=1J/s=0,101971kGm/s +Kilogram-siła metr na sekundę | kp*m/s kG*m/s | 1kGm/s=9,80665W +Koń mechaniczny | KM | 1KM=735,499W=75kGm/s +kilokaloria na sekundę | kcal/s | 1kcal/s=4186,8W +kilokaloria na godzinę | kcal/h | 1kcal/h=1,163W +Erg na sekundę | erg/s; g*cm2/s2 | 1erg/s=10-7W +Temperatura | T,Θ,t,ϑ Θ | Kelwin | K | 1K= 1deg; T_K=t_C + 237,15 +Stopień Celsjusza | ˚C; deg | 1˚C=1deg; t_C=T_K - 273,15 +Stopień Farenheita | ˚F; deg | 1˚F=(5/9)deg; t_F=(9/5)*(T_K – 255,37) +Stopień Rankina | ˚R; deg | 1˚R=(5/9)deg; T_R=(9/5)T_K +Ciepło właściwe | c L^2T^-2Θ^-1 | Dżul na kilogram Kelwin | J/(kg*K) | 1(J/(kg*K))=0,239cal/(g*K) +Kaloria na gram kelwin | cal/(g*K) | 1cal/(gK)=4,1868 J/(kg*K) +Entropia | S L^2MT^-2 Θ^-2 | Dżul na Kelwin | J/K | 1J/K=0,238cal/K +Kaloria na stopień | cal/deg | 1cal/K=4,1868J/K +Entalpia (energia wewnętrzna) | I,U L^2MT^2 | Dżul | J; kg*m2/s2 | 1J=0,239cal +kaloria | cal | 1cal=4,1868J +Strumień świetlny | - | lumen | lm; cd*sr | 1lm; 1cd*1sr +Ilość światła | - | lumenosekunda | lm*s; s*cd*sr | 1lm*1s=1s*1cd*1sr +Natężenie oświetlenia | - | luks | lx; cd*sr/m2 | 1lx= 1cd*1sr/1m2 +luminancja | - | Kandela na metr kwadratowy nit | cd/m2 nt | 1cd/1m2=nt +Naświetlenie | - | luksosekunda | lx*s | 1lx*1s=1cd*sr*s/m2 +Poziom ciśnienia akustycznego | - | decybel | dB | 1dB odpowiada ciśnieniu akustycznemu p spełniającemu warunek 20lg p/p0 = 1, gdzie p0=2*10-5N/m2 +Poziom głośności | - | fon | fon | Poziom głośności dźwięku w fonach jest liczbowo równy poziomowi natężenia (wyrażonego w decybelach) tonu o częstotliwości 1 kHz, którego głośność jest równa głośności tego dźwięku. + diff --git a/frontend/src/content/przykład-obliczeniowy-wytrzymałości-konstrukcji-jednolitej.md b/frontend/src/content/przykład-obliczeniowy-wytrzymałości-konstrukcji-jednolitej.md new file mode 100644 index 0000000..11b1344 --- /dev/null +++ b/frontend/src/content/przykład-obliczeniowy-wytrzymałości-konstrukcji-jednolitej.md @@ -0,0 +1,90 @@ +--- +title: "Przykład obliczeniowy wytrzymałości konstrukcji jednolitej" +date: 2023-04-27 15:29:47 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } +] +--- + + + +## **Obliczenia konstrukcji jednolitych** + + +Treść : Wspornik traktowany jako metalowy blok jednorodny, obciążony został +dwiema składowymi siłami P + +Sprawdzić jego bezpieczeństwo + +Dane: +L, b, h, g, D, r, w, c, H, d, u, l - wymiary geometryczne +Re-440MPa - granica plastyczności +Rm = 600MPa - granica wytrzymałości materiału na rozciąganie +μ = 0 - wzpółczynnik tarcia +X=2,5 - współczynnik bezpieczeństwa + +Na początku należy wprowadzić uproszczony model belkowy układu + +Gdzie ­: + +![](https://izaac.pl/wp-content/uploads/2023/04/wzor1.png) + +![](https://izaac.pl/wp-content/uploads/2023/04/wzor2.png) + +Następnym krokiem jest naniesienie rozkładów sił i momentów na uproszczonym +modelu belkowym. + +Długie ramie +![](https://izaac.pl/wp-content/uploads/2023/04/wzor3.png) +Krótkie ramie +![](https://izaac.pl/wp-content/uploads/2023/04/wzor4-300x215.png) + +Na podstawie rozkładów sił, oraz geometrii należy wyznaczyć przekroje - takie +przekroje wspornika w których może coś się stać – np. Spiętrzenie naprężeń, +największe naprężenia itp. + + +### **Obliczanie Przekrojów niebezpiecznych** + + + +### **Przekrój I-I** + + +Wzory naprężeń i naprężeń zastępczych + +gdzie + +Jx - moment bezwładności względem wprowadzonej osi obojętnej zginania x + +Jo - biegunowy moment bezwładności - suma momentów osiowych względem +prostopadłych osi przechodzących przez ten biegun. + +Wx - wskaźnik wytrzymałości przekroju (na zginanie) w osi x + +Wo - wskaźnik wytrzymałości przekroju (na skręcanie) w biegunie o + +e_max - odległość włókna najbardziej oddalonego od środka zginania lub +skręcania + +w przypadku przekroju kołowego: + +następnie + +Obliczeniowy współczynnik bezpieczeństwa (teoretyczny) + + +### **Przekrój II-II** + + + +### **Przekrój III-III** + + diff --git a/frontend/src/content/przykłady-obliczeniowe.md b/frontend/src/content/przykłady-obliczeniowe.md new file mode 100644 index 0000000..25e8215 --- /dev/null +++ b/frontend/src/content/przykłady-obliczeniowe.md @@ -0,0 +1,54 @@ +--- +title: "Przykłady obliczeniowe" +date: 2023-06-13 20:02:21 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Przykłady obliczeniowe** + + + +### [**Obliczenia konstrukcji jednolitych**](https://izaac.pl/inzynieriamechaniczna/przyklad-obliczeniowy-wytrzymalosci-konstrukcji-jednolitej) + + + + + +### **[Obliczenia Połączenia śrubowego + +równoległego](https://izaac.pl/inzynieria-mechaniczna/obliczanie-srub-krok-pokroku#7)** + + + + + +### **[Obliczenia konstrukcji spawanych](https://izaac.pl/inzynieriamechaniczna/obliczanie-spoin-metodyka-i-przyklady-obliczania-polaczenspawanych#6)** + + + +### + +### **[Obliczenia Spoiny skręcanej i zginanej](https://izaac.pl/inzynieriamechaniczna/obliczanie-spoin-metodyka-i-przyklady-obliczania-polaczenspawanych#6-1) + +** + + + + +### **[Obliczanie połączenia kołnierzowego z uszczelką gumową przy użyciu + +metody ASME](https://izaac.pl/inzynieria-mechaniczna/pkm/obliczaniepolaczenia-kolnierzowego-z-uszczelka-gumowa-przy-uzyciu-metody-asme)** + + + + + + + + + diff --git a/frontend/src/content/rodzaje-połączeń-wielobocznych---połączenia-wieloboczne---informacje-ogólne.md b/frontend/src/content/rodzaje-połączeń-wielobocznych---połączenia-wieloboczne---informacje-ogólne.md new file mode 100644 index 0000000..3b3db1e --- /dev/null +++ b/frontend/src/content/rodzaje-połączeń-wielobocznych---połączenia-wieloboczne---informacje-ogólne.md @@ -0,0 +1,45 @@ +--- +title: "Rodzaje połączeń wielobocznych - Połączenia wieloboczne - informacje ogólne" +date: 2022-02-05 15:39:27 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-wieloboczne", + "category_name": "połączenia wieloboczne" + } +] +--- + +## **Rodzaje połączeń wielobocznych** + + + +### + +### + + + +### + +### **Połączenia wieloboczne** + + +kwadratowe walcowe | ![](https://izaac.pl/wp-content/uploads/2022/02/19-300x225.png) +---|--- +kwadratowe stożkowe | ![](https://izaac.pl/wp-content/uploads/2022/02/20-300x185.png) +trójboczne walcowe | ![](https://izaac.pl/wp-content/uploads/2022/02/21-300x200.png) +trójboczne stożkowe | ![](https://izaac.pl/wp-content/uploads/2022/02/22-300x200.png) + + diff --git a/frontend/src/content/rodzaje-śrub_-nakrętek-i-podkładek.md b/frontend/src/content/rodzaje-śrub_-nakrętek-i-podkładek.md new file mode 100644 index 0000000..07b8196 --- /dev/null +++ b/frontend/src/content/rodzaje-śrub_-nakrętek-i-podkładek.md @@ -0,0 +1,391 @@ +--- +title: "Rodzaje śrub, nakrętek i podkładek" +date: 2024-01-28 19:00:20 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } +] +--- + +### Rodzaje śrub + + + +### + +### Rodzaje połączeń śrubowych + + + +### + +### Dodatkowe rodzaje śrub + + + +### Śruba Rzymska + + + +### Rodzaje konstrukcyjne łbów śrub + + + +### Rodzaje zakończeń śruby + + + +### Rodzaje podkładek do śrub + + + +### Rodzaje nakrętek + + + +### Mechanizmy śrubowe + + + +## **Rodzaje śrub** + + + + + + + + + +### **Śruba z gwintem walcowanym** + + +Obróbka walcowaniem jest bardzo wydajną metodą wytwarzania gwintów. Gwint jest +gładki, bez zarysowań, pozwalając na lepszą współpracę miedzy gwintem śruby i +nakrętki. **Zalety:** + + 1. **Wyższa[Wytrzymałość](https://izaac.pl/inzynieria-mechaniczna/podstawy-wytrzymalosci-materialow) i Odporność na Zmęczenie:** Walcowanie gwintów zwiększa ich wytrzymałość na zmęczenie, ponieważ proces ten wzmacnia strukturę ziarna materiału poprzez "kucie" gwintu, zamiast usuwać materiał. + 2. **Brak Uszkodzenia Struktury Materiału:** Walcowanie nie przerywa ciągłości włókien materiału, co jest korzystne dla wytrzymałości mechanicznej. + 3. **Gładka Powierzchnia Gwintu:** Proces walcowania tworzy gładkie powierzchnie, co zmniejsza opór tarcia i zużycie. + 4. **Większa Wytrzymałość na Obciążenia:** Gwinty walcowane mają lepsze właściwości pod kątem wytrzymałości na obciążenia ciągnące i ścinające. + 5. **Produkcja Wielkoseryjna:** Walcowanie gwintów pozwala na szybkie wykonywanie prezycyjnych gwintów w dużej ilości. Nawet jeśli koszt początkowy maszyn jest duży, to jest amortyzowany przez wolumen śrub. + +**Wady:** + + 1. **Ograniczenia Materiałowe:** Nie wszystkie materiały nadają się do walcowania, wymaga to stosunkowo plastycznych materiałów. + 2. **Specjalistyczne Maszyny:** Proces walcowania wymaga stosowania maszyn o większej mocy, co może zwiększać koszty w przypadku produkcji jednostkowej. + 3. **Wyższe Koszty Narzędzi:** Narzędzia do walcowania mogą być droższe niż te stosowane w innych procesach. + +Gwinty takie wykonane sa zazwyczaj w tolerancji e7,e6 - H7,H6 | ![](https://izaac.pl/wp-content/uploads/2022/02/9-1-300x112.png) +---|--- + + +### **Śruba z gwintem toczonym** + + +**Zalety:** + + 1. **Lepsza Dokładność Wymiary:** Toczenie pozwala na uzyskanie dokładniejszych tolerancji i bardziej jednolitych gwintów. + 2. **Gładka Powierzchnia:** Toczenie tworzy gładkie powierzchnie, co jest korzystne w aplikacjach wymagających niskiego oporu tarcia. + 3. **Lepsza jakość gwintu:** Proces toczenia umożliwia uzyskanie bardziej precyzyjnego kształtu gwintu. + 4. **Produkcja jednostkowa:** toczenie gwintu nadaje się szczególnie w przypadku produkcji jednostkowej i małoserynej + +**Wady:** + + 1. **Wyższe Koszty Produkcji:** Toczenie jest zwykle droższym procesem niż nacinanie. + 2. **Niższa Wytrzymałość i Odporność na Zmęczenie:** Proces toczenia gwintu przerywa ciągłość włókien materiału, co zwiększa wytrzymałość na zmęczenie. + 3. **Ograniczenia Materiałowe:** Nie wszystkie materiały nadają się do toczenia gwintów. + 4. **Wolniejsza Produkcja:** Proces toczenia jest zazwyczaj wolniejszy niż nacinanie. + +Gwinty takie wykonane sa zazwyczaj w tolerancji e6 - H6 i wyższej | ![](https://izaac.pl/wp-content/uploads/2022/02/11-1-300x132.png) + + +### **Śruba z gwintem nacinanym, narzynką** + + +**Zalety:** + + 1. **Szybsza i Tańsza Produkcja:** Nacinanie gwintów jest zazwyczaj szybszym i tańszym procesem produkcyjnym. + 2. **Większa Elastyczność Materiałowa:** Można nacinać gwinty na większym zakresie materiałów. + 3. **Wyższa Wydajność Produkcyjna:** Nacinanie gwintów pozwala na szybką produkcję w dużych ilościach. + +**Wady:** + + 1. **Niższa Wytrzymałość na Zmęczenie:** Proces nacinania usuwa materiał i tworzy mikronierówności, co może obniżać wytrzymałość na zmęczenie. + 2. **Mniejsza Dokładność:** Nacinane gwinty mogą nie być tak dokładne jak te toczone. + 3. **Gorsza Jakość Powierzchni:** Powierzchnia gwintu może być bardziej chropowata w porównaniu z gwintem toczonym. + +Gwinty takie wykonane sa zazwyczaj w tolerancji e6 - H6 i wyższej | ![](https://izaac.pl/wp-content/uploads/2022/02/10-1-300x113.png) + + + +### **Śruba dwustronna.** + + +Czasem mylnie nazywana Śrubą Rzymską. Jest rodzajem śruby charakteryzującą się obecnością gwintu na obu końcach, zwykle z niegwintowanym trzonem pomiędzy. Często używana w przemyśle budowlanym | ![](https://izaac.pl/wp-content/uploads/2022/02/12-1-300x121.png) + + + +### **Śruba/wkręt do drewna** + + +Śruby przeznaczone do wrzynania się w materiał drewniany, pozwalają na brak konieczności gwintowania drewna, gdyż same wkręcając się doprowadzają do utworzenia we wnętrzu gwintu. Zaleca się przed wkręcaniem takiej śruby wykonać w miejscu jej wkręcania mały otwór (około połowę średnicy śruby) aby drewno się nierozwarstwiało. | ![](https://izaac.pl/wp-content/uploads/2022/02/13-1-300x117.png) + + +## **Rodzaje połączeń śrubowych** + + + + + + +**Typy śrub wraz z zastosowaniem :** + + + + + +**Śruba zwykła** +* **ISO** : ISO 4016, ISO 4014 +* **DIN** : DIN 933, DIN 931 +* **ASME/ANSI:** ASME B18.2.1 + +| **[przykład połączenia kołnierzowego](https://izaac.pl/inzynieria-mechaniczna/pkm/obliczanie-polaczenia-kolnierzowego-z-uszczelka-gumowa-przy-uzyciu-metody-asme)** ![](https://izaac.pl/wp-content/uploads/2022/02/1-2-300x296.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/5-2-244x300.png) +---|---|--- +**Śruba dwustronna/szpilka** +* **ISO** : Brak specyficznej normy +* **DIN** : DIN 6379, DIN 938, DIN 939, DIN 835 +* **ASME/ANSI** : Brak specyficznej normy + +| ![](https://izaac.pl/wp-content/uploads/2022/02/2-2-280x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/8-1-231x300.png) +**Wkręt z głową sześciokątną** +* **ISO** : ISO 4014 DIN 931-1 BS3692 +* **DIN** : DIN 933 +* **ASME** /ANSI: ASME B18.2.1 + +| ![](https://izaac.pl/wp-content/uploads/2022/02/3-2-286x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/6-1-231x300.png) +**Wkręt imbusowy** +* **ISO** : ISO 4762, ISO 14580 +* **DIN** : DIN 912, DIN 7984, +* **ASME** /ANSI: ASME B18.3 + +| ![](https://izaac.pl/wp-content/uploads/2022/02/4-2-273x300.png) | + + + +## **Dodatkowe rodzaje śrub:** + + + + + + + +**Śruby fundamentowe** Śruby służące do zakotwiczania elementów w podłożu. Zazwyczaj zalewa się je betonem który zastygająć ustala je w danym położeniu. Normą opisującą śruby fundamentowe jest norma **PN 85061** | ![](https://izaac.pl/wp-content/uploads/2022/02/16-2-130x300.png) ![](https://izaac.pl/wp-content/uploads/2022/02/17-2-121x300.png) +---|--- + | +**Ściąg wagonowy** Zwany także sprzęgiem śrubowym to urządzenie, które zawiera +hak oraz ucho (pałąk), które jest przymocowane do haka za pomocą łubek i śruby +rzymskiej. Podczas łączenia używa się ucha jednego z sprzęgów, natomiast +drugie, które w danym momencie nie jest wykorzystywane, zawiesza się na +specjalnie przeznaczonym do tego haku. + | ![](https://izaac.pl/wp-content/uploads/2022/02/19-1-300x100.png) +**Śruba dociskowa** +Jest to śruba zapewniająca siłę docisku jakiegoś elementu. Nie ma konkretnej normy specyfikującej ten rodzaj. Jest to poprostu sposób zastosowania śruby. | ![](https://izaac.pl/wp-content/uploads/2022/02/15-2.png) +**Śruba regulacyjna** Śruba pozwalająca ustawić dwa lub więcej elementów w konkretnym wzajemnym położeniu. Zazwyczaj takie śruby są trapezowe lub drobnozwojne. | ![](https://izaac.pl/wp-content/uploads/2022/02/14-2-300x150.png) +| + + + +## **Śruba Rzymska** + + + + +**Śruba rzymska** to specyficzny rodzaj śruby, który często powoduje wiele +wątpliwości, gdyż mylona jest ze śrubą dwustronną oraz składa się z dwóch +prętów gwintowanych i korpusu (nakrętki). Pręty są gwintowane jeden +lewostronnie drugi prawo stronnie. Takie nagwintowanie pozwala uzyskać +**mechanizm sumujący ** generujący duży naciąg kręcąc jedynie korpusem. Końce +prętów śruby rzymskiej są zatwierdzone na elementach które chcemy napiąć. + +Normą opisującą Śrubę Rzymską jest norma **DIN1480** specyfikująca "Nakrętki +napinające otwarte". + +![](https://izaac.pl/wp-content/uploads/2022/02/18-1-300x94.png) + + +## **Rodzaje konstrukcyjne łbów śrub** + + +**Śruba z łbem heksagonalnym** | ![](https://izaac.pl/wp-content/uploads/2022/02/20-1-291x300.png) +---|--- +**Śruba z łbem kwadratowym zwykłym** | ![](https://izaac.pl/wp-content/uploads/2022/02/22-2-229x300.png) +**Śruba z łbem kwadratowym wieńcowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/21-1-229x300.png) +**Śruba z łbem kwadratowym młoteczkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/24-209x300.png) +**Śruba z łbem walcowym z gniazdem sześciokątnym / imbusowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/23-1-195x300.png) +**Śruba z łbem walcowym z rowkiem** | ![](https://izaac.pl/wp-content/uploads/2022/02/26-1-210x300.png) +**Śruba bez łba z gniazdem na klucz sześciokątnym** | ![](https://izaac.pl/wp-content/uploads/2022/02/25-1-161x300.png) +**Śruba bez łba z rowkiem** | ![](https://izaac.pl/wp-content/uploads/2022/02/30-1-176x300.png) +**Śruba z łbem stożkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/27-1-210x300.png) +**Śruba z łbem stożkowym soczewkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/28-1-210x300.png) +**Śruba z łbem oczkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/32-2-183x300.png) +**Śruba z łbem uszkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/33-2-183x300.png) +**Śruba z łbem radełkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/34-2-183x300.png) +**Śruby z łbem skrzydełkowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/36-2-253x300.png)![](https://izaac.pl/wp-content/uploads/2022/02/35-2-221x300.png) +**Śruba z łbem kulowym** | ![](https://izaac.pl/wp-content/uploads/2022/02/29-1-191x300.png) + + + +## **Rodzaje zakończeń śruby** + + +**Zakończenie śruby kuliste** | ![](https://izaac.pl/wp-content/uploads/2022/02/37-2-214x300.png) +---|--- +**Zakończenie śruby płaskie** | ![](https://izaac.pl/wp-content/uploads/2022/02/40-2-282x300.png) +**Zakończenie śruby stożkowe** | ![](https://izaac.pl/wp-content/uploads/2022/02/38-2-255x300.png) +**zakończenie śruby wgłębione** | ![](https://izaac.pl/wp-content/uploads/2022/02/39-2-239x300.png) +**Zakończenie śruby czopowe płaskie** | ![](https://izaac.pl/wp-content/uploads/2022/02/41-2-276x300.png) +**Zakończenie śruby czopowe walcowe** | ![](https://izaac.pl/wp-content/uploads/2022/02/42-1-269x300.png) +**Zakończenie śruby czopowe soczewkowe** | ![](https://izaac.pl/wp-content/uploads/2022/02/43-2-242x300.png) +**Zakończenie śruby czopowe stożkowe** | ![](https://izaac.pl/wp-content/uploads/2022/02/44-2-223x300.png) + + + +## **Rodzaje podkładek do śrub** + + + + +**Podkładki Zwykłe** + +Surowa | Obrabiana +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/67-1-300x206.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/68-1-300x219.png) + + +**Podkładki Sprężyste** + +Normalna | Gładka +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/70-1-300x206.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/71-1-267x300.png) + + +**Podkładki Kuliste** + +Wypukła | Miseczkowa +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/73-1-300x170.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/74-1-300x212.png) + + +**Podkładki Podatne** + +Podatna zwykła | ![](https://izaac.pl/wp-content/uploads/2022/02/76-1-300x173.png) +---|--- + + +**Podkładki Odginane** + +Owalna | Okrągła | Wginalna | Zębata +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/69-1-300x156.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/72-1-300x155.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/75-1-300x211.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/78-300x210.png) + + +**Podkładki Klinowe** + +Klinowa do dwuteownika | ![](https://izaac.pl/wp-content/uploads/2022/02/77-300x296.png) +---|--- + + + +## **Rodzaje nakrętek** + + +**Nakrętki Sześciokątne** + +Zwykła | Płaska | Wysoka +---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/45-2-300x198.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/66-1-300x273.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/50-1-300x161.png) +Jednościeta | Koronowa | Koronowa pełna +![](https://izaac.pl/wp-content/uploads/2022/02/48-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/46-1-300x198.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/47-1-300x178.png) + +**Nakrętki Czworokątne** + +Płaska | Zwykła +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/51-1-300x207.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/52-1-300x185.png) + +**Nakrętki Dwuścienne** + +Niska | Wysoka +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/54-1-300x151.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/53-1-300x150.png) + +**Nakrętki Rowkowe** + +Niska | Wysoka | Czołowa +---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/56-1-300x159.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/55-300x159.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/57-2-300x159.png) +| | + +**Nakrętki Otworowe** + +Niska | Wysoka | Czołowa +---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/59-1-300x159.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/58-1-300x159.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/60-1-300x159.png) + +**Nakrętki Skrzydełkowe** + +Niska | Wysoka +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/62-1-300x83.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/61-1-300x159.png) + + +**Z uchem** | ![](https://izaac.pl/wp-content/uploads/2022/02/63-1-259x300.png) +---|--- +Radełkowe | ![](https://izaac.pl/wp-content/uploads/2022/02/64-1.png) + + + +## **Mechanizmy śrubowe** + + + + + + +Obrót śruby, przesuw nakrętki | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-1-300x192.png) +---|--- +Obrót i przesuw śruby - nakrętka nieruchoma | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-2-300x165.png) +Obró nakrętki, przesuw śruby | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-3-300x161.png) +Obrót i przesuw nakrętki - śruba nieruchoma | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-4-300x212.png) +Przekładnia śrubowa | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-5-245x300.png) +Śruba dociskowa | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-6-300x273.png) +Śruba regulacyjna | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-7-300x159.png) +Śrubowy mechanizm sumowy | ![](https://izaac.pl/wp-content/uploads/2022/02/mechanizm-10-300x191.png) + +Źródła: + +1\. Mały poradnik mechanika, nauki matematyczno fizyczne i ogólnotechniczne, +Wydawnictwo Naukowo Techniczne - Warszawa + +2\. J.Dietrych, Podstawy Konstrukcji Maszyn I, Wydawnictwo Naukowo Techniczne +- Warszawa + +3\. Prof.dr inż. Władysław Bogucki, Budownictwo stalowe, Wydawnictwo Arkady, +1959 + +4\. Witold Korewa, Części maszyn, część I, Państwowe wydawnictwo naukowe 1969 + +5\. Tadeusz Dobrzański, Rysunek Techniczny Maszynowy, wydanie 26, WNT + diff --git a/frontend/src/content/rysunek-techniczny---wszystko-co-musisz-wiedzieć.md b/frontend/src/content/rysunek-techniczny---wszystko-co-musisz-wiedzieć.md new file mode 100644 index 0000000..ce6f376 --- /dev/null +++ b/frontend/src/content/rysunek-techniczny---wszystko-co-musisz-wiedzieć.md @@ -0,0 +1,992 @@ +--- +title: "Rysunek Techniczny - wszystko co musisz wiedzieć" +date: 2024-05-18 15:09:29 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "rysunek-techniczny", + "category_name": "Rysunek Techniczny" + } +] +--- + +### Rodzaje rysunków + + + +### Arkusze rysunkowe + +* ##### Tabela wymiarów arkuszy +* ##### Tabela wymiarów pochodnych arkuszy +* ##### Obramowanie rysunku + + +### Łączenie linii w rysunku technicznym + + + +### Grubość linii rysunkowych + + + +### Podziałka w rysunku technicznym + + + +### Widoki przekroje kłady + + + +### Rzutowanie w rysunku technicznym + +* ##### Rzutowanie metodą europejską +* ##### Rzutowanie metodą amerykańską + + +### Oznaczenia materiałów w rysunku technicznym + + + +### Elementy złączne w rysunku Technicznym + + + +### Wymiarowanie przedmiotów na rysunkach technicznych + +* ##### Linia wymiarowa +* ##### Wymiarowanie łuków + + +### Ogólne zasady rozmieszczenia wymiarów na rysunkach + +* ##### Wymiarowanie otworów +* ##### Rozmieszczenie wymiarów +* ##### Wymiarowanie średnic i otworów +* ##### Wymiarowanie promieni +* ##### Wymiarownaie rur i przedmiotów giętych +* ##### Wymiarowanie figur wielokątów foremnych +* ##### Wymiarowanie stożków + + +### + +### Oznaczanie fazowania + + + +### Podcięcia obróbkowe i technologiczne + +* ##### Oznaczanie podcięć obróbkowych w rysunku technicznym + + +## Rysunek Techniczny + + +Jest rodzajem informacji technicznej przedstawionej graficznie ujętej zgodnie +z przyjętymi zasadami np. normami podana na nośniku trwałym. Nośnikiem +dokumentacji może być kartka papieru lub dokument pdf. + +W rysunku technicznym wyróżniamy kilka podstawowych rodzajów rysunków + +**Rysunek elementu** – to rysunek przedstawiający pojedynczy element składowy. +Musi on zawierać wszystkie informacje niezbędne do realizacji założenia +rysunku. + +**Rysunek zestawu elementów** – to rysunek w dokumentacji technicznej +przedstawiające dane na temat wykonania zestawu elementów danego rodzaju. +Zawiera on w sobie wymiary, numer identyfikacyjny oraz sposób złożenia +elementów. + +**Rysunek szkicowy** – to rysunek wstępny służący jako referencja oraz sposób +przedstawienia koncepcji służącej do podjęcia wyboru rozwiązania docelowego. +Zazwyczaj w jak najprostszej oraz jak najbardziej czytelnej formie. + +**Rysunek złożeniowy ogólny** – to rodzaj rysunku przedstawiający wszystkie +części złożenia i zespoły danego wyrobu. + +**Rysunek złożeniowy** – rysunek przedstawiający usytuowanie i kształt zespołu +elementów. Dodatkowo zawiera informacje na temat ich współpracy. + +**Rysunek części** – rysunek przedstawiający pojedynczą nierozłączną – to +znaczy takiej której nie da się rozłożyć na części składowe bez jej +zniszczenia – zawierający wszystkie niezbędne informacje do jednoznacznego +opisu części. + +**Rysunek połączenia** – rysunek przedstawiający sposób zestawienia ze sobą i +dopasowania dwóch lub więcej części. + +**Rysunek wykonawczy** – rysunek zestawiający wszystkie informacje, procesy +technologiczne, wymiary itp. Służące stricte do opisu wykonania elementu. + +**Rysunek patentowy** – rysunek służący jako rysunek pomocniczy do +dokumentacji patentowej. Wykonany według zaleceń Urzędu Patentowego RP lub +innego Państwowego Urzędu Patentowego + + +## Arkusze rysunków technicznych. + + +Arkusze w rysunku technicznym to formaty papieru wykorzystywane do tworzenia +dokumentacji technicznej, takiej jak rysunki inżynieryjne, plany +architektoniczne czy schematy elektryczne. Standardy te mogą różnić się w +zależności od kraju lub regionu, ale powszechnie stosowane są międzynarodowe +normy ISO oraz inne lokalne standardy, jak ANSI w Stanach Zjednoczonych. + + 1. **Międzynarodowy Standard ISO** : Formaty serii A, B, C są najczęściej stosowane w rysunku technicznym: +* **Seria A** : Najczęściej używane są formaty A0 (841 x 1189 mm), A1 (594 x 841 mm), A2 (420 x 594 mm), A3 (297 x 420 mm) i A4 (210 x 297 mm). +* **Seria B** : Formaty z tej serii są większe od odpowiadających im rozmiarów serii A. Przykłady to B0 (1000 x 1414 mm), B1 (707 x 1000 mm), itd. +* **Seria C** : Używane głównie dla kopert, ale czasami także w specjalnych zastosowaniach technicznych. + 2. **Standard ANSI w USA** : Amerykański standard obejmuje formaty takie jak: +* ANSI A (8.5 x 11 cali), ANSI B (11 x 17 cali), ANSI C (17 x 22 cali), ANSI D (22 x 34 cali), ANSI E (34 x 44 cali). + 3. **DIN (Deutsches Institut für Normung) w Niemczech** : Podobne do formatów ISO, ale z nieznacznymi różnicami w wymiarach dla niektórych rozmiarów arkuszy. + 4. **JIS (Japanese Industrial Standards) w Japonii** : Również podobne do ISO, ale czasami różniące się wymiarami. + +W praktyce wybór formatu arkusza zależy od wielkości i skali przedstawianego +projektu, jak również od standardów branżowych i regionalnych preferencji. W +większości programów CAD (Computer-Aided Design) i innych aplikacji do +tworzenia rysunków technicznych, można wybierać spośród predefiniowanych +rozmiarów arkuszy lub dostosowywać je do swoich potrzeb + +Format podstawowy w Europie **arkuszu rysunkowego to arkusz A4**. Jest on +punktem odniesienia do formowania mniejszych (rzadko) i większych (częściej) +arkuszy. + +Rozróżniamy formaty podstawowe (wielokrotności arkuszy) oraz pochodne +(niejednolite wielokrotności arkuszy). + + +### Tabela wymiarów arkuszy serii A podstawowych w rysunku technicznym + + +A0 | 841x1189mm +---|--- +A1 | 594x841mm +A2 | 420x594mm +A3 | 297x420mm +A4 | 210x297mm +A5 | 148x210mm + + +### Tabela wymiarów pochodnych arkuszy w rysunku technicznym + + +Zazwyczaj mieszczą się one w granicach wielokrotności + +Od A4x3 do A4x9 + +Od A3x3 do A3x7 + +Od A2x3 do A2x5 + +Od A1x3 do A1x4 + +Od A0x2 do A0x3 + + + +[caption width="853" id="attachment_7384" align="aligncenter"]![Rozmiary +arkuszy rysunkowych](https://izaac.pl/wp-content/uploads/2024/05/R1.-Rozmiaryarkuszy-rysunkowych.png)Rozmiary arkuszy rysunkowych[/caption] + + + + + + + + +### Obramowanie rysunku + + +Obramowanie rysunku technicznego pełni kluczowe funkcje w dokumentacji +inżynieryjnej i architektonicznej. Jego głównym celem jest zapewnienie +czytelności i organizacji informacji, jak również ochrona rysunku przed +uszkodzeniem fizycznym ponieważ zapewnia margines, który chroni rysunek przed +uszkodzeniem podczas cięcia, kopiowania, składania czy oprawiania. Oto kilka +ważnych aspektów dotyczących obramowania rysunków technicznych: + + 1. **Struktura i Rozmiar** : +* Obramowanie zazwyczaj składa się z grubej, zewnętrznej linii, która otacza cały rysunek, tworząc ramkę. Ramka ma na celu wyraźne oddzielenie treści rysunku od pozostałej części arkusza. +* Rozmiary ramki są zwykle standaryzowane zgodnie z formatem arkusza (np. ISO, ANSI), co ułatwia archiwizację i przechowywanie. + 2. **Linie Podziału** : +* Wewnątrz obramowania mogą być również stosowane linie podziału, tworzące mniejsze sekcje dla różnych rodzajów informacji, takich jak lista części, notatki, referencje do innych rysunków, itd.. + + + +[caption width="669" id="attachment_7386" align="aligncenter"]![Obranowanie +arkusza rysunku technicznego](https://izaac.pl/wpcontent/uploads/2024/05/R2.-obranowanie-arkusza-rysunku-technicznego.jpg) + +**Obramowanie arkusza rysunku technicznego[/caption]** + + + +a= 5mm dla arkusza mniejszego niż A3 + +a= 7mm dla arkusza większego niż A3 + + + + + + + + +## Łączenie linii w rysunku technicznym + + +![Łączenie linii](https://izaac.pl/wp-content/uploads/2024/05/R4.-Laczenielinii.jpg) + +Często bywa tak, że na rysunku mogą się przecinać jedna lub więcej linii lub +linia nie musi być prosta, a np. ze skomplikowanym kształtem. W takim +przypadku należy wiedzieć jak te linie się przecinają. Dość istotnym jest +fakt, że we współczesności w dobie komputerów i programów wspomagania +projektowania CAD wszystkie te zasady są pilnowane przez program komputerowy. + + +## Grubość linii rysunkowych + + +Linie przynależą do grup – określanych przez kreślarzy – zgodine z normą **ISO +128-23:2012** + +Grupa linii | Linia cienka (a) | Linia gruba (b= 2a) | Linia bardzo gruba (c = 2b=4a) +---|---|---|--- +1 | 0,18 | 0,18*2 = 0,35 | 0,35*2 = 0,7 +2 | 0,25 | 0,25*2 = 0,5 | 0,5*2 = 1 +3 | 0,35 | 0,35*2 = 0,7 | 0,7*2 = 1,4 +4 | 0,5 | 0,5*2 = 1 | 1*2 = 2 + + +Tabela grubości dla danych rodzajów linii + +| Cienka | Gruba | Bardzo gruba +---|---|---|--- +Ciągła | ![linia cienka ciągła](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-cienka-ciagla.jpg) | ![linia gruba ciągła](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-gruba-ciagla.jpg) | ![ linia bardzo gruba](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-bardzo-gruba.jpg) +Kreskowa | ![ linia cienka kreskowa](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-cienka-kreskowa.jpg) | x | x +Punktowa | ![ linia cienka punktowa](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-cienka-punktowa.jpg) | ![ linia gruba punktowa](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-gruba-punktowa.jpg) | x +Dwupunktowa | ![linia cienka dwupunktowa](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-cienka-dwupunktowa.jpg) | x | x +Falista | ![linia cienka falista](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-cienka-falista.jpg) | x | x +Zygzakowa | ![ linia cienka zygzakowa](https://izaac.pl/wp-content/uploads/2024/05/R3.-linia-cienka-zygzakowa.jpg) | x | x + + +Wybór grupy linii zależy od wielu czynników. Zazwyczaj należą do +indywidualnych decyzji kreślarza/ inżyniera. Najczęściej spotykane czynniki +decydujące o wyborze grupy to +* * Wielkość rysunku +* Poziom skomplikowania rysunku +* Zagęszczenie linii + + +## Podziałka na rysunku technicznym + + +Podziałka to stosunek wymiarów na rysunku do wymiarów rzeczywistych +przedmiotów. Opisuje ona skalę obrazu przedstawionego na rysunku. + +Rozróżniamy kilka podstawowych wielkości (standaryzowanych) podziałek i +dzielimy je w przedstawiony sposób + +**Podziałki zwiększające** – 50:1, 20:1, 10:1, 5:1, 2:1 + +**Podziałki naturalne** – 1:1 + +**Podziałki zmniejszające** – 1:2, 1:5, 1:10, 1:20, 1:50, 1:100, 1:200, 1:500, +1:1000 + +Wszystkie Podziałki będące pomiędzy tymi wartościami czyli na przykład +zmniejszająca 1:3 lub zwiększająca 25:1 czy 7:1 są podziałkami +niestandardowymi i dopuszczalnymi w uzasadanionych przypadkach. + + +## Widoki, przekroje, kłady w rysunku technicznym + + +W rysunku technicznym należy zawsze zwracać uwagę na jednoznaczność, estetykę +i minimalizm. Z tego właśnie powodu należy pamiętać aby liczba rzutów +pomocniczych była możliwie jak najmniejsza, ale przy tym aby jednoznacznie +określała obiekt. Rzut powinno umieszczać się w zgodzie do widoku głównego, +wybranego przez konstruktora – zazwyczaj w taki sposób, aby jak najwięcej +informacji dało się odczytać właśnie z niego oraz tak aby był zgodny z +położeniem w trakcie metody obróbki. Jeśli element ma być toczony – tak jak +wał, to należy taki wal rysować horyzontalnie gdyż jest to udogodnienie dla +tokarza. + + + + + + + +[caption width="528" id="attachment_7397" align="aligncenter"]![Widok +Przekroju osiowosymetrycznego](https://izaac.pl/wpcontent/uploads/2024/05/R10.-Widok-Przekroju-osiowosymetrycznego.jpg) Widok +Przekroju osiowosymetrycznego[/caption] + + + + + + + +Poniżej przedstawiono poszczeólne rodzaje widoków/przekrojów + + +### Widok przesunięty + + + + +[caption width="784" id="attachment_7415" align="aligncenter"]![Widok +Przekroju łamanego](https://izaac.pl/wp-content/uploads/2024/05/R11.-WidokPrzekroju-lamanego.jpg) Widok Przekroju łamanego[/caption] + + + + +### Widok łamany. + + +Należy pamiętać, że dozwolone jest dowolne łamanie widoku pod kątem większym +niż 90*. + + + +[caption width="784" id="attachment_7416" align="aligncenter"]![Widok +Przekroju przesuniętego](https://izaac.pl/wpcontent/uploads/2024/05/R11.-Widok-Przekroju-przesunietego.jpg) Widok +Przekroju przesuniętego[/caption] + + +### Widok rozwinięty. + + +Symbol rzutu rozwiniętego + +[caption width="203" id="attachment_7417" align="aligncenter"]![Symbol rzutu +rozwiniętego](https://izaac.pl/wp-content/uploads/2024/05/R13.-Symbol-rzuturozwinietego.jpg) Symbol rzutu rozwiniętego[/caption] + +Symbol rzutu obróconego. + + + +[caption width="203" id="attachment_7418" align="aligncenter"]![Symbol rzutu +obróconego](https://izaac.pl/wp-content/uploads/2024/05/R14.-Symbol-rzutuobroconego.jpg) Symbol rzutu obróconego[/caption] + +Przekroje przedmiotów osiowosymetrycznych w rysunku technicznym. + + + + + +**[caption width="326" id="attachment_7419" align="aligncenter"]![Zasada +kreskowania przekrojów](https://izaac.pl/wpcontent/uploads/2024/05/R23.-Zasada-kreskowania-przekrojow.jpg) Zasada +kreskowania przekrojów[/caption][caption width="326" id="attachment_7420" +align="aligncenter"]![ Zasada kreskowania przekrojów](https://izaac.pl/wpcontent/uploads/2024/05/R23.1.-Zasada-kreskowania-przekrojow.jpg) Zasada +kreskowania przekrojów[/caption][caption width="445" id="attachment_7421" +align="aligncenter"]![Kreskowanie przekrojów z elementami +złącznymi](https://izaac.pl/wp-content/uploads/2024/05/R22.-Kreskowanieprzekrojow-z-elementami-zlacznymi.jpg) Kreskowanie przekrojów z elementami +złącznymi[/caption]** + + + + + + + + +## Rzutowanie w rysunku technicznym + + +**Rzutowanie w rysunku technicznym** to sposób przedstawiania trójwymiarowych +obiektów na dwuwymiarowej płaszczyźnie oraz przedstawienie wszystkich wymiarów +potrzebnych do jednoznacznego określenia kształtów projektowanego obiektu. +Metody rzutowania różnią się w zależności od regionu, co prowadzi do dwóch +głównych systemów: europejskiego i amerykańskiego. + +[caption width="818" id="attachment_7422" align="aligncenter"]![Rzutowanie +metodą eurpejską](https://izaac.pl/wp-content/uploads/2024/05/R6.-Rzutowaniemetoda-eurpejska.jpg) Rzutowanie metodą eurpejską[/caption] + +W technice rozróżniamy dwa typy rzutowania + + +### Rzutowanie metodą Europejską (ISO - International Standards Organization) + + +Metoda europejska, znana również jako rzutowanie pierwszego kąta, jest szeroko +stosowana w większości krajów świata poza Stanami Zjednoczonymi. Kluczowe +cechy tej metody to: +* **Układ Rzutów** : rzut przedni obiektu umieszczony jest na arkuszu nad rzutem górnym. Rzut lewej strony obiektu znajduje się po prawej stronie rzutu przedniego. +* **Orientacja** : obserwator wyobraża sobie, że patrzy na przednią stronę obiektu przez arkusz rysunkowy. W rezultacie obserwator "widzi" rzut przedni bezpośrednio przed sobą, gdy arkusz jest trzymany w normalnej pozycji do czytania. +* **Reprezentacja** : przy oglądaniu obiektu, lewa strona obiektu znajduje się po prawej stronie rzutu przedniego, co jest wynikiem obrócenia obiektu wokół jego pionowej osi. + +[caption width="1038" id="attachment_7424" align="aligncenter"]![Rzutowanie +metodą europejską](https://izaac.pl/wpcontent/uploads/2024/05/R7.2.-Rzutowanie-metoda-europejska.jpg) Rzutowanie +metodą europejską[/caption] + +Według metody europejskiej każdy rzut jest widokiem na dany bok obiektu + + +### Rzutowanie metodą amerykańską (ANSI - American National Standards + +Institute) + +Metoda amerykańska, znana jako rzutowanie trzeciego kąta, jest dominującym +standardem w Stanach Zjednoczonych i Kanadzie. Jej główne cechy to: +* **Układ Rzutów** : rzut przedni umieszczany jest na arkuszu pod rzutem górnym. Rzut lewej strony obiektu znajduje się po lewej stronie rzutu przedniego. +* **Orientacja** : obserwator wyobraża sobie, że stoi przed obiektem i patrzy na niego, z arkuszem rysunkowym pomiędzy sobą a obiektem. Rzut przedni jest więc umieszczony bezpośrednio przed obserwatorem, jakby patrzył przez przezroczystą powierzchnię. +* **Reprezentacja** : gdy obserwator patrzy na obiekt, lewa strona obiektu znajduje się po lewej stronie na rysunku, co odpowiada naturalnej perspektywie oglądania. + +[caption width="971" id="attachment_7423" align="aligncenter"]![Rzutowanie +metodą amerykańską](https://izaac.pl/wpcontent/uploads/2024/05/R7.1.-Rzutowanie-metoda-amerykanska.jpg) Rzutowanie +metodą amerykańską[/caption] + +Według metody amerykańskiej każdy rzut jest widokiem na dany przeciwległy bok +obiektu. + +Rodzaj rzutowania oznaczamy w lewym górnym rogu arkusza symbolem +przedstawionym poniżej + +[caption width="688" id="attachment_7425" align="aligncenter"]![Oznaczenia +rzutowania metodą Amerykańską i Europejską](https://izaac.pl/wpcontent/uploads/2024/05/R8.-Oznaczenia-rzutowania-metoda-Amerykanska-iEuropejska.jpg) Oznaczenia rzutowania metodą A-Amerykańską i +E-Europejską[/caption] + + +### Podsumowanie Różnic + + +Główna różnica między tymi dwoma metodami leży w sposobie orientacji i układu +rzutów na arkuszu rysunkowym. To, co może wydawać się nieintuicyjne w jednym +systemie, jest logiczne i zrozumiałe w drugim, w zależności od przyzwyczajeń i +standardów regionalnych. Wybór metody zależy od standardów branżowych +obowiązujących w danym regionie, a także od preferencji klienta lub firmy +wykonującej projekt. Przykładowo, inżynierowie w Europie zwykle stosują metodę +pierwszego kąta, podczas gdy ich koledzy w USA używają metody trzeciego kąta. + +Dany rzut, jeśli nie ma miejsca na kartce może znajdować się na innym arkuszu +w zależności od czytelności rysunku. Należy w takim przypadku podpisać rzut. + +[caption width="2361" id="attachment_7426" align="aligncenter"]![Rzutowanie na +innych arkuszach](https://izaac.pl/wp-content/uploads/2024/05/R8.-Rzutowaniena-innych-arkuszach.jpg) Rzutowanie na innych arkuszach[/caption] + +W taki sam sposób można oznaczać przekroje na innych arkuszach dodając +informajcę na głównym rysunku w którym arkuszu znajduje się dany +rzut/przekrój. + + +## Oznaczenia materiałów w rysunku technicznym. + + + + + +### Tabela oznaczeń materiałów w rysunku. + + +Metale | ![oznaczenie metalu w rysunku technicznym](https://izaac.pl/wp-content/uploads/2024/05/R25.-oznaczenie-metalu-w-rysunku-technicznym.jpg) | Grunt | ![Oznaczenie gruntu](https://izaac.pl/wp-content/uploads/2024/05/R33.-Oznaczenie-gruntu.jpg) +---|---|---|--- +Masy plastyczne i guma | **![oznaczenie materiałów plastycznych](https://izaac.pl/wp-content/uploads/2024/05/R26.-oznaczenie-materialow-plastycznych.jpg)**| Kamień | **![Oznaczenie kamienia w rysunku technicznym](https://izaac.pl/wp-content/uploads/2024/05/R34.-Oznaczenie-kamienia-w-rysunku-technicznym.jpg)** +Szkło i materiały przeźroczyste | **![oznaczenie szkła i materiałów przeźroczystych](https://izaac.pl/wp-content/uploads/2024/05/R27.-oznaczenie-szkla-i-materialow-przezroczystych.jpg)**| Beton | **![Oznaczenie betonu](https://izaac.pl/wp-content/uploads/2024/05/R35.-Oznaczenie-betonu.jpg)** +Pustaki szklane | **![Oznaczenie pustaków szklanych](https://izaac.pl/wp-content/uploads/2024/05/R28.-Oznaczenie-pustakow-szklanych.jpg)**| Beton zbrojony (Żelbet) | **![Oznaczenie betonu zbrojonego, żelbetu](https://izaac.pl/wp-content/uploads/2024/05/R36.-Oznaczenie-betonu-zbrojonego-zelbetu.jpg)** +Izolacja | **![Oznaczenie izolacji w rysunku technicznym](https://izaac.pl/wp-content/uploads/2024/05/R29.-Oznaczenie-izolacji-w-rysunku-technicznym.jpg)**| Drewno (przekrój poprzeczny) | **![Oznaczenie drewna na rysunku technicznym - przekrój poprzeczny](https://izaac.pl/wp-content/uploads/2024/05/R37.-Oznaczenie-drewna-na-rysunku-technicznym-przekroj-poprzeczny.jpg)** +Tynk, gips | **![Oznaczenie tynku](https://izaac.pl/wp-content/uploads/2024/05/R30.-Oznaczenie-tynku.jpg)**| Drewno (przekrój wzdłużny) | **![Oznaczenie drewna na rysunku technicznym - przekrój wzdłużny](https://izaac.pl/wp-content/uploads/2024/05/R38.-Oznaczenie-drewna-na-rysunku-technicznym-przekroj-wzdluzny.jpg)** +Materiały sypkie | **![Oznaczenie materiałów sypkich](https://izaac.pl/wp-content/uploads/2024/05/R31.-Oznaczenie-materialow-sypkich.jpg)**| Drewno (przekrój wzdłużny 2) | **![Oznaczenie drewna w rysunku technicznym - wzdłuż](https://izaac.pl/wp-content/uploads/2024/05/R41.-Oznaczenie-drewna-w-rysunku-technicznym-wzdluz.jpg)** +Płyny | **![Oznaczenie płynu w rysunku technicznym](https://izaac.pl/wp-content/uploads/2024/05/R32.-Oznaczenie-plynu-w-rysunku-technicznym.jpg)**| Drewniane płyty konstrukcyjne | **![Oznaczenie drewnianych płyt konstrukcyjnych](https://izaac.pl/wp-content/uploads/2024/05/R39.-Oznaczenie-drewnianych-plyt-konstrukcyjnych.jpg)** + + + +### Oznaczenia materiałów budowlanych w rysunku technicznym. + + +Drewno/w poprzek | **![Oznaczenie drewna w rysunku technicznym - w poprzek](https://izaac.pl/wp-content/uploads/2024/05/R40.-Oznaczenie-drewna-w-rysunku-technicznym-w-poprzek.jpg)** +---|--- +Drewno/wzdłuż | **![Oznaczenie drewna w rysunku technicznym - wzdłuż](https://izaac.pl/wp-content/uploads/2024/05/R41.-Oznaczenie-drewna-w-rysunku-technicznym-wzdluz.jpg)** +Sklejka i materiały drewnopochodne | **![Oznaczenie sklejki w rysunku technicznym - wzdłuż](https://izaac.pl/wp-content/uploads/2024/05/R42.-Oznaczenie-sklejki-w-rysunku-technicznym-wzdluz.jpg)** +Metale | **![metal w oznaczeniach budowlanych](https://izaac.pl/wp-content/uploads/2024/05/R43.-metal-w-oznaczeniach-budowlanych.jpg)** +Materiały termoizolacyjne | **![materiały termoizolacyjne w oznaczeniach budowlanych](https://izaac.pl/wp-content/uploads/2024/05/R43.-materialy-termoizolacyjne-w-oznaczeniach-budowlanych.jpg)** +Materiały izolacyjne | **![materiały izolacyjne w oznaczeniach budowlanych](https://izaac.pl/wp-content/uploads/2024/05/R43.-materialy-izolacyjne-w-oznaczeniach-budowlanych.jpg)** +Szkło | **![szkło w oznaczeniach budowlanych](https://izaac.pl/wp-content/uploads/2024/05/R43.-szklo-w-oznaczeniach-budowlanych.jpg)** +Tworzywa sztuczne | ![oznaczenie metalu w rysunku technicznym](https://izaac.pl/wp-content/uploads/2024/05/R25.-oznaczenie-metalu-w-rysunku-technicznym.jpg) +Powierzchnia gruntu | + + + +## Oznaczenia elementów złącznych w rysunku technicznym. + + +Rzutowanie elementów złącznych jest powszechne w rysunku technicznym. Jedną z +głównych zasad jest to że elementów złącznych nie przecinamy w przypadku +przekrojów. Nawet jeśli cały przekrój jest przecięty, to elementów złącznych +nie przecinamy. + +Przykład nitu w rysunku technicznym. + +![Rysunek nitu](https://izaac.pl/wp-content/uploads/2024/05/R60.-Rysuneknitu.jpg) + +Oznaczenia śrub w rysunku technicznym. + +**![Oznaczenie srub w rysunku technicznym](https://izaac.pl/wpcontent/uploads/2022/02/1-2.png)** + + + + + +[Spawanie w rysunku technicznym](https://izaac.pl/inzynieriamechaniczna/obliczanie-spoin-metodyka-i-przyklady-obliczania-polaczenspawanych) + +[Łożyska w rysunku technicznym](https://izaac.pl/inzynieriamechaniczna/projektowanie-lozysk-projektowanie-lozysk-skosnych) + +Przekładnie w rysunku technicznym + + +## Wymiarowanie przedmiotów na rysunkach technicznych wykonawczych. + + + +### Linia wymiarowa. + + +Linia wymiarowa to linia cienka prosta (w przypadku wymiaru liniowego) lub +łukowa (w przypadku kątowego lub wymiaru liniowego łuku) zakończona +strzałkami, dotykająca linii pomocniczych wymiarowych lub linii rysunkowych w +punkach których chcemy mierzyć odległość. + +**![Linie wymiarowe wskazujące wymiar zewnętrzny](https://izaac.pl/wpcontent/uploads/2024/05/R68.1.-Linie-wymiarowe-wskazujace-wymiarzewnetrzny.jpg)![Linie wymiarowe](https://izaac.pl/wpcontent/uploads/2024/05/R68.-Linie-wymiarowe.jpg)** + +Grot strzałki powinien być nachylony pod kątem od 15 do 90 stopni. Oraz może +być zamknięty lub otwarty. Dodatkowo grot może być zastąpiony kreską +postawioną pod kątem 45* względem linii wymiarowej, jeśli chcemy oznaczyć +wiele wymiarów. Grot strzałki może być także umieszczony od zewnątrz jeśli +zależy nam aby pokazać, że istotny jest wymiar zewnętrzny. + + + + + +[caption width="422" id="attachment_7467" align="aligncenter"]![Kąt rozwarcia +strzałki](https://izaac.pl/wp-content/uploads/2024/05/R65.-Kat-rozwarciastrzalki.jpg) Kąt rozwarcia strzałki[/caption] + + + + + + + + + +[caption width="823" id="attachment_7468" align="aligncenter"]![Zastąpienie +grotu strzałki kreską](https://izaac.pl/wpcontent/uploads/2024/05/R67.-Zastapienie-grotu-strzalki-kreska.jpg) +Zastąpienie grotu strzałki kreską[/caption] + + + +Linia wymiarowa pomocnicza – to linia odniesienia między wystąpieniem na +elemencie a linią wymiarową. Linia taka nie może być powielona. Linie +pomocnicze nie mogą zamykać wymiaru, ze względu na niepewność pomiarową. W +rysunku technicznym maszynowym wymiary podawane są w milimetrach, w rysunkach +budowlanych w metrach. + +**![Wymiarowanie elementu](https://izaac.pl/wpcontent/uploads/2024/05/R69.-Wymiarowanie-elementu.jpg)** + + +### Wymiarownie łuków + + +Wymiarowanie łuków w rysunku technicznym pozwla na zrozumienie interpretacji +kształtu i rozmiaru części zakrzywionych. Oto kilka kluczowych zasad +dotyczących wymiarowania łuków: + + 1. **Promień Łuku** : +* Łuki najczęściej wymiaruje się poprzez podanie ich promienia. Wymiar ten zwykle umieszcza się wewnątrz łuku, z dodaniem symbolu literowego 'R', który poprzedza wartość numeryczną (np. R30 mm). +* Linia pomocnicza od wymiaru do łuku powinna być ciągła, zakończona strzałką i początkiem wskazującym środek zakrzywienia. + 2. **Średnica Łuku** : +* W niektórych przypadkach, szczególnie gdy łuk jest częścią okręgu, wymiaruje się go przez podanie średnicy, co oznacza się jako 'Ø' przed wartością numeryczną (np. Ø60 mm). + 3. **Kąt Łuku** : +* Jeśli istotne jest określenie kąta, pod jakim łuk został narysowany, używa się dwóch linii promieniowych wychodzących ze środka krzywizny i kończących się na krawędziach łuku. Między tymi liniami umieszcza się wymiar kąta w stopniach. +* Kąt można także wymiarować poprzez bezpośrednie podanie wartości na łuku, z odpowiednimi strzałkami wskazującymi zakres pomiaru. + 4. **Długość Łuku** : +* Wymiarowanie długości łuku jest rzadziej stosowane i zazwyczaj jest potrzebne w bardziej specjalistycznych aplikacjach. Długość łuku można wyrazić poprzez notację na rysunku lub dodając ją do specyfikacji projektu, jeśli jest kluczowa dla funkcji części. + + +## ![wymiarowanie łuków](https://izaac.pl/wpcontent/uploads/2024/05/R87.-wymiarowanie-lukow.jpg) + + + 5. **Stosowanie Linii Wymiarowych** : +* Linie wymiarowe dla łuków powinny być czytelne i nie przecinać innych istotnych elementów rysunku. Dobrą praktyką jest umieszczanie linii wymiarowych tak, aby nie zakłócały one czytelności projektu, a jednocześnie dostarczały pełnej informacji o wymiarach łuku. + + + + +### Ogólne zasady rozmieszczenia wymiarów na rysunkach technicznych + + +**![ Przykład wymiarowania kształtów obrotowych z rzutem](https://izaac.pl/wpcontent/uploads/2024/05/R77.-Przyklad-wymiarowania-ksztaltow-obrotowych-zrzutem.jpg)** + +[caption width="1026" id="attachment_7472" align="aligncenter"]![ Przykład +wymiarowania kształtów obrotowych z rzutem](https://izaac.pl/wpcontent/uploads/2024/05/R76.-Przyklad-zlego-wymiarowania-elementow.jpg) +Przykład złego wymiarowania[/caption][caption width="1087" +id="attachment_7473" align="aligncenter"]![Przykład poprawnego wymiarowania +elementów z oznaczeniem grubości blachy](https://izaac.pl/wpcontent/uploads/2024/05/R76.1.-Przyklad-poprawnego-wymiarowania-elementow-zoznaczeniem-grubosci-blachy.jpg) Przykład poprawnego wymiarowania elementów z +oznaczeniem grubości blachy[/caption] + +Wymiar można (zwłaszcza dla małych wystąpień elementów) przenieść poza linię +wymiarową w celu zwiększenia czytelności rysunku. + +[caption width="536" id="attachment_7474" align="aligncenter"]![Przykład +wymiaru zewnętrznego](https://izaac.pl/wpcontent/uploads/2024/05/R70.1.-Przyklad-wymiaru-zewnetrznego.jpg) Przykład +wymiaru zewnętrznego[/caption][caption width="599" id="attachment_7476" +align="aligncenter"]![Wyciągnięcie wymiaru poza linię +wymiarową](https://izaac.pl/wp-content/uploads/2024/05/R70.-Wyciagnieciewymiaru-poza-linie-wymiarowa.jpg) Wyciągnięcie wymiaru poza linię +wymiarową[/caption] + + +### Wymiarowanie otworów w rysunku technicznym + + +Otwory są jednymi z podstawowych kształtów jakie możemy spotkać na elementach. +Otwory w tysunku technicznym można wymiarować na wiele sposobów, poniżej +przedstawiono kilka z nich + +[caption width="588" id="attachment_7477" align="aligncenter"]![Wymiarowanie +otworów koncentrycznych](https://izaac.pl/wpcontent/uploads/2024/05/R71.-Wymiarowanie-otworow-koncentrycznych.jpg) +Wymiarowanie otworów koncentrycznych[/caption][caption width="900" +id="attachment_7478" align="aligncenter"]![Wymiarowanie otworów w +szeregach](https://izaac.pl/wp-content/uploads/2024/05/R72.-Wymiarowanieotworow-w-szeregach.jpg) Wymiarowanie otworów w szeregach[/caption][caption +width="769" id="attachment_7479" align="aligncenter"]![Wymiarowanie otworu pod +kątem](https://izaac.pl/wp-content/uploads/2024/05/R72.1.-Wymiarowanie-otworupod-katem.jpg) Wymiarowanie otworu pod kątem[/caption] + +W przypadku różnego kąta umieszczania wymiarów warto także zastosować koło +wymiarów, czyli koło opisujące metodykę wpisywania wymiaru w zależności od +kąta jego stawiania. Zastosowanie koła wymiarów w rysunku technicznym poprawia +jego czytelność oraz sprawia, że wszystkie wymiary są ustawione w spójnym +wzajemnym położeniu. + +![Róża wymiarów \(koło wymiarów\)](https://izaac.pl/wpcontent/uploads/2024/05/R73.-Roza-wymiarow-kolo-wymiarow.jpg) + + +### Rozmieszczanie wymiarów równoległych w rysunku technicznym. + + +**![](https://izaac.pl/wp-content/uploads/2024/05/R70.2.-Wymiarowanie- +wzajemnego-polozenia-wystapien.jpg)** + + +### Wymiarowanie brył obrotowych w rysunku technicznym. + + +![Wymiarowanie średnic](https://izaac.pl/wpcontent/uploads/2024/05/R80.-Wymiarowanie-srednic.jpg) ![Przykład wymiarowania +kształtów obrotowych z rzutem](https://izaac.pl/wpcontent/uploads/2024/05/R77.-Przyklad-wymiarowania-ksztaltow-obrotowych-zrzutem-1.jpg) + + +### Wymiarowanie Średnic i otworów + + +![Wymiarowanie średnic na symetrycznej połowie przekroju](https://izaac.pl/wpcontent/uploads/2024/05/R80.1.-Wymiarowanie-srednic-na-symetrycznej-polowieprzekroju.jpg) + +Wymiarowanie średnic na symetrycznej połowie przekroju. + +![wymiarowanie otworów za pomocą linii wymiarowych](https://izaac.pl/wpcontent/uploads/2024/05/R83.-wymiarowanie-otworow-za-pomoca-liniiwymiarowych.jpg) + +Wymiarowanie otworów za pomocą linii wymiarowych. + +![Wymiarowanie otworów za pomocą linii odniesienia](https://izaac.pl/wpcontent/uploads/2024/05/R83.1.-Wymiarowanie-otworow-za-pomoca-liniiodniesienia.jpg) + +Wymiarowanie otworów za pomocą linii odniesienia. + +![Wymiarowanie tolerancji otworów](https://izaac.pl/wpcontent/uploads/2024/05/R83.2.-Wymiarowanie-tolerancji-otworow.jpg) + +Wymiarowanie tolerancji otworów. + +![Wymiarowanie Średnic](https://izaac.pl/wpcontent/uploads/2024/05/R78.-Wymiarowanie-Srednic.jpg) + +Wymiarowanie średnic. + +![Wymiarowanie otworów](https://izaac.pl/wpcontent/uploads/2024/05/R79.-Wymiarowanie-otworow.jpg) + +Wymiarowanie otworów. + +![Wymiarowanie fragmentów średnic](https://izaac.pl/wpcontent/uploads/2024/05/R81.-Wymiarowanie-fragmentow-srednic.jpg) + +Wymiarowanie fragmentów średnic + + +### Wymiarowanie promieni + + +![Wymiarowanie promieni](https://izaac.pl/wpcontent/uploads/2024/05/R81.-Wymiarowanie-promieni.jpg) + +Wymiarowanie promieni + + +### Wymiarowanie rur i przedmiotów wygiętych + + +![Wymiarowanie przedmiotów giętych np. rurek](https://izaac.pl/wpcontent/uploads/2024/05/R95.-Wymiarowanie-przedmiotow-gietych-np.-rurek.jpg) + +Wymiarowanie przedmiotów giętych np. rurek + +![ wymiarowanie łuków](https://izaac.pl/wpcontent/uploads/2024/05/R87.-wymiarowanie-lukow-1.jpg) + +wymiarowanie łuków + +![wymiarowanie rurek](https://izaac.pl/wpcontent/uploads/2024/05/R88.-wymiarowanie-rurek.jpg) + +wymiarowanie rurek + + +### Wymiarowanie figur wielokątów foremnych np. wystąpień płaskich na wale + + +![ Rysowanie wielokątów foremnych z oznaczeniami powierzchni płaskich na +wale,wałku](https://izaac.pl/wp-content/uploads/2024/05/R89.-Rysowaniewielokatow-foremnych-z-oznaczeniami-powierzchni-plaskich-na-walewalku.jpg) + +Rysowanie wielokątów foremnych z oznaczeniami powierzchni płaskich na +wale,wałku + + +### Wymiarowanie stożków + + +Podstawowym parametrem stożka jest jego zbieżność wyrażona + +![Wymiarowanie stożków](https://izaac.pl/wpcontent/uploads/2024/05/R91.-Wymiarowanie-stozkow.jpg) + +Wymiarowanie stożków + +Gdzie alfa jest równa kątowi rozwarcia stożka + +Zbieżność oznacza się symbolem ▻ + +![Zbieżność stożka](https://izaac.pl/wpcontent/uploads/2024/05/R91.1-Zbieznosc-stozka.jpg) + +Zbieżność stożka + +Drugim podstawowym parametrem opisującym stożek jest jego pochylenie wyrażane + +![Wymiarowanie stożków](https://izaac.pl/wpcontent/uploads/2024/05/R92.-Wymiarowanie-stozkow.jpg) + +Pochylenie stożka oznacza się symbolem ◺ + +![Pochylenie stożka](https://izaac.pl/wpcontent/uploads/2024/05/R91.2-Pochylenie-stozka.jpg) + +Pochylenie stożka + + +## Oznaczanie fazowania (gradowanie) na rysunku technicznym + + +Faza na rysunku technicznym jest wystąpieniem pochylenia powierzchni obiektu w +jego krawędzi. Można to nazwać ścięciem krawędzi lub gradowaniem. Występują +dwa przypadki oznaczane w inny sposób. Pierwszy to przypadek w którym kąt +nachylenia powierzchni fazowanej (ściętej) wynosi 45*. Drugi to przypadek w +krótym ten kąt jest inny niż 45* + +![Wymiarowanie fazowania, gradow](https://izaac.pl/wpcontent/uploads/2024/05/R93.-Wymiarowanie-fazowania-gradowania.jpg) + +Wymiarowanie fazowania, gradow + + +## Podcięcia obróbkowe, podcięcia technologiczne + + +Podcięcia technologiczne to specjalne cechy często stosowane w projektowaniu +elementów maszyn i urządzeń, które mają na celu usprawnienie montażu, +produkcji lub zwiększenie wytrzymałości połączeń. Podcięcia są wykorzystywane +do eliminacji skutków skupienia naprężeń, zapewnienia przestrzeni na spoiny, +umożliwienia montażu łożysk, uszczelek i innych elementów, a także do +estetycznego modelowania powierzchni. Oto kilka kluczowych informacji na temat +podcięć technologicznych. Z uwagi na to, że podcięcia technologiczne są +znormalizowane można ich używać także jako wskazówkę do prawidłowego +projektowania gwintów na wałkach i odległości odsunięcia gwintu od ściany tak, +aby narzędzie obróbkowe miało miejsce na wyjście. + +Podcięcia wymiaruje się podając ich głębokość, szerokość oraz położenie +względem innych elementów konstrukcyjnych. Na rysunkach technicznych podcięcia +są często zaznaczone jako specjalne cechy wymagające szczególnej uwagi w +procesie produkcyjnym: + +![ Rodzaje podcięć obróbkowych](https://izaac.pl/wpcontent/uploads/2024/05/R94.1.-Rodzaje-podciec-obrobkowych.jpg) + +Rodzaje podcięć obróbkowych + +A – dla jednej powierzchni pracującej + +B – dla dwóch powierzchni pracujących + +C – Dla jednej pow. pracującej + +D – dla dwóch pow. pracujących + +**Wymiary podcięć obróbkowych według PN−58/M−02043** +--- +Średnica czopa +** _d_** [mm] | Rodzaje podcięć +od | do | **A** i **B** | **C** i **D** +**_b_** | **_a_** | **_z_** | **_b_1** | **_c_** | **_R_1** | **_R_** | **_a_1** | **_z_** | **_b_2** | **_b_3** +3 | 10 | **2** | 0,2 | 0,1 | 1,5 | 1 | 0,4 | − | − | 0,1 | − | − +10 | 18 | **1** | 0,2 | 1,6 | 1,4 +18 | 30 | **1,6** | 0,3 | 2,5 | 2,2 +30 | 80 | **4** | 0,3 | 3,3 | 1,5 | 0,6 | **2,5** | 3,7 | 3,4 +80 | | **6** | 0,4 | 5 | 2,3 | 1 + +**_Wymiar średnicy czopa_ _d_ _(z odpowiednią tolerancją) jest +podawany zwykle na rzucie głównym, dlatego nie powinien być podawany na +rysunku podcięcia przedstawionego np. w powiększeniu. +Dwukrotne podanie tego samego wymiaru jest sprzeczne z "zasadą niepowtarzania +wymiarów"._** + +Podcięcia rodzaju C i D stosuje się w przedmiotach podlegających obciążeniom +zmiennym. + +Przykład oznaczenia podcięcia obróbkowego rodzaju A o szerokości b = 2 mm: +**Podcięcie A2 PN−58/M−02043** + +Przykład oznaczenia podcięcia obróbkowego rodzaju C o promieniu R = 1,6 mm: +**Podcięcie C1,6 PN−58/M−02043** + + + + + + +## Oznaczenia podcięć obróbkowych w rysunku technicznym + + +[caption width="794" id="attachment_7551" align="aligncenter"]![Wymiarowanie +uproszczone podcięcia obróbkowego](https://izaac.pl/wpcontent/uploads/2024/05/R94.-Wymiarowanie-uproszczone-podcieciaobrobkowego-1.jpg) Wymiarowanie uproszczone podcięcia obróbkowego[/caption] + + +## Pręty i kształtowniki + + +Nazwa | Oznaczenie | Wymiary +---|---|--- +Pręt okrągły Pełny Z otworem Rura | | d d x s d x s +Pręt kwadratowy Pręt Kształtownik zamknięty Rura | | a a x s a x s +Pręt płaski Taśma Kształtownik Prostokątny zamknięty Rura prostokątna | | a x b a x b x s a x b x s +Pręt sześciokątny Rura sześciokątna | | a a x s +Pręt Trójkątny | | a +Pręt półokrągły | | a x s +Pręt trapezowy | | a x b x s +Pręt owalny Rura owalna | | a x s a x b x s +Kątownik | | a x b x s +Teownik | | Wg. Normy +Dwuteownik | | Wg. Normy +Ceownik | | Wg. normy + + + +### Wymiarowanie Kształtowników w konstrukcjach kratowych + + + +## Chropowatość powierzchni + + +Chropowatość powierzchni sprecyzowana jest w normie **PN-87/M-04236/02.** +Wyróżniamy dwa rodzaje chropowatości. Chropowatość określona jako średnie +arytmetyczne odchylenie profilu powierzchni Ra oraz Chropowatość definiowana +jako średnia arytmetyczna 10 punktów Rz + + +### Chropowatość Ra + + +– Jest definiowana jako średnia arytmetyczna wartości odchyleń bezwzględnych +profilu y od linii średniej w przedziale pomiarowym. + + + +Gdzie : + +m – linia dzieląca profil chropowatości tak, że suma kwadratów odchyleń +profilu y od tej linii jest najmniejsza. + + +### Chropowatość Rz + + +zdefiniowana jako średnia arytmetyczna wartości bezwzględnych wysokości 5 +najwyższych i 5 najniższych punktów w danym przedziale mierzonym. + + + +Gdzie : + +m – linia dzieląca profil chropowatości tak, że suma kwadratów odchyleń +profilu y od tej linii jest najmniejsza. + + +## Falistość powierzchni + + +Falistość oznaczana literą W_z jest powierzchnią rzeczywistą o charakterze +losowym (np. po ścieraniu) lub okresowym (np. po toczeniu) których odstępy +znacznie przewyższają odstępy wystąpień w profilu chropowatości. Falistość +może być spowodowana drganiami maszyny obrabiającej + + + +Gdzie : + +m_w – linia środkowa + +h_wp – wysokość wzniesień profilu. Odległość najwyższego wzniesienia od linii +m_w + +h_wv – głębokość wgłębienia profilu. Odległość największego wgłębienia od +linii m_w + +w_p – maksymalna wysokość wzniesienia profilu falistości + +w_v – maksymalna głębokość profilu falistości + +w_m = w_p+w_v - maksymalna wysokość profilu falistości + +S_w – odstęp falistości + +S_wm – średni odstęp falistości + +W_c – suma średnich wartości wysokości wzniesieńi głębokości wgłębień profilu +falistości + +W_a – średnie arytmetyczne odchylenie prof. Falistości + +W_q – średnie kwadratowe odchylenie profilu falistośći + + +## Oznaczenie chropowatośći w wysunku technicznym + + + + +a – wartość chropowatości Ra w mikrometrach poprzedzona symbolem Ra + +b – metoda wykonania/rodzaj obróbki. Opisuje wymagania procesu +technologicznego + +c – długość odcinka elementarnego. Można pominąć + +d – kierunek obróbki powierzchni + +e – naddatek na obróbkę + +f – wartość parametru chropowatości inna niż Ra w mikrometrach, poprzedzona +odpowiednim sybolem np. Rz + + +### Symbole oznaczeń struktury powierzchni + + + + + +### Przykłady oznaczeń chropowatości w rysunku technicznym i umieszczenie na + +rysunkach + + + +>Tablica 8.1< + + +### Symbole kierunku obróbki powierzchni + + diff --git a/frontend/src/content/rysunek-techniczny.md b/frontend/src/content/rysunek-techniczny.md new file mode 100644 index 0000000..0c23673 --- /dev/null +++ b/frontend/src/content/rysunek-techniczny.md @@ -0,0 +1,109 @@ +--- +title: "Rysunek Techniczny" +date: 2024-05-18 15:08:41 +--- +# [Rysunkek Techniczny – wszystko co musisz +wiedzieć](https://izaac.pl/inzynieria-mechaniczna/rysunkek-techniczny- +wszystko-co-musisz-wiedziec) + +W tym artykule dowiesz się więcej informacji o rysunku technicznym. +Przedstawiamy standardowe wymiary arkuszy, + +**przykłady oznaczeń** – Typowe oznaczenia stosowane do jednoznacznego +przedstawienia elementów rysunku. + +**standardy/normy** – Normy używane w rysunku technicznym. + +**rodzaje linii** – Linie stosowane do wyróżnienia kształtów i relacji między +elementami. + +**przekroje** – jak przedstawiać przekroje oraz wnętrze obiektu za pomocą +przecięcia wyobrażonego płaszczyzną. + +**widoki** – Obrazy obiektu z różnych perspektyw + +**symbole** – Graficzne oznaczenia ułatwiające interpretację rysunku. + +**metody rzutowania** – Sposoby odwzorowywania obiektów przestrzennych na +płaszczyźnie dla różnych standardów - Amerykańskiego i Europejskiego + +**dobre praktyki przy wymiarowaniu** – Zasady zapewniające precyzyjne i +czytelne wymiarowanie. + + + +# [Oznaczanie chropowatości powierzchni i obróbki +powierzchniowej](https://izaac.pl/inzynieria-mechaniczna/oznaczanie- +chropowatosci-powierzchni-i-obrobki-powierzchniowej) + +**Oznaczenia obróbki powierzchni** – Symbole wskazujące sposób i jakość +wykończenia powierzchni. + +**Przykłady oznaczeń** – Przykłady zastosowania symboli używanych do opisu +detali. + +**Chropowatość** – Definicje miary nierówności powierzchni. + +**Umieszczanie oznaczeń chropowatości na rysunku** – Standardowe miejsca dla +symboli wskazujących stopień wykończenia powierzchni. + +**Tabela wartości chropowatości dla Ra oraz Rz** – Zestawienie normatywnych +wartości chropowatości w zależności od wymagań technologicznych. Dla Ra i +odpowiadającego Rz + + + +# **Rysunek Techniczny** + +Stanowi podstawowy element inżynierii i projektowania, pełniąc kluczową rolę w +komunikacji i realizacji idei technicznych. Jest to metoda graficznego +przedstawienia obiektów i struktur w sposób jednoznaczny i dokładny, co +pozwala na ich efektywne wytwarzanie, analizę i kontrolę. Współczesny rysunek +techniczny, oparty na międzynarodowych standardach i normach, jak ISO czy +ANSI, wykorzystuje zarówno tradycyjne techniki ręczne, jak i zaawansowane +narzędzia cyfrowe, takie jak oprogramowanie CAD (Computer-Aided Design), które +rewolucjonizują sposób projektowania i dokumentacji. + +### Historia i Normalizacja + +Rysunek techniczny, będący nieodłącznym elementem inżynierii i architektury, +ewoluował w miarę rozwoju cywilizacji ludzkiej. Jego początki sięgają +starożytności, kiedy to były stosowane proste szkice w celach budowlanych w +cywilizacjach takich jak Egipt czy Mezopotamia. W średniowieczu, technika ta +była rozwijana głównie przez mistrzów kamieniarskich przy budowie katedr. +Renesans przyniósł postęp w formie bardziej złożonych rysunków, dzięki pracą +takich osób jak Leonardo da Vinci, który szkicował skomplikowane maszyny i +urządzenia. + +Wraz z rewolucją przemysłową w XVIII i XIX wieku, rysunek techniczny zyskał na +znaczeniu ze względu na potrzebę standaryzacji. W XIX wieku powstały pierwsze +normy rysunkowe, co zapoczątkowało dalszą formalizację tej dziedziny oraz +rozwój masowej produkcji. Wprowadzenie norm rysunkowych umożliwiło +efektywniejszą współpracę i wymianę wiedzy między inżynierami. XX wiek +przyniósł kolejną rewolucję dzięki wprowadzeniu CAD (Computer-Aided Design), +co zrewolucjonizowało projektowanie i przyspieszyło procesy produkcyjne. + +Obecnie, w XXI wieku, rysunek techniczny jest zdominowany przez cyfrowe +narzędzia projektowe, takie jak oprogramowanie CAD, co umożliwia globalną +współpracę i szybką realizację projektów. Rysunek techniczny nadal odgrywa +kluczową rolę w przekształcaniu pomysłów inżynierskich w gotowe produkty i +struktury. + +Rysunek techniczny znajduje zastosowanie w wielu dziedzinach inżynierii i +projektowania: + + * **Inżynieria Mechaniczna** : Rysunki techniczne są niezbędne w projektowaniu maszyn, pojazdów, narzędzi i innych urządzeń mechanicznych. Pozwalają na szczegółowe przedstawienie wszystkich części składowych, ich wymiarów oraz sposobu montażu. + * **Architektura i Budownictwo** : Do projektowania budynków i innych konstrukcji, takich jak mosty czy tunele. Rysunki architektoniczne przedstawiają plany pięter, elewacje oraz przekroje budynków, wskazując na materiały, metody konstrukcyjne i detale architektoniczne. + * **Inżynieria Elektryczna** : Rysunki techniczne są wykorzystywane do projektowania układów elektrycznych, schematów obwodów i systemów kontrolnych. Dzięki nim można precyzyjnie planować rozmieszczenie komponentów elektrycznych i ich połączenia. + * **Inżynieria Lądowa** : Używa rysunków technicznych do projektowania infrastruktury takiej jak drogi, mosty, zapory, systemy wodno-kanalizacyjne i inne konstrukcje wspierające funkcjonowanie społeczeństwa. + * **Inżynieria Lotnicza i Kosmiczna** : W tej dziedzinie rysunki są kluczowe w projektowaniu i budowie statków powietrznych i kosmicznych, w tym samolotów, rakiet i satelitów, gdzie wymagana jest niezwykła dokładność i zrozumienie złożonych systemów. + * **Produkcja i Wytwarzanie** : Rysunki techniczne są wykorzystywane do projektowania form, narzędzi i matryc wykorzystywanych w procesach produkcyjnych, a także do planowania linii produkcyjnych i linii montażowych. + * **Inżynieria Biomedyczna** : W tej dziedzinie rysunki służą do projektowania urządzeń medycznych, implantów, narzędzi chirurgicznych oraz innych zaawansowanych technologii stosowanych w medycynie. + * **Inżynieria Środowiska** : Rysunki techniczne pomagają w projektowaniu systemów związanych z ochroną środowiska, takich jak systemy oczyszczania wody, zarządzanie odpadami czy instalacje do odzyskiwania energii. + +Niniejsze artykuły mają na celu przedstawienie podstaw rysunku technicznego, +eksplorując jego fundamentalne zasady, różne typy rysunków oraz techniki +wymiarowania. Dodatkowo, zostaną omówione zasady poprawnego interpretowania i +tworzenia rysunków technicznych, co jest niezbędne w każdej dziedzinie +inżynierii współczesnego świata. + diff --git a/frontend/src/content/spawanie-mig_-tig_-mag---wszystko-o-spoinach_.md b/frontend/src/content/spawanie-mig_-tig_-mag---wszystko-o-spoinach_.md new file mode 100644 index 0000000..bc3bfbb --- /dev/null +++ b/frontend/src/content/spawanie-mig_-tig_-mag---wszystko-o-spoinach_.md @@ -0,0 +1,541 @@ +--- +title: "Spawanie MIG, TIG, MAG - Wszystko o spoinach." +date: 2024-02-08 22:46:36 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-spawane", + "category_name": "Połączenia spawane" + } +] +--- + +### + +### Spawanie - podstawowe informacje o + + + +### Rodzaje spawania + +* ##### Spawanie MIG/MAG +* ##### Spawanie TIG +* ##### Spawanie elektrodą otulinową MMA + + +### Gazy do spawania + + + +### Oznaczenia spoin w rysunku technicznym + + + +### +* ##### Zapis umowny spoin w rysunku technicznym + +* ##### Przykładowe oznaczenia na rysunkach + + +### Zagrożenia związane ze spawaniem + + + +## **Spawanie - podstawowe informacje o** + + +**Proces spawania** to technika łączenia dwóch lub więcej materiałów, głównie +metali (istnieją także technologie spawania polimerów), w sposób trwały i +wytrzymały mechanicznie. Spawanie polega na wymieszaniu materiałów ze sobą. +Zazwyczaj w procesie spawania uzyskuje się to za pomocą urządzeń generujących +intensywne źródło ciepła, wystarczające do stopienia materiałów, które chcemy +połączyć. Gdy wytapiamy jeden materiał a drugi pozostaje stały to taki proces +nazywamy lutowaniem. W Procesie spawania, zwanym także spajaniem powstaje +spoina. Spoina określana jest często potocznie "spawem", jednak nie jest to +określenie stosowane w oficjalnym języku technicznym. + + + +**Spoina** \- to rodzaj złącza powstającego w procesie fizycznym łączenia +materiałów poprzez ich miejscowe ogrzanie -stopienie i zestalenie. Stosowane +np. do łączenia metali (głównie stali), niemetali (szkło, masy plastyczne) i +tworzyw sztucznych. Przy spawaniu zwykle dodaje się spoiwo spawalnicze, tj. +stapiający się wraz z materiałem rodzimym materiał dodatkowy, wypełniający +spoinę. + +Jest to niezwykle istotna technika w różnych dziedzinach przemysłu + +**Przemysł metalurgiczny** : Tutaj spawanie jest nieodzowne do produkcji +elementów stalowych, rur i innych konstrukcji, które muszą wytrzymać ogromne +obciążenia. + +**Przemysł motoryzacyjny** : W produkcji pojazdów spawanie jest kluczowe do +łączenia części nadwozia, ramy i innych elementów, zapewniając bezpieczeństwo +i trwałość pojazdów. + +**Budownictwo** : W budownictwie spawanie służy do łączenia elementów +konstrukcyjnych, takich jak dźwigary stalowe, co pozwala na tworzenie trwałych +konstrukcji. + +**Przemysł lotniczy i kosmiczny** : W tych branżach spawanie jest +wykorzystywane w produkcji samolotów, rakiet i innych elementów statków +powietrznych, gdzie jakość połączeń jest kluczowa ze względu na ryzyko awarii. + +**Przemysł stoczniowy** : W stoczniach spawanie jest niezbędne do budowy +statków i platform wiertniczych, a spawane połączenia muszą być wyjątkowo +wytrzymałe ze względu na warunki morskie. + +**Elektronika** : W produkcji urządzeń elektronicznych spawanie jest używane +do łączenia mikroelementów na płytach drukowanych, zapewniając poprawne +działanie elektroniki. + +**Przemysł naftowy i gazowy** : Tutaj spawanie jest wykorzystywane do łączenia +rur i konstrukcji naftowych, które muszą wytrzymać wysokie ciśnienia i +temperatury. + +**Rzemiosło artystyczne** : Nawet w dziedzinach artystycznych, spawanie jest +używane do tworzenia unikalnych rzeźb i konstrukcji z metalu. + +Jeśli potrzebujesz informacji na temat obliczeń spoin zobacz : [**Obliczenia +połączeń spawanych**](https://izaac.pl/inzynieria-mechaniczna/obliczeniapolaczen-spawanych) + + +## **Rodzaje spawania MIG/MAG, Spawanie TIG, MMA** + + + + + + + +### **Spawanie MIG/MAG** + + + + +![](https://izaac.pl/wp-content/uploads/2024/02/spawanie-MIG.jpg) + +Schemat działania spawania mig + + + +Spawanie **MIG/MAG (Metal Inert Gas / Metal Active Gas)** , znane także jako +spawanie **GMAW (Gas Metal Arc Welding) nazywane potocznie spawaniem +Migomatem** , to proces spawania łukowego, który wykorzystuje ciągły, +zużywalny drut elektrodowy jako materiał dodatkowy oraz gaz ochronny (obojętny +w przypadku spawania MIG lub aktywny w przypadku spawania MAG) do ochrony +spoiny przed wpływem atmosfery. Jest to jedna z najbardziej uniwersalnych i +powszechnie stosowanych metod spawania, oferująca wysoką efektywność i +produktywność. Powszechnie używa się sformułowania spawanie migomatem. + + +### **Technologia i Proces Spawania MIG/MAG** + + +W procesie spawania metodą MIG/MAG, elektroda w postaci drutu jest podawana +automatycznie przez spawarkę do miejsca spawania. Elektroda topi się, tworząc +kąpiel spawalniczą, która po zastygnięciu tworzy spoinę. Gaz ochronny jest +dostarczany z butli przez dyszę spawalniczą, chroniąc spoinę przed utlenianiem +i innymi reakcjami z powietrzem. + + +### **Co jest potrzebne do rozpoczęcia spawania MIG/MAG** + +* **Urządzenie spawalnicze MIG/MAG** \- z mechanizmem podawania drutu i regulacją prędkości podawania oraz prądu spawania. Potocznie nazywane migomatem. +* **Drut elektrodowy** \- jego wybór zależy od rodzaju spawanego materiału (stal, aluminium, stal nierdzewna). +* **Gaz ochronny** \- argon lub mieszanki argonu dla MIG; CO2 lub mieszanki z CO2 dla MAG. +* **Butla z gazem oraz przewody i reduktor ciśnienia**. +* **Dysza spawalnicza, rolki napędowe do drutu, uchwyt spawalniczy**. +* **Ochrona osobista** \- maska spawalnicza, rękawice do spawania, odzież ochronna. + + +### **Materiały spawalne** + + +Metody spawania MIG i MAG pozwalają na spawanie szerokiej gamy materiałów +takich jak: +* Stal węglowa i niskostopowa (MAG) +* Stal nierdzewna (MIG/MAG) +* Aluminium i jego stopy (MIG) +* Miedź i jej stopy (MIG) + + +### **Zalety i Wady spawania MIG i MAG** + + +Spawanie metodami MIG oraz MAG ma wiele zalet. Idealnie nadaje się do użytku +osobistego. Nie pozostaje jednak bez wad. Poniżej przedstawiono zalety i wady +obu metod. + +**Zalety spawania MIG/MAG** : +* Szybkość spawania i wysoka efektywność. +* Możliwość spawania w różnych pozycjach. +* Łatwość użycia, nawet dla mniej doświadczonych spawaczy. +* Dobrze nadaje się do spawania długich szwów i w produkcji seryjnej. + +**Wady spawania MIG/MAG:** +* Ograniczenia w spawaniu bardzo cienkich materiałów (ryzyko przepalenia). +* W przypadku MIG, ograniczenie do spawania w pomieszczeniach zamkniętych ze względu na wpływ wiatru na gaz ochronny. +* Koszty zakupu i eksploatacji urządzenia mogą być wyższe niż w przypadku innych metod. + + +### **Kiedy stosować spawanie MIG/MAG** + + +Do spawania produktów o dużej objętości i grubości. W produkcji przemysłowej, +automotive, budowie statków, konstrukcjach stalowych. Dla szerokiego zakresu +materiałów i grubości, szczególnie gdy wymagana jest dobra jakość spoiny i +szybkość wykonania. MIG jest preferowany do metali nieżelaznych i stali +nierdzewnej, MAG jest bardziej odpowiedni do stali węglowej i niskostopowych. + + + + +### **Spawanie TIG** + + + + + + + + +[caption width="1620" id="attachment_6979" +align="aligncenter"]![](https://izaac.pl/wp-content/uploads/2024/02/spawanie- +TIG.jpg) Schemat spawania metodą TIG[/caption] + + + +**Spawanie TIG (Tungsten Inert Gas)** , znane również jako spawanie GTAW (Gas +Tungsten Arc Welding), to proces spawania prądem elektrycznym (łukiem), który +wykorzystuje elektrodę wolframową do wytworzenia łuku. Materiał elektrody nie +jest zużywany do wytworzenia spoiny podczas spawania, co odróżnia tę metodę od +innych technik spawalniczych. Elektroda co prawda jest zużywalna, jednak tylko +z uwagi na wysokie temperatury i procesy erozyjne. Ważne w przypadku spawania +TIG jest odpowiednie naostrzenie elektrody oraz dbanie o to, aby nie zanuzyć +jej w jeziorku spawalniczym, gdyż znacząco skraca to jej żywotność. Dodatkowo +psuje jakość spoiny. W procesie TIG jako ochronę przed wpływem atmosfery +stosuje się gaz szlachetny (pierwiastki chemiczne ostatniej, 18. grupy układu +okresowego), najczęściej argon, czasem w połączeniu z helem. Technika ta +pozwala na uzyskanie bardzo wysokiej jakości spoin, jest stosowana do spawania +prawie wszystkich metali, w tym stali nierdzewnej, aluminium, tytanu, a także +niektórych stopów. + + +### **Technologia i Proces Spawania TIG** + + +Proces TIG charakteryzuje się tym, że elektroda wolframowa, umieszczona w +uchwycie spawalniczym, jest zasilana prądem stałym (DC) lub przemiennym (AC), +w zależności od spawanego materiału. Gdy do elektrody przybliży się materiał +spawany, tworzy się łuk elektryczny. Gaz ochronny, najczęściej argon, jest +podawany wokół elektrody przez dyszę ceramiczną, chroniąc spoinę przed +reakcjami z powietrzem – głównie przed powstawaniem niekorzystnych tlenków. + + +### **Aby zacząć spawać metodą TIG, potrzebne są:** + +* **Urządzenie spawalnicze TIG** \- z opcją regulacji prądu spawania, zależnie od rodzaju i grubości spawanego materiału. +* **Elektrody wolframowe** \- do wyboru elektrody odpowiednie do rodzaju materiału i prądu spawania (AC/DC). +* **Gaz ochronny** \- argon lub mieszanka argonu z helem. +* **Dysza ceramiczna** \- do ochrony łuku i kierowania gazu ochronnego. +* **Uchwyt spawalniczy, kable, przewody gazowe.** +* **Ochrona osobista** \- maska spawalnicza z filtrem przyciemniającym, rękawice do spawania, odzież ochronna. + + +### **Spawanie metodą TIG pozwala na spawanie wielu gatunków + +materiałów.** +* Stal nierdzewna +* Aluminium i jego stopy +* Stal węglowa +* Tytan i jego stopy +* Metale kolorowe jak miedź, brąz, niklowane + + +### **Zalety i Wady spawania TIG** + + +**Zalety spawania TIG** : +* Wysoka jakość i estetyka spoiny. +* Możliwość spawania szerokiego zakresu metali i ich stopów. +* Brak konieczności stosowania materiału dodatkowego, choć można go używać. +* Precyzja i kontrola nad procesem spawania. + +**Wady spawania TIG** : +* Wymaga wysokich umiejętności i doświadczenia spawacza. +* Wolniejszy niż inne metody spawania, np. MIG/MAG. +* Wyższe koszty eksploatacji (gaz szlachetny, urządzenie). + + +### **Kiedy stosować spawanie TIG** + + +Spawanie TIG stosowane jest głównie w przypadku konieczności uzyskania +wysokiej jakości, szczelności i estetycznych spoin, np. przy spawaniu rur, +zbiorników, instalacji przemysłowych. Idealnie nadaje się także do spawania +cienkich blach (należy uważać na prąd - można przepalić) i delikatnych +elementów, gdzie wymagana jest precyzja. Przy spawaniu metali, które trudno +jest spawać innymi metodami, np. aluminium (AC) oraz tytan. W sytuacjach, +gdzie ważna jest czystość i brak zanieczyszczeń w spoinie, jak w przemyśle +spożywczym, farmaceutycznym czy lotniczym. + + +### **Spawanie elektrodą otulinową MMA** + + + + + + + +**[caption width="1895" id="attachment_6982" +align="aligncenter"]![](https://izaac.pl/wp-content/uploads/2024/02/spawanie- +MMA.jpg) Spawanie elektrodą otulinową MMA[/caption]** + + + +**Spawanie elektrodą otulinową** , znane także jako spawanie łukowe (łukiem +elektrycznym) metodą MMA (Manual Metal Arc) lub spawanie SMAW (Shielded Metal +Arc Welding), jest jedną z najstarszych i najbardziej uniwersalnych metod +spawania. Proces ten wykorzystuje elektrodę pokrytą otuliną, która stabilizuje +łuk spawalniczy i dostarcza gaz ochronny oraz składniki tworzące żużel, +chroniące spoinę przed utlenianiem i zanieczyszczeniami z atmosfery. + +**Technologia i Proces Spawania Elektrodą Otulinową** + +W spawaniu MMA, elektroda pokryta otuliną jest zużywan do utworzenia spoiny, +która łączy spawane elementy. Otulina elektrody pod wpływem wysokiej +temperatury łuku rozkłada się, tworząc gaz ochronny oraz żużel, który pokrywa +spoinę, chroniąc ją przed wpływem atmosfery. Proces ten wymaga częstej zmiany +elektrod i oczyszczania spoiny z pozostałości żużla. + + +### **Skład otuliny elektrody** + + +Otulina składa się z mieszanki różnych substancji, które mogą obejmować: +* **Minerały i metale** \- takie jak wapień (CaCO3), magnezyt (MgCO3), rutyl (TiO2), kwarc (SiO2), czy ferrosilicon (FeSi), które stabilizują łuk i wpływają na właściwości mechaniczne spoiny. +* **Celuloza** \- spala się podczas spawania, tworząc gazy ochronne, które zapobiegają dostępowi tlenu i azotu z powietrza do spoiny. +* **Wodorotlenki** \- na przykład wodorotlenek potasu (KOH) lub wodorotlenek sodu (NaOH), które działają jako stabilizatory łuku oraz zwiększają płynność kąpieli spawalniczej. +* **Ferromangan** i inne dodatki stopowe - służą do ulepszania składu chemicznego spoiny, poprawiając jej właściwości mechaniczne. +* **Żywice i gumy** \- zapewniają lepkość otulinie, co pomaga w jej przyleganiu do rdzenia elektrody oraz wpływa na tworzenie się i skład żużla. + + +### Rozróżniamy Elektrody + +* Celulozowe +* Kwaśne +* Zasadowe +* rutylowe + +Każdy składnik otuliny ma swoje zadanie, od stabilizacji łuku, przez ochronę +spoiny, po wpływ na właściwości mechaniczne i metalurgię spoiny. Wybór +elektrody z odpowiednią otuliną zależy od wymagań konkretnego zastosowania, +rodzaju spawanego materiału i pożądanych charakterystyk spoiny. + + +### **Co jest potrzebne do rozpoczęcia spawania elektrodą otulinową** + + +Aby zacząć spawać metodą MMA, potrzebne są: +* **Urządzenie spawalnicze** \- transformator, prostownik lub inwerter z możliwością regulacji prądu spawania. +* **Elektrody spawalnicze** \- dobierane w zależności od rodzaju i grubości spawanego materiału oraz pozycji spawania. +* **Ochrona osobista** \- maska spawalnicza z filtrem przyciemniającym, rękawice, odzież ochronna. +* **Akcesoria dodatkowe** \- młotek do usuwania żużla, szczotka druciana do czyszczenia spoiny. + + +### **Materiały spawalne** + +* Stal węglowa i niskostopowa +* Stal nierdzewna +* Stopy żelaza +* Niektóre metale kolorowe (z odpowiednimi elektrodami) + + +### **Zalety i Wady** + + +**Zalety** : +* Prostota i niski koszt wyposażenia. +* Możliwość spawania w różnych lokalizacjach, również na zewnątrz, bez dostępu do sieci elektrycznej (przy użyciu agregatów). +* Elastyczność w spawaniu różnych rodzajów i grubości materiałów. +* Nie wymaga użycia gazu ochronnego. + +**Wady** : +* Niższa jakość i wygląd spoin w porównaniu z metodami MIG/MAG i TIG. +* Wymaga umiejętności i doświadczenia spawacza. +* Konieczność częstego czyszczenia spoiny z żużla. +* Niższa wydajność spawania w porównaniu z procesami automatycznymi. + + +### **Kiedy stosować spawanie elektrodą otulinową** + + +W warunkach zewnętrznych, na placach budowy, przy montażu i naprawie w +terenie, gdzie dostęp do gazu ochronnego i zasilania jest ograniczony. Do prac +remontowych, konserwacyjnych i w małych warsztatach. Kiedy wymagana jest +elastyczność w pracy z różnymi materiałami i grubościami. W sytuacjach, gdzie +nie jest wymagana wysoka estetyka spoiny, ale jej solidność i trwałość. + + +### **Gazy do spawania** + + + + +**Gazy do spawania** odgrywają kluczową rolę w wielu procesach spawalniczych, +wpływając na jakość spoiny, prędkość spawania oraz ogólną efektywność pracy. +Wybór odpowiedniego gazu zależy od materiału spawanego, procesu spawania oraz +pożądanego efektu końcowego. Oto przegląd głównych gazów stosowanych w +spawaniu: + +**Argon (Ar)** \- jest to gaz obojętny, używany głównie w spawaniu metodą TIG +oraz MIG dla aluminium i innych metali nieżelaznych. Argon zapewnia stabilny +łuk spawalniczy i minimalizuje utlenianie spoiny. Jego czystość powinna +wynosić co najmniej 99,995% + +**Hel (He)** \- także gaz obojętny, często używany w połączeniu z argonem do +spawania metali o wysokiej przewodności cieplnej, jak miedź i aluminium. Hel +zwiększa penetrację ciepła i może poprawiać właściwości spoiny. Jego czystość +powinna wynosić co najmniej 99,995% + +**Dwutlenek węgla (CO2)** \- jest to aktywny gaz stosowany głównie w spawaniu +MAG dla stali. CO2 jest tańszy niż gazy obojętne, ale może powodować większą +ilość odbić i porowatość spoiny. Pod wpływem wysokiej temperatury CO2 rozbija +się na tlen(O2) i węgiel (C). Z uwagi na obecność węgla używa się go zazwyczaj +do stali konstrukcyjnych niskostopowych. Czystość CO2 w zastosowaniach +spawalniczych wynosi zazwyczaj od 99,7% do 99,9%. + +**Mieszanki gazów** \- często stosuje się mieszanki argonu z CO2 (i czasami z +niewielką domieszką tlenu) do spawania stali niskowęglowych i nierdzewnych +metodą MAG. Mieszanki te oferują dobre właściwości spawalnicze, łącząc zalety +obu gazów, takie jak dobra jakość spoiny i wydajność kosztowa. + +**Tlen (O2)** \- choć rzadziej stosowany samodzielnie, jest dodawany w +niewielkich ilościach do niektórych mieszanek gazowych, aby zwiększyć +stabilność łuku i poprawić penetrację w spawaniu MAG. + +Wybór odpowiedniego gazu do spawania zależy od szeregu czynników, w tym od +rodzaju materiału, grubości spawanego elementu, pożądanych właściwości +mechanicznych spoiny oraz dostępnych urządzeń spawalniczych. Zaleca się +konsultację z dostawcą gazów lub specjalistą ds. spawania, aby dobrać +najodpowiedniejszy gaz lub mieszaninę gazów do konkretnego zastosowania. + + +## **Oznaczenia spoin na rysunku technicznym** + + + + +Oznaczenia spoin na rysunku technicznym mogą być przedstawiane w dwa +sposoby, uproszczone lub umownie. Więcej informacji na temat rysunku +technicznego znajdziesz na :[**Rysunkek Techniczny – wszystko co musisz +wiedzieć**](https://izaac.pl/inzynieria-mechaniczna/rysunkek-technicznywszystko-co-musisz-wiedziec) + +Oznaczenie spoiny czołowej | Uproszczony | Umowny +---|---|--- +Widok spoiny od strony lica | ![](https://izaac.pl/wp-content/uploads/2022/02/34-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/35-1.png) +Widok przekroju spoiny | ![](https://izaac.pl/wp-content/uploads/2022/02/33-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/36-1.png) +Widok od strony przeciwnej do lica "od spodu" | ![](https://izaac.pl/wp-content/uploads/2022/02/32-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/35-1.png) + + + + +### **Zapis umowny oznaczenia spoin na rysunku technicznym** + + +Oznaczenie spoiny czołowej I | ![](https://izaac.pl/wp-content/uploads/2022/03/123.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/142.png) +---|---|--- +Oznaczenie spoiny czołowej V | ![](https://izaac.pl/wp-content/uploads/2022/03/124.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/143.png) +Oznaczenie spoiny czołowej 1/2V | ![](https://izaac.pl/wp-content/uploads/2022/03/125.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/144.png) +Oznaczenie spoiny czołowej V o stromych brzegach | ![](https://izaac.pl/wp-content/uploads/2022/03/133.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/151.png) +Oznaczenie spoiny czołowej 1/2V o stromych brzegach | ![](https://izaac.pl/wp-content/uploads/2022/03/134.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/152.png) +Oznaczenie spoiny czołowej Y | ![](https://izaac.pl/wp-content/uploads/2022/03/140.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/145.png) +Oznaczenie spoiny czołowej 1/2Y | ![](https://izaac.pl/wp-content/uploads/2022/03/141.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/146.png) +Oznaczenie spoiny czołowej U | ![](https://izaac.pl/wp-content/uploads/2022/03/126.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/147.png) +Oznaczenie spoiny czołowej 1/2U | ![](https://izaac.pl/wp-content/uploads/2022/03/127.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/148.png) +Oznaczenie spoiny pachwinowej | ![](https://izaac.pl/wp-content/uploads/2022/03/128.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/149.png) +Oznaczenie spoiny brzeżnej | ![](https://izaac.pl/wp-content/uploads/2022/03/129.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/154.png) +Oznaczenie spoiny grzbietowej | ![](https://izaac.pl/wp-content/uploads/2022/03/135.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/153.png) +Oznaczenie spoiny bezotworowej punktowej | ![](https://izaac.pl/wp-content/uploads/2022/03/131.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/150.png) +Napawanie na powierzchni | ![](https://izaac.pl/wp-content/uploads/2022/03/136.png) | ![](https://izaac.pl/wp-content/uploads/2022/03/155.png) + + + +### **Przykładowe oznaczenia spoin na rysunku technicznym** + + +![](https://izaac.pl/wp-content/uploads/2022/02/37-1-300x107.png) | oznaczenie spoiny czołowej o przekroju 1/2V - dwustronna o długości l i wymiarze a +---|--- +![](https://izaac.pl/wp-content/uploads/2022/02/38-1-300x119.png) | oznaczenie spoiny czołowej dwustronnej o przekroju V, długości l i wymiarze a1 od strony lica oraz z pełnym przetopem od strony przeciwnej do strony lica (spoina podkładkowa) o wysokości wymiaru a2 +![](https://izaac.pl/wp-content/uploads/2022/02/39-1-300x99.png) | oznaczenie spoiny czołowej dwustronnej o przekroju V, długości l i wymiarze a1 od strony lica oraz ze spoiną czołową I od strony przeciwnej +![](https://izaac.pl/wp-content/uploads/2022/02/40-1-300x118.png) | oznaczenie spoiny pachwinowej dwustronnej z płaskim licem o długości l i wymiarze a oraz przeciwległa spoina pachwinowa +![](https://izaac.pl/wp-content/uploads/2022/02/41-1-300x133.png) | oznaczenie spoiny pachwinowej o wymiarze a2 z płaskim licem o długości l oraz spoiny czołowa 1/2 Y o wymiarze a1 +![](https://izaac.pl/wp-content/uploads/2022/02/42-300x136.png) | oznaczenie dwustronnej spoiny czołowej i pachwinowej po przeciwnych stronach o wymiarach a1 i a2 o długości l +![](https://izaac.pl/wp-content/uploads/2022/02/43-1-300x125.png) | oznaczenie spoiny czołowej Y o długości l i wymiarze a +![](https://izaac.pl/wp-content/uploads/2022/02/44-1-300x135.png) | oznaczenie spoiny czołowej 1/2 Y o wymiarach l oraz a + + + +### **Oznaczenie spoiny przerywanej na rysunku technicznym** + + + +### **Dodatkowe oznaczenia spoin** + + +**Znaczenie** | **Oznaczenie** +---|--- +Oznacza kształt lica spoiny keska prosta - lico płaskie kreska wklęsła - lico wklęsłe kreska wypukła - lico wypukłe | ![](https://izaac.pl/wp-content/uploads/2022/02/46.png) +Oznacza usunięcie karbów i poddopień obróbką skrawaniem, aby zapewnić gładkie przejście ze spoiny do materiału rodzimego | ![](https://izaac.pl/wp-content/uploads/2022/02/47.png) +Oznacza pełny przetop w gardzieli rowka poprzez wykonanie spoiny podkładkowej - spoiny po przeciwnej stronie zapewniającej szczelność | ![](https://izaac.pl/wp-content/uploads/2022/02/48.png) +Oznacza wykonywanie spoiny w trakcie montażu (przy montażu) | ![](https://izaac.pl/wp-content/uploads/2022/02/49.png) +Oznacza Ciągłość na całym obwodzie złącza | ![](https://izaac.pl/wp-content/uploads/2022/02/50.png) +Oznacza użycie podkładki zpawalniczej usuwanej po spawaniu- umieszczane po przeciwnej stronie znaku umownego- po stronie założenia podkłądki | ![](https://izaac.pl/wp-content/uploads/2022/02/51.png) +Oznacza użycie podkładki zpawalniczej nie usuwanej po spawaniu- umieszczane po przeciwnej stronie znaku umownego- po stronie założenia podkłądki | ![](https://izaac.pl/wp-content/uploads/2022/02/52.png) + + + +### **Zagrożenia związane ze spawaniem** + + +Spawanie, będące zazwyczaj metodą stapiania materiału i wprowadzania do niego +dużych energii, czy to w postaci palnika czy w postaci luku elektrycznego +wiąże się z wieloma zagrożeniami dla zdrowia i bezpieczeństwa osób spawająych, +jak również dla otoczenia. Rozpoznanie tych zagrożeń oraz stosowanie +odpowiednich środków bezpieczeństwa i procedur może pomóc przy zapobieganiu +uszkodzeniom ciała i zapewnieniu większego bezpieczeństwa. Głównymi czynnikami +środowiskowymi w trakcie spawania są: +* **Promieniowanie UV i IR** : Spawanie łukiem elektronowym generuje intensywne promieniowanie ultrafioletowe (UV) i podczerwone (IR), które mogą powodować oparzenia skóry i uszkodzenia oczu (ślepota spawalnicza). +* **Dymy i gazy spawalnicze** : Produkty spawania mogą zawierać szkodliwe dla zdrowia substancje, takie jak ozon, tlenki azotu, dwutlenek węgla, a w przypadku niektórych metali (np. ołowiu, kadmu, chromu) również ciężkie metale które mogą być rakotwórcze i uszkadzać komórki nerwowe. +* **Ryzyko pożaru i eksplozji** : Iskry i gorące materiały mogą zapalać łatwopalne materiały w otoczeniu. +* **Wysoka temperatura i gorące materiały** : Kontakt z gorącymi powierzchniami i materiałami może powodować poważne oparzenia. Metale ogrzane do wysokich temperatur nawet punktowo mogą długo pozostawać nagrzane. W zależności od czasu spawania i rozmiaru elementu. +* **Wstrząsy elektryczne** : Spawanie wymaga użycia prądu elektrycznego, co niesie ryzyko porażenia, należy zatem za każdym razem sprawdzać uziemienie. + + +### Środki bezpieczeństwa i procedury + +* **Ochrona oczu i twarzy** : Używanie masek spawalniczych z odpowiednim filtrem przyciemniającym oraz okularów ochronnych. +* **Ochrona skóry** : Noszenie odzieży ochronnej, takiej jak rękawice, fartuchy, odzież z długimi rękawami, aby zminimalizować ekspozycję na promieniowanie UV/IR, iskry i gorące materiały. +* **Wentylacja i ekstrakcja dymów** : Zapewnienie odpowiedniej wentylacji miejsca pracy oraz odciąganie dymów spawalniczych. +* **Środki przeciwpożarowe** : Utrzymanie gaśnic i innych środków gaśniczych w łatwo dostępnych miejscach oraz usuwanie łatwopalnych materiałów z obszaru spawania. +* **Szkolenie i instruktaż** : Regularne szkolenia z bezpieczeństwa pracy, w tym z pierwszej pomocy i postępowania w przypadku wypadków. +* **Ochrona przed porażeniem elektrycznym** : Stosowanie urządzeń spawalniczych z izolacją, utrzymywanie suchego otoczenia i używanie suchych rękawic. + + +### Przykłady incydentów i jak ich unikać + +* **Oparzenia spowodowane promieniowaniem UV/IR** : Zapobieganie poprzez stosowanie pełnej ochrony skóry i oczu. +* **Zatrucie dymami spawalniczymi** : Używanie maski z filtrem przeciwpyłowym i zapewnienie odpowiedniej wentylacji. +* **Pożar spowodowany iskrami spawalniczymi** : Usuwanie materiałów łatwopalnych z obszaru spawania i posiadanie środków gaśniczych. +* **Porażenie prądem** : Przestrzeganie procedur bezpieczeństwa elektrycznego, stosowanie urządzeń zabezpieczających i utrzymywanie suchego środowiska pracy. +* **Oparzenia od gorących materiałów** : Noszenie odpowiedniej odzieży ochronnej i użycie narzędzi do manipulacji gorącymi przedmiotami. + diff --git a/frontend/src/content/sprzęgła---charakterystyka-podział-i-opis.md b/frontend/src/content/sprzęgła---charakterystyka-podział-i-opis.md new file mode 100644 index 0000000..e3ab560 --- /dev/null +++ b/frontend/src/content/sprzęgła---charakterystyka-podział-i-opis.md @@ -0,0 +1,659 @@ +--- +title: "Sprzęgła - charakterystyka podział i opis" +date: 2025-01-25 16:06:08 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "podstawy-konstrukcji-maszyn", + "category_name": "Podstawy konstrukcji maszyn" + }, + { + "category_id": "sprzęgła", + "category_name": "Sprzęgła" + }, + { + "category_id": "układy-napędowe", + "category_name": "Układy napędowe" + } +] +--- + +### Czym jest sprzęgło, jak działa i z czego się składa + +* #### Funkcje sprzęgła +* #### Z czego zbudowane jest sprzęgło +* #### Ogólna zasada doboru sprzęgieł + + +### Podział Sprzęgieł + +* #### Podział sprzęgieł według możliwości rozłączenia +* #### Podział sprzęgieł według sztywności połączenia +* #### Sprzęgła z dodatkowymi funkcjami + + +### Sprzęgła sztywne tulejowe + +* #### Sprzęgło sztywne tulejowe z kołkami +* #### Sprzęgło sztywne tulejowe z wpustami +* #### Sprzęgło sztywne tulejowe z tuleją stożkową + + +### Sprzęgło kołnierzowe + + + +### Sprzęgło łubkowe + + + +### Sprzęgło cierne stożkowe + + + +### Sprzęgła samonastawne + + + +### Sprzęgło kłowe + + + +### Sprzęgło sterowane + + + +### Sprzęgło asynchroniczne + + + +### Sprzęgło zębate + + + +### Sprzęgło przegubowe + + + +### Sprzęgło podatne + + + +### + +## Czym jest sprzęgło, jak działa i z czego się składa + + +Sprzęgło w to urządzenie stosowane w układach mechanicznych w celu +przenoszenia momentu obrotowego między dwoma wałami. Sprzęgło umożliwia +załączanie, rozłączanie lub regulację siły przekazywanej między wałami. Są +szeroko używane w takich urządzeniach jak samochody czy maszyny przemysłowe. + + +### Funkcje sprzęgła + + +Podstawowymi funkcjami sprzęgła są +* **Łączenie wałów** – sprzęgło łączy wał napędzający (np. silnika) z wałem napędzanym (np. skrzynią biegów). +* **Rozłączanie układu napędowego od maszyny roboczej** – sprzęgło umożliwia rozłączenie napędu. Na przykład poprzez wciśnięcie pedału podczas zmiany biegów w samochodzie. +* **Tłumienie drgań** – w niektórych typach sprzęgieł zastosowane są mechanizmy tłumiące drgania i wibracje. +* **Przekazywanie momentu obrotowego** – sprzęgło umożliwia przenoszenie siły obrotowej z jednego elementu na drugi, często przy różnych prędkościach obrotowych. +* **Uproszczneie rozwiązań konstrukcyjnych** – umożliwiają łatwiejsze projektowanie systemów napędowych, pozwalając na łączenie i rozłączanie wałów bez konieczności stosowania skomplikowanych mechanizmów. +* **Stosowanei Uniwersalnych silników** – pozwalają na dostosowanie momentu obrotowego i prędkości obrotowej wału napędzanego do wymagań układu, co umożliwia używanie standardowych silników w różnych zastosowaniach. +* **Zabezpieczneie przed przeciążeniami** – sprzęgła przeciążeniowe lub wyposażone w mechanizmy rozłączające, które chronią układ napędowy i maszynę roboczą w sytuacjach, gdy moment obrotowy przekracza dopuszczalne wartości.**Zgodnie z Polskimi Normami (PN)** , wyróżnia się **36 rodzajów** sprzęgieł, które są klasyfikowane według różnych kryteriów, takich jak warunki pracy, maksymalne obciążenia, wymiary czy ciężar. Normy służą standaryzacji sprzęgieł i układów napędowych. + + +### Z czego zbudowane jest sprzęgło + + +Sprzęgło, nie zaleznie od rodzaju musi spełniać funckję przeniesienia mocy - +momentu na wale. Zatem musi być zaczepione do wału napędzającego (wał pędny), +i wału napędzanego co odbywa się za pomocą elementu biernego - pośredniczącego +przy przeniesieniu napędu. Zatem sprzęgło składa się z trzech elementów +opisanych ponizej: + +**Człon czynny -** Element mechanizmu sprzęgającego połączony z wałem +napędzającym. Przekazuje energię mechaniczną z silnika lub innego źródła +napędu dalej w układzie mechanicznym. + +**Łącznik -** Dalej jest element pośredniczący między członem czynnym a +biernym, odpowiedzialny za fizyczne połączenie obu członów. W zalezności od +sprzęgła może to być cierna tarcza lub w hydrokinetycznych ciecz, lub elementy +tłumiące (w np. elastycznych). Głównym zadaniem łącznika jest zapewnienie +odpowiedniej kompensacji niedokładności ustawienia osiowego i kątowego wałów +względem siebie. + +**Człon bierny** \- Element osadzony na wale napędzany odbiera moment obrotowy +od członu czynnego. Jego rola polega na przekazaniu siły na kolejne elementy +układu napędowego np. skrzynię biegów/przekładnię lub maszynę roboczą. + + +### Ogólna zasada doboru sprzęgieł + + +Podstawowy parametr charakteryzujący sprzęgło to przenoszony **M o**. +Wyznaczamy go z wzoru liczbowego: + +**M = 9550 ⋅ [N ⋅ m] P** – w **[Kw]** , **n **– **[obr/min]** + +Chcąc uwzględnić możliwość występowania przeciążeń w czasie pracy, stosujemy +współczynnik przeciążeń **K **i ustalamy maksymalny moment obrotowy. + +**M max = M ⋅ K** + +Gdzie: + +**K współczynnik przeciążeń **– parametr dobierany z tablic – zależny od +rodzaju maszyny, prędkości poślizgu i liczby włączeń w ciągu godziny. + +W zależności od zastosowanego sprzęgła określić możemy jego rodzaj, oraz +ustalić ewentualne przeciążenia, które uwzględniamy przy doborze współczynnika +przeciążeń **K**. + + +## Podział Sprzęgieł + + +Sprzęgła możemy podzielić według różnych kryteriów. Najbardziej przejrzysty +podział pozwalający na intuicyjne spojrzenie na nie i jak one działają +przedstawiony został poniżej + + +### Podział sprzęgieł według możliwości rozłączenia + + +**Sprzęgła nierozłączne:** Elementy czynny i bierny są trwale połączone, nie +można ich łatwo rozdzielić np. +* zgrzewane. +* klejone. + +**Sprzęgła rozłączne:** Pozwalają na szybkie rozłączenie elementów napędowych +bez konieczności demontażu np. +* cierne - sprzęgło jednotarczowe w samochodach, +* elektromagnetyczne - sprzęgło w napędach maszyn. + +**Sprzęgła rozłączne stałe:** +* Sprzęgło kołnierzowe + +**Sprzęgła rozłączne sterowane:** +* sprzęgło elektromagnetyczne +* sprzęgło pneumatyczne + +**Sprzęgła samoczynne** – umożliwiają łączenie lub rozłączanie wału bez +obsługi. Najczęściej wykorzystuje siłę bezwładności. Przykłady sprzęgieł +samoczynnych to : +* odśrodkowe +* jednokierunkowe +* bezpieczeństwa (przeciążeniowe) + + +### Podział sprzęgieł według sztywności połączenia + + +**Sprzęgła sztywne:** Zapewniają sztywne połączenie bez możliwości ruchu +między wałami np. +* sprzęgło tulejowe +* sprzęgło kołnierzowe +* sprzęgło łubkowe + +**Sprzęgła podatne (elastyczne):** tPzwalają na niewielkie odkształcenia, +kompensując niedoskonałości ustawienia wałów za pomocą elementu podatnego. +Przykładem sprzęgieł podatnych są np. +* sprzęgło z wkładką gumową +* sprzęgło sprężynowe + +**Sprzęgła samonastawne:** +* sprzęgło z przegubem Cardana +* sprzęgło z siatką elastyczną + +**Sprzęgła mechaniczne:** +* sprzęgło zębate +* sprzęgło kołkowe, +* sprzęgło tarczowe. + + +**Sprzęgła cierne:** +* sprzęgło tarczowe +* sprzęgło stożkowe. + +**Sprzęgła elastyczne:** +* sprzęgło gumowe +* sprzęgło sprężynowe + +**Sprzęgła hydrokinetyczne:** +* sprzęgło hydrodynamiczne + + +### Sprzęgła z dodatkowymi funkcjami + + +**zabezpieczające:** +* sprzęgło przeciążeniowe +* sprzęgło bezpieczeństwa + + +## Sprzęgła sztywne tulejowe + + +To rodzaj sprzęgła sztywnego, które zapewnia trwałe i sztywne połączenie dwóch +wałów, uniemożliwiając jakiekolwiek przesunięcia między nimi. + + +### Sprzęgło sztywne tulejowe z kołkami + + +Składa się z tulei jako głównego elementu łączącego, w której wały są mocowane +za pomocą kołków. + +1 – wał czynny, 2 – wał bierny + +3 – tuleja + +4 – kołki + + +### Sprzęgło sztywne tulejowe z wpustami: + + +Składa się z tulei jako głównego elementu łączącego, w której wały są mocowane +za pomocą [**wpustów pryzmatycznych**](https://izaac.pl/inzynieriamechaniczna/polaczenia-z-wpustem-pryzmatycznym) \- dokładnie tak jak **osadza +się koła na wale**. Dodatkowo może być połączone za pomocą +[**wielowypustów**](https://izaac.pl/inzynieria-mechaniczna/polaczenia-ciernestozkowe)**,**[**na połączeniu stożkowym**](https://izaac.pl/inzynieriamechaniczna/polaczenia-cierne-stozkowe)**lub +na[wcisk](https://izaac.pl/inzynieria-mechaniczna/polaczenia-wciskowe)** + +1 – wał czynny, 2 – wał bierny + +3 – tuleja + +4 – wpusty + +5 – wkręt ustalający + + +### Sprzęgło sztywne tulejowe z tuleją stożkową: + + +Składa się z tulei jako głównego elementu łączącego, jednak w porównaniu z +innymi sprzęgłami tulejowymi, gometria tulei jest stożkowa. + +1 – wał czynny, 2 – wał bierny + +3 – tuleja sprzęgłowa z otworem stożkowym + +4 – tuleja cienkościenna ze stożkiem zewnętrznym + +5 – wkręty zamykające otwory doprowadzenia oleju przy rozłączaniu + + +## Sprzęgła kołnierzowe + + +Sprzęgło kołnierzowe to sztywne sprzęgło składające się z dwóch tarcz, +połączonych za pomocą koncentrycznie przykręconych +[**śrub**](https://izaac.pl/inzynieria-mechaniczna/technologia-srub-wszystkoo-projektowaniu-polaczen-srobowych). Stosowane w układach mechanicznych +wymagających sztywnego i dokładnego połączenia wałów. Przy demontażu wymagają +rozsunięcia tarcz. Chcąc tego uniknąć zamiast wytłoczeń zastosuję dwudzielną +przedkładkę środkującą. + +Sprzęgło sztywne tarczowe bez obrzeży ochronnych + +Sprzęgło sztywne tarczowe z obrzeżami ochronnymi + +Sprzęgło sztywne tarczowe z wkładką środkującą: 1 – tarcze, 2 - wkładka + +Sprzęgło sztywne kołnierzowe: + +a) z kołnierzami odkutymi łącznie z wałem, + +b) z kołnierzami spawanymi, + +c) z kołnierzami osadzonymi skurczowo + +Kołnierzowych sprzęgieł zazwyczaj używamy do łączenia wałów o zakresie średnic +od **25 do 200 mm.** Przy czym moment przenoszony może się różnić i wynosić od +**310 do około 60000 Nm** (**bardzo duży moment!**). Masa takiego mechanizmu +może oscylować od **5 do 250 kg** dla największych sprzęgieł kołnierzowych. + + +### Oznaczenie sprzęgła kołnierzowego + + +Oznaczenie dla średnicy otworu **d = 60 mm** : + +**SPRZĘGŁO KOŁNIERZOWE 60 PN – 66 /M - 85251** + +**gdzie :PN – 66 /M - 85251 to numer normy** + + +## Sprzęgła łubkowe + + +**Sprzęgło łubkowe** – Rodzaj sprzęgła sztywnego. Składa się z elementów +zwanych łubkami za pomocą których obejmuje czopy dwóch wałów. Jest **jednym z +prostszych[połączeń wałów ](https://izaac.pl/inzynieriamechaniczna/projektowanie-walow)**a także jeden z **trwalszych rodzajów +sprzęgła.** stosowany tam, **gdzie możliwe lub konieczne jest precyzyjne i +sztywne przenoszenie momentu obrotowego**. Dodatkową jego zaletą jest **łatwy +montaż i demontaż.** + +Sprzęgło nie pozwala na kompensowanie przesunięć osiowych, poprzecznych ani +kątowych, dlatego wymaga idealnej współosiowości wałów. Dodatkowo najwiekszymi +wadami są – **duże wymiary** , **stosunkowo duża masa** oraz **brak możliwości +wyważenia (tylko do napędów wolnobieżnych).** + +Sprzęgło sztywne łubkowe śrubowe (połączone za pomocą śrub) + +Zakres dostępnych średnic wałów, które mogą być połączone za pomocą tego typu +sprzęgła, wynosi od **25 do 140 mm.** Maksymalny moment obrotowy, jaki mogą +przenieść, mieści się w przedziale od **160 do 12 500 Nm** , w zależności od +modelu i zastosowania. Masa sprzęgieł łubkowych waha się **od 3 do 120 kg,** +zatem jest odpowiednim rozwiązaniem dla szerokiego zakresu zastosowań +przemysłowych i mechanicznych. + + +## Sprzęgło cierne stożkowe + + +**Sprzęgło cierne stożkowe** \- Moment obrotowy jest przenoszony za pomocą +siły tarcia powstającej między powierzchniami stożkowymi. Działa na zasadzie +docisku jednej powierzchni stożkowej do drugiej. Umożliwia to **płynne +przekazywanie** **momentu** **obrotowego** między wałami gdyż powierzchnie +cierne pozwalają na stopniowe załączanie sprzęgła, co **zmniejsza szarpnięcia +i obciążenia w układzie napędowym.** + +Do głównych wad sprzęgła ciernego stożkowego możemy zaliczyć + +**Zużycie powierzchni ciernych** , **Zależność przekazywanego momentu** **od +siły docisku** (Siła docisku (Fw) jest generowana mechanicznie, hydraulicznie, +pneumatycznie lub sprężynowo, aby zapewnić tarcie między stożkami.) , +**Możliwość przegrzewania** oraz **konieczność precyzyjnego zamontowania +wałów**. + + + +Rys.3.31 Sprzęgło cierne stożkowe + +Do obliczeń sprzęgła ciernego stożkowego musimy wyznaczyć siłę **F n** +wywołującą tarcie oznaczoną na rysunku powyżej pod kątem α do osi wałów. + +![](https://izaac.pl/wp-content/uploads/2022/05/w6-300x81.png) + +gdzie: + +**F n **– siła nacisku + +**α = 15°÷20°**(zalecane) + +Siła tarcia na powierzchniach ciernych sprzęgła stożkowego wynosi + +Podobnie jak przy obliczeniach [**tarcia w +gwintach**](https://izaac.pl/inzynieria-mechaniczna/obliczanie-srub-krok-pokroku#1)wprowadzamy **pozorny współczynnik tarcia**. + +![](https://izaac.pl/wp-content/uploads/2022/05/w8.png) + +**M T ** (moment tarcia) obliczamy ze wzoru**:** + +![](https://izaac.pl/wp-content/uploads/2022/05/w9-300x51.png) + +Na podstawie powyższych zależności możemy wyznaczyć wartość nacisków +powierzchniowych na powierzchniach ciernych sprzęgła stożkowego: + +gdzie: + +**p** \- naciski powierzchniowe. + +Podstawiając **F w **z wzoru **[IV]** otrzymamy warunek na naciski w +zalezności od momentu tarcia + + +## Sprzęgła samonastawne + + +**Sprzęgła samonastawne** – Jest to grupa sprzęgieł, mających możliwość +kompensacji niewielkich odchyłek w ustawieniu wałów. Dzięki swojej konstrukcji +mogą niwelować różnice wynikające z niewspółosiowości lub przesunięć wałów w +różnych płaszczyznach. Dzielą się na trzy główne typy w zależności od rodzaju +przesunięć, które mogą kompensować. +* poprzeczne - Dotyczy osi dwóch wałów, które są równoległe, ale przesunięte względem siebie. +* wzdłużne - Dotyczy odległości między końcami wałów wzdłuż ich osi. Mogą to być ruchy wynikające z rozszerzalności cieplnej lub naprężeń w układzie. +* kątowe - Dotyczy odchyleń kątowych między osiami dwóch wałów, które mogą być spowodowane błędami montażowymi lub dynamicznymi zmianami w trakcie pracy. + +Przesunięcie w takim sprzęgle jest ograniczone luzem osiowym (wzdłuż osi) +wynikającym z rzeczywistych wymiarów. Przemieszczenia osi wałów: a) +poprzeczne, b) wzdłużne, c) kątowe + +Sprzęgła te mogą kompensować przemieszczenia jednego rodzaju lub złożone. +Charakteryzują się luzami i możliwością ślizgania się współpracujących części +po sobie. + + +### Sprzęgła kłowe + + +**Sprzęgła kłowe** \- Wykorzystują kły jako łącznik odpowiedzialny za +przenoszenie momentu obrotowego między wałami. Geometria kłów i ich liczba są +dobierane w oparciu o wymagania wytrzymałościowe i technologiczne. Kły muszą +być wystarczająco wytrzymałe, aby przenosić obciążenie bez odkształceń czy +uszkodzeń, a jednocześnie ich konstrukcja powinna być możliwa do wykonania z +odpowiednią dokładnością i w sposób ekonomiczny, co zapewnia trwałość i +niezawodność. Sprzęgła kłowe kompensują przesunięcia wzdłużne. Przesunięcie w +takim sprzęgle jest ograniczone luzem osiowym (wzdłuż osi) wynikającym z +rzeczywistych i projektowych wymiarów. + +Luz osiowy zapewnia elastyczność w ustawieniu wałów i kompensację niewielkich +zmian wymiarów w trakcie pracy. + +Rys.3.10 Sprzęgło kłowe + +Sprzęgło samonastawne kłowe: a) środkowane w otworze członu, b) środkowane za +pomocą tulejki + +**Sprzęgło OLDHAMA** – To sprzęgło przegubowe używane do przenoszenia momentu +obrotowego między dwoma wałami, które mogą być przesunięte względem siebie +osiowo lub promieniowo. Charakteryzuje się prostą konstrukcją, skutecznością w +kompensowaniu niewspółosiowości oraz szerokim zastosowaniem w maszynach i +urządzeniach. Składa się z tarcz osadzonych na wałach z łącznikiem w postaci +tarczy współpracujące z kłami obu tarcz. + +Sprzęgła oldhama pozwalają na kompensację przesunięcia poprzeczne (Maksymalna +wartość przesunięć **x ≤ 0,1d** oraz **)** , oraz odchylenia kątowego +(odchylenie kątowe **β ≤ 4°)** \- kompensacja przemieszczeń. + +Zazwyczaj sprzęgłem oldhama łączymy wały których średnica mieści się w +przedzale **d – 40 ÷ 120 mm oraz** przenoszony moment obrotowy **M – 650 ÷ +8000 Nm** a prędkość nie przekracza **n max – 200 obr/min. **Dla dużych wałów +prędkość obrotowa jest niższa i wynosi około**130 obr/min**. + +Sprzęgło Oldhama: a) z kłami prostymi, b) z wkładką tekstolitową, c) z kłami o +zarysie ewolwentowym. + + +## Sprzęgła sterowane + + +**Sprzęgła sterowane** – są wyposażone w urządzenia, za pomocą których można +dokonywać łączenia i rozłączania napędu przenoszącego moment obrotowy. + +**Sprzęgła sterowane** dzielimy na: +* przełączalne synchroniczne (kształtowe); +* przełączalne asynchroniczne (cierne). + + +### Sprzęgła przełączane synchronicznie + + +Sprzęgła synchroniczne to sprzęgła których mechanizm zapewnia dokładne +dopasowanie pozycji wałów przed połączeniem, eliminując ryzyko nierównej pracy +lub uszkodzenia zębów przenoszących moment obrotowy. + +**Sprzęgło zębate** – Składa się z dwóch tarcz, z których jedna wykonana jest +z uzębieniem zewnętrznym a druga z wewnętrznym. Podobnie jak w kłowych zębom +nadaje się kształty ułatwiające włączanie. + +**Sprzęgło kłowe** – składa się z dwóch tarcz, jednej spoczynkowej na wale +napędowym, drugiej przesuwnej na wpuście lub wielowypuście na wale napędzanym. + +Rys.3.24 Sprzęgło włączalne kłowe + +Sprzęgła kłowe: a, b) przekroje wzdłużne tarcz, c) rodzaje kłów + +Rozłącznie może odbywać się bez żadnych ograniczeń, natomiast sposób łączenia +uzależniony jest od specyficznych jego cech konstrukcyjnych. + +Rodzaje kłów: +* **trapezowe;** +* **trójkątne: symetryczne i niesymetryczne;** +* **z ułatwionym włączaniem;** +* **prostokątne** + +Rys.3.26 Sprzęgło zębate przełączalne: a) sprzęgło, b) kształty zębów, c) +sprzęgło z synchronizatorem: 1 – uzębienie, 2 – łącznik, 3 – człon czynny +(synchronizator), 4 – sprzęgiełko cierne stożkowe + + +### Sprzęgła asynchroniczne + + +Tarcze są dociskane siłą wywołującą na powierzchniach ciernych siłę tarcia +przenoszącą **moment obrotowy** z wału czynnego na bierny. Cechą +charakterystyczną sprzęgła asynchronicznego jest możliwość włączenia +(przyłączenia wałów) przy różnych obrotach członów. Od włączenia do pełnej +synchronizacji następuje poślizg – nagrzewanie i zużywanie tarcz. Sprzęgła +asynchroniczne mogą pracować na sucho (bez smarowania) oraz ze smarowaniem – +mniejsze zużycie, jednak wiąże się to z mniejszym współczynnikiem tarcia, +jednak daje możliwość przeniesienia większych nacisków powierzchniowych. +Dodatkowym plusem smarowania jest dodatkowe chłodzenie. + +Z uwagi na nagrzewanie, ale także na charakterystykę pracy sprzęgieł +asynchronicznych właściwości materiału na powierzchnie cierne muszą mieć: +* duże współczynnik tarcia +* dużą wytrzymałość mechaniczna +* dobre przewodnictwo cieplne +* odporność na zużycie +* brak skłonności do zatarć + + +## Sprzęgła zębate + + +**Sprzęgła zębate** – Przenoszenie momentu obrotowego realizuje za pomocą pary +współpracujących ze sobą zębów. Są one szczególnie przydatne w układach +wymagających kompensacji niewspółosiowości ponieważ kompensują wszystkie +rodzaje przemieszczeń. + +Sprzęgło zębate składa się z dwóch tarcz, jedna z uzębieniem zewnętrznym a +druga z wewnętrznym. Tarcze uzębione osadzane są na wałach, współpracują z +tulejkami o uzębieniu wewnętrznym. Obie tuleje połączone są śrubami. Podobnie +jak w kłowych zębom nadaje się kształty ułatwiające włączanie. Przekrój kłów +jest zazwyczaj trapezowy pod kątem **2° ÷8°.** Dla uzębień +wewnętrznych stosuje się zęby niskie o wysokości głowy zęba ha = 0,8m a dla +uzębień zewnętrznych zęby normalne. + +Różnice prędkości obu tarcz nie mogą przekraczać: + +**V 2 – V1 ≤0,7 ÷0,8 m/s (** do **1500 obr/min)** + +Gdzie: + +**V_2 - prędkość drugiego wału** + +**V_1 - prędkość pierwszego wału** + +Sprzęgła zębate dzielimy na: +* **jednostronne** +* **dwustronne** + + +### + +Rys.3.13 Sprzęgło zębate dwustronne + + +Sprzęgła zębate używa się dla średnic wałów od **d=20 do d=280 mm** przy +momencie przenoszenia momentu **M = 630 Nm ÷ 160 kNm** oraz prędkościami +obrotowymi z zakresu **n = 500 ÷ 3000 obr/min.** + +Zęby sprzęgieł: a) proste, b) łukowe + + +## Sprzęgła przegubowe + + +**Sprzęgło przegubowe Cardana** – (zwane również przegubem Cardana lub wałem +Cardana) to rodzaj sprzęgła służący do łączenia wałów, których osie przecinają +się. Stosowane są tam , gdzie wały nie są osiowe, a ich wzajemne położenie +może ulegać zmianie Sprzęgła te nie kompensują innych odchyłek położenia osi. +Standardowo dla każdego sprzęgła tak samo dla sprzęgła kardana, składa się z +dwóch elementów łącznych i pośredniczącego. Dwóch widełek (po jednej na każdym +wale) oraz elementu pośredniego, którym jest krzyżak (lub przegub). + +Sprzęgło Cardana pojedyncze. + +Chwilowy stosunek prędkości kątowych łączonych wałów nie jest stały – zależy +od kąta **α ** jaki tworzą osie wałów. Wadę tę wyeliminuje sprzęgło podwójne +lub zdwojony przegub Cardana. + +Podwójny przegub Cardana z wałkiem pośrednim zapewniający równość prędkości +kątowych wałka biernego i wałka czynnego: + +a) wały czynny i bierny o osiach równoległych przesuniętych, + +b) wały czynny i bierny o osiach tworzących kąt **2º** + +Zdwojony przegub Cardana + +Stałą, chwilową prędkość kątową wałów zapewniają sprzęgła ze zdwojonymi +przegubami. + +Prędkości kątowe wałów **I** i **II** są stałe wówczas, gdy kąty odchylenia +wałów od wałka pośredniego **2** są jednakowe oraz gdy widełki **1** wałka +pośredniego leżą w jednej płaszczyźnie + +Stałą prędkość kątową wału napędzanego zapewniają **sprzęgła przegubowe – +kulowe**. + +Sprzęgło przegubowe kulowe synchroniczne: 1 – wał, 2 – trzpień prowadzący, 3 – +koszyk, 4 – wał, 5 – główka wału, 6 – kulki, 7 – obudowa, 8 – koszyk, 9 – +sprężyna, 10- trzpień + + +## Sprzęgła podatne + + +**Sprzęgło podatne** – Sprzęgło, w którym podstawowym elementem jest łącznik +podatny sprężysty. Jego zadaniem jest umożliwienie chwilowego względnego +obrotu wału biernego w stosunku do czynnego. + +Dzięki podatności łącznika możemy zmniejszyć obciążenie dynamiczne występujące +w układzie napędowym oraz łagodzić drgania. + +**Sprzęgło kabłąkowe (oponowe)** – To sprzęgło, w którego skład wchodzą dwie +tuleje z przyspawanymi tarczami, rolę łączników spełniają cztery taśmy gumowe +przykręcone śrubami (łącznikiem może być opona gumowa). Sprzęgła tego typu +mają **średnicę zewnętrzną 180÷350mm** i przenoszą maksymalny moment obotowy +**od 250 do 3000Nm.** + + + +Rozróżniamy również: +* sprzęgła wkładkowe tulejkowe (palcowe) + +Sprzęgło kabłąkowe + +Sprzęgło podatne tarczowe sworzniowe z wkładkami gumowymi: 1,2 – człony +sprzęgła, 3 – sworzeń, 4 – wkładka, 5,6 – podkładki, 7 – nakrętka, 8 – +pierścień osadczy +* sprzęgła z pakietami sprężyn płaskich; + +Sprzęgło podatne z pakietami sprężyn płytkowych ustawionych promieniowo: 1,5 – +człony sprzęgła, 2 – kołnierz, 3 – pierścień dystansowy, 4 – śruby łączące, 6 +– uszczelnienie +* sprzęgła ze sprężyną wężykową. + +Sprzęgło podatne ze sprężyną wężykową: 1,2 – człony sprzęgła, 3 – występy, 4 – +sprężyna, 5,6 – połówki obejmy + +Odkształcenie sprężyny wężykowej w sprzęgle o charakterystyce nieliniowej + diff --git a/frontend/src/content/sprężyna.md b/frontend/src/content/sprężyna.md new file mode 100644 index 0000000..b72189d --- /dev/null +++ b/frontend/src/content/sprężyna.md @@ -0,0 +1,351 @@ +--- +title: "Sprężyna" +date: 2024-01-20 18:30:34 +categories: [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } +] +--- + +### Czym jest sprężyna + +* #### Elementy podatne +* #### Zadania elementów podatnych + + +### Techniki wykonywania sprężyn + +* #### Obróbka końcowa wytwarzania sprężyn +* #### Materiały stosowane na sprężyny +* #### Sztywność sprężyny + + +### Podział sprężyn + +* #### Podział sprężyn w zależności od kształtu sprężyny +* #### Podział sprężyn w zależności od linii wygięcia osi pręta + + +### Podział prętów na sprężyny + +* #### Zależnie od sposobu obciążenia pręta . +* #### Podział sprężyn zależnie od ilości działających w układzie sprężyn + + +## Czym jest sprężyna + + + + +**Sprężyna** \- to element podatny, używany w budowie maszyn najczęściej w +kształcie spiralnego zwoju. Sprężyna wykonana jest zazwyczaj z materiału +sprężystego (np. stali sprężynowej). Materiał taki pozwala magazynować energię +mechaniczną (bez zamieniania jej w [**uplastycznienie +materiału**](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#1) \- jak byłoby w przypadku +materiałów plastycznych) w trakcie odkształcenia aby oddać ją w trakcie +powrotu do swojej pierwotnej formy. + +Główne zastosowania sprężyn to: + +**Przywracanie pozycji wyjściowej układów.** Na przykład w siłownikach +pneumatycznych lub hydraulicznych, gdzie sprężyna pomaga powrócić do stanu +początkowego po zakończeniu działania. + +**Zastosowania regulacyjne** – stosowane w systemach bezpieczeństwa, np. +zawory bezpieczeństwa wyposażone w sprężynę regulacyjną lub w **sprzęgłach**. + +Sprężyny zazwyczaj są elementami maszyn najbardziej +[**obciążonymi**](https://izaac.pl/inzynieria-mechaniczna/podstawywytrzymalosci-materialow#3)i w wielu przypadkach projektujemy maszyny tak, że +jeśli coś miałoby się uszkodzić – to aby była to właśnie sprężyna. Implikuje +to potrzebę projektowania elementów podatnych tak, żeby były łatwe do wymiany. + +Ponadto, sprężyny same w sobie nie tłumią drgań, gdyż zazwyczaj wykonane są z +materiałów sztywnych – np. stal o wysokiej **granicy plastyczności**. Co za +tym idzie nie zachodzi dyssypacja energii. W celu tłumienia drgań należy +zamontować tłumiki lub amortyzatory. + +**W celu ujednolicenia nazewnictwa sprężyny można nazywać w sposób +następujący:** + +Sprężyna **[**_rodzaj wygięcia osi pręta_**] [**_kształt sprężyny_**] +[**_sposób obciążenia sprężyny_**] [**_kształt pręta sprężyny_**] [**_rodzaj +obciążenia pręta_**]** +* Przykład – Sprężyna [śrubowa] [walcowa] [naciskowa] o [okrągłym] pręcie [skręcanym] + +_**Sprężyna śrubowa walcowa naciskowa o okrągłym pręcie skręcanym**_ + +__ + +Najczęściej używaną normą dla sprężyn są **DIN 2098** oraz **DIN 2095** + + +### + +### + + + +### Elementy podatne + + +**Elementy podatne** to element w konstrukcji maszyn, które odkształcają się +znacznie w stosunku do wymiaru. Odkształcalność można wywołać w przedmiocie na +dwa różne sposoby + +1) Stosując materiał o dużej podatności – małej sztywności – ([**niski moduł +Younga**](https://izaac.pl/inzynieria-mechaniczna/modul-younga-i-statycznaproba-rozciagania)) + +**Elementem podatnym** więc są nie tylko sprężyny ale także każdy element +gumowy, czy element z tworzywa sztucznego, którego zadaniem jest znaczne +odkształcenie w celu wykonania zadanej pracy. + +2) Stosując materiał o dużej sztywności – odpowiednio uformowany (np. w +sprężynach) + + +### Zadania elementów podatnych + +* wzajemne przesunięcie elementów maszynowych (mechanizm ładowania pistoletu) +* kasowanie luzów +* wywieranie nacisku (śruby regulujące napięcie wstępne, w niektórych rozwiązaniach napinania łożysk skośnych) +* przejęcie siły statycznej lub dynamicznej (sprężyny w wagonach pociągowych) +* przeniesienie napędu (opony mające dobrą przyczepność do podłoża – ze względu na odkształcalność i wysokie opory toczne za tym idące) +* łagodzenie uderzeń (Resory) +* regulacja (np. w sprzęgłach) +* pomiar sił (Klucze dynamometryczne) +* magazynowanie energii (w zegarkach, nakręcanych samochodzikach) + + +## Techniki wykonywania sprężyn + + +Sprężyny zazwyczaj wytwarzane są z prętów o przekroju okrągłym lub +prostokątnym, które poddaje się procesowi zawijania wokół osi. Taki sposób +produkcji pozwala uzyskać elementy o odpowiednich właściwościach sprężystych, +dostosowanych do przewidzainych zastosowań, takich jak amortyzatory. Przekrój +pręta, średnica zawijania oraz kąt i i jego charakterystyka (np. zmienny kąt +zawinięcia sprężyny) jest dobierany w zależności od wymagań technicznych oraz +specyfiki pracy sprężyny. +* **Wykonywanie sprężyny dla sprężyny wykonanej z pręta o niedużym przekroju (d≤8-10mm)** +* * Sprężyny wykonuje się poprzez wyginanie lub zwijanie na zimno +* Sprężyny dodatkowo poddaje się procesowi odpuszczania w oleju lub kąpieli solnej (T 230-320*C) dla usunięcia naprężeń własnych +* **Wykonywanie sprężyny dla sprężyny wykonanej z pręta o większym przekroju i dla sprężyn odpowiedzialnych o niedużym przekroju** +* Sprężyny wykonuje się poprzez wyginanie lub zwijanie na gorąco (800-1000*C) +* Sprężyny dodatkowo poddaje się procesowi hartowania i niskiego odpuszczanie, + + +### Obróbka końcowa wytwarzania sprężyn + + +**Obróbka końcowa** ma zapewnić ochronę przed korozją i zwiększenie +wytrzymałości elementów – zazwyczaj zwiększenie wytrzymałości zmęczeniowej. + +**Kulkowanie** – to proces polegający na ostrzeliwaniu drobnymi kulkami lub +piaskiem z wodą sprężyn w celu powierzchniowego utwardzenia materiału. +Powoduje duży wzrost wytrzymałości zmęczeniowej (50-100%), przy niewielkim +(niezauważalnym) wzroście wytrzymałości statycznej. + +**Szlifowanie i polerowanie** – polega na wygładzaniu powierzchni w celu +uniknięcia wysokiej chropowatości powierzchni, co może powodować karby i +lokalne spiętrzenia naprężeń na powierzchni. W przypadku obciążeń cyklicznych, +wytrzymałość zmęczeniowa po polerowaniu i szlifowaniu również wzrasta. + +**Przeprężenie** – polega na obciążeniu sprężyny powyżej granicy +plastyczności, przez ok. 48h lub obciążenia udarowe (1500-2000 razy), przez +parę minut. Obciążone wewnętrzne włókna materiału mają odkształcenia trwałe i +generują naprężenia o przeciwnym znaku do naprężenia wywołanego obciążeniem +roboczym. Generuje wzrost wytrzymałości statycznej o ok. 20-30% + +Dla ochrony przed korozją przeprowadza się: Fosforyzowanie, cynowanie, +natłuszczanie, oksydyzowanie, lakierowanie + + +### Materiały stosowane na sprężyny + + +Materiały przeznaczone na sprężyny dobiera się tak, aby miały możliwie wysoką +wytrzymałość statyczną i zmęczeniową. Dodatkowo ważnym kryterium wyboru +materiału na sprężyny jest Moduł Younga bezpośrednio wpływający na sztywność +sprężyny + + +### Stale niesprężynowe konstrukcyjne + +* Stale o wysokiej zawartości węgla +* Z dodatkiem Mn, Si, Cr, V, Mo, W +* Stal hartowana +* Niskoodpuszczana + + +### Stale sprężynowe + + +Zazwyczaj stale sprężynowe mają znacznie wyższą ceną w porównaniu do +standardowych stali konstrukcyjnych. Ich koszt może być nawet kilkukrotnie +większy, co wynika z zastosowania bardziej zaawansowanych technologii +produkcji, wyższej jakości surowców, właściwości takich jak zwiększona +wytrzymałość, odporność na korozję czy lepsze parametry mechaniczne. +* Dla niezbyt dużych przekrojów (d lub h≤10mm) +* Stal węglowa 0,6-0,9%C +* Druty sprężynowe ok. 1%C +* Dla Odpowiedzialnych sprężyn z d≥7mm +* Stale stopowe +* Manganowe +* Krzemowo-manganowe +* Krzemowe +* Stale chromowe +* Z dodatkiem Si, Mn,V +* Krzemowo-wolframowa + + +### Materiały na sprężyny do pracy w ośrodkach korozyjnych + +* Stopy miedzi +* Brąz krzemowy +* Fosforowy +* Berylowy +* Stale nierdzewne +* Stopy niklu + + +### Materiały do pracy w środkach chemicznych + +* Niewrażliwe tworzywa sztuczne + + +## Sztywność sprężyny - Współczynnik sztywności + + +**Sztywność sprężyny lub inaczej nazywany Współczynnik Sztywności C(czasami k) +- [N/m] lub [Nm/rad] dla sztywności skrętnej** – jest stosunkiem przyrostu +odkształcenia**f [m]** do przyrostu obciążenia siłą**P [N]** , czyli jest siłą +jaką trzeba przyłożyć aby uzyskać określone przemieszczenie, lub stosunkiem +przyrostu odkształcenia **φ [ °] [rad]** do przyrostu obciążenia momentem +skręcającym **Ms/Mst [Nm]**. Parametr nazywany jest także stałą sprężyny i +oznaczany literą **R [N/m]** . W sprężynach ściskanych o pręcie skręcanym +sztywność określa opór jaki stawia sprężyna w momencie ściskania. Im większą +ma wartość tym więcej oporu stawia na dane odkształcenie. + +Różne sprężyny mają różne charakterystyki w zależności od geometrii. Sprężyna +śrubowa walcowa naciskowa o okrągłym pręcie skręcanym ma liniową +charakterystykę sztywności, tzn. Stała sprężyny jest niezmienna od defleksji. + +Współczynnik C jest zatem pochodną poniższego wykresu siły od odkształcenia +sprężyny. + +![siła sprężyny w zależności od jej odkształcenia](https://izaac.pl/wpcontent/uploads/2025/01/sila-sprezyny-w-zaleznosci-od-jej-odksztalcenia.jpg) + +Gdzie : + +**1/C – podatność sprężyny** \- określa jaką deformację otrzymamy przy +przyłożeniu określonej siły. + + +### Rozróżniamy w takim przypadku sprężyny + + +**Miękkie** \- mała sztywność - mała wartość C + +**Twadre** \- duża sztywność - duża wartość C + +**O niestałej sztywności** + + 1. Wzrastającej od obciążenia + 2. Malejącej od obciążenia + +**O stałej sztywnośći** \- najczęściej stosowane, gdzie C = const + + +## Podział sprężyn + + +Sprężyny można podzielić według różnych kryteriów, takich jak kształt, sposób +pracy, rodzaj obciążenia czy zastosowanie. Oto podstawowe podziały: + + +### Podział spręzyn w zależności od kształtu sprężyny + + +Podział sprężyn w zależności od kształtu można przedstawić następująco + +**sprężyny walcowe śrubowe naciskowe** + +**Sprężyna walcowa o pręcie prostokątnym** \- Sprężyny te charakteryzują się prostokątnym przekrojem drutu, co pozwala na lepsze wykorzystanie przestrzeni i materiału. Są używane w sytuacjach wymagających wysokiej odporności na ściskanie. Sprężyny te cechują się większą sztywnością niż te o przekroju okrągłym. | ![](https://izaac.pl/wp-content/uploads/2022/01/w1-212x300.png) +---|--- +**Sprężyna walcowa o pręcie okrągłym** \- Najczęściej spotykane, charakteryzują się przekrojem w kształcie koła, co ułatwia produkcję i zwiększa odporność na zmęczenie materiałowe. Wykorzystywane w szerokim zakresie zastosowań, od motoryzacji po mechanikę precyzyjną. Norma specyfikująca te sprężyny: **ISO 10243 , DIN 2096** Dzięki równomiernemu rozłożeniu naprężeń są bardziej trwałe. | ![](https://izaac.pl/wp-content/uploads/2022/01/w2-150x300.png) + + +**Sprężyny płaskie** \- Wykonane z płaskiego elementu materiału. Mają prostą konstrukcję i są łatwe w produkcji. | ![](https://izaac.pl/wp-content/uploads/2022/01/w5-219x300.png) +---|--- + + +**Resory** \- To wielolistkowe sprężyny płaskie stosowane głównie w pojazdach do amortyzacji i rozkładu obciążeń. Zapewniają równomierne rozprowadzanie wstrząsów w pojazdach ciężarowych i kolejowych. Wykonane z hartowanej stali, zapewniają długą trwałość nawet w trudnych warunkach. | ![](https://izaac.pl/wp-content/uploads/2022/01/w6-300x300.png) +---|--- +**Sprężyny Naciągowe** \- Stosowane do magazynowania energii, działają w kierunku rozciągania. Mają oczka na końcach, co ułatwia montaż. Norma specyfikująca te sprężyny: **EN 13906** | ![](https://izaac.pl/wp-content/uploads/2022/01/w17-300x104.png) +---|--- + + +### Podział sprężyn w zależności od linii wygięcia osi pręta + + + +### Sprężyny Śrubowe (o pręcie skręcanym) + + +**Sprężyna walcowa ze stałą odiegłością zwojów** \- Sprężyny o jednakowym rozkładzie zwojów, stosowane w aplikacjach o stałym obciążeniu. Charakteryzują się przewidywalnym zachowaniem pod obciążeniem. | ![](https://izaac.pl/wp-content/uploads/2022/01/w8.png) +---|--- +**Sprężyna walcowa ze zmienną odległością zwojów** \- Zwoje są rozstawione nierównomiernie, co pozwala na zmniejszenie ryzyka trwałego odkształcenia. Często stosowane w aplikacjach o zmiennym obciążeniu. | ![](https://izaac.pl/wp-content/uploads/2022/01/w9.png) +**Sprężyna baryłkowa (o zmiennej średnicy)** \- Sprężyna o kształcie baryłki, która minimalizuje ryzyko wyboczenia przy dużych obciążeniach. Używana w aplikacjach wymagających dużej stabilności osiowej. | ![](https://izaac.pl/wp-content/uploads/2022/01/w10.png) +**Sprężyna klepsydrowa (o zmiennej średnicy)** \- Kształt klepsydry zwiększa stabilność | ![](https://izaac.pl/wp-content/uploads/2022/01/w11.png) +**Sprężyna stożkowa ( o zmiennej średnicy )** -Stożkowy kształt umożliwia oszczędność miejsca, gdy sprężyna jest w pełni ściśnięta. Używa w miejscach gdzie przestrzeń jest ograniczona. | ![](https://izaac.pl/wp-content/uploads/2022/01/w12.png) + + +### Sprężyny spiralne + + +**Sprężyna spiralna z ruchomym końcem zewnętrznym** \- ruchomy zewnętrzny koniec pozwala pozwala na regulację napięcia. | ![](https://izaac.pl/wp-content/uploads/2022/01/w13-264x300.png) +---|--- +**Sprężyna spiralna z ruchomym końcem wewnętrznym** \- Końce wewnętrzne mogą być regulowane, co zwiększa ich funkcjonalność. Stosowane w napędach sprężynowych, zegarkach i mechanizmach precyzyjnych, klamkach, napinaczach. | ![](https://izaac.pl/wp-content/uploads/2022/01/w14-290x300.png) +**Sprężyna prosta** | ![](https://izaac.pl/wp-content/uploads/2021/11/9-2.png) +---|--- +**łukowe** \- Sprężyny w kształcie łuku stosowane w mechanizmach blokujących. Wyróżniają się dużą odpornością na odkształcenia | ![](https://izaac.pl/wp-content/uploads/2021/11/10-1.png) +**kątowe** \- Sprężyny o kątowym kształcie stosowane w zastosowaniach specjalnych. Mogą pełnić rolę stabilizatorów lub prowadnic. Używane np. w klamerkach do prania i wszędzie tam, gdzie wymagane jest dopasowanie się do kształtu | ![Sprężyna kątowa](https://izaac.pl/wp-content/uploads/2021/11/11-1.png) + + +### Podział prętów na sprężyny + + +**Pręt na sprężyny okrągły** \- Przekrój okrągły zapewnia równomierne rozłożenie naprężeń, co zwiększa trwałość. Najczęściej stosowane w standardowych aplikacjach mechanicznych. | ![](https://izaac.pl/wp-content/uploads/2022/01/w15-300x190.png) +---|--- +**Pręt na sprężyny prostokątny** \- Przekrój prostokątny pręta zapewnia większą sztywność i zajmuje mniej miejsca zwłaszcza w stanie ściśniętym. Idealne do zastosowań o ograniczonej przestrzeni. | ![](https://izaac.pl/wp-content/uploads/2022/01/w16-300x180.png) +---|--- + + +### + +### Zależnie od sposobu obciążenia pręta + + +-pręt ściskany - np. sprężyna gumowa +-rozciągane +-skręcane +-zginane + + +### Podział sprężyn zależnie od ilości działających w układzie sprężyn + + +**Sprężyny pojedyncze** \- Sprężyny używane samodzielnie, spełniają określoną +funkcję w pojedynczej aplikacji. Często stosowane w urządzeniach gospodarstwa +domowego. + +**Sprężyny zespołowe** \- Zespoły sprężyn stosowane w miejscach, gdzie +wymagana jest większa siła lub precyzja działania. Stosowane w ciężkich +maszynach i konstrukcjach inżynieryjnych. + diff --git a/frontend/src/content/stałe-fizyczne.md b/frontend/src/content/stałe-fizyczne.md new file mode 100644 index 0000000..83694fc --- /dev/null +++ b/frontend/src/content/stałe-fizyczne.md @@ -0,0 +1,74 @@ +--- +title: "Stałe Fizyczne" +date: 2023-01-31 21:39:24 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Stałe Fizyczne** + + +**Stałe uniwersalne** +--- +Stała | Wartość | Jednostka | Symbol +Prędkość światła w próżni | 299 792 458 | m*s^−1 | c +Stała grawitacji | 6,674 30(15)*10^−11 | m^3*kg^−1*s^−2 | G +Stała magnetyczna | 4π*10^−7 = 1,256 637 062 12(19) *10^−6 | N*A^−2 | µ0 +Stała elektryczna | 107/4πc² = 8,854 187 8128(13)*10^−12 | F*m^−1 | ε0 +**Stałe Fizykochemiczne** +Stała Avogadro (liczba Avogadro) | 6,022 140 76*10^23 | Mol^−1 | NA +Stała Boltzmanna | 1,380 649*10^−23 | J*K^−1 | k +Stała Faradaya | 96 485,332 12 | C*mol^−1 | F +Stała gazowa (na 1 mol) | 8,314 462 618 | J*mol^−1*K^−1 | R +Stała Loschmidta (w T = 273,15 K, p = 100 kPa) | 2,651 645 804*10^25 | M^−3 | n0 +Objętość molowa gazu doskonałego(w T = 273,15 K, p = 101 325 Pa) | 22,413 969 54*10^−3 | M^3*mol^−1 | vm +Stała przesunięć Wiena | 2,897 771 955*10^−3 | M8K | b +Stała Rydberga | 10 973 731,568 160(21) | M^−1 | R∞ +Stała Stefana-Boltzmanna | 5,670 374 419*10^−8 | W*m^−2*K^−4 | σ +**Stałe Plancka** +Stała Plancka | 6,626 070 15*10^−34 | J*s | h +4,135 667 696*10^−15 | eV*s +Zredukowana stała Plancka | 1,054 571 817*10^−34 | J*s | **ħ** +6,582 119 569*10^−16 | eV*s +Masa Plancka | 2,176 434(24)*10^−8 | kg | _m P_ +Długość Plancka | 1,616 255(18)*10^−35 | m | _l P_ +Czas Plancka | 5,391 247(60)*10^−44 | s | _t P_ +**Stałe Elektromagnetyczne** +Masy +Jednostka masy atomowej | 1,660 539 066 60(50)*10^−27 | kg | mu +Masa spoczynkowa protonu | 1,672 621 923 69(51)*10^−27 | kg | +Masa spoczynkowa elektronu | 9,109 383 7015(28)*10^−31 | kg | +5,485 799 090 65(16)*10^−4 | u +Masa spoczynkowa neutronu | 1,674 927 498 04(95)*10^−27 | kg | +| | | +Ładunek elementarny | 1.602 176 634*10^−19 | C | e +Impedancja właściwa próżni | 1,5*10^−10 376,730 313 668(57) | Ω | Z0 +Magneton Bohra | 9,274 010 0783(28)*10^−24 | J*T^−1 | μB +Magneton jądrowy | 5,050 783 7461(15)*10^−27 | J*T^−1 | μN +Promień atomu Bohra | 5,291 772 109 03(80)*10^−11 | m | +Stała struktury subtelnej | 7,297 352 5693(11)*10^−3 | - | α +Odwrotność stałej struktury subtelnej | 137,035 999 084(21) | - | +Czynnik g elektronu | −2,002 319 304 362 56(35) | - | ge +Energie +Energia Hartree’go | 4,359 744 722 2071(85)*10^−18 | J | +Energia spoczynkowa elektronu | 8,187 105 7769(25)*10^−14 | J | +0,510 998 950 00(15) | MeV +Energia spoczynkowa protonu | 938,272 088 16(29) | MeV | +Energia spoczynkowa neutronu | 939,565 420 52(54) | MeV | +Stosunki +Stosunek ładunku do masy dla elektronu | −1,758 820 010 76(53)*10^11 | C*kg^−1 | +Stosunek żyromagnetyczny protonu | 2,675 221 8744(11)•10^8 | S^−1•T^−1 | +Stosunek momentu magnetycznego protonu do magnetonu Bohra | 1,521 032 202 30(46)*10^−3 | - | +Momenty +Moment magnetyczny elektronu | −9,284 764 7043(28)*10^−24 | J•T^−1 | +Moment magnetyczny protonu | 1,410 606 797 36(60)*10^−26 | J*T^−1 | +Współczynnik żyromagnetyczny protonu | 42,577 478 518(18) | MHz*T^−1 | +Stałe Promieniowania +Pierwsza stała promieniowania | 3,741 771 852*10^−16 | W*m^2 | +Druga stała promieniowania | 1,438 776 887*10^−2 | m*K | +| | | + diff --git a/frontend/src/content/tabele-geometryczne.md b/frontend/src/content/tabele-geometryczne.md new file mode 100644 index 0000000..482ef34 --- /dev/null +++ b/frontend/src/content/tabele-geometryczne.md @@ -0,0 +1,14 @@ +--- +title: "Tabele geometryczne" +date: 2022-12-10 17:40:35 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Tablice Geometryczne** + + diff --git a/frontend/src/content/tablice-fizyczne.md b/frontend/src/content/tablice-fizyczne.md new file mode 100644 index 0000000..db3f00d --- /dev/null +++ b/frontend/src/content/tablice-fizyczne.md @@ -0,0 +1,70 @@ +--- +title: "Tablice fizyczne" +date: 2022-10-18 18:51:30 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Tablice Fizyczne** + + +Tablica wielkości fizycznych ciał stałych + +Nazwa | Gęstość w temp. 18*C [kg/m3] | Współczynnik rozszerzalności liniowej 0-100*C [α*106] | Ciepło właściwe przy 18*C 10^2 [J/kg*K] | Przewodność cieplna przy 18*C [W/(m*K)] | Temperatura topnienia [*C] | Temperatura wrzenia [*C] +---|---|---|---|---|---|--- +Antymon | 6620 | 8,5 | 2,1 | 18,828 | 630,5 | 1380 +Bar | 3500 | 19 | 2,8 | - | 850 | 1140 +Beryl | 1820 | 12,4 | 2,2 | 158,992 | 1350 | 2710 +Bizmut | 9820 | 13,6 | 1,4 | 7,95 | 271 | 1560 +Bor | 2300 | 8 | 10,5 | - | 2300 | 2550 +Brąz fosforowy | 8800 | 18,9 | - | 45,19 | 1050 | - +Brąz glinowy | 7750-8350 | 16,5 | - | 82,42 | 1050 | - +Chrom | 7100 | 6,2 | 4,4 | 66,94 | 1800 | 2200 +Cyna | 7280 | 20 | 2,3 | 66,94 | 231,9 | 2270 +Cynk | 7120 | 39,7 | 2,6 | 112,13 | 419,5 | 907 +Cyrkon | 6500 | 17 | 2,5 | - | 1700 | 2900 +Fosfor biały | 2200 | 12,5 | 7,5 | - | 44,1 | 280 +Fosfor czerwony | 1820 | - | - | - | - | - +Glin (aluminium) | 2720 | 23 | 9,0 | 230,12 | 660 | 1800 +Iryd | 22400 | 6,6 | 1,3 | 58,99 | 2440-+15 | 4400 +Jod | 4940 | 9 | 2,2 | 0,435 | 113,5 | 184 +Kadm | 8640 | 30 | 2,3 | 96,23 | 320,9 | 767-+2 +Kobalt | 8900 | 12,3 | 3,9 | 71,13 | 1490 | 2900 +Krzem | 2330 | 2,8-7,3 | 7,0 | 83,68 | 1420 | 2600 +Lit | 534 | 56 | 33,9 | 71,13 | 186 | 1336 +Magnez | 1740 | 26 | 10,0 | 171,54 | 651 | 1110 +Mangan | 7430 | 23 | 6,3 | 50,21 | 1260 | 1900 +Miedź | 8960 | 16,5 | 3,9 | 394,48 | 1083 | 2310 +Molibden | 10200 | 5 | 2,5 | 142,25 | 2620 | 3700 +Mosiądz | 8400-8800 | 18,8 | - | - | 1452 | - +Nikiel | 8800 | 12,8 | 4,6 | 92,048 | 1455 | 2900 +Niob | 8400 | 7 | 0,2,7 | - | 2500 | 3700 +Srebro | 8300-8400 | - | - | 25,1 | - | - +Ołów | 11340 | 29 | 1,3 | 34,73 | 327,4 | 1613 +Platyna | 21400 | 9 | 13 | 71,13 | 1773 | 4300 +Potas | 860 | 84 | 7,4 | 100,42 | 62,3 | 760 +Rod | 12400 | 8,3 | 2,5 | 87,87 | 1966 | 2500 +Selen | 4810 | 37 | 3,3 | - | 217 | 688 +Siarka rombowa | 2060 | 64 | 7,2 | 0,264 | 112,8 | 444,6 +Siarka jednoskośna | 1,96 | - | 7,4 | - | 118,8 | 444,6 +Sód | 970 | 71 | 7,4 | 146,44 | 97,8 | 880 +Srebro | 10500 | 18,9 | 2,3 | 146,44 | 960,5 | 1950 +Stal | 7500-8700 | 16 | 4,8 | 15,06 - 45 | 1400 | - +Staliwo | 7840 | - | - | - | - | - +Tal | 11800 | 29 | 1,3 | 50,21 | 302 | 1457 +Tantal | 16600 | 7,1 | 1,4 | 54,4 | 2996 | 4100 +Tytan | 4400 | - | 6,1 | - | 1800 | 5100 +Uran | 18700 | - | - | - | 1125 | - +Wanad | 5870 | - | - | - | 1720-+20 | 3000 +Wapń | 1550 | 25 | 6,5 | - | 810 | 1200-+30 +Węgiel grafit | 2260 | 2,0 | 6,9 | 167,4 | 3500 | 4200 +Węgiel diament | 3514 | 1,3 | 4,9 | 163,17 | 3500 | 4200 +Wolfram | 19250 | 4,3 | 1,3 | 20,08 | 3370 | 5900 +Złoto | 19300 | 14,3 | 1,3 | 297 | 1062,4 | 2600 +Żelazo (czyste) | 7860 | 11,7 | 4,5 | 87,86 | 1535 | 3000 +żeliwo | 7200-7600 | 9 | 5,4 | 50,21 | 1150-1250 | - + diff --git a/frontend/src/content/technologia-śrub_-wszystko-o-projektowaniu-połaczeń-śrobowych.md b/frontend/src/content/technologia-śrub_-wszystko-o-projektowaniu-połaczeń-śrobowych.md new file mode 100644 index 0000000..df3ba08 --- /dev/null +++ b/frontend/src/content/technologia-śrub_-wszystko-o-projektowaniu-połaczeń-śrobowych.md @@ -0,0 +1,863 @@ +--- +title: "Technologia Śrub: Wszystko o projektowaniu połaczeń śrobowych" +date: 2024-01-25 17:41:07 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-gwintowe", + "category_name": "Połączenia gwintowe" + } +] +--- + +### Czym jest śruba? + +* Główne cechy śruby. + + +### Wymiarowanie śruby – opis budowy śruby w rysunku technicznym. + + + +### Wymiarowanie i oznaczanie gwintu trójkątnego. + + + +### Śruba pasowana– charakterystyka i warunki projektowe. + +* Charakterystyka śruby pasowanej. +* Warunki projektowe. +* Oblicznia dla śruby pasowanej. + + +### Śruba luźna– charakterystyka i warunki projektowe. + +* Charakterystyka śruby luźnej. +* Warunki projektowe. +* Wymiary otworu pod śrubę luźną. + + +### Śruby w szeregach. + +* Wpływ na wytrzymałość konstrukcji. +* Zastosowanie technologii komputerowych. + + +### Klasy śrub. + +* Normy. + + +### Zalecenia konstrukcyjne dla połączeń śrubowych. + + + +### Zniszczenia połączeń śrubowych. + + + +### Normy dla śrub. + +* ISO +* DIN +* ANSI +* BS +* JIS + + +### Zabezpieczenia połączeń śrubowych + + + +### Gdzie kupić śruby? + + + +## **Czym jest śruba?** + + +Śruba to element złączny, który jest używany do trwałego łączenia dwóch lub +więcej elementów razem. Jest to wąski zazwyczaj metalowy (może być także z +innych materiałów) pręt z gwintem na całej jego długości. Śruby są jednymi z +najbardziej powszechnie stosowanych elementów złącznych w budownictwie, +inżynierii i wielu innych dziedzinach. + + +### **Główne cechy śruby:** + + +**Gwint śruby:** Śruby posiadają gwint na swojej powierzchni, co pozwala na +ich wkręcanie i wykręcanie z otworów lub nakrętkek. Gwint jest najważniejszym +elementem śruby, który umożliwia jej funkcję. + +**Głowa śruby:** Śruba ma zazwyczaj charakterystyczną główkę na jednym z jej +końców. Główka może mieć różne kształty, takie jak sześciokątna, okrągła, +płaska lub innego rodzaju w zależności od jej zastosowania. + +**Trzon/rdzeń śruby:** Jest to długi odcinek śruby między główką a końcem. +rdzeń śruby ma określoną długość i średnicę, wymiary te są istotne dla +zastosowania śruby. + +**Nakrętka:** Śruba często jest używana z nakrętką, która jest innym elementem +złącznym z gwintem, umożliwiającym jej zaciśnięcie po drugiej stronie i +wywołanie napięcia wstęnego. + + +## **Wymiarowanie śruby - opis budowy śruby w rysunku technicznym.** + + + + +D okładny rysunek śruby, rzadko stosowany w rysunku technicznym z uwagi na +zbyt dużą ilość detali. + +Rysunek umowny śruby, często stosowany w tysunku technicznym. + + +## **Wymiarowanie i oznaczanie gwintu trójkątnego.** + + +**dr -** średnica rdzenia/trzonu gwintu + +**dp -** średnica podziałowa gwintu (dzieli gwint na dwie równie zapełnione i +puste powierzchnie w przekroju) + +**drzecz-** średnica rzeczywista - uwzględniająca zaokrąglenie rantu + +**d,dM -** średnica nominalna gwintu np. M8 - d=8mm + +**d0 -** średnica otworu pod śrubę + +**h,p,P -** skok gwintu - nie mylić z podziałką + +**Do -** maksymalna średnica działowa śruby lub nakrętki - maksymalna średnica +stykająca powierzchnię śruby z powierzchnią blachy + +**do -** średnica otworu pod śrubę + + +## **Śruba pasowana– charakterystyka i warunki projektowe** + + +**Śruba pasowana** – to rodzaj śruby, w której obciążenia przenoszone są +bezpośrednio przez jej korpus. Śruba pasowana inaczej nazywana także śrubą +nośną stanowi kluczowy element w wielu konstrukcjach maszynowych i urządzeń. +Jest to specyficzny typ śruby, który jest projektowany do ściśle określonych +zastosowań, gdzie wymagana jest precyzja i niezawodność. W tym artykule +przyjrzymy się charakterystyce śruby pasowanej, jej warunkom projektowym oraz +podstawom obliczeń niezbędnych do jej prawidłowego zaprojektowania. + +**Charakterystyka śruby pasowanej:** śruba pasowana różni się od standardowych +śrub ze względu na swoje szczególne wymiary i tolerancje. Są one zazwyczaj +stosowane w połączeniach wymagających wysokiej precyzji i dużych obciążeń na +ścinanie. Kluczowe jest tu zapewnienie odpowiedniego dopasowania, które +gwarantuje stabilność i minimalizuje ryzyko luzu. + +**Warunki projektowe śruby pasowanej:** projektując połączenie z śrubą +pasowaną, należy uwzględnić szereg czynników, takich jak rodzaj obciążenia +(statyczne, dynamiczne), warunki środowiskowe, rodzaj materiałów używanych w +połączeniu, oraz wymagania specyficzne dla danej aplikacji. Wymiary i +tolerancje śrub pasowanych są ściśle określone i muszą spełniać normy +przemysłowe. + +**Podsumowanie:** śruba pasowana to element łączący, który wymaga dokładnego +projektowania i precyzyjnych obliczeń. Jej odpowiednie zaprojektowanie i +wykonanie jest kluczowe dla zapewnienia trwałości i niezawodności w +krytycznych zastosowaniach. Mając na uwadze powyższe wskazówki oraz +uwzględniając wszystkie warunki projektowe, możliwe jest stworzenie połączeń +wysokiej jakości, które spełnią wszystkie oczekiwania użytkowników. + + +### **Oblicznia dla śruby pasowanej:** + + +**Obliczenia:** Obliczenia dla śruby pasowanej obejmują analizę naprężeń, +wytrzymałość na ścinanie, momenty skręcające oraz obciążenie osiowe. Ważne +jest, aby uwzględnić wszystkie czynniki wpływające na wytrzymałość połączenia, +w tym właściwości materiałowe i geometrię śruby. Stosowanie odpowiednich +wzorów i metod obliczeniowych jest kluczowe dla zapewnienia bezpieczeństwa i +niezawodności połączenia. Poniżej znajdują się podstawowe równania opisujące +wytrzymałość śruby. + +Naciski na boku śruby nośnej : + +![](https://izaac.pl/wp-content/uploads/2022/01/n13.png) + +gdzie: + +p - naprężenia + +Q - naciski + +A - pole powierzchni przekroju poprzecznego śruby + +Naprężenia styczne ścinające: + +![](https://izaac.pl/wp-content/uploads/2022/01/n14.png) + +gdzie: + +d - średnica części pasowanej śruby + + +## **Śruba luźna– charakterystyka i warunki projektowe** + + +Rysunek przedstawiający schemat obciążenia śruby luźnej. + +**Śruba luźna** \- jest śrubą którą trzeba napiąć, tj. przyłożyć siłę za +pomocą nakrętki tak, aby ściskała elementy łączone. Śruba nie przenosi +obciążeń bezpośrednio, a jedynie powoduje siłę normalną na powierzchniach +łączonych generując siłę tarcia, która zapewnia styczność powierzchni i +pozwala przenosić obciążenia. W takim przypadku kryterium wytrzymałościowym, +nie jest wytrzymałość śruby sama w sobie a jedynie moment w którym siły +obciążeń przekraczają siły tarcia. Zniszczenie połączenia następuje więc w +momencie skasowania luzu. + +**Warunki projektowe:** projektując śrubę luźną, należy uwzględnić szereg +czynników, takich jak rodzaj obciążenia (statyczne, dynamiczne), warunki +środowiskowe, rodzaj materiałów używanych w połączeniu, oraz wymagania +specyficzne dla danej aplikacji. Wymiary i tolerancje śrub luźnych są ściśle +określone i muszą spełniać normy przemysłowe. Jednak tolerancje położenia +wzajemnego otworów nie muszą być tak dokładne jak w przypadku śruby pasowanej, +gdyż śruba luźna nie przenosi bezpośrednio obciążeń, lecz zaciska ze sobą dwie +blachy wywierając siłę tarcia między nimi. Dodatkowym aspektem śrub luźnych +jest rozmiar otworu, gdyż nie może być zbyt duży – z uwagi na odpowiednie +wywarcie siły, oraz nie może być zbyt małe – gdyż śruba może nie wejść. + +Poniżej przedstawione zostały obliczenia na podstawowe na wytrzymałość śrub. + +Naprężenie rozrywające śrubę: + +![](https://izaac.pl/wp-content/uploads/2022/01/n15.png) + +gdzie: + +dr - średnica rdzenia śruby + +Pw - napięcie wstępne śurby + +Napięcie wstępne na śrubie to siła. + +Wawrunek wytrzymałościowy: + +![](https://izaac.pl/wp-content/uploads/2022/01/n16.png) + + + +**Wymiary otworu pod śrubę luźną :** + +Średnicę otworu d0 przyjmuje się: + +Gdy: + +dM < 24 mm → d0 = dM \+ 1mm + +gdy dM ≥ 24 mm → dM \+ 3mm + +Przy czym dM \- średnica nominalna gwintu + + +## **Rozstaw śrub, śruby w szeregach** + + +**Wpływ na wytrzymałość konstrukcji** : rozstaw śrub w szeregach i rzędach +należy projektować tak by odpowiednio dopasować odległości między nimi. Jest +to ważne ponieważ precyzyjne rozmieszczenie śrub jest kluczowe dla zapewnienia +odpowiedniej wytrzymałości i stabilności konstrukcji. W zależności od +obciążeń, jakie konstrukcja ma wytrzymać, śruby muszą być rozmieszczone w +sposób, który równomiernie rozkłada siły naprężające. + +**Zastosowanie technologii komputerowych** : współcześnie, do projektowania +rozstawu śrub wykorzystuje się zaawansowane oprogramowanie do modelowania +[FEM] CAD. Programy takie to między innymi Autodesk Inventor, NX, Ansys. W +tych programach śruby zazwyczaj modeluje sie jako elementy proste np. punkty +abstrakcyjne RBE2 i RBE3, a interakcję z materiałem blach lub elementów +łączonychh określa matematycznie przypisując obciążenia. + +Poniżej znajdziesz stosowane w praktyce rozstawy śrub zapewniające optymalne +rozłożenie obciążeń i naprężeń. + +**A** \- rozstaw śrub i odległości brzegowych + +**B** \- rozstaw śrub w układzie przestawionym + +**C** \- rozstaw śrub w układzie przestawionym w elementach ściskanych + +**p 1** ≤ 14 t oraz ≤ 200 mm + +**p 2** ≤ 14 t oraz ≤ 200 mm + +**D** \- rozstaw śrub w układzie przestawionym w elementach rozciąganych + +1 - szereg zewnętrzny **p 1,0** ≤ 14 t oraz ≤ 200 mm + +2 - szereg wewnętrzny **p 1,i** ≤ 14 t oraz ≤ 200 mm + +t - grubość cieńszej płyty + +Zazwyczaj do projektowania rozstawu śrub w szeregach korzysta się z wartości +minimalnych, zapewniających zwartą konstrukcję przy minimalizowaniu masy +elementów. Maksymalne wartości są dowolne i ograniczone jedynie dla niekórych +przypadków np. przy występowaniu korozji w warunkach środowiskowych + +**Odległości i rozstawy** | Minimum | Maksimum +---|---|--- +Stal narażona na wpływy atmosferyczne lub korozje | Stal nienarażona na wpływy atmosferyczne lub korozje | Stal stosowana bez zabezpieczeń +**Odległość czołowa e 1** | 1,2d0 | 4t +40mm | | Wartość mniejsza niż 8t lub 125mm +**Odległość boczna e 2** | 1,2 d0 | 4t +40mm | | Wartość mniejsza niż 8t lub 125mm +**Odległość e 3 otworów owalnych** | 1,5 d0 | | | +**Odległość e 4 otworów owalnych** | 1,5 d0 | | | +**Rozstaw p 1** | 2,2 d0 | Wartość mniejsza niż 14t lub 200mm | Wartość mniejsza niż 14t lub 200mm | Wartość mniejsza niż 14t lub 175mm +**Rozstaw p 1,0** | | Wartość mniejsza niż 14t lub 200mm | | +**Rozstaw p 1,i** | | Wartość mniejsza niż 28t lub 200mm | | +**Rozstaw p 2** | 2,4 d0 | Wartość mniejsza niż 14t lub 200mm | Wartość mniejsza niż 14t lub 200mm | Wartość mniejsza niż 14t lub 175mm + + +## **Klasy śrub** + + +W śrubach znormalizowanych wprowadzone zostało pojęcie klasy śruby. Określa +ona naprężenia dopuszczalne na śrubie natomiast samo oznaczenie ma format X,Y, +można z niego odczytać Rm i Re. + +Najczęściej spotykane klasy śrub: 3.6, 4.6, 4.8, 5.6, 5.8, 6.6, 6.8, 8.8, +10.9, 12.9. + +Dla przykładu śruba klasy 8.8 ma Rm = 8 · 100 Mpa = 800 MPa natomist Re = 0,8 +· 800 MPa = 640 MPa. + +W zależności od klasy wytrzymałości śruby wykorzystuje się różne materiały i +warianty obróbki cieplnej dla danego materiału według konkretnej normy. + +**Normą specyfikującą parametry wytrzymałościowe dla śrub metrycznych jest +Norma ISO 898-1:** + +**ISO 898-1:** Norma specyfikuje właściwości mechaniczne śrub ze stali +węglowej i stopowej (z dodatkami B, Mn lub Cr, Mo) o średnicach gwintu od M1,6 +do M39. W szczególności, norma określa klasy wytrzymałościowe śrub, jak 8.8, +10.9, 12.9, gdzie pierwsza cyfra oznacza tak jak wyżej zostało przedstawione +1/100 minimalnej wytrzymałości na rozciąganie w megapaskalach (MPa), a druga +cyfra, pomnożona przez 10, oznacza stosunek granicy plastyczności do +minimalnej wytrzymałości na rozciąganie (np. dla klasy 8.8, minimalna +wytrzymałość na rozciąganie wynosi 800 MPa, a granica plastyczności stanowi +80% tej wartości) czyli 640 MPa. + +**A także normy ASTM (American Society for Testing and Materials):** + +**ASTM F568M:** Dotyczy śrub metrycznych i określa klasy wytrzymałościowe +takie jak 4.6, 5.8, 8.8, i 10.9. + +**ASTM A325 i A490:** Dotyczą śrub konstrukcyjnych o wysokiej wytrzymałości, +wykorzystywanych głównie w konstrukcjach stalowych. + +Poniżej podano przykłady metali i ich obróbki cieplnej dla danej klasy +wytrzymałościowej + + +### Tabela wytrzymałości śrub w zależności od klasy śruby + + +**klasa wytrzymałości** | **materiał i obróbka cieplna** +---|--- +**4.6** Rm = 400MPa Re = 240MPa | stal węglowa lub stal węglowa z dodatkami bez hartowania +**4.8** Rm = 400MPa Re = 320MPa | stal węglowa lub stal węglowa z dodatkami bez hartowania +**5.6** Rm = 500MPa Re = 300MPa | stal węglowa lub stal węglowa z dodatkami bez hartowania +**5.8** Rm = 500MPa Re = 400MPa | stal węglowa lub stal węglowa z dodatkami bez hartowania +**6.8** Rm = 600MPa Re = 480MPa | stal węglowa lub stal węglowa z dodatkami bez hartowania +**8.8** Rm = 800MPa Re = 640MPa | +* stal węglowa z dodatkami, hartowana i odpuszczona +* stal węglowa, hartowana i odpuszczona +* stal stopowa, hartowana i odpuszczona + + +**9.8** Rm = 900MPa Re = 720MPa | +* stal węglowa z dodatkami, hartowana i odpuszczona +* stal węglowa hartowana i odpuszczona +* stal stopowa, hartowana i odpuszczona + + +**10.9** Rm = 1000MPa Re = 900MPa | +* stal węglowa z dodatkami (, hartowana i odpuszczona +* stal węglowa hartowana i odpuszczona +* stal stopowa, hartowana i odpuszczona + + +**12.9 +** Rm = 1200MPa Re = 1080MPa | +* stal stopowa hartowana i odpuszczona, +* stal węglowa z dodatkami, hartowana i odpuszczona + + + + + +**Normy SAE (Society of Automotive Engineers):** + +**SAE J429:** Określa klasy wytrzymałościowe dla śrub stosowanych w +motoryzacji, takie jak Grade 2, 5, i 8. + +**Normą specyfikującą parametry wytrzymałościowe dla śrub nierdzewnych jest +Norma ISO 3506:** + +Do wspomnianych wcześniej stali węglowych należy także wspomnieć o istnieniu +Klas śrub dla śrub nierdzewnych i kwasoodpornych i są one określone w normie +**ISO 3506**. + +Najczęściej występujące śruby ze stali nierdzewnych to śruby o Klasie **A2** i +**A4**(stworzono je do pracy z kwasami). Śruby ze stali martenzytycznych i +ferrytycznych są rzadkością i raczej nie występują powszechnie na rynku. + +**Jak czytać oznaczenia na śrubach ze stali nierdzewnej?** + +Oznaczenie materiału śrub ze stali nierdzewnych (np. A4 -50) oznacza śrube +wykonaną z materiału A4 o wytrzymałość na rozciąganie 500MPa. + +Oznaczenie śrub nierdzewnych składa się z 2 członów, litery oznaczającej +rodzaj stali + +A - austenityczne + +wraz z cyfrą specyfikującej skład chemiczny (np. A4) oraz występujących po +myślniku 2 cyfr określających wytrzymałość na rozciąganie w MPa pomnożone +przez 0,1. + +Wybór między klasami A2 i A4 zależy od wymagań aplikacji, zwłaszcza od +środowiska, w którym elementy złączne będą eksploatowane. A4 są bardziej +odporne na środowiska kwasowe. + +**Klasa A1** : oznacza stal nierdzewną z niższą zawartością chromu w +porównaniu do stali dla śrub klasy A2. Jest mniej odporna na korozję i zwykle +stosowana w mniej wymagających środowiskach. Dla stali Klasy A1 możemy +wyróżnić klasy -50, -70 i -80 + +**Klasa A2** : to stal nierdzewna z dodatkiem chromu (18%) i niklu (8%), która +posiada numer 304. Potocznie zwana trzysta czwórką. Jest to jeden z +najczęściej używanych rodzajów stali nierdzewnej o dobrej odporności na +korozję w wielu środowiskach, z wyłączeniem chloru. Używana jest do przemysłu +chemicznego, sporzywczego i wyposarzenia wnętrz. Nie zaleca się stosowania w +środowisku kwasów nieutleniających i związków chloru (sól kuchena, woda +morska, baseny - do tych zastosowań lepiej użyć stali 316 - klasy śrub +nierdzewnych A4). + +**Klasa A3** : stal bardzo podobna do klasy A2 jednak z dodatkiem miedzi. +Stosowana tam, gdzie wymagana jest dodatkowa odporność na korozję zwłaszcza +przeciwko korozji międzykrystalicznej po spawaniu i wyżarzaniu. + +**Klasa A4** : to inaczej stal nierdzewna 316. Potocznie zwana trzysta +szesnastką lub stalą kwasoodporną/kwasówką. Zawiera dodatek 16% chromu, 10% +niklu i 2% molibdenu. Jest bardziej odporna na korozję niż jej poprzedniczki. +W przeciwieństwie do A2 i A3 stal 316 jest odporna na działanie chlorków, więc +znajduje zastosowanie w środowiskach morskich, chemicznych i branzy +spożywczej. + +**Klasa A5** : To stal nierdzewna z dodatkiem niklu, chromu i wyższą +zawartością molibdenu niż klasa A4. Stosowana w środowiskach bardzo +agresywnych. + +**Nakrętki dla śrub** są wykonywane w klasach: + +Dla stali klasy A - 25, -35, -40. + +Zastosowanie. + +Produkuje się także śruby ze stali żarowytrzymałych, żaroodpornych lub tytanu +i specjalnych stopów używanych w przemyśle kosmicznym. + +Norma której używa NASA dla połączeń gwintowych stosowanych w sprzęcie +lotniczym i kosmicznym to **NASA-STD-5020.** + + +## **Zalecenia konstrukcyjne dla połączeń śrubowych** + + + + + + +Poniżej przedstawione zostały zalecenia, porady jak należy projektować i na co +zwrócić uwagę przy projektowaniu połaczeń śrubowych a także czego należy +unikać. Do podstawowych zasad, można zaliczyć zwartość konstrukcji - tak aby +unikać zbyt dużych momentów działających na połaczenie, oraz dopasowania +miejsca pod klucz. Nawet najlepiej zaprojektowane pod kątem wytrzymałości +połączenie śrubowe będzie do niczego, jeśli nie da się zmieścić klucza, lub +zrobić otworu. + +**Zalecenie a, b** \- należy starać się sztywno związać części łączone. Im +dalej oddalona śruba od obciążenia, tym większe działają na nią momenty +poprzez ramię. Dodatkowo pozwala to zminimalizować koszty związane ze zużyciem +materiału. + +**Zalecenie c** \- połączenie musi zapewniać wygodne posługiwanie się kluczem, +tzn, tak aby można było podejśc do śruby prostopadle (aby klucz nie był pod +kątem względem osi śruby) oraz aby można było wykonać przynajmniej 60 stopni +obrotu klucza. Nie jest to warunek konieczny, lecz bardzo przydatny przy +montażu. + +**Zalecenie d** \- nalezy starać się aby został zapewniony wygodny dostęp +narzędzi przy wierceniu otworu pod śrubę lub gwintu. Wiertła/gwintowniki są +umieszczone we wrzecionie wiertarki/frezarki która zajmuje pewną obiętość +która może w trakcie wykonywania elementu kolidowac z materiałem elementu. + +**Zalecenie e** \- Przy projektowaniu elemntu z gwintem zewnętrznym i +wewnętrznym należy pamiętać, że musi zostać zapewnione swobodne wejście +narzędzia. Zarówno wykonanie gwintu tokarką jak i nażynką wymaga pewnego +podcięcia technologicznego na wyjście z maszyny. Normą charakteryzującą +podzięcie jest PN-EN ISO 18388:2020-03 specyfikująca podcięcia technologiczne +wałów. + +**Zalecenie f** \- ze względów technologicznych otwory przelotowe są +korzystniejsze niż otwory ślepe. + +**Zalecenie g, h** oraz **i** \- Pożądane jest małe pole styku o dużym +momencie bezwładności oraz symetryczne rozmieszczenie śrub wewnątrz pola +styku. + +**Zalecenie j, k** \- otwory powinny być wykonywane prostopadłe do powierzchni +ścianki. Takie zaprojektowanie pozwoli na wejście i wyjście wiertła bez +konieczności stosowania przejść miedzy operacjami aby wyfrezować pozostały +materiał. + +**Zalecenie l** \- należy uniknąć jednostronnej pracy wiertła. Zwiększa to +zuzycie wiertła, wprowadza niestabilności i wibracje przy wykonywaniu otworu +oraz negatywnie wpływa na jaego jakość i tolerancję wykonania. + +**Zalecenie m** i**n** \- należy przewidzieć specjalny feature centrujący. +Gwint słabo centruje, z uwagi na tolerancje wykonania. Taki zabieg dodatkowo +upraszcza kontrolę wymiarów. + +**Zalecenie p** \- przy dużej średnicy gwintu, która sprawia trudności +technologiczne korzystniejsze jest zastosowanie połączeń śrubowych po obwodzie +elementu. + + +## **Zniszczenia połączeń śrubowych** + + +Obciążone gwinty mogą ulec zniszczeniu. Aby zrozumiec jak unikać takvh +zniszczeń, poniżej przedstawamy przypadki najczęściej spotykane z opisem co +powoduje dane uszkodzenie. Zazwyczaj uszkodzenia połaczeń śrubowych występują +przez: +* nieodpowiednie dobranie klasy sruby +* nieodpowiednie umiejscowienie śruby w miejscu największych obciążeń +* złe użytkowanie maszyn, niezgodnie z zaleceniami producenta/konstuktora +* oraz zbyt duży/zbyt mały moment dokręcenia śruby + +**Prawdopodobne sposoby zniszczenia trzpienia śruby** + +Zerwanie się śruby – pod wpływem zbyt dużego napięcia. + +Ścięcie śruby pasowanej. + +Do uszkodzenia połączenia może dojść jednak nie tylko poprzez uszkodzenie +śruby samej w sobie, ale także w przypadku uszkodzenia otworu, lub materiału +łączonego, dlatego warto zwracać uwagę na owalizację otworów. + +**Schemat owalizacji i pęknięcia.** + +Źródła: +1\. European Cooperation for Space Standarization : Threaded fasteners +handbook + + +## **Normy dla śrub** + + +Śruby są elementami konstrukcyjnymi znormalizowanymi. To oznacza, że istnieje +szereg standardów określających ich wymiary i materiały. Co za tym idzie +charakteryzują ich gwint, skok gwintu, wymiary głów, trzpieni, średnicę. +Wszystkie prametry dobierane są tak, aby zapewniać spójny i jednoznaczny opis +śruby. Dla śrub znormalizowanych wytrzymałość liczy się zazwyczaj na podstawie +wytrzymałości rdzenia śruby, konsekwencją zastosowania normalizacji jest +zapewnienie, że jeśli rdzeń wytrzyma to zarys gwintu także. + +Poniżej przedstawione są najważnejsze normy stosowane w przemyśle + +**ISO (Międzynarodowa Organizacja Normalizacyjna):** + +**ISO 4014 i ISO 4017** \- norma dla śrub sześciokątnych. + +**ISO 4762** \- norma dla śrub imbusowych. + +**ISO 4032** \- dla nakrętek sześciokątnych. + +**ISO 4033** \- norma dla wysokich nakrętek sześciokątnych. + +**ISO 7046** \- śruby z łbem stożkowym z krzyżowym wgłębieniem. + +**ISO 7380** \- śruby z łbem kulistym. + +**ISO 10642** \- śruby z łbem zapadkowym. + +**DIN (Niemiecki Instytut Normalizacyjny):** + +**DIN 933 i DIN 931** \- dla śrub sześciokątnych. + +**DIN 912** \- dla śrub imbusowych. + +**DIN 7984** \- śruby z łbem cylindrycznym niskim z wewnętrznym sześciokątem. + +**DIN 7991** \- śruby z łbem stożkowym. + +**DIN 985** \- nakrętki samokontrujące z wkładką z tworzywa sztucznego. + +**DIN 6921** \- śruby sześciokątne z kołnierzem. + +**ANSI (Amerykański Narodowy Instytut Normalizacyjny) i ASME (Amerykańskie +Towarzystwo Inżynierów Mechaników):** + +**ANSI/ASME B1.1** \- ogólne normy gwintów. + +**ANSI/ASME B18.2.1** \- dla śrub sześciokątnych i kwadratowych. + +**ASME B18.2.3.1M** \- metryczne śruby sześciokątne. + +**ASME B18.2.3.5M** \- metryczne śruby z łbem stożkowym. + +**ASME B18.3** \- śruby z wewnętrznym sześciokątem (imbusowe). + +**BS (British Standards):** + +**BS 3692** \- dla precyzyjnych śrub sześciokątnych i nakrętek. + +**BS 1768** \- imperialne śruby sześciokątne. + +**BS 4168** \- metryczne śruby z wewnętrznym sześciokątem. + +**BS 4395** \- wysokowytrzymałe śruby sześciokątne z dużym średnicowym +pasowaniem. + + + +**JIS (Japoński Instytut Normalizacyjny):** + +**JIS B 1176** \- dla śrub sześciokątnych. + +**JIS B 1180** \- śruby sześciokątne i kwadratowe, śruby z kołnierzem. + +**JIS B 1194** \- nakrętki samokontrujące. + + +## Zabezpieczenia połączeń śrubowych + + + + +**Zabezpieczenia połączeń śrubowych – przed samo odkręcaniem się dla śrub +narażonych na drgania.** + +\- substancje anaerobowe (środki chemiczne twardniejące bez dostępu do tlenu. + + +### + +### + + + +### **Śruby zabezpieczone nierozłącznie.** + + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-zabezpieczona-nierozlacznie-spawana-nr-1.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-zabezpieczona-nierozlacznie-zapunktowana-nr-2-300x294.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-zabezpieczona-nierozlacznie-roznitowana-nr-3-300x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-zabezpieczona-nierozlacznie-odgieta-nr-4-295x300.png) +---|---|---|--- +spawana | zapunktowana | roznitowana | odgięta +---|---|---|--- + + + + +### + +### + + + +### **Nakrętki sprężyste** + + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-koronkowa-nakretka-sprezynujaca-nr-1-300x213.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-sprezynujaca-nr-2.png) | | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-jednozwojowa-zaciskajaca-sie-na-gwincie-nr-4.png) +---|---|---|--- +koronkowa nakrętka sprężynująca | nakrętka sprężynująca | | nakrętka jednozwojowa zaciskająca się na gwincie +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-z-pierscieniem-fibrowym-nr-5.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-z-pierscieniem-stalowym-zaciskanym-na-gwincie-nr-6.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-rozcieta-zaciskana-srubka-wzdluzna-nr-7.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-zabezpieczona-srubka-promieniowa-nr-8.png) +---|---|---|--- +nakrętka z pierścieniem fibrowym | nakrętka z pierścieniem stalowym zaciskanym na gwincie | nakrętka rozcięta zaciskana śrubką wzdłużną | nakrętka zabezpieczona śrubką promieniową +---|---|---|--- + + + + +### **Przeciwnakrętki** + + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.-net-zwykla-przeciwnakretka-nr-9-300x294.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-przeciwnakretka-sprezynujaca-nr-10.png) +---|--- +zwykła przeciwnakrętka | przeciwnakrętka sprężynująca +---|--- + + + +### **Zabezpieczenia cierne uzyskiwane przez zastosowanie specjalnych + +nakrętek** + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-przeciwnakretka-tloczona-z-blachy-nr-11-223x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-przeciwnakretka-stozkowa-rozcieta-nr-12.png) +---|--- +przeciwnakrętka tłoczona z blachy | przeciwnakrętka stożkowa rozcięta +---|--- + + +### + +### + + + +### **Podkładki sprężyste** + + +![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-a-300x163.png)![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-aa-300x213.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-b.png)![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-bb.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-c-300x174.png) ![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-cc.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-d.png)![](https://izaac.pl/wp-content/uploads/2022/01/nakretka-dd-300x216.png) +---|---|---|--- + + + +### + +### + + + +### **Zabezpieczenia cierne** + + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sprezyna-pod-sruba-266x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sprezyna-pod-lbem-207x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-rozciecie-trzpienia-sruby-pod-nakretka-201x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-rozciecie-konca-sruby-260x300.png) +---|---|---|--- +sprężyna pod śrubą | sprężyna pod łbem | rozcięcie trzpienia śruby nad nakrętką | rozcięcie końca śruby +---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-samogwintujaca-215x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-dociskowa-odksztalcajaca-powierzchnie-docisku-278x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-sruba-odksztalcajaca-pierwsze-zwoje-gwintu-263x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-przy-pomocy-srubki-z-lewym-gwintem-1-263x300.png) +---|---|---|--- +śruba samogwintująca | dociskowa odkształcająca powierzchnie docisku | odkształcająca pierwsze zwoje gwintu | zabezpieczenie przy pomocy śrubki z lewym gwintem +---|---|---|--- + + +### + +### + + + +### + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-nakretka-koronkowa-z-zawleczka-300x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-wkretow-drutem-300x239.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-wkretow-drutem-2-300x222.png) + +---|---|--- +nakrętka koronkowa z zawleczką | zabezpieczenie wkrętów drutem +---|--- + + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-czolowe-300x252.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-przy-pomocy-pierscienia-sprezystego-300x238.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-przy-pomocy-sprezynki-300x300.png) +---|---|--- +zabezpieczenie czołowe | zabezpieczenie przy pomocy pierścienia sprężystego | zabezpieczenie przy pomocy sprężynki +---|---|--- + + + +### + +### + + + +### + +### + + + +### **Podkładki odginane** + + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-podkladki-odginane-1-246x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-podkladki-odginane-2-244x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-podkladki-odginane-3-216x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-podkladki-odginane-4-223x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-podkladki-odginane-5-220x300.png) +---|---|---|---|--- +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-podkladka-ustalacjaca-212x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-sruby-od-obrotu-1-273x300.png) | ![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-sruby-od-obrotu-15-266x300.png)![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-zabezpieczenie-sruby-od-obrotu-2-300x294.png) +---|---|--- +podkładka ustalacjąca | zabezpieczenie śrób od obrotu +---|--- + + +## **Gdzie kupić śruby** + + + + +W Polsce istnieje wiele firm oferujących sprzedaż śrub i elementów złącznych. +Oto kilka znanych firm, które specjalizują się w tej dziedzinie: + +**Würth Polska** \- część międzynarodowej grupy Würth, znana z szerokiego +asortymentu śrub, nakrętek, elementów złącznych i narzędzi. + +**Koelner Rawlplug** \- Polska firma z bogatą ofertą produktów złącznych, +narzędzi montażowych i systemów mocowań. + +**Befaszczot** \- firma specjalizująca się w sprzedaży różnego rodzaju śrub, +wkrętów, narzędzi ręcznych i elektronarzędzi. + +**Mocowania.pl** \- sklep internetowy oferujący szeroki wybór elementów +złącznych, w tym śrub, nakrętek, wkrętów i kołków. + +**Bolt.pl** \- sklep online z bogatym asortymentem śrub, nakrętek, podkładek i +innych elementów złącznych. + +**NORM FASTENERS** \- firma oferująca szeroki zakres produktów złącznych, w +tym śruby standardowe i specjalistyczne. + +**ATM** \- polski dostawca elementów złącznych, oferujący śruby, nakrętki, +podkładki i wiele innych. + +**Fischer Polska** \- część międzynarodowej grupy Fischer, znana z oferty +produktów do mocowań technicznych i konstrukcyjnych. + +**Stanley Black & Decker Polska** \- oferuje szeroki wybór narzędzi i +akcesoriów, w tym elementy złączne. + +**Wkręt-met** \- polski producent i dostawca różnorodnych śrub, kołków i +innych elementów złącznych. + +**Berner Polska** \- część międzynarodowej grupy Berner, oferuje szeroki +asortyment produktów, w tym śruby, narzędzia i materiały eksploatacyjne dla +różnych branż. + +**Skręt-Met** \- Polski producent i dystrybutor szerokiej gamy śrub, nakrętek, +wkrętów i innych elementów złącznych. + +**Alfa-Tech Stal Jakościowa** \- firma oferująca produkty stalowe, w tym śruby +i elementy złączne, dostosowane do specyficznych wymagań klientów. + +**Leroy Merlin** \- choć znany głównie jako sklep budowlany, oferuje również +bogaty wybór śrub, wkrętów i innych elementów złącznych. + +**Castorama** \- inna popularna sieć sklepów DIY/budowlanych w Polsce, która +oferuje szeroki wybór produktów złącznych. + +**Rawlplug** \- firma specjalizująca się w rozwiązaniach mocowań technicznych, +w tym w oferowaniu różnego rodzaju śrub. + +**Maritex** \- firma oferująca szeroki zakres elementów złącznych, w tym +śruby, dla branży elektronicznej i elektrotechnicznej. + +**Bricoman** \- sklep budowlany z szerokim asortymentem elementów złącznych, w +tym śrub, nakrętek i wkrętów. + +**Avex Steel Products** \- specjalizuje się w sprzedaży elementów złącznych i +akcesoriów z metali, w tym śrub. + +**F.P.H.U. Bomet** \- firma oferująca szeroką gamę produktów złącznych, w tym +różne rodzaje śrub i nakrętek. + diff --git a/frontend/src/content/trygonometria.md b/frontend/src/content/trygonometria.md new file mode 100644 index 0000000..93c6c88 --- /dev/null +++ b/frontend/src/content/trygonometria.md @@ -0,0 +1,26 @@ +--- +title: "Trygonometria" +date: 2024-01-20 18:30:34 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "Pomoce inżynierskie" + } +] +--- + +## **Trygonometria** + + +**Definijce** + +**Zależność między kątami** + +α+β+γ=180° + +γ=90° + +α+β=90°→ α=90°-β, β= 90°-α + +**Zmienność funkcji trygonometrycznych** + diff --git a/frontend/src/content/wały-i-osie.md b/frontend/src/content/wały-i-osie.md new file mode 100644 index 0000000..0030a77 --- /dev/null +++ b/frontend/src/content/wały-i-osie.md @@ -0,0 +1,55 @@ +--- +title: "Wały i osie" +date: 2021-10-12 16:20:26 +--- +# [Podstawowe informacje o wałach i osiach](https://izaac.pl/inzynieria-mechaniczna/podstawowe-informacje-o-walach-i-osiach) + +**Czym jest wał i oś** – opis. + +**Podział wałów** – na jakie kategorie dzielą się wały. + +# [Projektowanie wałów](https://izaac.pl/inzynieria-mechaniczna/projektowanie-walow) + +**Funkcja wału** – Przenoszenie momentu obrotowego oraz podtrzymywanie +elementów maszyny. + +**Wyznaczenie minimalnych średnic wału** – Obliczenia zapewniające odpowiednią +wytrzymałość i sztywność. + +**Obrys wstępny wału na zarysie teoretycznym** – Wstępne szkicowanie kształtu +wału w oparciu o obciążenia i funkcje. + +**Podstawowe wymiarowanie wału** – Ustalenie średnic, długości i innych +parametrów geometrycznych. + +**Ustalenia szczegółowe** – Precyzyjne określenie detali konstrukcyjnych wału, +takich jak rowki czy miejsca łączeń. + +**Zapewnienie współpracy wału z innymi elementami maszyny** – Dopasowanie +wymiarów i funkcji do sąsiadujących komponentów. + +**Projektowanie wału ze względu na kryterium wytrzymałościowe** – +Uwzględnienie sił i momentów działających na wał. + +**Współczynnik redukcyjny dla obciążeń statycznych** – Parametr redukcyjny + +**Projektowanie wału ze względu na kryterium sztywności** – Zapewnienie +dopuszczalnych ugięć wału w trakcie pracy. + +**Obliczenia sztywności skrętnej wałów** – Analizy odporności na skręcanie pod +wpływem momentu obrotowego. + +**Statyczne wyważanie wału** – Zapewnienie równomiernego rozłożenia masy w +celu zmniejszenia drgań. + +**Dynamiczne wyważanie wału** – Korekta rozłożenia masy w ruchu obrotowym dla +zminimalizowania wibracji. + +**Unikanie ostrych karbów** – Zaokrąglanie krawędzi w celu zmniejszenia +koncentracji naprężeń. + +**Dobór odpowiedniego materiału na wały** – Wybór materiału odpornego na +obciążenia i zużycie w zależności od zastosowania. + +# **Wały i osie** + diff --git a/frontend/src/content/wały-wykorbione--dodatki.md b/frontend/src/content/wały-wykorbione--dodatki.md new file mode 100644 index 0000000..00a3ab1 --- /dev/null +++ b/frontend/src/content/wały-wykorbione--dodatki.md @@ -0,0 +1,28 @@ +--- +title: "Wały wykorbione- Dodatki" +date: 2022-03-04 17:44:29 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } +] +--- + + + +## **Wały wykorbione** + + + Wał wykorbiony jednolity z sześciocylindrowego silnika spalinowego , +widoczne (linia przerywana) kanały olejowe( tamtędy krąży olej w silniku w +celu chłodzenia). + +Fragment wału maszyny parowej ML8a, składany + +Dodatkowo wał można konstruować pod odlewanie z żeliwa + diff --git a/frontend/src/content/wpust-pryzmatyczny---połączenia-wpustowe.md b/frontend/src/content/wpust-pryzmatyczny---połączenia-wpustowe.md new file mode 100644 index 0000000..3578f11 --- /dev/null +++ b/frontend/src/content/wpust-pryzmatyczny---połączenia-wpustowe.md @@ -0,0 +1,401 @@ +--- +title: "Wpust pryzmatyczny - połączenia wpustowe" +date: 2025-01-03 18:48:31 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-z-wpustem-pryzmatycznym", + "category_name": "połączenia z wpustem pryzmatycznym" + } +] +--- + +### Co to połączenie wpustowe + +* ### Wpusty pryzmatyczne +* ### Wpusty czółenkowe/półokrągłe (owalne) + + +### Tabela wpustów w zależności od rozmiaru średnicy czopa wału. + + + +### Zalety i wady połączenia z wpustem pryzmatycznym + + + +### Pasowanie wpustów​ + + + +### Konstrukcyjne odmiany wpustów + +* ### Sposoby mocowania wpustu pryzmatycznego i czółenkowego do piasty + + +### Obliczenia wytrzymałościowe połączenia z wpustem pryzmatycznym + +* ### Obliczenia wytrzymałości wpustu pryzmatycznego +* ### Obliczenia wytrzymałości piasty + + +### + +## Wpust pryzmatyczny i czółenkowy – co to połączenie wpustowe + + + +### + +Połączenie wpustowe to połączenie rozłączne wału z piastą za pomocą + +elementu przenoszącego moment skręcający w postaci wpustu. Wpust pryzmatyczny +zazwyczaj jest wciskany bez luzu w specjalnie wykonanych na**[czopach +wałów](https://izaac.pl/inzynieria-mechaniczna/projektowanie-walow)** rowkach +wpustowych. Wystająca część wpustu pryzmatycznego lub czółenkowego wpasowywana +jest, bez bocznych luzów w podobnym rowku wykonanym na piaście. Jedyny luz to +luz promieniowy. Wpusty i ich kształt są w pełni znormalizowane i dobiera się +je na podstawie średnicy czopa. + +Główne rodzaje wpustów to: + + +### Wpust pryzmatyczny + + +**![](https://izaac.pl/wp-content/uploads/2022/02/45-300x227.png)** +* Mają prostokątny przekrój. +* Są najczęściej stosowane. +* Montowane w rowkach wykonanych zarówno na wałach, jak i w otworach piast. +* Zapewniają stabilne przenoszenie momentu obrotowego. + +Wpusty pryzmatyczne mogą być +* zaokrąglone pełne +* ścięte pełne +* zaokrąglone jednootworowe +* ścięte jednootworowe +* zaokrąglone dwuotworowe +* ścięte dwuotworowe +* pełne zaokrąglone +* jednostronnie zaokrąglone +* pełne wyciskowe +* zaokrąglone dwuotworowe +* wyciskowe ścięte +* dwuotworowe wyciskowe + + +### Wpusty czółenkowe/półokrągłe (owalne) + + + +### **![](https://izaac.pl/wp-content/uploads/2022/02/4-1-300x189.png)** + + + +* Mają półkolisty przekrój. +* Stosowane w aplikacjach dla połączeń walcowych i stożkowych. +* Stosowane do połączeń z niewielkim momentem obrotowym. + +Najczęściej spotykane na rynku wymiary wpustów pryzmatycznych i rowków w +zalezności od średnicy wału. + + +### Tabela wpustów pryzmatycznych w zależności od rozmiaru średnicy czopa wału + + +Średnica czopa wału d [mm] | b x h | b | h - Δ +---|---|---|--- +od | do | mm | Wymiar nominalny | **Tolerancja pasowania wpustu** | Wymiar nominalny | Odchyłka +6 | 8 | 2 x 2 | 2 | -0,006 - -0,031 | | +0,10 +8 | 10 | 3 x 3 | 3 | 1,4 +10 | 12 | 4 x 4 | 4 | -0,012 - -0,042 | 1,8 +12 | 17 | 5 x 5 | 5 | 2,3 +17 | 22 | 6 x 6 | 6 | 2,8 +22 | 30 | 8 x 7 | 8 | -0,015 - -0,051 | 3,3 | +0,2 0 +30 | 38 | 10 x 8 | 10 | 3,3 +38 | 44 | 12 x 8 | 12 | -0,018 - -0,061 | 3,3 +44 | 50 | 14 x 9 | 14 | 3,8 +50 | 58 | 16 x 10 | 16 | 4,3 +58 | 65 | 18 x 11 | 18 | 4,4 +65 | 75 | 20 x 12 | 20 | -0,022 - -0,074 | 4,9 +75 | 85 | 22 x 14 | 22 | 5,4 +85 | 95 | 25 x 14 | 25 | 5,4 +95 | 110 | 28 x 16 | 28 | 6,4 +110 | 130 | 32 x 18 | 32 | -0,026 - -0,088 | 7,4 +130 | 150 | 36 x 20 | 36 | 8,4 | +0,30 +150 | 170 | 40 x 22 | 40 | 9,4 +170 | 200 | 45 x 25 | 45 | 10,4 +200 | 230 | 50 x 28 | 50 | 11,4 +230 | 260 | 56 x 32 | 56 | -0,032 - -0,106 | 12,4 +260 | 290 | 63 x 32 | 63 | 12,4 +290 | 330 | 70 x 36 | 70 | 14,4 +330 | 380 | 80 x 40 | 80 | 15,4 +380 | 440 | 90 x 45 | 90 | -0,037 - -0,124 | 17,4 +440 | 500 | 100 x 50 | 100 | 19,5 + + +## Zalety i wady połączenia z wpustem pryzmatycznym + + + +### + +Wpust pryzmatyczny oferuje szereg zalet, takich jak łatwość montażu czy + +normalizacja kształtu, co czyni je wygodnym rozwiązaniem zarówno w produkcji +jednostkowej, jak i małoseryjnej. Niemniej jednak, warto także zwrócić uwagę +na ograniczenia tego typu połączenia, które mogą wpłynąć na jego efektywność w +specyficznych zastosowaniach. + +Poniżej przedstawiono szczegółowe zalety i wady połączenia z wpustem +pryzmatycznym, które pomogą lepiej zrozumieć jego właściwości i potencjalne +zastosowania. + + +### + + + +### Zalety wpustów pryzmatycznych + + +1\. Centrowanie piasty w czopie, + +2\. Łatwość montażu i demontażu, + +3\. Łatwość wykonania i produkcji (jednostkowej i małoseryjnej) + +4\. Normalizacja kształtu i pasowania + + +### Wady wpustów pryzmatycznych + + +1\. Osłabienie przekroju wału + +2\. Brak możliwości przenoszenia siły wzdłużnej + +3\. Brak zdolności do przenoszenia obciążeń zmiennych + + +## Pasowanie wpustów pryzmatycznych + + +Przykładowe opcje pasowań wpustów na zasadzie: + +**stałego otworu** + +![](https://izaac.pl/wp-content/uploads/2022/02/1.1.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/1.2.png) +---|--- + + +**na zasadzie stałego wałka** + +![](https://izaac.pl/wp-content/uploads/2022/02/1.3.png) | ![](https://izaac.pl/wp-content/uploads/2022/02/1.4.png) +---|--- + + +Użycie zasady stałego wałka pozwala nam na użycie takich samych wpustów bez +konieczności zamiany ich geometrii. Jedynie zmiany geometrii rowka wpustowego. +"Wałkiem" w naszym przypadku jest wpust. + +Wyróżnia się dwa główne rodzaje osadzeń wpustów: + +**spoczynkowe** – wpusty osadzone bez luzu na czopie i piaście, Wpusty zarówno +spoczynkowe jak i przesuwne nie zabezpieczają piasty przed przesunięciem w osi +wału – wzdłuż osi. + +W takim przypadku należy zabezpieczyć (ustalić) wzdłuż osi wału piastę. +pasowanie **h6/P9** dla piasty koła i wału. + +**przesuwne** – wpusty osadzone bez luzu na czopie i z luzem na powierzchniach +wzdłuż osi przesuwnej piasty. + +Pasowanie **h6/D10** dla piasty koła i h6/H9 dla wału. + + +## Konstrukcyjne odmiany wpustów + + +wpust pryzmatyczny zaokrąglony i sposób mocowania do wału | ![](https://izaac.pl/wp-content/uploads/2022/02/2-300x195.png) +---|--- +wpust pryzmatyczny ścięty dwuotworowy i sposób mocowania do wału | ![](https://izaac.pl/wp-content/uploads/2022/02/3-1-300x150.png) +wpust czółenkowy i sposób mocowania do wału | ![](https://izaac.pl/wp-content/uploads/2022/02/4-1-300x189.png) + + + + + + + + +### Sposoby mocowania wpustu pryzmatycznego i czółenkowego do piasty + + +wpust pryzmatyczny mocowany do wału z podcięciem wału | ![](https://izaac.pl/wp-content/uploads/2022/02/5-1-300x159.png) +---|--- +śrubą przykręcona do wpustu pryzmatycznego oparta na piaście o łbie okrągłym | ![](https://izaac.pl/wp-content/uploads/2022/02/6.png) +śrubą przykręconą do wpustu pryzmatycznego oparta na piaście o łbie stożkowym | ![](https://izaac.pl/wp-content/uploads/2022/02/7.png) +wpust pryzmatyczny zamocowany do piasty kołkiem | ![](https://izaac.pl/wp-content/uploads/2022/02/8.png) + + + +## Obliczenia wytrzymałościowe połączenia z wpustem pryzmatycznym + + + +### Obliczenia wytrzymałości wpustu pryzmatycznego + + +Aby poprawnie przeprowadzić proces obliczeniowy wpustu należy najpierw +zdefiniować co rozumiemy przez zniszczenie połączenia. Opcje są dwie, ulec +zniszczeniu może nasz wpust, lub piasta. Dla znormalizowanych wpustów nie +musimy przejmować się wałkiem. + +Jeśli naszym kryterium uszkodzenia połączenia jest uszkodzenie wpustu to +liczymy wytrzymałość takiego połączenia z warunku na **[dopuszczalne naciski +powierzchniowe p dop](https://izaac.pl/inzynieria-mechaniczna/podstawywytrzymalosci-materialow#5)** na boku w pustu. Warunkiem wyboru wpustu jest +obliczenie długości lo wpustu. + +Parametrem początkowym do rozpoczęcia obliczeń jest **[moment +skręcający](https://izaac.pl/inzynieria-mechaniczna/wytrzymalosc-narozciaganie-skrecanie-scianie-oraz-zginanie#3)** jaki ma przenieść nasz +element wpustowy: **Ms** + + + +**Poniżej przedstawiono schemat +przenoszenia[obciążeń](https://izaac.pl/inzynieria-mechaniczna/wytrzymaloscna-rozciaganie-skrecanie-scianie-oraz-zginanie) z wału na wpust. ** + +![](https://izaac.pl/wp-content/uploads/2022/02/10-300x278.png) + +![](https://izaac.pl/wp-content/uploads/2022/02/11-300x236.png) + +W przypadku podwójnego wpustu. + +![](https://izaac.pl/wp-content/uploads/2022/02/12-300x255.png) + +Gdzie: + +P-siłą wypadkowa działająca na boczną ścianę wpustu + +e-odległość między siłami z pary sił + +P' - siłą wypadkowa z nacisku na dno rowka wpustowego w czopie + +T-siła tarcia na bocznej powierzchni rowka w piaście - równa jest sile P' + +P''_1 - siła wypadkowa sił P' i P + +P''_2 - siła wypadkowa sił T i P + +M_1 - moment obracający wpust w rowku spowodowany parą sił wypadkowych + +M_2 - moment M_2 równoważący parę sił wypadkowych + +Momenty M_1 i M_2 równoważą się w przypadku gdy P'_1 i P''_2 są współosiowe + +Obciążenie wpustu można sprowadzić do siły N działającej na bok wpustu w jego +połowie. + +Wzór na wytrzymałość wpustu ze wzgledu na naciski powierzchniowe przyjmuje +postać: + +Gdzie: + +Ms - moment skręcający + +h - wysokośc wpustu + +d - średnica nominalna + +l - długość rzeczywista wpustu + +lo - długość obliczeniowa wpustu, dla wpustów pryzmatycznych + +człon (h/2*d/2) w mianowniku odpowiada polu boku osadzonego w piaście/wale +wpustu pryzmatycznego. Po połowie na stronę. + +Uproszczenia: + +-zaokrąglone boki wpustu nie przenoszą obciążeń - trochę przenoszą ale udajemy, że nie + +-siła wypadkowa N działająca na górny lub dolny fragment wpustu i tak działa w połowie, nigdy nie jest równo w połowie ale ponownie udajemy, że jest inaczej - żeby było nam łatwiej. + +-Rczopu=Rp + +-założenie, że wpust jest w połowie w czopie i w połowie w piaście + +-założenie, że naciski dopuszczalne czopa wału są większe niż piasty + +-wpust przylega na całej części linii powierzchni - w rzeczywistości poprzez siły jest lekko zukosowany + +Nie ma potrzeby sprawdzać wpustu z uwagi na naprężenia ścinające chyba, że +jest to wymagane. Jeśli tak to wzór na naprężenia ścinające przedstawiony jest +poniżej: + +Gdzie: + +[**x- współczynnik bezpieczeństwa**](https://izaac.pl/inzynieriamechaniczna/wspolczynniki-bezpieczenstwa) + +Pozostawienie naddatku materiału w przypadku stosowania połączeń wpustowych + +![](https://izaac.pl/wp-content/uploads/2022/02/6-2.png) + + +### Obliczenia wytrzymałości piasty pod wpust pryzmatyczny + + +Jeśli naszym kryterium uszkodzenia połączenia wpustowego jest jednak +uszkodzenie piasty (np. obawiamy się, że możemy uszkodzić koło zębate lub +cienki element który osadzamy) to liczymy wytrzymałość takiego połączenia z +warunku na dopuszczalne naciski powierzchniowe pdop na piaście. + +stosunek c_1 grubości piasty g_p , średnica czopa d + +**![](https://izaac.pl/wp-content/uploads/2022/01/3.png)** + +**![](https://izaac.pl/wp-content/uploads/2022/02/9-291x300.png)** + +Dla grubości czopa zależnego jedynie od momentu skręcającego + +![](https://izaac.pl/wp-content/uploads/2025/01/wzor-na-grubosc-piasty.jpg) + +Gdzie: + +k_s - dopuszczalne naprężenia przy skręcaniu + +Ostatecznie grubość piasty + +![](https://izaac.pl/wp-content/uploads/2025/01/zredukowany-wzror-na-grubosc- +piasty.jpg) + +Wprowadzając + +![](https://izaac.pl/wp-content/uploads/2022/01/7.png) + +gp - grubość piasty + +gm - grubość piasty w miejscu rowka + +Tablica wyznaczania grubości piasty, dla wstępnych analiz. Dla bardziej +zaawansowanych obliczeń polecamy stosowanie wzorów powyżej uwzględniających +dopuszczalne naprężenia przy skręcaniu dla konkretnego materiału. + +Połączenie czopa z materiału ST5 | Piasta żeliwna | Piasta stalowa lub ze staliwa +---|---|--- +| C | C ’ | C | C ’ +Wpustowe, klinowe, wzdłużne | 0,18-0,212 | 0,15-0,18 | 0,14-0,18 | 0,11-0,15 +Wtłaczane, skurczne, stożkowe cierne, | 0,21-0,30 | 0,21-0,30 | 0,18-0,26 | 0,18-0,26 +wielowypustowe | 0,14-0,18 | 0,12-0,15 | 0,12-0,16 | 0,10-0,14 + diff --git a/frontend/src/content/współczynnik-y-i-m-uszczelek-według-asme.md b/frontend/src/content/współczynnik-y-i-m-uszczelek-według-asme.md new file mode 100644 index 0000000..437478d --- /dev/null +++ b/frontend/src/content/współczynnik-y-i-m-uszczelek-według-asme.md @@ -0,0 +1,55 @@ +--- +title: "Współczynnik y i m uszczelek według ASME" +date: 2023-06-29 19:48:41 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Wartości współczynników m i y uszczelek** + + +Wartości współczynników m i y uszczelek dla najpopularniejszych materiałów +uszczelek są dostępne w normie ASME BPVC Sec VIII Div 1 w tabeli 2-5.1 + +m – współczynnik uszczelki - wartości współczynnika m uszczelki są używane +jako mnożnik do określenia niezbędnego obciążenia ściskającego uszczelki, aby +zachować szczelność, gdy uklad jest pod ciśnieniem + +y – minimalne obciążenie uszczelki, dla uszczelek gumowych = 0, Współczynnik y +uszczelki jest wymagany do obliczenia początkowego obciążenia uszczelki +wymaganego w warunkach temperatury atmosferycznej, gdy nie działa wewnętrzne +ciśnienie płynu. Jest wyrażane w jednostkach ciśnienia kPa + +Tablica wielkości współczynników m i y niektórych (orientacyjne wartości ) +uszczelek wykonanych z różnych materiałów. + +**Materiał Uszczelki** | **Współczynnik uszczelki (m)** | **Współczynnik - y (Kpa)** +---|---|--- +Typy samoenergetyzujące np. O-ringi, metaliczny C-ring, U-ring | 0 | 0 +**Blacha falista** | | +Miękkie aluminium | 2.5 | 20,000 +Miękka miedź lub mosiądz | 2.75 | 26,000 +Żelazo lub miękka stal | 3 | 31,000 +Monel lub 4%-6% chrom | 3.25 | 38,000 +Stal nierdzewna i stopy niklu np. inconel | 3.5 | 45,000 +**Metaliczna falista** | | +Miękkie aluminium | 2.75 | 26,000 +Miękka miedź lub mosiądz | 3 | 31,000 +Żelazo lub miękka stal | 3.25 | 38,000 +Monel lub 4%-6% chrom | 3.5 | 45,000 +Stal nierdzewna i stopy niklu np. inconel | 3.75 | 52,000 +**Płaska metalowa** | | +Miękkie aluminium | 4 | 61,000 +Miękka miedź lub mosiądz | 4.75 | 90,000 +Żelazo lub miękka stal | 5.5 | 124,000 +Monel lub 4%-6% chrom | 6 | 150,000 +Stal nierdzewna i stopy na bazie niklu np. inconel | 6.5 | 180,000 +**Pierścieniowe metalowe** | | +Żelazo lub miękka stal | 5.5 | 124,000 +Monel lub 4%-6% chrom | 6 | 150,000 +Stal nierdzewna i stopy na bazie niklu np. inconel | 6.5 | 180,000 + diff --git a/frontend/src/content/współczynniki-bezpieczeństwa.md b/frontend/src/content/współczynniki-bezpieczeństwa.md new file mode 100644 index 0000000..8b87f45 --- /dev/null +++ b/frontend/src/content/współczynniki-bezpieczeństwa.md @@ -0,0 +1,134 @@ +--- +title: "Współczynniki bezpieczeństwa" +date: 2023-08-14 11:38:54 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Współczynnik bezpieczeństwa dla konstrukcji** + + + +## Współczynnik bezpieczeństwa + + +Współczynnik bezpieczeństwa to liczba, która określa, jak bardzo obciążenie +lub naprężenie maksymalne może przekroczyć obciążenie lub naprężenie +dopuszczalne materiału, zanim dojdzie do awarii. Innymi słowy, jest to miara +redundancji projektu, która pokazuje, ile razy konstrukcja lub element może +wytrzymać więcej niż jego przewidywane maksymalne obciążenie. + +Współczynnik bezpieczeństwa jest stosowany w inżynierii , aby upewnić się, że +konstrukcja nie napotka niebezpiecznych obciążeń oraz daje margines błędu +wrazie gdyby konstrukcja musiała wytrzymać nie tylko typowe obciążenia, ale +również nieprzewidziane sytuacje, takie jak błędy w projektowaniu, +niedoskonałości materiałowe, błędy wykonawcze czy zmiany w sposobie +użytkowania. Pozwala to na uniknięcie katastrofalnych awarii, nawet jeśli +wystąpią nieprzewidziane okoliczności. + +Na przykład, jeśli współczynnik bezpieczeństwa wynosi 2, oznacza to, że +konstrukcja została zaprojektowana tak, aby wytrzymać dwa razy większe +obciążenie niż maksymalne obciążenie, które teoretycznie powinno wystąpić w +normalnych warunkach eksploatacji. Wartość współczynnika bezpieczeństwa jest +dobierana w zależności od wielu czynników, w tym od typu konstrukcji, rodzaju +obciążeń, niepewności związanych z materiałami i warunkami eksploatacyjnymi. +Jest to kluczowy element zapewnienia bezpieczeństwa i niezawodności każdego +projektu inżynierskiego. + +Ogólny wzór na współczynnik bezpieczeństwa X przyjmuje postać: + +**X = X1*X2*X3*X4** + + +## Składowe współczynnika bezpieczeństwa. + + +Współczynnik bezpieczeństwa w projektowaniu i inżynierii składa się z kilku +składowych, które razem mają na celu zabezpieczenie konstrukcji przed różnego +rodzaju nieprzewidzianymi zdarzeniami i zapewnienie, że konstrukcja będzie +bezpieczna przez cały okres swojego użytkowania. + + +### X1 - Współczynnik pewności informacji + + +**Inaczej zwana niepewnością modelowania** : Wiąże się z ograniczeniami metod +obliczeniowych i uproszczeniami stosowanymi podczas modelowania konstrukcji, +co może prowadzić do niedokładności w obliczeniach. + +1,1 przeprowadzone badania wytrzymałościowe materiału i zastosowanie ścisłej +metody obliczeniowej + +1,2-1,4 znany gatunek materiałów oraz zwykłe metory obliczeń + +1,5-2 obciążenia udarowe + + +### X2 - Współczynnik skutków zniszczenia części + + +**Inaczej zwana konsekcencjami awarii lub odpowiedzialności części:** Dotyczy +ona następstw jakie niesie za sobą uszkodzenie maszyny lub jej elemntów. Nie +wszystkie elementy w przypadku uszkodzenia skutkują złymi konsekwencjami. +Należy to uwzględnić w przypadku projektowania + +1,0-1,1 zatrzymanie maszyny + +1,1-1,2 uszkodzenie maszyny + +1,3-3,0 może spowodować wypadek + + +### X3 - Współczynnik jednorodności materiału + + +**Inaczej Niepewność materiałowa** : Obejmuje zmienność właściwości +materiałów, takich jak wytrzymałość, sprężystość czy gęstość. Materiały mogą +różnić się w zależności od partii produkcyjnej, procesu wytwarzania czy +warunków eksploatacji. + +1,0-1,05 Ścisła kontrola jednorodności mateirału po obróbce plastycznej ( +metody +rentgenowskie, ultradzwiękowe) + +1,1 Materiały kute, walcowane, ciągnione + +1,3 odlewy kokilowe, starannie wykonane połączenia spawane (automatycznie +lub ręcznie, ale kontrolowane metodą rentgenowską) + +1,4-1,7 Odlewy piaskowe, części hartowane, spawanie ecznie o prawidłowym +wyglądzie zewnętrznym + + +### X4 - Współczynnik pewności wymiarowej + + +**Inaczej niepewność geometryczna** : Dotyczy niedokładności wymiarów i +kształtu konstrukcji wynikających z procesu produkcji, montażu lub osiadania +konstrukcji. + +1,0-1,05 ścisła kontrola wymiarów każdego przedmiotu + +1,05-1,1 normalna kontrola metodą wyrywkową po obróbce skrawaniem + +1,1-1,15 pręty, profile walocwane, blachy, dokładne odlewy, elementy tłoczone + +1,5-2 Konstrukcje spawane odlewy (piaskowe), odkówki (ręczne) + +Dodatkowymi współczynnikami rzadziej stosowanymi w praktyce są +* **Zmiany w użytkowaniu** : Obejmuje zmiany w sposobie użytkowania konstrukcji, które mogą wpłynąć na obciążenia, np. zmiana przeznaczenia budynku, co może zwiększyć obciążenia na elementy konstrukcyjne. +* **Niepewność obciążenia** : Odnosi się do trudności w dokładnym przewidzeniu obciążeń, które będą działać na konstrukcję. Obejmuje to obciążenia stałe (np. ciężar własny), zmienne (np. obciążenie śniegiem, wiatrem) oraz ekstremalne (np. obciążenia sejsmiczne). +* **Błędy wykonawcze** : Odnosi się do potencjalnych błędów popełnianych podczas budowy lub montażu konstrukcji, które mogą wpływać na jej wytrzymałość i stabilność. +* **Zużycie i starzenie się materiałów** : Z czasem materiały mogą tracić na swoich właściwościach z powodu korozji, zmęczenia materiału, uszkodzeń mechanicznych czy wpływu warunków atmosferycznych. + +Wartości współczynników pozyskane z : Wytrzymałość Materiałów. I, Walczak Z., +Wyd. PG, Gdańsk 2000 + diff --git a/frontend/src/content/współczynniki-tarcia---połączenia-cierne-czopowe-cylindryczne-_-dodatki.md b/frontend/src/content/współczynniki-tarcia---połączenia-cierne-czopowe-cylindryczne-_-dodatki.md new file mode 100644 index 0000000..c2d04e3 --- /dev/null +++ b/frontend/src/content/współczynniki-tarcia---połączenia-cierne-czopowe-cylindryczne-_-dodatki.md @@ -0,0 +1,42 @@ +--- +title: "Współczynniki tarcia - Połączenia cierne czopowe cylindryczne – dodatki" +date: 2022-01-23 11:52:39 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-cierne-czop-cylinder", + "category_name": "połączenia cierne czop-cylinder" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + } +] +tags: ["tablica współczynników tarcia", "Wartości współczynników tarcia", "współczynniki tarcia"] +--- + +## **Wartości współczynników tarcia** + + + + + + +**Sposób montażu** | **wtłaczane** | **skurczowe** +---|---|--- +**Materiały elementów łączonych** | **Zastosowanie smaru** | **Wtłaczanie** **µ_w** | **Rozłączanie** **µ_r** | **obliczeniowe** **µ** | **Rozłącznie** **µ_r** | **Obliczeniowe** **µ** +**Stal – stal lub staliwo** | Na sucho | 0,6 - 0,22 | 0,08 - 0,20 | 0,08 | - | - +**Stal – stal lub staliwo** | - | - | - | - | 0,35 - 0,40 | 0,14 +**Stal – żeliwo** | - | 0,06 - 0,14 | 0,09 - 0,17 | 0,08 | 0,13 - 0,18 | 0,08 +**Stal – stopy miedzi** | Na sucho | 0,05 - 0,10 | 0,04 - 0,10 | 0,05 | 0,17 - 0,25 | 0,06 +**Stal – stopy lekkie** | Na sucho | 0,02 - 0,08 | 0,03 - 0,09 | 0,04 | 0,10 - 0,15 | 0,05 +Stal – tworzywa sztuczne | Na sucho | 0,54 | 0,33 | 0,30 | - | - + + diff --git a/frontend/src/content/wytrzymałość-materiałów.md b/frontend/src/content/wytrzymałość-materiałów.md new file mode 100644 index 0000000..fcd2ef8 --- /dev/null +++ b/frontend/src/content/wytrzymałość-materiałów.md @@ -0,0 +1,115 @@ +--- +title: "Wytrzymałość materiałów" +date: 2021-10-12 16:20:41 +--- +## [Podstawowe informacje na temat wytrzymałości materiałów i wszystko o +naprężeniach](https://izaac.pl/inzynieria-mechaniczna/podstawowe-informacje- +na-temat-wytrzymalosci-materialow-i-wszystko-o-naprezeniach) + +W powyższym rozdziale przedstawiającym podstawowe informacje możesz znaleźć +wiadomości na temat + +**Wytrzymałość materiałów** \- wyjasnienie czym jest wytrzymałość materiałów + +**Stany naprężeń** \- naprężenia jedno dwu i trzy osiowe + +**Obciążenia** \- czym są i jak je dzielimy + +**Odkształcenie** \- definicja i obliczenia + +**Naprężenie** \- definicja i obliczenia + +**Spiętrzenie naprężeń** \- równania i spętrzenie naprężeń dla otworu + +**Analiza naprężeń i odkształceń** \- analiza naprężeń w różnych stanach\ + +**Koło Mohra** \- Czym jest i jak rysować krok po kroku + + + +## [Modelowanie materiałów czyli - Teoria sprężystości, próby statyczne +rozciągania i modły sprężystości w wytrzymałości +materiałów](https://izaac.pl/inzynieria-mechaniczna/teoria-sprezystosci-proby- +statyczne-rozciagania-i-modly-sprezystosci-w-wytrzymalosci-materialow) + +**Związki konstytutywne** \- podstawowe równania + +**Elementy teorii sprężystości** \- próby statyczne i opis wykresu rozciągania +z równaniami, granica plastyczności dla ścinania + +**Moduły sprężystości** \- Moduł Younga, Moduł Kirhoffa, Liczba Poissona + +**Właściwości wytrzymałościowe materiału i bazy materiałowe** \- opis baz +materiałowych, Baza S, Baza A (A-basis), Baza B (A-basis) + + + +## [Podstawowe rodzaje obciążeń w konstrukcji +maszyn](https://izaac.pl/inzynieria-mechaniczna/podstawowe-rodzaje-obciazen-w- +konstrukcji-maszyn) + +**Rozciąganie** \- równania, naprężenia dopuszczalne a rozciąganie, gięcie, +ścinanie + +**Skręcanie prętów** \- o przekroju kołowym, prostokątnym, naprężenia i +odkształcenie + +**Zginanie** \- Pozdrawy i rozkład składowych + +**Umowy dotyczące znaków** \- +/- + + + +## [Obliczenia belek zginanych, skręcanych i ściskanych, rozkłady naprężeń w +belkach, wyboczenie prętów](https://izaac.pl/inzynieria- +mechaniczna/obliczenia-belek-zginanych-skrecanych-i-sciskanych-rozklady- +naprezen-w-belkach-wyboczenie-pretow) + +**Schemat belki** \- obliczenia z objaśnieniami + +**Rozkład naprężeń tnących** \- w przekroju kołowym, w przekroju prostokątnym + +Układy statycznie niewyznaczalne \- równania i przykład + +**Hipotezy wytrzymałościowe** \- Hipoteza Hubera-Von Missesa + +**Wyboczenie prętów** \- objaśnienie i równania + + + +**Wytrzymałość materiałów** to jedna z podstawowych dyscyplin inżynierii, +koncentrująca się na analizie sił i ich wpływu na różnego rodzaju materiały i +struktury. Jest to niezbędna wiedza umożliwiająca projektowanie i budowę +bezpiecznych, wydajnych oraz trwałych konstrukcji i elementów maszyn. +Rozumienie zachowania materiałów pod wpływem obciążeń jest istotne w wielu +dziedzinach, od budownictwa po lotnictwo czy kosmonautykę, i pozwala uniknąć +awarii oraz zwiększać trwałość i niezawodność projektowanych rozwiązań. + +Wytrzymałośc materiałów jest kluczowa z uwagi na przewidywalność obciążenia +oraz uwzględnianie dzięki temu nieoczekiwane sytuacje - dzięki współczynnikom +bezpieczeństwa. Dzięki tej wiedzy można również optymalizować użycie +materiałów, co przekłada się na oszczędności. + +Przykłady zastosowania wytrzymałości materiałów są wszechobecne w naszym +codziennym życiu. Oto kilka z nich: + +**Budownictwo** : Wytrzymałość materiałów pozwala na projektowanie trwałych +budynków, mostów, tuneli czy tam, zdolnych wytrzymać obciążenia takie jak +ciężar własny, obciążenie użytkowe, wiatr czy trzęsienia ziemi. + +**Mechanika** : W projektowaniu pojazdów, od samochodów po rakiety, +wytrzymałość materiałów jest wykorzystywana do zapewnienia bezpieczeństwa i +trwałości, a także do optymalizacji masy i efektywności. + +**Medycyna** : W inżynierii biomedycznej wytrzymałość materiałów ma kluczowe +znaczenie przy projektowaniu implantów, protez, a nawet zaawansowanych +urządzeń medycznych. Istotna jest biokompatybilność i obciążenia wynikające z +dynamiki ruchu. + +Nowoczesne rozwiązania, takie jak nanomateriały czy inteligentne materiały, +otwierają nowe perspektywy dla wytrzymałości materiałów. Innowacje te znajdują +zastosowanie w najnowocześniejszych dziedzinach, takich jak kosmonautyka czy +nanotechnologie. + + + diff --git a/frontend/src/content/wytrzymałość-na-rozciąganie_-skręcanie_-ścianie-oraz-zginanie.md b/frontend/src/content/wytrzymałość-na-rozciąganie_-skręcanie_-ścianie-oraz-zginanie.md new file mode 100644 index 0000000..d9e5142 --- /dev/null +++ b/frontend/src/content/wytrzymałość-na-rozciąganie_-skręcanie_-ścianie-oraz-zginanie.md @@ -0,0 +1,454 @@ +--- +title: "Wytrzymałość na rozciąganie, skręcanie, ścianie oraz zginanie" +date: 2024-02-29 21:33:53 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wytrzymałość-materiałów", + "category_name": "Wytrzymałość materiałów" + } +] +--- + +### Wytrzymałość na rozciąganie w wytrzymałości materiałów i zasada + +superpozycji +* ##### Naprężenie rozciągające +* ##### Odkształcenie rozciągające +* ##### Statyczna próba rozciągania +* ##### Wytrzymałość na rozciąganie +* ##### Zasada superpozycji + + +### Ścinanie w wytrzymałości materiałów + +* ##### Dla przekroju prostokątnego +* ##### Dla przekroju kołowego + + +### Skręcanie w wytrzymałości materiałów + +* ##### Odkształcenia w pręcie skręcanym +* ##### Naprężenia maksymalne przy skręcaniu pręta +* ##### Kąt skręcania pręta skręcanego +* ##### Skręcanie prętów o przekroju prostokątnym + + +### Zginanie w wytrzymałości materiałów + + + +### Umowy dotyczące znaków w wytrzymałości materiałów + +* ##### Umowna konwencja znaków dla rozciągania i ściskania +* ##### Umowna konwencja znaków dla zginania +* ##### Umowna konwencja znaków dla skręcania + +Wytrzymałość materiałów jest kluczowym aspektem w dziedzinie inżynierii, +mającym zasadnicze znaczenie dla zapewnienia bezpieczeństwa i trwałości +różnorodnych konstrukcji, od prostych narzędzi codziennego użytku po +zaawansowane systemy inżynieryjne. Wytrzymałość na rozciąganie, ściskanie, +skręcanie czy zginanie to kluczowe właściwości mechaniczne, odgrywające +zasadniczą rolę w analizie i projektowaniu elementów konstrukcyjnych. Jest to +zdolność materiału do opierania się działaniu sił zewnętrznych bez +uszkodzenia, nieodwracalnej deformacji czy złamania, co jest niezbędne dla +utrzymania integralności strukturalnej podczas użytkowania. + +Zrozumienie, jak materiały reagują na różnorodne rodzaje obciążeń – +rozciąganie, skręcanie, ściskanie oraz zginanie – jest kluczowe dla każdego +projektanta i inżyniera. Wytrzymałość na rozciąganie definiuje się jako opór +materiału wobec sił działających na jego rozciągnięcie wzdłuż osi, co ma +bezpośredni wpływ na wybór materiałów dla takich elementów jak liny czy belki. +Z kolei skręcanie dotyczy zdolności materiału do wytrzymywania torsji, a +ściskanie odnosi się do jego odporności na siły redukujące jego wymiary. +Zginanie, natomiast, jest związane z reakcją materiału na siły zewnętrzne +próbujące zmienić jego kształt poprzez zakrzywienie. + +Niewłaściwe zrozumienie tych właściwości może prowadzić do poważnych awarii +konstrukcyjnych, zagrażając bezpieczeństwu ludzi i majątku. Przykładowo, +nieadekwatna wytrzymałość na rozciąganie w elementach nośnych może skutkować +ich pęknięciem pod obciążeniem, co może prowadzić do katastrofalnych +konsekwencji, jak zawalenie się konstrukcji. + +Badania nad wytrzymałością materiałów rozpoczęły się wieki temu, kiedy to bez +współczesnych narzędzi analitycznych starożytni budowniczowie musieli polegać +na obserwacji i doświadczeniu, by wybierać materiały odpowiednie dla swoich +konstrukcji. Dziś, dzięki postępowi naukowemu i technologicznemu, inżynierowie +dysponują zaawansowanymi metodami analizy i symulacji, które umożliwiają +precyzyjne przewidywanie zachowania materiałów pod wpływem rozmaitych +obciążeń, co ma kluczowe znaczenie dla projektowania bezpiecznych i +niezawodnych konstrukcji. + + +## Wytrzymałość na rozciąganie w wytrzymałości materiałów i zasada + +superpozycji + +Rozciąganie w mechanice i wytrzymałości materiałów to proces, w którym +materiał jest poddawany działaniu sił zewnętrznych powodujących wydłużenie. +Jest to jedno z podstawowych rodzajów odkształcenia zaraz obok ściskania, +zginania, ścinania i skręcania. Jest on istotny gdyż rozciąganie i ściskanie +są najczęściej występującymi obciążeniami występującymi w konstrukcjach. Nawet +zginanie sprowadza się do rozciągania i ściskania "włókien" materiału względem +osi obojętnej. + +W trakcie rozciągania lub ściskania pręt zmienia swoją długość, która według +prawa Hooka zależnośc ta przybiera postać. Wielkość ta jest w pewnym zakresie +proporcjonalna zarówno dla ściskania jak i rozciągania. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.43-zmiana-dlugosci- +preta.jpg) + +Gdzie: + +**P** \- siła rozciągająca lub ściskająca + +**E** \- **Moduł Younga** (moduł sprężystości podłużnej) jest parametrem +opisującym zachowanie materiału pod wpływem naprężeń rozciągających. Wartość +modułu Younga określa stosunek naprężenia do odkształcenia w zakresie +sprężystym materiału, czyli tam, gdzie po usunięciu obciążenia materiał wraca +do swojego pierwotnego kształtu i rozmiaru. + +**F** – pole powierzchni rozciąganej lub ściskanej równe polu powierzchni +przekroju poprzecznego elementu rozciąganego lub ściskanego + +**L** \- długość pręta + +**ΔL** \- zmiana długości pręta + +Naprężenia występujące w pręcie przyjmują podstawową postać zgodnie z +poniższym wzorem + +![](https://izaac.pl/wp-content/uploads/2023/11/2.44-naprezenia.jpg) + +Gdzie : + +**![](https://izaac.pl/wp-content/uploads/2023/11/2.45.jpg)**| – **Naprężenie +rozciągające** jest zdefiniowane jako siła działająca na jednostkę powierzchni +przekroju materiału, zwykle wyrażane w mega paskalach (MPa). +---|--- +![](https://izaac.pl/wp-content/uploads/2023/11/2.46.jpg) | – **Odkształcenie rozciągające** jest zdefiniowane jako względna zmiana długości materiału pod wpływem siły wyrażone jako bezwymiarowa liczba lub procent. + + +Naprężenia rozciągające oznacza się zazwyczaj znakiem „+” natomiast ściskające +znakiem „-”. + + +### **Statyczna próba rozciągania w wytrzymałości na rozciąganie:** + + +Statyczna próba rozciągania dostarcza kluczowych informacji o zachowaniu +materiału w warunkach rozciągania. W celu pozyskania danych na temat +wytrzymałości na rozciąganie, przeprowadzane są testy Statycznej Próby +Rozciągania. Polega ona na rozciągnięciu znormalizowanego pręta, płytki lub +innego kształtu próbki o znanym przekroju oraz wyznaczeniu jego parametrów +kluczowych takich jak granica plastyczności **Re** lub wytrzymałości na +rozciąganie **Rm**. + +Wytrzymałość materiału na rozciąganie jest zależna od wielu czynników i jest +indywidualna dla każdego materiału. Zagłębiając się w czynniki wpływające na +tą wytrzymałość można wytypować dwa głowne czynniki takie jak skład materiału +i metody obróbki. Te dwa czynniki są uzaleznione od definicji składu +materiału, standardów według jakich ta obróbka przebiegała oraz przestrzegania +tych standardów. Przekłada się to wszystko na wielkość ziaren materiału, ich +ułożenie, kształt, czystość pierwiastkową, brak wtrąceń czyli jednorodność +materiału oraz formę w jakiej ten materiał jest przygotowany +(przygotówki/prefabrykaty) a także jakie obróbki przechodził w dalszym +procesie. Jak widać zależności wpływających na wytrzymałość na rozciąganie +jest dużo, dlatego bardzo ważna jest kontrola procesu. W przemyśle bardzo +ciężko jest znaleźć identyczny materiał z tego powodu [wprowadzono bazy +materiałowe A, B, S oraz baza typowa](https://izaac.pl/inzynieriamechaniczna/teoria-sprezystosci-proby-statyczne-rozciagania-i-modlysprezystosci-w-wytrzymalosci-materialow/#4) czyli bazy materiałów przy +założeniach, według których zakładamy jaką wartość realną wytrzymałości na +rozciąganie możemy się spodziewać. Bazy A i B są oceniane statystycznie na +podstawie prób materiałowych z materiałów dostępnych na rynku. + +Poniżej przedstawiono rysunek pokazujący wykresy będące wynikiem próby +rozciągania dla różnych materiałów. + +Metody przeprowadzania statycznej próby rozciągania opisane są w normach **PN- +EN ISO 6892-1:2020-05 oraz ASTM E8/E8M** + + +### **Wytrzymałość na rozciąganie** + + +**lub inaczej naprężenia dopuszczalne na rozciąganie** jest naprężeniem +maksymalnym, jakie materiał może wytrzymać w trakcie rozciągania bez jego +zniszczenia (zerwania). Jest to krytyczny parametr dla materiałów +konstrukcyjnych, określający ich zdolność do przenoszenia obciążeń bez +uszkodzenia. Wytrzymałość ta jest zwykle określana poprzez testy rozciągające, +podczas których próbka materiału jest rozciągana do momentu pęknięcia a +maksymalne naprężenie w momencie zerwania definiuje wytrzymałość materiału na +rozciąganie. Ograniczane sa przez współczynniki bezpieczeństwa ale także +czasami bywają ograniczane przez współczynniki projektowe. + +**Pmax = FRm** – siła maksymalna zrywająca próbkę o powierzchni **F** i +wytrzymałość na rozciąganie **Rm.** + +Konstrukcja nigdy nie może zostać tak mocno wytężona stąd też warunek. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.47-warunek- +wytrzymalosciowy.jpg) + +Gdzie : + +**Kr** – naprężenia dopuszczalne a rozciąganie. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.48-naprezenia-dopuszczalne- +a-rozciaganie.jpg) + +[**x** – współczynnik bezpieczeństwa (wartość +bezwymiarowa).](https://izaac.pl/inzynieria-mechaniczna/wspolczynnikibezpieczenstwa) + +W zależności od założonego warunku konstrukcyjnego, można także zastosować. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.49-naprezenia-dopuszczalne- +a-rozciaganie.jpg) + +Gdzie: + +**Re** – granica plastyczności. + +**W szczególnych przypadkach dla naprężeń dopuszczalnych** na rozciąganie +jeżeli nie mamy dostępu do dokładnych danych dla obciążeń statycznych można +przyjąć orientacyjne wartości naprężeń dopuszczalnych w zależności od rodzaju +obciążeń po kolei, rozciąganie, zginanie, ścinanie w tym skręcanie: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.50-naprezenia-dopuszczalne- +a-rozciaganie-orientacyjne-wartosci.jpg) + +Wartości służą jedynie do orientacyjnych obliczeń mających pokazać rząd +wiekości obciążeń i zagrożenia wynikające z obciążeń rozciągających. Nie +zaleca się stosować powyższych wartości dla konstrukcji odpowiedzialnych. + +**Zasada superpozycji** – jest jedną z podstawowych zasad stosowanych w +mechanice i wytrzymałości materiałów. Pozwala ona na analizę skomplikowanych +stanów naprężenia i odkształcenia w materiałach liniowo-sprężystych dla +zakresu sprężystego. Głosi ona, że całkowite naprężenie lub odkształcenie +elementu (próbki materiału np. pręta) złożone z wielu obciążeń prostych jest +sumą naprężeń lub odkształceń wynikających z tych obciążeń indywidualnie. +Pozwalająca rozbić jeden układ złożony, na przykład z wielu sił +rozciągających, na wiele układów prostych, które możemy matematycznie złożyć z +powrotem do układu początkowego. + +![](https://izaac.pl/wp-content/uploads/2023/11/1.19.jpg) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.51-wydluzenia.jpg) + +W takim razie złożenie (superpozycja) obu stron przy rozciąganiu prostym to +:![](https://izaac.pl/wp-content/uploads/2023/11/2.52-superpozycja- +wydluzen.jpg) + +**UWAGA Zasada superpozycji ma swoje ograniczenia, nie można jej używać kiedy +jedna siła zmienia charakter działania siły drugiej! Takim przypadkiem jest +np. WYBOCZENIE PRĘTA.** + +![](https://izaac.pl/wp-content/uploads/2023/11/1.20.jpg) + +Siła **P** nie tylko ściska pręt ale także powoduje jego zginanie + + +## Ścinanie + + +**Ścinanie w wytrzymałości** materiałów odnosi się do rodzaju obciążenia, +które powodowane jest siłami ścinającymi. Siły ścinające przy ścinaniu +powodują przesunięcie warstw materiału względem siebie w płaszczyznach +równoległych do kierunku działania siły. Przykładem pojawiania się naprężeń +ścinających jest np. przypadek gdy siły działają równolegle, ale w przeciwnych +kierunkach, na przeciwległe powierzchnie elementu. Taki przypadek występuje w +nitach, śrubach pasowanych, kołkach, a także w elementach konstrukcyjnych +poddanych działaniu sił poprzecznych. + +Wzór ogólny na naprężenia tnące w belce _ +_ + +_![](https://izaac.pl/wp-content/uploads/2023/11/2.81-wzor-ogolny-na- +naprezenia-tnace-w-belce.jpg)_ + +**Sy** – moment statyczny względem osi obojętnej + +_![](https://izaac.pl/wp-content/uploads/2023/11/2.82-moment-statyczny- +wzgledem-osi-obojetnej.jpg)_ + +**u** – odległość od osi obojętnej + +**F** – pole powierzchni prostokąta + +**by** – szerokość przekroju poprzecznego belki + +**Jz** – moment bezwładności całego przekroju względem osi obojętnej + +Dla przekroju prostokątnego + +![](https://izaac.pl/wp-content/uploads/2023/11/2.83.jpg) + +Gdy długośc belki jest dłuższa od średnicy w stosunku L>=5h lub L>=5d to +naprężenia gnące są dominujące i nie ma potrzeby sprawdzania naprężeń tnących. + +Dla przekroju kołowego: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.84-rozklad-naprezen-tnacych- +dla-przekroju-kolowego.jpg) + +Gdzie: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.85.jpg) + + +## Skręcanie w wytrzymałości materiałów + + +Skręcanie jest podstawowym rodzajem obciążenia materiałów oraz powodowane jest +przez momenty skręcające, które powodują powstanie naprężeń ścinających i +odkształcenia wzdłuż osi materiału. + +Poniżej przedstawiono schemat skręcania pręta o długości x. + +Założenie: w takcie skręcania dzieląc pręt na przekroje każdy ze skręcanych +przekrojów Δx pozostaje płaski. Nie jest to do końca prawdą, jednak dość +dobrym przybliżeniem. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.56-stosunek-naprezen-do- +promienia-preta-skrecanego.jpg) + +Odkształcenia w pręcie skręcanym: + +![](https://izaac.pl/wp-content/uploads/2023/11/2.57-Odksztalcenia-w-precie- +skrecanym.jpg) + +**G** \- moduł Kirhoffa. + + +### **Naprężenia maksymalne przy skręcaniu pręta:** ![](https://izaac.pl/wp- + +content/uploads/2023/11/2.58-maksymalne-naprezenia-skrecajace.jpg) + +![](https://izaac.pl/wp-content/uploads/2023/11/2.59-biegunowy-moment-bezwladnosci-przekroju.jpg) | – biegunowy moment bezwładności przekroju +---|--- + + +**Kąt skręcania pręta skręcanego:**![](https://izaac.pl/wp- +content/uploads/2023/11/2.60-Kat-skrecania.jpg) + +**Ms** – stały moment skręcający + +**l** \- długość wałka + + +### **Skręcanie prętów o przekroju prostokątnym.** + + +W przypadku skręcania pręta kwadratowego rozkład naprężeń wygląda trochę +inaczej niż w przypadku pręta okrągłego. + +**![](https://izaac.pl/wp-content/uploads/2023/11/1.24.jpg)** + +Zgodnie z hydrodynamiczną analogią naprężeń poniżej przedstawiono rysunek +rozkładu naprężeń w przekroju pręta skręcanego. + + + +**![](https://izaac.pl/wp-content/uploads/2023/11/1.24-1.jpg)** + + + + +### **Naprężenia maksymalne przy skręcaniu pręta prostokątnego/kwadratowego:** + + +![](https://izaac.pl/wp-content/uploads/2023/11/2.61-maksymalne-naprezenia-w- +precie-prostokatnym-z-uzyciem-wspolczynnikow-ksztaltu.jpg) + +**α** \- współczynnik kształtu + +![](https://izaac.pl/wp-content/uploads/2023/11/2.61-maksymalne-naprezenia-w- +precie-prostokatnym.jpg) + +Jednostkowy kąt skręcania pręta prostokątnego/kwadratowego. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.62-jednostkowy-kat- +skrecania.jpg) + +**β** \- współczynnik kształtu - pozyskiwany z tablic. + + +## Zginanie + + +Tak jak poprzednie przypadki zginanie jest jednym z podstawowych rodzajów +obciążenia i występuje gdy siła działa na materiał w sposób powodujący jego +zakrzywienie (wygięcie). Naprężenia wynikające z momentu zginającego są +rozłożone nieliniowo w przekroju poprzecznym elementu, co prowadzi do +powstania naprężeń rozciągających i ściskających, oddzielonych od siebie osią +obojętną, gdzie naprężenie teoretycznie nie występuje. + +Poniżej przedstawiono rozbicie momentu zginającego i siły wypadkowej na układ +sił prostych i momentów prostych tj. momentu zginającego i skręcającego. +Nazywane także czasem rzutowaniem **Momentu wypadkowego** i **Siły +wypadkowej** na belkę. Rozkładanie wypadkowych na składowe siły Tnące, +rozciągające, momenty gnące i skręcające. + +**T** \- siła tnąca. + +**N** \- siła rozciągająca. + +**Ms** \- moment skręcający, składowa momentu głównego. + +**Mg** – moment gnący, składowa momentu głównego. + +Jeśli na przekrój działają tylko momenty zginające, to mamy do czynienia z +czystym zginaniem. + +Rozważmy przypadek sił działających w jednej płaszczyźnie: + +**N** \- siła normalna będąca rzutem siły wypadkowej sił działających na część +odciętą przekrojem. + +**T** \- siła tnąca będąca rzutem na płaszczyznę przekroju wypadkowej sił +działających na część odciętą przekrojem. + +**Mg** – moment gnący będący sumą momentów względem środka ciężkości sił +działających na na część odciętą przekrojem. + + +### Naprężenia w pręcie zginanym + + +![](https://izaac.pl/wp-content/uploads/2023/11/1.32.jpg) + +Wskaźnik Wytrzymałości przekroju na zginanie w osi obojętnej zginania +przechodzącej przez oś z. + +![](https://izaac.pl/wp-content/uploads/2023/11/2.68-wskaznik-wytrzymalosci- +na-zginanie.jpg) + +J_z - Moment bezwładności przekroju w osi Z. + +y_max = 1/2h - jest najdalszym zginanym włóknem od osi obojętnej zginania + +Naprężenia zginające (mające charakter naprężeń rozciągających bądź +ściskających): + +![](https://izaac.pl/wp-content/uploads/2023/11/2.69-naprezenia-od-momentu- +gnacego.jpg)[Wskaźnik Wytrzymałości przekroju na +zginanie](https://izaac.pl/pomoce-inzynierskie/tabele-geometryczne) w osi +obojętnej zginania + +Gdzie k_g – naprężenia dopuszczalne na zginanie + + +## Umowy dotyczące znaków w wytrzymałości materiałów + + +Umowna konwencja znaków dla rozciągania i ściskania. + +Umowna konwencja znaków dla zginania. + +Umowna konwencja znaków dla skręcania. + +Można także zastosować zasadę prawej ręki. + diff --git a/frontend/src/content/wytrzymałość-zmęczeniowa-wału.md b/frontend/src/content/wytrzymałość-zmęczeniowa-wału.md new file mode 100644 index 0000000..1ca0a6c --- /dev/null +++ b/frontend/src/content/wytrzymałość-zmęczeniowa-wału.md @@ -0,0 +1,87 @@ +--- +title: "Wytrzymałość zmęczeniowa wału" +date: 2022-03-04 17:23:08 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "wały-i-osie", + "category_name": "Wały i osie" + } +] +--- + +## **Wytrzymałość zmęczeniowa wału** + + +Współczynnik spiętrzenia naprężeń: + +Określa stosunek wytrzymałości znormalizowanej próbki gładkiej do +wytrzymałości obliczanego elementu o określonych wymiarach i kształcie, o tym +samym materiale. + +W przypadku nagłej zaminy geometrii następuje zjawisko spiętrzenia naprężeń +![](https://izaac.pl/wp-content/uploads/2021/12/41-2.png). + +![](https://izaac.pl/wp-content/uploads/2021/12/42.png) | teoretyczny współczynnik spiętrzenia naprężeń, współczynnik kształtu +---|--- +Gdy dla materiału nieelastycznego | ![](https://izaac.pl/wp-content/uploads/2021/12/Przechwytywanie.png) | \- materiał ulegnie zniszczeniu +---|---|--- + + +Dla materiałów plastycznych: + +![](https://izaac.pl/wp-content/uploads/2021/12/45.png) | \- współczynnik wrażliwości materiału na działanie karbu +---|--- + + +Owe współczynniki wyznaczane są laboratoryjnie przez niszczenie próbek z +odpowiednimi karbami w odpowiednich warunkach z odpowiednim materiałem. + +**β g**\- współczynnik spiętrzenia naprężeń przy zginaniu + +**β s**\- współczynnik spiętrzenia naprężeń przy skręcaniu + +**ε** \- współczynnik poprawkowy wzmocnienia + +**ξ** \- współczynnik poprawkowy osłabienia + +Wyznaczanie współczynnika**β** - +* najpierw wyszukujemy współczynnik spiętrzenia naprężeń +* następnie w zależności od karbu uwzględniamy współczynnik poprawkowy +* w niektórych przypadkach współczynnik wymiarowy – uwzględniający średnicę wałka +* -na końcu, wyznaczamy współczynnik uwzględniający gładkość powierzchni + +Rzeczywiste współczynniki bezpieczeństwa: + +![](https://izaac.pl/wp-content/uploads/2021/12/46.png) | współczynnik bezpieczeństwa w odniesieniu do granicy wytrzymałości zmęczeniowej na zginanie obustronne +---|--- +![](https://izaac.pl/wp-content/uploads/2021/12/47.png) | współczynnik bezpieczeństwa w odniesieniu do granicy wytrzymałości zmęczeniowej na skręcanie obustronne +![](https://izaac.pl/wp-content/uploads/2021/12/48-1.png) | dla stałych obciążeń skręcających + +Dla obliczanego przekroju przy obciążeniach złożonych: + +![](https://izaac.pl/wp-content/uploads/2021/12/49-1.png) + +Dla rzadko występujących i krótko trwających szczytowych obciążeń – sprawdzamy +statyczną wytrzymałość wału przy szczytowym obciążeniu przyjmując: + +![](https://izaac.pl/wp-content/uploads/2021/12/50-1-300x75.png) + +**x-1,3-1,5** – przy bardzo dokładnych obliczeniach, jednorodnym materiale i +dokładnym wykonaniu + +**x-1,5-1,8** – przy przeciętnych warunkach pracy + +**x-1,8-2,5** – przy niezbyt dokładnych obliczeniach, dla przypadków +statycznie niewyznaczalnych, dla niekorzystnych warunków pracy, dla +odpowiedzialnych konstrukcji (zagrożenie zycia) + +![](https://izaac.pl/wp-content/uploads/2021/12/51.png) | składowe naprężeń zmiennych i stałych, przy zginaniu lub skręcaniu +---|--- +![](https://izaac.pl/wp-content/uploads/2021/12/52-1.png) | współczynniki przeliczeniowe naprężeń stałych na naprężenia zmienne +![](https://izaac.pl/wp-content/uploads/2021/12/53-1.png) | rzeczywiste współczynniki spiętrzenia naprężeń +![](https://izaac.pl/wp-content/uploads/2021/12/54-1.png) | wytrzymałości zmęczeniowe na zginanie obustronne i skręcanie + diff --git a/frontend/src/content/wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń.md b/frontend/src/content/wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń.md new file mode 100644 index 0000000..67ad87a --- /dev/null +++ b/frontend/src/content/wyznaczanie-długości-ze-względu-dopuszczalne-naciski-powierzchniowe---połączenia-wieloboczne---projektowanie-połączeń.md @@ -0,0 +1,93 @@ +--- +title: "Wyznaczanie długości ze względu dopuszczalne naciski powierzchniowe - Połączenia wieloboczne - projektowanie połączeń" +date: 2022-02-05 16:09:48 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "połączenia", + "category_name": "Połączenia" + }, + { + "category_id": "połączenia-czop-piasta", + "category_name": "Połączenia czop-piasta" + }, + { + "category_id": "połączenia-wieloboczne", + "category_name": "połączenia wieloboczne" + } +] +--- + +## **Wyznaczanie długości ze względu na dopuszczalne naciski powierzchniowe** + + + +### + +### + + + +### **Dla połączenia czworobocznego:** + + +Mechanizm przenoszenia obciążenia z czopa na piastę + +![](https://izaac.pl/wp-content/uploads/2022/02/27-300x285.png) + +Rozkład nacisków + +![](https://izaac.pl/wp-content/uploads/2022/02/25-171x300.png) + +Przypuszczalny rozkład nacisków na połączeniu z dużymi luzami + +![](https://izaac.pl/wp-content/uploads/2022/02/26-193x300.png) + + + +Maksymalny moment skręcający + +![](https://izaac.pl/wp-content/uploads/2022/01/1-2-300x57.png) + +bo - wymiar zarysu przekroju czopa + +p_dop - obciążenie dopuszczalne na boku ścianki + +Dla połączenia trójbocznego : + +![](https://izaac.pl/wp-content/uploads/2022/01/2-2-300x41.png) + +e - odległość między siłami zastępczymi P wynikającymi z rozkładu obciążeń + +P_dop - obciążenie punktowe (siła) dopuszczalna + +mimośrodowość percykloidy + +![](https://izaac.pl/wp-content/uploads/2022/02/23-300x144.png) + +**Orientacyjne wymiary połączeń trójbocznych :** + + + + + +Dla połączeń ruchowych i spoczynkowych | Tylko dla połączeń spoczynkowych +---|--- +M [mm] | e [mm] | D2 [mm] | D1 [mm] | m [mm] | e [mm] | D2 [mm] | D1 [mm] +14 | 0,8 | 15,6 | 12,4 | 22 | 0,8 | 23,6 | 20,4 +16 | 0,8 | 17,6 | 14,4 | 25 | 0,8 | 26,6 | 23,4 +18 | 0,8 | 19,6 | 16,4 | 28 | 0,8 | 29,6 | 26,4 +20 | 0,8 | 21,6 | 18,4 | 30 | 0,8 | 31,6 | 28,4 +25 | 1,2 | 24,4 | 19,6 | 32 | 1,2 | 34,4 | 29,6 +28 | 1,2 | 27,4 | 22,6 | 34 | 1,2 | 36,3 | 31,6 +30 | 1,2 | 30,4 | 25,6 | 36 | 1,2 | 38,4 | 33,6 +32 | 1,8 | 32,4 | 27,6 | 38 | 1,2 | 40,4 | 35,6 +34 | 1,8 | 35,6 | 28,4 | 40 | 1,2 | 42,4 | 37,6 +36 | 1,8 | 37,6 | 30,4 | 42 | 1,2 | 44,4 | 39,6 +38 | 1,8 | 39,6 | 32,4 | 45 | 1,2 | 47,4 | 42,6 +40 | 1,8 | 41,6 | 34,4 | 48 | 1,8 | 51,6 | 44,4 +| | | | | | | + diff --git a/frontend/src/content/wzory-i-wykresy-dla-zginania-belek-przy-stałym-obciążeniu.md b/frontend/src/content/wzory-i-wykresy-dla-zginania-belek-przy-stałym-obciążeniu.md new file mode 100644 index 0000000..d1451e8 --- /dev/null +++ b/frontend/src/content/wzory-i-wykresy-dla-zginania-belek-przy-stałym-obciążeniu.md @@ -0,0 +1,25 @@ +--- +title: "Wzory i wykresy dla zginania belek przy stałym obciążeniu" +date: 2023-01-14 15:19:22 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Tablice obciążeń belek z wykresami sił tnących i momentów + +gnących.** + + + +**T** \- siła tnąca +**Mg** \- moment gnący +**f** \- trzałka ugięcia +**θ** \- kąt linii ugięcia belki +**E** \- moduł Younga +**J** \- moment bezwładności względem osi obojętnej przy zginaniu** +** + diff --git a/frontend/src/content/zamiana-cala-angielskiego-na-milimetry.md b/frontend/src/content/zamiana-cala-angielskiego-na-milimetry.md new file mode 100644 index 0000000..dd4e5fe --- /dev/null +++ b/frontend/src/content/zamiana-cala-angielskiego-na-milimetry.md @@ -0,0 +1,39 @@ +--- +title: "Zamiana Cala angielskiego na milimetry" +date: 2022-11-19 20:27:01 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Zamiana Cala angielskiego na milimetry** + + +Tablica przeliczeń długości z cali angielskich na milimetry. 1’’=25,4mm +--- +**cal** | mm | **cal** | mm | **cal** | mm | **cal** | mm | **cal** | mm +**1/64** | 0,3969 | **33/64** | 13,097 | **1/32** | 0,7938 | **1/16** | 1,5875 | **0,01** | 0,254 +**3/64** | 1,1906 | **35/64** | 13,891 | **3/32** | 2,3813 | **3/16** | 4,7625 | **0,02** | 0,503 +**5/64** | 1,9814 | **37/64** | 14,684 | **5/32** | 3,9688 | **5/16** | 7,9375 | **0,04** | 1,016 +**7/64** | 2,7781 | **39/64** | 15,478 | **6/32** | 5,5563 | **7/16** | 11,113 | **0,05** | 1,270 + | | | | | | | | | +**9/64** | 3, 5719 | **41/64** | 16,272 | **9/32** | 7,1438 | **9/16** | 14,288 | **0,06** | 13524 +**11/64** | 4, 3656 | **43/64** | 17,066 | **11/32** | 8,7313 | **11/16** | 17,463 | **0,08** | 2,035 +**13/64** | 5,1594 | **45/64** | 17,859 | **13/32** | 10,319 | **13/16** | 20,638 | **0,1** | 2,540 +**15/64** | 5,9331 | **47/64** | 18,653 | **15/32** | 11,906 | **15/16** | 23,813 | **0,2** | 5,080 + | | | | | | | | | +**17/64** | 6,7469 | **49/64** | 19,447 | **17/32** | 13,494 | **1/8** | 3,1750 | **0,3** | 7,620 +**19/64** | 7,5406 | **51/64** | 20,241 | **19/32** | 15,081 | **3/8** | 9,5250 | **0,4** | 10,16 +**21/64** | 8,3344 | **53/64** | 21,034 | **21/32** | 16,669 | **5/8** | 15,875 | **0,5** | 12,70 +**23/64** | 9,1281 | **55/64** | 21,828 | **23/32** | 18,256 | **7/8** | 22,225 | **0,6** | 15,24 + | | | | | | | | | +**25/64** | 9,6219 | **57/64** | 22,622 | **25/32** | 19,844 | **1/4** | 6,3500 | **0,7** | 17,78 +**27/64** | 10,715 | **59/64** | 23,416 | **27/32** | 21,431 | **3/4** | 19,050 | **0,8** | 20,32 +**29/64** | 11,509 | **61/64** | 24,209 | **29/32** | 23,019 | **1/2** | 12,700 | **0,9** | 22,86 +**31/64** | 12,303 | **63/64** | 25,003 | **31/32** | 24,606 | **1** | 25,400 | **1,0** | 25,40 + | | | | | | | | | +1’’=25,4mm + diff --git a/frontend/src/content/zamiana-koni-mechanicznych-na-kilowaty-i-kilowatów-na-konie-mechaniczne.md b/frontend/src/content/zamiana-koni-mechanicznych-na-kilowaty-i-kilowatów-na-konie-mechaniczne.md new file mode 100644 index 0000000..742307a --- /dev/null +++ b/frontend/src/content/zamiana-koni-mechanicznych-na-kilowaty-i-kilowatów-na-konie-mechaniczne.md @@ -0,0 +1,42 @@ +--- +title: "Zamiana Koni Mechanicznych na Kilowaty i Kilowatów na Konie Mechaniczne" +date: 2022-11-19 20:17:06 +categories: [ + { + "category_id": "pomoce-inżynierskie", + "category_name": "pomoce inżynierskie" + } +] +--- + +## **Zamiana Koni Mechanicznych na Kilowaty** + + +Jedn. Dzies. | **0** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** | **9** +---|---|---|---|---|---|---|---|---|---|--- +**0** | - | 0,74 | 1,47 | 2,21 | 2,94 | 3,68 | 4,41 | 5,15 | 5,88 | 6,62 +**1** | 7,35 | 8,09 | 8,83 | 9,56 | 10,30 | 11,03 | 11,77 | 12,50 | 13,24 | 13,97 +**2** | 14,71 | 15,45 | 16,18 | 16,92 | 17,65 | 18,39 | 19,12 | 19,86 | 20,59 | 21,33 +**3** | 22,06 | 22,80 | 23,54 | 24,27 | 25,01 | 25,74 | 26,48 | 27,21 | 27,95 | 28,68 +**4** | 29,42 | 30,16 | 30,80 | 31,63 | 32,36 | 33,10 | 33,83 | 34,57 | 35,30 | 36,04 +**5** | 36,77 | 37,51 | 38,25 | 38,98 | 39,72 | 40,45 | 41,19 | 41,92 | 42,66 | 43,39 +**1 KM=0,735498749kW** + + +## **ZamianaKilowatów naKonie Mechaniczne** + + + +## + +Jedn. Dzies. | **0** | **1** | **2** | **3** | **4** | **5** | **6** | **7** | **8** | **9** + +---|---|---|---|---|---|---|---|---|---|--- +**0** | 0,00 | 1,36 | 2,72 | 4,08 | 5,44 | 6,80 | 8,16 | 9,52 | 10,88 | 12,24 +**1** | 13,60 | 14,96 | 16,32 | 17,68 | 19,03 | 20,39 | 21,75 | 23,11 | 24,47 | 25,83 +**2** | 27,19 | 28,55 | 29,91 | 31,27 | 32,63 | 33,99 | 35,35 | 36,71 | 38,07 | 39,43 +**3** | 40,79 | 42,15 | 43,51 | 44,87 | 46,23 | 47,59 | 48,95 | 50,31 | 51,67 | 53,03 +**4** | 54,38 | 55,74 | 57,10 | 58,46 | 59,82 | 61,18 | 62,54 | 63,90 | 65,26 | 66,62 +**5** | 67,98 | 69,34 | 70,70 | 72,06 | 73,42 | 74,78 | 76,14 | 77,50 | 78,86 | 80,22 +**1 kW=1,35962162KM** + diff --git a/frontend/src/content/zespoły-sprężyn---projektowanie-sprężyn.md b/frontend/src/content/zespoły-sprężyn---projektowanie-sprężyn.md new file mode 100644 index 0000000..5ef9643 --- /dev/null +++ b/frontend/src/content/zespoły-sprężyn---projektowanie-sprężyn.md @@ -0,0 +1,45 @@ +--- +title: "Zespoły sprężyn - Projektowanie sprężyn" +date: 2022-01-03 10:15:48 +categories: [ + { + "category_id": "elementy-podatne", + "category_name": "Elementy podatne" + }, + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + } +] +--- + +## **Zespoły Sprężyn** + + +**Układ szeregowy** + +Obciążenie poszczególnych sprężyn jest jednakowe i równe całkowitemu +obciążeniu + +Natomiast odkształcenie całkowite układu, równe jest sumom strzałek ugięcia +według wzoru + +Podatność układu + +**Układ równoległy** + +-jeżeli odkształcenia użyteczne wszystkich sprężyn są jednakowe – jeśli wszystkie sprężyny odkształciły się w takim samym stopniu. + +Zespół sprężyn współśrodkowych + +Strzałka ugięcia wynosi + +Obciążenie - równe jest sumie wszystkich obciążeń na poszczególnych sprężynach + +Sztywność : + +W przypadku współśrodkowego układu poleca się przyjmować : + +\- dla takiego warunku naprężenia osiągają równocześnie jendakowe wartości na +każdej sprężynie. + diff --git a/frontend/src/content/łożyskowanie-maszyn_-przewodnik-po-obliczeniach-i-praktyczne-wskazówki.md b/frontend/src/content/łożyskowanie-maszyn_-przewodnik-po-obliczeniach-i-praktyczne-wskazówki.md new file mode 100644 index 0000000..ce19ab7 --- /dev/null +++ b/frontend/src/content/łożyskowanie-maszyn_-przewodnik-po-obliczeniach-i-praktyczne-wskazówki.md @@ -0,0 +1,457 @@ +--- +title: "Łożyskowanie maszyn: Przewodnik po obliczeniach i praktyczne wskazówki" +date: 2024-12-07 16:10:17 +categories: [ + { + "category_id": "inżynieria-mechaniczna", + "category_name": "Inżynieria mechaniczna" + }, + { + "category_id": "łożyskowanie", + "category_name": "Łożyskowanie" + } +] +--- + +### Tarcie toczne + + + +### Dobór wymiarów łożysk + + + +### Prędkość graniczna łożysk + + + +### Schemat obliczeniowy trwałości łożysk + + + +### Trwałość łożysk + +* #### Trwałość łożysk tocznych dla n>10 obr/min +* #### Trwałość łożysk tocznych n ≤ 10 obr/min, stosuje się dla obliczeń statycznych + + +### Projektowanie łożysk skośnych + + + +### Napięcie wstępne łożysk skośnych + + + +### Zabudowa łożysk oraz luz roboczy + + + +## Czym jest łożyskowanie maszyn + + +**Łożyskowanie maszyn** \- to dziedzina inżynierii mechanicznej zajmująca się +doborem oraz zapewnieniem trwałości elementów umożliwiających płynny ruch +obrotowy wałów i innych podzespołów, minimalizując tarcie oraz zużycie +mechaniczne. + +Odpowiedni dobór łożysk wpływa na wydajność, trwałość i niezawodność urządzeń, +dlatego ich projektowanie uwzględnia parametry obciążenia, prędkości oraz +warunki pracy. W artykule omówimy podstawy dobru łożysk tocznych. Oporów +tocznych, metody doboru łożysk oraz praktyczne wskazówki dotyczące konserwacji +i obliczeń wytrzymałościowych. + + +## Tarcie toczne w łożyskowaniu maszyn + + +**Aby w pełni zrozumieć zasadę działania łożysk tocznych najlepiej zacząć od +początku, czyli od tarcia tocznego .** + +**Tarcie toczne** jest siłą spowodowaną nierównomiernym rozkładem nacisków, +która jest wynikiem odkształceń na powierzchni styku elementu tocznego i +elementu, po którym on się toczy. Nacisk wywołuje odkształcenie które powoduje +"górkę" przed obiektem toczącym się. Górka przeciwdziała sile P generując +moment siły. + +![](https://izaac.pl/wp-content/uploads/2022/01/zad-1.png) + +gdzie: + +**d** \- połowa średnicy (promień) elementu tocznego + +**f** \- współczynnik tarcia tocznego [m] - jest odległością występowania siły +przeciwdziałającej toczeniu się obiektu po powierzchni. + +**P** \- siła wywołująca ruch. + +Czasami używany jest współczynnik określany jako:![](https://izaac.pl/wp- +content/uploads/2022/01/zad-2.png) + +Dla łożyska tocznego, współczynnik tarcia określa się za pomocą pomiaru +momentu tarcia całego łożyska w stosunku do promienia czopa, na którym jest +osadzone. Tak więc: + +![](https://izaac.pl/wp-content/uploads/2022/01/zad-3.png) + + +## Dobór wymiarów łożysk tocznych + + +Dobór odpowiedniego łożyska tocznego dla zapewnienia niezawodnej i +długotrwałej pracy maszyn oraz urządzeń jest często jednym z najważniejszych +zagadnień przy projektowaniu maszyn. Poniżej przedstawiono uproszczony proces, +który pomoże w wyborze łożyska o odpowiednich wymiarach i parametrach. + +**1\. Określenie wymaganej trwałości łożyska** + +Trwałość godzinowa (**Lh**): Na początek należy ustalić, jak długo łożysko ma +pracować bezawaryjnie. Trwałość ta jest wyrażana w godzinach i zależy od +specyfiki aplikacji. Na przykład jeśli maszyna ma pracować 8 godzin dziennie +przez 5 lat, to wymagana trwałość wynosi![](https://izaac.pl/wp- +content/uploads/2024/11/lozyska-1.3.jpg)**2\. Dobiera się typ łożyska** + +Wybór zależy od charakteru obciążeń oraz warunków pracy. +* Łożyska kulkowe: Dobre dla wysokich prędkości i umiarkowanych obciążeń. +* Łożyska walcowe: Przenoszą duże obciążenia promieniowe, ale nie osiowe. +* Łożyska stożkowe: Przenoszą zarówno obciążenia promieniowe, jak i osiowe w jednym kierunku. +* Łożyska baryłkowe: Radzą sobie z dużymi obciążeniami i niewspółosiowością wału. + +Kryteria wyboru: +* Obciążenia promieniowe i osiowe. +* Prędkość obrotowa. +* Warunki środowiskowe (temperatura, zanieczyszczenia). +* Dostępna przestrzeń montażowa. + +**3\. Obliczenie obciążenia zastępczego i wymaganej nośności łożyska C/C0 +zgodnie zeschematem obliczeniowym trwałości łożysk.** + + + +**4\. Dla obliczonej nośności C/C0, oraz dla wyznaczonej średnicy czopa pod +łożyska, dobiera się łożysko o satysfakcjonujących wymiarach dla znanej +średnicy czopa wału.** + +Często średnica wału jest już określona przez konstrukcję maszyny. + +Dobór łożyska z katalogu: +* Korzystając z obliczonej nośności (C) i średnicy wału, wybieramy łożysko, które spełnia oba kryteria. + +Sprawdzamy wymiary łożyska: +* Średnica wewnętrzna (d): Musi odpowiadać średnicy wału. +* Średnica zewnętrzna (D) i szerokość (B): Muszą pasować do przestrzeni montażowej. + +Inne parametry: +* Warunki smarowania i uszczelnienia: Czy łożysko jest odpowiednie dla danych warunków pracy. + +Jeśli obciążenie zastępcze spełnia warunek **P ≈ 0,1C** oraz zapewnia się +dobre warunki smarowania i normalnej pracy. Można zastosować uproszczony +sposób oceny oporów ruchu łożyska tocznego. ![](https://izaac.pl/wp- +content/uploads/2022/01/izaac.net-10.png) + +Istnieją dokładniejsze sposoby wyznaczania oporów w łożyskach uwzględniające +np. + +\- tarcie ślizgowe elementów tocznych względem bieżni łożyska + +\- tarcie toczne elementów tocznych łożyska po bieżni łożyska + +\- tarcie w uszczelnieniach + +\- straty związane z poślizgiem + +\- obory mieszania środka smarnego +* Prędkość graniczna łożyska: Czy łożysko może pracować przy wymaganej prędkości obrotowej. + + +### Prędkość graniczna łożysk tocznych + + + + +**η gr** \- prędkość graniczna łożysk tocznych - podana w katalogu – +maksymalna prędkość obrotowa, zazwyczaj wyrażona w ilości obrotów na minutę +parametr dobierany do smarowania smarem plastycznym lub olejem. + +Możliwe sposoby podwyższenia prędkości granicznej: +* olej zamiast smaru +* praca w mgle olejowej +* wyższe dokładności wykonania łożyska +* łożyska z powiększonymi luzami C3, C4, C5 +* lepsza konstrukcja koszyka + + + +Orientacyjne wartości **L h** dla łożysk stosowanych w budowie maszyn. + +Rodzaj maszyny | **L h [godzin]** +---|--- +Przyrządy i aparatury rzadko używane np. aparaty pokazowe, mechanizmy drzwi przesuwnych | 500 +Silniki lotnicze | 500 - 2000 +Maszyny o krótkich okresach pracy, pracujące niestale np narzędzia ręczne, maszyny rolnicze | 4000 - 8000 +Maszyny pracujące niestale z dużą koniecznością niezawodności pracy np. przenośniki, dźwigi, maszyny pomocnicze w siłowniach. | 8000 - 14000 +Maszyny do pracy 8h/dobę np. silniki elektryczne stałe, przekładnie zębate | 14000 - 20000 +Maszyny do pracy 8h/ dobę w pełni wyzyskane np. obrabiarki do metali, dźwignice pracujące nieprzerwanie | 20000 - 30000 +Maszyny do pracy ciągłej (24h/dobę): sprężarki, pompy, wyciągni kopalniane, silniki elektryczne stałe | 50000 - 60000 +Maszyny o pracy ciągłej (24h/dobę) o wymaganym wysokim stopniu pewności: siłowniane pompy kopalniane, maszyny miejskich stacji pomp, maszyny o nieprzerwanej pracy na statkach handlowych | 100000 - 200000 + + +Zastosowanie do kół pojazdów | **L [mln obr]** +---|--- +Samochody osobowe Samochody ciężarowe Wagony motorowe Wagony towarowe w zwykłym ruchu Trolejbus w ruchu ulicznym Wagony osobowe w ruchu dalekobieżnym | 50 100 300 180-300 500 1000 + + +## Schemat obliczeniowy trwałości łożysk + + + 1. Obliczenie reakcji na podporach w osi x, y, z - **Rx, Ry, Rz.** + 2. Wyznaczenie sił wypadkowych, promieniowej **Fr** i osiowej **Fa** + 3. Wyznaczenie obciążenia zastępczego **P** równoważnemu, stałemu obciążeniu prostopadłemu do osi obrotu łożyska, pod którego działaniem, skutek zmęczeniowego uszkodzenia materiału jest taki sam jak pod wpływem obciążeń rzeczywistych + + +## Trwałość łożysk + + + +### Dynamiczna trwałość łożysk tocznych dla prędkości obrotowej większej niż + +n>10 obr/min. + +Dla łożyska prawidłowo zabudowanego, uszczelnionego węzła łożyskowego, o jego +zniszczeniu decydują procesy zmęczeniowe. Dobór łożyska oparty jest na +zmęczeniowym kryterium wytrzymałościowym. **Nośność efektywna** , zwana +również **obciążeniem równoważnym łożyska** , jest to hipotetyczne obciążenie +stałe, które wywiera taki sam wpływ na trwałość łożyska jak rzeczywiste +obciążenia działające podczas eksploatacji. + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-1.png) + +Gdzie: + +**L** \- trwałość łożyska [mln obrotów] – czas pracy łożyska + +**C** \- nośność ruchowa (dynamiczna) – obciążenie przy trwałości łożyska +wynoszącej 1mln obrotów. [kN,da,N], wartość z katalogu producenta + +**P** \- obciążenie zastępcze + +**p** – wykładnik trwałości (dla łożysk kulkowych p=3, dla łożysk wałeczkowych +p=10/3​) + +**P = X · Fr + Y · Fa** + +Gdzie: + +**X** \- wsp. obciążenia promieniowego + +**Y** \- wsp. obciążenia osiowego + +**X i Y** \- to współczynniki z katalogu producenta - uwzględnia się je jeśli +w punkcie 6. zależność jest prawdziwa, nie uwzględnia się jeśli zależność w +punkcie 7. jest prawdziwa + +Uwzględniając temperaturę łożyska wprowadzimy nowy parametr **Ce** \- nośność +efektywną + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-2.png) + +Zależność współczynnika trwałości termicznej od temperatur: + +ft | Temperatura +---|--- +0,98 | 150 ºC +0,9 | 200 ºC +0,75 | 250 ºC +0,6 | 300 ºC + + +niezawodność [%] | 90 | 95 | 96 | 97 | 98 | 99 | 100 +---|---|---|---|---|---|---|--- +**a 1** | 1,0 | 0,62 | 0,53 | 0,44 | 0,33 | 0,21 | 0 + + + +**a 1** \- współczynnik uwzględniający niezawodność – rozsądnie przyjąć 90% + +**a 2** \- współczynnik uwzględniający inne materiały niestandardowe stosowane +do łożyska + +**a 3** \- współczynnik warunków smarowania + +Producenci mogą mieć swoje współczynniki zastępujące współczynniki **a.** + +Uwzględniając temperaturę i niezawodność otrzymujemy: + +![](https://izaac.pl/wp-content/uploads/2024/11/lozysko-1.2.jpg) + +Natomiast nośność godzinowa odzwierciedla, jak długo łożysko może przenosić +określone obciążenie przy danej prędkości obrotowej zanim nastąpi zmęczeniowe +uszkodzenie materiału. Pozwala określić interwały serwisowe i wymiany łożysk. + +![](https://izaac.pl/wp-content/uploads/2024/11/lozysko-1.1.jpg) + +gdzie: **n** \- liczba obrotów +* Im większy stosunek C/P​, tym większa trwałość łożyska. +* Wartość p należy od rodzaju kontaktu między elementami tocznymi a bieżniami. + +Przekształcając równanie: + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-1.png) otrzymamy +wymaganą nośność łożyska. Wartość ta służy do wyszukania w katalogu +odpowiedniego łożyska. + +![](https://izaac.pl/wp-content/uploads/2024/11/lozyska-1.4.jpg) + + +### Statyczna trwałość łożysk tocznych, dla niskich prędkości obrotowych n ≤ + +10 obr/min, stosuje się dla obciążeń statycznych łożyska + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-6.png) + +**Co** , czasami określana **Cl** \- nośność spoczynkowa [N] dla n ≤ 10 +obr/min. + +Obciążenia prostopadłe do osi obrotu łożyska, wywołujące dopuszczalne +całkowite odkształcenia plastyczne stykających się powierzchni (bieżni i +elementów tocznych) nie większe niż 0,0001 średnicy elementu tocznego, nie +powodują zakłóceń w pracy łożyska. + +\- statyczne obciążenie zastępcze, równoważne skutkiem obciążenie prostopadłe +do osi obrotu łożyska, pod którego działaniem, odkształcenie plastyczne +materiału jest takie same jak pod wpływem obciążeń rzeczywistych. + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-7.png) + +**P o** \- statyczne obciążenie zastępcze. + +**X o** \- współczynnik statycznego obciążenia promieniowego (od producenta). + +**Y o** \- współczynnik statycznego obciążenia osiowego (od producenta). + +Gdzie trwałość: + +![](https://izaac.pl/wp-content/uploads/2022/01/izaac.net-8.png) + + +## Projektowanie łożysk skośnych + + + + +Wymagane obciążenie łożyska skośnego dobiera się tak aby pod wpływem +obciążenia łożyska silą promieniową **Fr (R)** zapobiec zsunięcia się +pierścienia zewnętrznego i równocześnie spowodować aby minimalnie połowa +obwodu bieżni pierścienia zewnętrznego była obciążona siłą **F w(Qw)**, siłą +przeciwną do osiowej reakcji w łożysku **F a**. + + + + + +**![](https://izaac.pl/wp-content/uploads/2022/06/5-257x300.png) +** + +**F a = 1,25 · tg(α) · Fr = e*Fr** + +Gdzie: + +**e** \- współczynnik konstrukcyjny łożyska + +**e = 1,25 · tg(α)** + +Współczynnik e odczytuje się z katalogu łożysk. Jeśli siła osiowa **Fa** nie +jest wystarczająca należy zapewnić napięcie wstępne **Pw (Qw).** + + +### Napięcie wstępne łożysk skośnych + + +**Napięcie wstępne/zacisk wstępny łożysk** – jest to generowanie siły w celu +obciążenia wszystkich elementów tocznych na całym obwodzie łożyska. Stosowane +głównie w przypadku łożysk skośnych. W przeciwnym wypadku pierścień wewnętrzny +wysuwa się z pierścienia zewnętrznego i obciążenie przenoszone jest w skrajnym +przypadku przez jeden element toczny – co prowadzi do poważnych uszkodzeń +łożyska. + +Dal prawidłowej pracy łożyska napięcie wstępne łożyska skośnego wynosi: + +**Qw lub Pw ≥ 1,25R · tg(α)** + +**Pw ≥ 1,25 · R · tg(α)** + +Osiową siłę zewnętrzną **Pw** zapewnia napięcie wstępne jednego łożyska, w +układzie łożysk, ale musi ono być (napięcie) większe od **Pw** wymaganego (dla +jednego łożyska) , gdyż musi zapewnić napięcie łożyska drugiego. + +Łożyska skośne stosuje się zazwyczaj w układach łożysk + +**Układ łożysk skośnych, układ X** + +Napięcie wstępne jest aplikowane na pierścienie zewnętrzne łożysk. Dwa łożyska +skośne są montowane tak, że linie działania sił przecinają się poza łożyskami, +tworząc kształt przypominający literę "X". +* Pozwala na pewne przesunięcia osiowe wału w obu kierunkach. +* Jest bardziej elastyczny w kompensacji niewspółosiowości i ugięć wału. +* Lepiej radzi sobie z obciążeniami poprzecznymi. + +Układ łożysk skośnych w formacji X znajduje zastosowania w aplikacjach +narażonych na zmiany temperatury powodujące wydłużenia cieplne. oraz tam, +gdzie wymagana jest możliwość kompensacji błędów montażowych. + +**Układ łożysk skośnych , układ O** + +Napięcie wstępne aplikowane jest na pierścienie wewnętrzne łożysk Dwa łożyska +skośne są montowane tak, że linie działania sił rozchodzą się na zewnątrz od +środka układu, tworząc kształt przypominający literę "O". +* Bardzo stabilny układ zapewniający wysoką sztywność. +* Ogranicza możliwość przesunięć osiowych wału. +* Lepsza zdolność do przenoszenia momentów przechylających. + +Układ łożysk w formacji O znajduje zastosowania w aplikacjach wymagających +wysokiej precyzji prowadzenia wału oraz tam, gdzie konieczna jest wysoka +sztywność układu łożyskowego - np. Tokarki. + +**Zdjęcie formacji X** + +Wał ustalony w jednym łożysku, wał ustalony na dwóch łożyskach. + +**Zdjęcie formacji O** + +Wał ustalony w dwóch łożyskach. + +Wpływ napięcia wstępnego zacisku **Qw** na rozkład obciążenia na poszczególne +kulki łożyska skośnego. + + +## Zabudowa łożysk oraz luz roboczy + + +Odpowiedni luz roboczy (tym samym odpowiednie obciążenie ) w łożysku zapewnia: +* Właściwe rozłożenie obciążeń na elementy toczne. +* Brak poślizgu na nośnych elementach tocznych. +* Brak pełzania pierścieni pod wpływem ruchomego obciążenia. + +**Wpływ złego osadzania pierścienia łożyska:** + +-odkształcenie zbyt luźnego pierścienia + +-obtoczenie pierścienia + +-pełzanie pierścienia, czyli względny ruch pasowanej powierzchni pierścienia łożyska względem powierzchni oprawy + +Dopiero właściwie pasowane łożysko na wale i w oprawie zapewnia odpowiednie +luzy robocze. Warto dodać, że pierścienie łożyskowe są podatne i dostosowują +się do kształtu otworów czopa, gniazd. + +**Orientacyjny podział wielkości obciążenia, czyli większego wcisku [% +obciążenia łożyska]:** + +P ≤ 5% - obciążenie lekkie + +5% < P ≤10% - obciążenie normalne + +10% < P ≤ 15% - obciążenie ciężkie + +P > 15%- obciążenie bardzo ciężkie + diff --git a/frontend/src/content/łożyskowanie.md b/frontend/src/content/łożyskowanie.md new file mode 100644 index 0000000..591fff5 --- /dev/null +++ b/frontend/src/content/łożyskowanie.md @@ -0,0 +1,77 @@ +--- +title: "Łożyskowanie" +date: 2021-10-12 16:19:59 +--- +# [Najważniejsze informacje o łożyskach, rodzaje izastosowania](https://izaac.pl/inzynieria-mechaniczna/najwazniejsze-informacje-o-lozyskach-rodzaje-i-zastosowania) + +**Klasyfikacja łożysk** – Podział łożysk na kulkowe, walcowe, stożkowe i +baryłkowe. + +**Charakterystyczne cechy łożysk** – Opis budowy i właściwości, takich jak +niskie tarcie czy wysoka nośność. + +**Metody minimalizacji zużycia łożysk** – Techniki smarowania, właściwego +montażu i konserwacji. + +**Łożyska kulkowe zwykłe** – Uniwersalne łożyska do umiarkowanych obciążeń. + +**Łożyska walcowe** – Łożyska o dużej nośności osiowej i promieniowej. + +**Łożyska stożkowe** – Łożyska przenoszące obciążenia promieniowe i osiowe w +jednym kierunku. + +**Łożyska baryłkowe** – Łożyska dostosowane do dużych obciążeń i +niewspółosiowości. + +# [Łożyskowanie maszyn: Przewodnik po obliczeniach i praktyczne +wskazówki](https://izaac.pl/inzynieria-mechaniczna/lozyskowanie-maszyn- +przewodnik-po-obliczeniach-i-praktyczne-wskazowki) + +**Tarcie toczne** – Opór występujący przy toczeniu elementów łożyska. + +**Dobór wymiarów łożysk** – Wyznaczenie odpowiedniego rozmiaru dla konkretnego +zastosowania. + +**Prędkość graniczna łożysk** – Maksymalna prędkość, przy której łożysko może +pracować bez uszkodzeń. + +**Schemat obliczeniowy trwałości łożysk** – Wzory określające żywotność +łożyska w warunkach pracy. + +**Projektowanie łożysk skośnych** – Wytyczne dotyczące doboru i montażu łożysk +przenoszących obciążenia osiowe. + +# [Montaż i pasowanie łożysk](https://izaac.pl/inzynieria-mechaniczna/montaz- +i-pasowanie-lozysk) + +**Prawidłowy montaż łożysk** – Metody zapewniające właściwe osadzenie bez +uszkodzenia elementów tocznych. + +**Pasowanie łożysk** – Precyzyjne dopasowanie łożysk do wałów i opraw dla +optymalnej pracy. + +**Wpływ pasowania na trwałość łożyska** – Rola właściwego pasowania w redukcji +zużycia i hałasu. + +# **Łożyska** + +Łożyska to jedne z elementów maszyn i urządzeń mechanicznych. Pełnią rolę w +zapewnianiu ruchu oraz minimalizowaniu tarcia pomiędzy współpracującymi +elementami. Znajdują zastosowanie w różnych gałęziach przemysłu – od +motoryzacji, przez lotnictwo, aż po zaawansowane maszyny przemysłowe. + +Wyróżniamy podstawowe rodzaje łożysk, takie jak: + + * **Łożyska toczne** – popularne rozwiązanie w postaci kulkowych, wałeczkowych, stożkowych czy baryłkowych. + * **Łożyska ślizgowe** – przeznaczone do pracy przy wysokich prędkościach lub w ekstremalnych warunkach. + * **Łożyska specjalne** – dostosowane do nietypowych zastosowań, np. w środowisku wysokiej temperatury czy pod wysokim ciśnieniem. + +Łożyska dzielimy na grupy w zależności od ich konstrukcji, materiałów użytych +do produkcji, a także funkcji, jaką pełnią w układzie mechanicznym. + +Przy wyborze łożysk bierzemy pod uwagę takie czynniki jak: + + * Obciążenie (promieniowe i osiowe), + * Prędkość obrotowa, + * Środowisko pracy. + diff --git a/frontend/src/context/AuthContext.tsx b/frontend/src/context/AuthContext.tsx new file mode 100644 index 0000000..84de048 --- /dev/null +++ b/frontend/src/context/AuthContext.tsx @@ -0,0 +1,202 @@ +import React, { createContext, useContext, useState, useEffect } from 'react'; +import { login as apiLogin, register as apiRegister, refreshToken } from '../api/auth'; +import { useNavigate } from 'react-router-dom'; +import axios from 'axios'; + +interface User { + id: number; + username: string; + email: string; + first_name: string; + last_name: string; + role: 'admin' | 'user' | 'moderator'; +} + +interface AuthContextType { + user: User | null; + authToken: string | null; + isAuthenticated: boolean; + login: (username: string, password: string) => Promise; + register: (userData: { + username: string; + password: string; + password2: string; + email: string; + first_name: string; + last_name: string; + role?: 'admin' | 'user' | 'moderator'; + }) => Promise; + logout: () => void; + loading: boolean; + refreshUserData: () => Promise; +} + +const AuthContext = createContext({ + user: null, + authToken: null, + isAuthenticated: false, + login: async () => {}, + register: async () => {}, + logout: () => {}, + loading: true, + refreshUserData: async () => {} +}); + +export const useAuth = () => useContext(AuthContext); + +const fetchUserData = async (): Promise => { + const response = await axios.get('http://localhost:8000/api/users/me/', { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}` + } + }); + return response.data; +}; + +// Add axios interceptor for token refresh +axios.interceptors.response.use( + (response) => response, + async (error) => { + const originalRequest = error.config; + + // If the error is 401 and we haven't tried to refresh the token yet + if (error.response?.status === 401 && !originalRequest._retry) { + originalRequest._retry = true; + + try { + const refresh = localStorage.getItem('refresh_token'); + if (!refresh) { + throw new Error('No refresh token available'); + } + + const response = await refreshToken(refresh); + localStorage.setItem('access_token', response.access); + localStorage.setItem('refresh_token', response.refresh); + + // Update the original request with the new token + originalRequest.headers['Authorization'] = `Bearer ${response.access}`; + return axios(originalRequest); + } catch (refreshError) { + // If refresh token fails, clear tokens and redirect to login + localStorage.removeItem('access_token'); + localStorage.removeItem('refresh_token'); + window.location.href = '/login'; + return Promise.reject(refreshError); + } + } + + return Promise.reject(error); + } +); + +export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [user, setUser] = useState(null); + const [authToken, setAuthToken] = useState(localStorage.getItem('access_token')); + const [isAuthenticated, setIsAuthenticated] = useState(!!authToken); + const [loading, setLoading] = useState(true); + const navigate = useNavigate(); + + const refreshUserData = async () => { + try { + const userData = await fetchUserData(); + setUser(userData); + setIsAuthenticated(true); + } catch (error) { + console.error('Failed to refresh user data:', error); + // If token is invalid, log out the user + if (axios.isAxiosError(error) && error.response?.status === 401) { + logout(); + } + } + }; + + useEffect(() => { + const initAuth = async () => { + const token = localStorage.getItem('access_token'); + const refresh = localStorage.getItem('refresh_token'); + + if (token && refresh) { + try { + // Try to refresh the token + const response = await refreshToken(refresh); + localStorage.setItem('access_token', response.access); + localStorage.setItem('refresh_token', response.refresh); + + // Fetch user data + await refreshUserData(); + } catch (error) { + console.error('Token refresh failed:', error); + localStorage.removeItem('access_token'); + localStorage.removeItem('refresh_token'); + setUser(null); + setIsAuthenticated(false); + } + } + setLoading(false); + }; + + initAuth(); + }, []); + + const login = async (username: string, password: string) => { + try { + const response = await apiLogin({ username, password }); + localStorage.setItem('access_token', response.access); + localStorage.setItem('refresh_token', response.refresh); + + // Fetch user data after successful login + await refreshUserData(); + + navigate('/'); + } catch (error) { + console.error('Login failed:', error); + throw error; + } + }; + + const register = async (userData: { + username: string; + password: string; + password2: string; + email: string; + first_name: string; + last_name: string; + role?: 'admin' | 'user' | 'moderator'; + }) => { + try { + await apiRegister(userData); + navigate('/login', { + state: { message: 'Registration successful! Please login.' } + }); + } catch (error) { + console.error('Registration failed:', error); + throw error; + } + }; + + const logout = () => { + localStorage.removeItem('access_token'); + localStorage.removeItem('refresh_token'); + setUser(null); + setIsAuthenticated(false); + setAuthToken(null); + navigate('/login'); + }; + + return ( + + {children} + + ); +}; + +export default AuthContext; \ No newline at end of file diff --git a/frontend/src/context/ThemeContext.tsx b/frontend/src/context/ThemeContext.tsx new file mode 100644 index 0000000..f8d9223 --- /dev/null +++ b/frontend/src/context/ThemeContext.tsx @@ -0,0 +1,43 @@ +import React, { createContext, useContext, useEffect, useState } from 'react'; + +type ThemeContextType = { + isDarkMode: boolean; + toggleDarkMode: () => void; +}; + +const ThemeContext = createContext(undefined); + +export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [isDarkMode, setIsDarkMode] = useState(() => { + const savedTheme = localStorage.getItem('theme'); + return savedTheme === 'dark' || (!savedTheme && window.matchMedia('(prefers-color-scheme: dark)').matches); + }); + + useEffect(() => { + if (isDarkMode) { + document.documentElement.classList.add('dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.classList.remove('dark'); + localStorage.setItem('theme', 'light'); + } + }, [isDarkMode]); + + const toggleDarkMode = () => { + setIsDarkMode(!isDarkMode); + }; + + return ( + + {children} + + ); +}; + +export const useTheme = () => { + const context = useContext(ThemeContext); + if (context === undefined) { + throw new Error('useTheme must be used within a ThemeProvider'); + } + return context; +}; \ No newline at end of file diff --git a/frontend/src/index.css b/frontend/src/index.css new file mode 100644 index 0000000..a90f074 --- /dev/null +++ b/frontend/src/index.css @@ -0,0 +1,4 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx new file mode 100644 index 0000000..cf182bf --- /dev/null +++ b/frontend/src/main.tsx @@ -0,0 +1,13 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import '@uiw/react-md-editor/markdown-editor.css' +import '@uiw/react-markdown-preview/markdown.css' +import 'katex/dist/katex.min.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/frontend/src/pages/CalculatorAndChartsPage.tsx b/frontend/src/pages/CalculatorAndChartsPage.tsx new file mode 100644 index 0000000..196d511 --- /dev/null +++ b/frontend/src/pages/CalculatorAndChartsPage.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Tabs } from 'antd'; +import CalculatorPage from './CalculatorPage'; + +const CalculatorAndChartsPage: React.FC = () => { + const items = [ + { + key: 'calculator', + label: 'Calculator', + content: + }, + { + key: 'charts', + label: 'Charts', + content: () =>
Charts
+ } + ] + return ( +
+ + +
+ ); +}; + +export default CalculatorAndChartsPage; \ No newline at end of file diff --git a/frontend/src/pages/CalculatorPage.tsx b/frontend/src/pages/CalculatorPage.tsx new file mode 100644 index 0000000..f180fec --- /dev/null +++ b/frontend/src/pages/CalculatorPage.tsx @@ -0,0 +1,218 @@ +import React, { useState } from 'react'; +import { + Chart as ChartJS, + CategoryScale, + LinearScale, + PointElement, + LineElement, + Title, + Tooltip, + Legend, + ChartData +} from 'chart.js'; +import { Line } from 'react-chartjs-2'; + +ChartJS.register( + CategoryScale, + LinearScale, + PointElement, + LineElement, + Title, + Tooltip, + Legend +); + +const CalculatorPage: React.FC = () => { + const [force, setForce] = useState(''); + const [diameter, setDiameter] = useState(''); + const [stress, setStress] = useState(null); + const [error, setError] = useState(null); + const [chartData, setChartData] = useState | null>(null); + + const sanitizeInput = (value: string): string => { + // Remove any non-numeric characters except decimal point + return value.replace(/[^0-9.]/g, ''); + }; + + const validateInput = (value: string, field: 'force' | 'diameter'): boolean => { + const num = parseFloat(value); + + if (isNaN(num)) { + setError(`Wprowadź poprawną wartość ${field === 'force' ? 'siły' : 'średnicy'}`); + return false; + } + + if (num <= 0) { + setError(`Wartość ${field === 'force' ? 'siły' : 'średnicy'} musi być większa od 0`); + return false; + } + + if (field === 'force' && num > 1000000) { + setError('Siła nie może przekraczać 1,000,000 N'); + return false; + } + + if (field === 'diameter' && num > 1000) { + setError('Średnica nie może przekraczać 1000 mm'); + return false; + } + + setError(null); + return true; + }; + + const calculateStressForDiameter = (d: number, f: number): number => { + const area = Math.PI * Math.pow(d / 2, 2); + return f / area; + }; + + const generateChartData = (baseDiameter: number, baseForce: number) => { + const variations = []; + const stresses = []; + + // Generate data points from -20% to +20% + for (let i = -20; i <= 20; i += 2) { + const variation = (i / 100) * baseDiameter; + const currentDiameter = baseDiameter + variation; + const currentStress = calculateStressForDiameter(currentDiameter, baseForce); + + variations.push(`${i}%`); + stresses.push(currentStress); + } + + return { + labels: variations, + datasets: [ + { + label: 'Naprężenie [MPa]', + data: stresses, + borderColor: 'rgb(75, 192, 192)', + backgroundColor: 'rgba(75, 192, 192, 0.5)', + tension: 0.1 + } + ] + }; + }; + + const handleForceChange = (e: React.ChangeEvent) => { + const sanitized = sanitizeInput(e.target.value); + setForce(sanitized); + validateInput(sanitized, 'force'); + }; + + const handleDiameterChange = (e: React.ChangeEvent) => { + const sanitized = sanitizeInput(e.target.value); + setDiameter(sanitized); + validateInput(sanitized, 'diameter'); + }; + + const calculateStress = () => { + if (!validateInput(force, 'force') || !validateInput(diameter, 'diameter')) { + setStress(null); + setChartData(null); + return; + } + + const forceValue = parseFloat(force); + const diameterValue = parseFloat(diameter); + + const stressValue = calculateStressForDiameter(diameterValue, forceValue); + setStress(stressValue); + + // Generate chart data + const newChartData = generateChartData(diameterValue, forceValue); + setChartData(newChartData); + }; + + const chartOptions = { + responsive: true, + plugins: { + legend: { + position: 'top' as const, + }, + title: { + display: true, + text: 'Zmiana naprężenia w zależności od zmiany średnicy', + }, + }, + scales: { + y: { + title: { + display: true, + text: 'Naprężenie [MPa]' + } + }, + x: { + title: { + display: true, + text: 'Zmiana średnicy' + } + } + } + }; + + return ( +
+

Kalkulator naprężeń w pręcie

+ +
+
+ + +
+ +
+ + +
+ + {error && ( +
+ {error} +
+ )} + + + + {stress !== null && ( +
+

+ Naprężenie: {stress.toFixed(2)} MPa +

+
+ )} +
+ + {chartData && ( +
+ +
+ )} +
+ ); +}; + +export default CalculatorPage; \ No newline at end of file diff --git a/frontend/src/pages/CategoriesPage.tsx b/frontend/src/pages/CategoriesPage.tsx new file mode 100644 index 0000000..80e820f --- /dev/null +++ b/frontend/src/pages/CategoriesPage.tsx @@ -0,0 +1,133 @@ +import React, { useState, useEffect } from 'react'; +import { Link } from 'react-router-dom'; +import axios from 'axios'; + +interface Category { + id: number; + name: string; + slug: string; +} + +interface Post { + id: number; + slug: string; + title: string; + content: string; + author: { + id: number; + username: string; + }; + category: { + id: number; + name: string; + slug: string; + }; + created_at: string; + updated_at: string; + status: 'draft' | 'published'; +} + +const CategoriesPage: React.FC = () => { + const [categories, setCategories] = useState([]); + const [posts, setPosts] = useState([]); + const [expandedCategories, setExpandedCategories] = useState<{ [key: string]: boolean }>({}); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchCategories = async () => { + try { + const response = await axios.get('/api/content/categories/'); + setCategories(response.data); + setError(null); + } catch (error) { + setError('Failed to load categories. Please try again later.'); + console.error('Error fetching categories:', error); + } + }; + fetchCategories(); + }, []); + + useEffect(() => { + const fetchPosts = async () => { + try { + const response = await axios.get('/api/content/posts/'); + setPosts(response.data); + setError(null); + } catch (error) { + setError('Failed to load posts. Please try again later.'); + console.error('Error fetching posts:', error); + } + }; + fetchPosts(); + }, []); + + const toggleCategory = (category: string) => { + setExpandedCategories(prev => ({ + ...prev, + [category]: !prev[category] + })); + }; + + const getContentForCategory = (categorySlug: string) => { + return posts.filter(post => post.category.slug === categorySlug); + }; + + return ( +
+

+ Nauka +

+ {error && ( +
+ {error} +
+ )} +
+ {categories.map((category) => ( +
+ +
+
+ {getContentForCategory(category.slug).map((post) => ( + +
+ {post.title} + + {new Date(post.created_at).toLocaleDateString()} + +
+ + ))} + {getContentForCategory(category.slug).length === 0 && ( +

+ No content available in this category yet. +

+ )} +
+
+
+ ))} +
+
+ ); +}; + +export default CategoriesPage; \ No newline at end of file diff --git a/frontend/src/pages/ContactPage.tsx b/frontend/src/pages/ContactPage.tsx new file mode 100644 index 0000000..dd061ab --- /dev/null +++ b/frontend/src/pages/ContactPage.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import Contact from '../components/Contact'; + +const ContactPage: React.FC = () => { + return ( +
+
+ +
+
+ ); +}; + +export default ContactPage; \ No newline at end of file diff --git a/frontend/src/pages/ContentPage.tsx b/frontend/src/pages/ContentPage.tsx new file mode 100644 index 0000000..68665a8 --- /dev/null +++ b/frontend/src/pages/ContentPage.tsx @@ -0,0 +1,117 @@ +import React, { useEffect, useState } from 'react'; +import { useParams } from 'react-router-dom'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; +import remarkMath from 'remark-math'; +import rehypeKatex from 'rehype-katex'; +import 'katex/dist/katex.min.css'; +import '../styles/math.css'; +import { Link } from 'react-router-dom'; +import contentIndex from '../content/new_index.json'; + +interface Category { + category_id: string; + category_name: string; +} + +interface Tag { + tag_id: string; + tag_name: string; + tag_slug: string; +} + +interface ContentData { + content: string; + slug: string; + categories: Category[]; + title: string; + tags?: Tag[]; +} + +const ContentPage: React.FC = () => { + const { id } = useParams(); + const [contentData, setContentData] = useState(null); + const [loading, setLoading] = useState(true); + + useEffect(() => { + const loadContent = async () => { + try { + const markdownModule = await import(`../content/${id}.md`); + const response = await fetch(markdownModule.default); + const markdownContent = await response.text(); + + // Find content entry in index + const contentEntry = contentIndex.find(entry => entry.id === id); + + if (!contentEntry) { + throw new Error('Content not found in index'); + } + + setContentData({ + content: markdownContent, + categories: contentEntry.categories, + slug: contentEntry.slug, + title: contentEntry.title, + tags: contentEntry.tags + }); + } catch (error) { + console.error('Error loading content:', error); + setContentData(null); + } finally { + setLoading(false); + } + }; + + if (id) { + loadContent(); + } + }, [id]); + + if (loading) { + return
Loading...
; + } + + if (!contentData) { + return
Content not found
; + } + + return ( +
+
+

{contentData.title}

+ + {contentData.content} + +
+ {contentData.categories.length > 0 && ( +
+ Powiązane kategorie: +
+ {contentData.categories.map((category) => ( + + {category.category_name} + + ))} +
+
+ )} + + Powrót + +
+
+
+ ); +}; + +export default ContentPage; \ No newline at end of file diff --git a/frontend/src/pages/CreatePostPage.tsx b/frontend/src/pages/CreatePostPage.tsx new file mode 100644 index 0000000..547c99b --- /dev/null +++ b/frontend/src/pages/CreatePostPage.tsx @@ -0,0 +1,112 @@ +import React, { useState, useEffect } from 'react'; +import { useNavigate, useParams } from 'react-router-dom'; +import axios from 'axios'; +import { App, message } from 'antd'; +import { useAuth } from '../context/AuthContext'; +import PostForm from '../components/PostForm'; + +interface PostFormValues { + title: string; + slug: string; + content: string; + category: number; + status: string; + tags: number[]; +} + +const CreatePostPage = () => { + const { slug } = useParams<{ slug: string }>(); + const navigate = useNavigate(); + const { user, authToken } = useAuth(); + const [initialValues, setInitialValues] = useState(undefined); + const [loading, setLoading] = useState(false); + + useEffect(() => { + const fetchPost = async () => { + if (slug) { + try { + const response = await axios.get(`/api/content/posts/${slug}/`, { + headers: { Authorization: `Bearer ${authToken}` } + }); + setInitialValues({ + title: response.data.title, + slug: response.data.slug, + content: response.data.content, + category: response.data.category.id, + status: response.data.status, + tags: response.data.tags + }); + } catch (error) { + message.error('Error loading post'); + navigate('/posts'); + } + } + }; + + if (slug) { + fetchPost(); + } + }, [slug, authToken, navigate]); + + const handleSubmit = async (values: PostFormValues) => { + setLoading(true); + try { + if (slug) { + await axios.patch(`/api/content/posts/${slug}/`, values, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Post updated successfully'); + } else { + await axios.post('/api/content/posts/', values, { + headers: { Authorization: `Bearer ${authToken}` } + }); + message.success('Post created successfully'); + } + navigate('/posts'); + } catch (error: any) { + if (error.response?.data) { + // Show specific validation errors + const errors = error.response.data; + Object.entries(errors).forEach(([field, messages]: [string, any]) => { + message.error(`${field}: ${messages[0]}`); + }); + } else { + message.error('Error saving post'); + } + } finally { + setLoading(false); + } + }; + + if (!user) { + return ( +
+
+

+ Please log in to create posts +

+
+
+ ); + } + + return ( + +
+
+
+

+ {slug ? 'Edit Post' : 'Create New Post'} +

+ +
+
+
+
+ ); +}; + +export default CreatePostPage; \ No newline at end of file diff --git a/frontend/src/pages/DashboardPage.tsx b/frontend/src/pages/DashboardPage.tsx new file mode 100644 index 0000000..c260a2f --- /dev/null +++ b/frontend/src/pages/DashboardPage.tsx @@ -0,0 +1,109 @@ +import React, { useState, useEffect } from 'react'; +import { Link } from 'react-router-dom'; +import { getPosts, deletePost, Post } from '../api/posts'; +import PostList from '../components/PostList'; +import CategoryManager from '../components/CategoryManager'; +import { Tabs } from 'antd'; +import { Helmet } from 'react-helmet-async'; +import TagManager from '../components/TagManager'; +const DashboardPage: React.FC = () => { + const [posts, setPosts] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const fetchPosts = async () => { + try { + setLoading(true); + setError(null); + const data = await getPosts(); + setPosts(data); + } catch (err) { + setError('Failed to fetch posts. Please try again later.'); + console.error('Error fetching posts:', err); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchPosts(); + }, []); + + const handleDelete = async (id: number) => { + if (window.confirm('Are you sure you want to delete this post?')) { + try { + await deletePost(id); + setPosts(posts.filter(post => post.id !== id)); + } catch (err) { + console.error('Error deleting post:', err); + alert('Failed to delete post. Please try again.'); + } + } + }; + + const items = [ + { + key: 'posts', + label: 'Posts', + children: loading ? ( +
+
+

Loading posts...

+
+ ) : error ? ( +
+

{error}

+
+ ) : ( +
+
+ + Create New Post + +
+ {posts.length === 0 ? ( +
+

No posts found.

+
+ ) : ( + + )} +
+ ) + }, + { + key: 'categories', + label: 'Categories', + children: + }, + { + key: 'tags', + label: 'Tags', + children: + } + ]; + + return ( +
+ + Izaac.pl | Dashboard + +
+

Dashboard

+
+
+ +
+
+ ); +}; + +export default DashboardPage; \ No newline at end of file diff --git a/frontend/src/pages/ForgotPasswordPage.tsx b/frontend/src/pages/ForgotPasswordPage.tsx new file mode 100644 index 0000000..b3cdfb1 --- /dev/null +++ b/frontend/src/pages/ForgotPasswordPage.tsx @@ -0,0 +1,95 @@ +import React, { useState } from 'react'; +import { Link } from 'react-router-dom'; +import axios from 'axios'; + +const ForgotPasswordPage = () => { + const [email, setEmail] = useState(''); + const [error, setError] = useState(''); + const [success, setSuccess] = useState(''); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + setSuccess(''); + setLoading(true); + + try { + await axios.post('http://localhost:8000/api/users/reset-password/', { email }); + setSuccess('Password reset instructions have been sent to your email.'); + } catch (err) { + if (axios.isAxiosError(err) && err.response?.data) { + setError(err.response.data.detail || 'Failed to send reset instructions'); + } else { + setError('An unexpected error occurred'); + } + } finally { + setLoading(false); + } + }; + + return ( +
+
+
+

+ Reset your password +

+

+ Enter your email address and we'll send you instructions to reset your password. +

+
+ +
+ {error && ( +
+
{error}
+
+ )} + {success && ( +
+
{success}
+
+ )} + +
+ + setEmail(e.target.value)} + className="appearance-none rounded-md relative block w-full px-3 py-2 border border-gray-300 dark:border-gray-700 placeholder-gray-500 dark:placeholder-gray-400 text-gray-900 dark:text-white focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm dark:bg-gray-800" + placeholder="Email address" + /> +
+ +
+ +
+ +
+ + Back to login + +
+ +
+
+ ); +}; + +export default ForgotPasswordPage; \ No newline at end of file diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx new file mode 100644 index 0000000..e095eb4 --- /dev/null +++ b/frontend/src/pages/HomePage.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import Hero from '../components/Hero'; +import Categories from '../components/Categories'; +import Contact from '../components/Contact'; + +const HomePage: React.FC = () => { + return ( + <> + + + + + ); +}; + +export default HomePage; \ No newline at end of file diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx new file mode 100644 index 0000000..2506f44 --- /dev/null +++ b/frontend/src/pages/Login.tsx @@ -0,0 +1,145 @@ +import React, { useState } from 'react'; +import { useNavigate, useLocation, Link } from 'react-router-dom'; +import { useAuth } from '../context/AuthContext'; +import axios from 'axios'; + +const Login = () => { + const [formData, setFormData] = useState({ + username: '', + password: '', + }); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + const [showPassword, setShowPassword] = useState(false); + const navigate = useNavigate(); + const location = useLocation(); + const { login } = useAuth(); + + const handleChange = (e: React.ChangeEvent) => { + setFormData({ + ...formData, + [e.target.name]: e.target.value, + }); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + setLoading(true); + + try { + await login(formData.username, formData.password); + navigate('/'); + } catch (err) { + if (axios.isAxiosError(err) && err.response?.data?.detail) { + setError(err.response.data.detail); + } else { + setError('Login failed. Please try again.'); + } + } finally { + setLoading(false); + } + }; + + return ( +
+
+
+

+ Sign in to your account +

+ {location.state?.message && ( +
+ {location.state.message} +
+ )} +
+
+ {error && ( +
+
{error}
+
+ )} +
+
+ + +
+
+ + + +
+
+ +
+ +
+ +
+ + Don't have an account? Sign up + +
+ +
+ + Forgot your password? + +
+ +
+
+ ); +}; + +export default Login; \ No newline at end of file diff --git a/frontend/src/pages/MyAccountPage.tsx b/frontend/src/pages/MyAccountPage.tsx new file mode 100644 index 0000000..04659e0 --- /dev/null +++ b/frontend/src/pages/MyAccountPage.tsx @@ -0,0 +1,278 @@ +import React, { useState } from 'react'; +import { useAuth } from '../context/AuthContext'; +import axios from 'axios'; + +const MyAccountPage = () => { + const { user, refreshUserData } = useAuth(); + const [formData, setFormData] = useState({ + first_name: user?.first_name || '', + last_name: user?.last_name || '', + }); + const [passwordData, setPasswordData] = useState({ + current_password: '', + new_password: '', + confirm_password: '', + }); + const [error, setError] = useState(''); + const [success, setSuccess] = useState(''); + const [loading, setLoading] = useState(false); + const [passwordError, setPasswordError] = useState(''); + const [passwordSuccess, setPasswordSuccess] = useState(''); + const [passwordLoading, setPasswordLoading] = useState(false); + + const handleChange = (e: React.ChangeEvent) => { + setFormData({ + ...formData, + [e.target.name]: e.target.value, + }); + }; + + const handlePasswordChange = (e: React.ChangeEvent) => { + setPasswordData({ + ...passwordData, + [e.target.name]: e.target.value, + }); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + setSuccess(''); + setLoading(true); + + try { + await axios.patch( + 'http://localhost:8000/api/users/me/', + formData, + { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + } + ); + + await refreshUserData(); + setSuccess('Profile updated successfully!'); + } catch (err) { + if (axios.isAxiosError(err) && err.response?.data) { + setError(err.response.data.detail || 'Failed to update profile'); + } else { + setError('An unexpected error occurred'); + } + } finally { + setLoading(false); + } + }; + + const handlePasswordSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setPasswordError(''); + setPasswordSuccess(''); + setPasswordLoading(true); + + if (passwordData.new_password !== passwordData.confirm_password) { + setPasswordError('New passwords do not match'); + setPasswordLoading(false); + return; + } + + try { + await axios.post( + 'http://localhost:8000/api/users/change-password/', + { + old_password: passwordData.current_password, + new_password: passwordData.new_password, + }, + { + headers: { + Authorization: `Bearer ${localStorage.getItem('access_token')}`, + }, + } + ); + + setPasswordSuccess('Password updated successfully!'); + setPasswordData({ + current_password: '', + new_password: '', + confirm_password: '', + }); + } catch (err) { + if (axios.isAxiosError(err) && err.response?.data) { + setPasswordError(err.response.data.detail || 'Failed to update password'); + } else { + setPasswordError('An unexpected error occurred'); + } + } finally { + setPasswordLoading(false); + } + }; + + if (!user) { + return ( +
+
+

Please log in to view your account

+
+
+ ); + } + + return ( +
+
+
+

My Account

+

+ Manage your account information +

+
+ +
+
+

Account Information

+
+

Username: {user.username}

+

Email: {user.email}

+
+
+ +
+ {error && ( +
+
{error}
+
+ )} + {success && ( +
+
{success}
+
+ )} + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+

Change Password

+
+ {passwordError && ( +
+
{passwordError}
+
+ )} + {passwordSuccess && ( +
+
{passwordSuccess}
+
+ )} + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ ); +}; + +export default MyAccountPage; \ No newline at end of file diff --git a/frontend/src/pages/PostsPage.tsx b/frontend/src/pages/PostsPage.tsx new file mode 100644 index 0000000..7d71c6c --- /dev/null +++ b/frontend/src/pages/PostsPage.tsx @@ -0,0 +1,215 @@ +import React, { useState, useEffect } from 'react'; +import { Link, useParams } from 'react-router-dom'; +import axios from 'axios'; +import ContentDisplay from '../components/ContentDisplay'; +import { useAuth } from '../context/AuthContext'; +import { Helmet } from 'react-helmet-async'; + +interface Tag { + id: number; + name: string; + slug: string; +} +interface Post { + id: number; + slug: string; + title: string; + content: string; + author: { + id: number; + username: string; + first_name: string; + last_name: string; + }; + category: { + id: number; + name: string; + }; + status: string; + created_at: string; + updated_at: string; + tags: Tag[]; +} + + +const PostsPage = () => { + const { slug } = useParams<{ slug: string }>(); + const [posts, setPosts] = useState([]); + const [currentPost, setCurrentPost] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(''); + const { user } = useAuth(); + + useEffect(() => { + const fetchData = async () => { + try { + if (slug) { + const response = await axios.get(`http://localhost:8000/api/content/posts/${slug}/`); + setCurrentPost(response.data); + } else { + const response = await axios.get('http://localhost:8000/api/content/posts/'); + setPosts(response.data); + } + } catch (err) { + console.error('Error fetching posts:', err); + setError('Error loading posts'); + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [slug]); + + if (loading) { + return ( +
+
+

Loading...

+
+
+ ); + } + + if (error) { + return ( +
+
+

{error}

+
+
+ ); + } + + if (slug && currentPost) { + return ( +
+
+
+
+
+
+

+ {currentPost.title} +

+
+ By {currentPost.author.username} + + {new Date(currentPost.created_at).toLocaleDateString()} + + + {currentPost.category.name} + +
+
+ {currentPost.tags && currentPost.tags.length > 0 ? ( + currentPost.tags.map((tag) => ( + + {tag.name} + + )) + ) : ( + + No Tags + + )} +
+
+ {user && user.username === currentPost.author.username && ( + + Edit + + )} +
+
+ +
+
+
+
+
+ ); + } + + return ( +
+ + Izaac.pl | Posts + +
+
+

Posts

+ {user && ( + + Create New Post + + )} +
+ +
+ {posts.map((post) => ( +
+
+
+
+

+ + {post.title} + +

+
+ By {post.author.username} + + {new Date(post.created_at).toLocaleDateString()} + + + {post.category.name} + + + {post.tags && post.tags.length > 0 ? ( + post.tags.map((tag) => ( + + {tag.name} + + )) + ) : ( + + No Tags + + )} +
+
+ {user && user.username === post.author.username && ( + + Edit + + )} +
+
+ +
+
+
+ ))} +
+
+
+ ); +}; + +export default PostsPage; \ No newline at end of file diff --git a/frontend/src/pages/PrivacyPolicy.tsx b/frontend/src/pages/PrivacyPolicy.tsx new file mode 100644 index 0000000..a74d2d7 --- /dev/null +++ b/frontend/src/pages/PrivacyPolicy.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import ReactMarkdown from 'react-markdown'; + +const PrivacyPolicy: React.FC = () => { + return ( +
+

Polityka prywatności

+
+ + {` + 1. Informacje ogólne + + 2. Zbieranie danych + + 3. Użycie danych + + 4. Bezpieczeństwo danych + + 5. Prawa użytkownika + + 6. Zmiany w polityce prywatności + `} + +
+
+ ); +}; + +export default PrivacyPolicy; diff --git a/frontend/src/pages/Register.tsx b/frontend/src/pages/Register.tsx new file mode 100644 index 0000000..f1454c4 --- /dev/null +++ b/frontend/src/pages/Register.tsx @@ -0,0 +1,221 @@ +import React, { useState } from 'react'; +import { useNavigate, Link } from 'react-router-dom'; +import axios from 'axios'; +import PasswordStrengthIndicator from '../components/PasswordStrengthIndicator'; + +const Register = () => { + const [formData, setFormData] = useState({ + username: '', + email: '', + password: '', + password2: '', + first_name: '', + last_name: '', + }); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + const [showPassword, setShowPassword] = useState(false); + const [showPassword2, setShowPassword2] = useState(false); + const navigate = useNavigate(); + + const handleChange = (e: React.ChangeEvent) => { + setFormData({ + ...formData, + [e.target.name]: e.target.value, + }); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + setLoading(true); + + if (formData.password !== formData.password2) { + setError('Passwords do not match'); + setLoading(false); + return; + } + + try { + await axios.post('http://localhost:8000/api/users/register/', formData); + navigate('/login', { state: { message: 'Registration successful! Please log in.' } }); + } catch (err) { + if (axios.isAxiosError(err) && err.response?.data) { + setError(err.response.data.detail || 'Registration failed'); + } else { + setError('An unexpected error occurred'); + } + } finally { + setLoading(false); + } + }; + + return ( +
+
+
+

+ Create your account +

+
+
+ {error && ( +
+
{error}
+
+ )} + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+ +
+ +
+ +
+ + +
+
+
+ +
+ +
+ +
+ + Already have an account? Sign in + +
+ +
+
+ ); +}; + +export default Register; \ No newline at end of file diff --git a/frontend/src/pages/ScienceContent.tsx b/frontend/src/pages/ScienceContent.tsx new file mode 100644 index 0000000..6440e84 --- /dev/null +++ b/frontend/src/pages/ScienceContent.tsx @@ -0,0 +1,73 @@ +import React, { useEffect, useState } from 'react'; +import { Link } from 'react-router-dom'; + +interface ContentItem { + id: string; + slug: string; + title: string; + categories?: string[]; +} + +const ScienceContent: React.FC = () => { + const [content, setContent] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchContent = async () => { + try { + const response = await fetch('/api/content/posts/'); + if (!response.ok) { + throw new Error('Failed to fetch content'); + } + const data = await response.json(); + setContent(data); + } catch (err) { + setError(err instanceof Error ? err.message : 'An error occurred'); + } finally { + setLoading(false); + } + }; + + fetchContent(); + }, []); + + if (loading) { + return ( +
+
Loading...
+
+ ); + } + + if (error) { + return ( +
+
Error: {error}
+
+ ); + } + + return ( +
+

+ Nauka +

+
+ {content.sort((a, b) => a.title.localeCompare(b.title)).map((item) => ( + +

+ {item.title} +

+ {item.categories && item.categories.length > 0 && ( +

{item.categories.join(', ')}

+ )} + + ))} +
+
+ ); +}; + +export default ScienceContent; + diff --git a/frontend/src/pages/TOS.tsx b/frontend/src/pages/TOS.tsx new file mode 100644 index 0000000..012be3f --- /dev/null +++ b/frontend/src/pages/TOS.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import ReactMarkdown from 'react-markdown'; + +const TOS: React.FC = () => { + return ( +
+

Regulamin

+
+ + {` + 1. Informacje ogólne + + 2. Użytkownik + + 3. Zasady korzystania z serwisu + + 4. Ochrona danych osobowych + + 5. Prawa autorskie + + 6. Zmiany w regulaminie + + 7. Zakończenie regulaminu + `} + +
+
+ ); +}; + +export default TOS; diff --git a/frontend/src/styles/editor.css b/frontend/src/styles/editor.css new file mode 100644 index 0000000..4042d07 --- /dev/null +++ b/frontend/src/styles/editor.css @@ -0,0 +1,19 @@ +.editor-toolbar { + margin-bottom: 8px; + padding: 8px; + background-color: #f5f5f5; + border: 1px solid #d9d9d9; + border-radius: 4px; + display: flex; + align-items: center; +} + +.editor-toolbar button { + margin-right: 8px; +} + +/* Dark mode support */ +[data-theme='dark'] .editor-toolbar { + background-color: #1f1f1f; + border-color: #434343; +} \ No newline at end of file diff --git a/frontend/src/styles/math.css b/frontend/src/styles/math.css new file mode 100644 index 0000000..4c61474 --- /dev/null +++ b/frontend/src/styles/math.css @@ -0,0 +1,20 @@ +/* Make inline math bigger */ +.katex { + font-size: 1.2em !important; +} + +/* Make display math even bigger */ +.katex-display { + font-size: 1.4em !important; + margin: 1.5em 0 !important; +} + +/* Add some spacing around math blocks */ +.prose .katex-display { + margin: 2em 0 !important; +} + +/* Make inline math more readable */ +.prose .katex { + padding: 0.2em 0.1em; +} \ No newline at end of file diff --git a/frontend/src/types/post.ts b/frontend/src/types/post.ts new file mode 100644 index 0000000..9525a8c --- /dev/null +++ b/frontend/src/types/post.ts @@ -0,0 +1,10 @@ +interface Post { + id: number; + slug: string; + title: string; + content: string; + created_at: string; + updated_at: string; +} + +export default Post; \ No newline at end of file diff --git a/frontend/src/types/user.ts b/frontend/src/types/user.ts new file mode 100644 index 0000000..df14075 --- /dev/null +++ b/frontend/src/types/user.ts @@ -0,0 +1,8 @@ +interface User { + id: number; + email: string; + first_name: string; + last_name: string; +} + +export default User; \ No newline at end of file diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/frontend/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js new file mode 100644 index 0000000..a490a0a --- /dev/null +++ b/frontend/tailwind.config.js @@ -0,0 +1,91 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + darkMode: 'class', + theme: { + extend: { + typography: { + DEFAULT: { + css: { + maxWidth: 'none', + color: 'inherit', + a: { + color: 'inherit', + textDecoration: 'none', + fontWeight: '500', + '&:hover': { + textDecoration: 'underline', + }, + }, + 'h1, h2, h3, h4, h5, h6': { + color: 'inherit', + fontWeight: '600', + }, + code: { + color: 'inherit', + fontWeight: '400', + }, + 'pre code': { + backgroundColor: 'transparent', + borderWidth: '0', + borderRadius: '0', + padding: '0', + fontWeight: '400', + color: 'inherit', + fontSize: 'inherit', + fontFamily: 'inherit', + lineHeight: 'inherit', + }, + 'pre': { + backgroundColor: 'rgb(17, 24, 39)', + color: 'rgb(229, 231, 235)', + }, + 'blockquote': { + fontWeight: '400', + fontStyle: 'italic', + color: 'inherit', + borderLeftWidth: '0.25rem', + borderLeftColor: 'rgb(156, 163, 175)', + quotes: '"\\201C""\\201D""\\2018""\\2019"', + }, + 'blockquote p:first-of-type::before': { + content: 'open-quote', + }, + 'blockquote p:last-of-type::after': { + content: 'close-quote', + }, + 'table': { + fontSize: 'inherit', + lineHeight: 'inherit', + }, + 'thead': { + color: 'inherit', + borderBottomColor: 'rgb(156, 163, 175)', + borderBottomWidth: '1px', + }, + 'thead th': { + fontWeight: '600', + verticalAlign: 'bottom', + }, + 'tbody tr': { + borderBottomColor: 'rgb(156, 163, 175)', + borderBottomWidth: '1px', + }, + 'tbody tr:last-child': { + borderBottomWidth: '0', + }, + 'tbody td': { + verticalAlign: 'top', + }, + }, + }, + }, + }, + }, + plugins: [ + require('@tailwindcss/typography'), + ], +} \ No newline at end of file diff --git a/frontend/tsconfig.app.json b/frontend/tsconfig.app.json new file mode 100644 index 0000000..358ca9b --- /dev/null +++ b/frontend/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/frontend/tsconfig.node.json b/frontend/tsconfig.node.json new file mode 100644 index 0000000..db0becc --- /dev/null +++ b/frontend/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..bd75006 --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], + assetsInclude: ['**/*.md'], + server: { + proxy: { + '/api': { + target: 'http://localhost:8000', + changeOrigin: true, + } + } + }, + resolve: { + alias: { + '@': '/src' + } + }, + optimizeDeps: { + include: ['@uiw/react-md-editor'] + } +}) diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..01599f4 --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,7 @@ +FROM nginx:latest + +COPY nginx.conf /etc/nginx/conf.d/default.conf + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..3cc5b12 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,15 @@ +server { + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + location /api/ { + proxy_pass http://backend:8000/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } +} \ No newline at end of file