Введение
Системы автоматизированного проектирования (САПР), такие как AutoCAD, играют ключевую роль в инженерной практике, обеспечивая проектирование сложных объектов в различных отраслях, от машиностроения до архитектуры [1–3]. Однако освоение AutoCAD представляет значительные трудности из-за его функциональной сложности и необходимости соблюдения национальных стандартов, таких как ГОСТы. Традиционные методы обучения, основанные на лекциях, учебниках и практических занятиях, не успевают за темпами обновления технологий и не обеспечивают индивидуального подхода к обучаемым [1, 4].
Интеллектуальные системы обучения (ИОС), использующие принципы искусственного интеллекта (ИИ), предлагают решение этих проблем [5–7]. ИОС способны имитировать роль преподавателя, адаптировать учебный процесс к уровню знаний пользователя и предоставлять обратную связь в реальном времени [4, 6]. Интеграция базы знаний, основанной на ГОСТах, позволяет автоматизировать проверку соответствия чертежей стандартам, что особенно важно для подготовки специалистов в странах с жесткими нормативными требованиями, таких как Россия, Казахстан [1, 5].
Разработка ИОС для AutoCAD с использованием современных технологий, таких как Python и PostgreSQL, представляет собой актуальную задачу [6, 8, 9]. Python обеспечивает гибкость и широкую поддержку библиотек, включая pyautocad для взаимодействия с AutoCAD, а PostgreSQL гарантирует надежное хранение и масштабируемость базы знаний. Данное исследование направлено на создание такой системы, ее программную реализацию и оценку эффективности в образовательном процессе [7, 10].
Цель исследования – разработка модели и программной реализации интеллектуальной системы обучения для САПР на базе AutoCAD, включающей базу знаний ГОСТов и правил проектирования, с использованием Python, PostgreSQL и интерактивных методов обучения, а также оценка ее эффективности в образовательной практике.
Материалы и методы исследования
Исследование опирается на принципы ИИ, включая модели представления знаний: продукционные модели, семантические сети и фреймы [11]. Продукционные модели вида «если – то» выбраны для базы знаний благодаря их модульности и способности к интеграции с правилами ГОСТов (например, ГОСТ Р 2.104-2023). ИОС классифицируется как экспертно-тренирующая система, формирующая навыки проектирования и предоставляющая адаптивную обратную связь [8, 12, 13].
ИОС включает три ключевые коллекции объектов:
1. Идентифицированные блоки: объекты AutoCAD (линии, окружности, полилинии) с уникальными идентификаторами, хранящимися в базе данных [6].
2. Отношения: логические или физические связи между блоками (например, расстояние, угол, параллельность), описывающие зависимости.
3. Правила: комбинации блоков и отношений, основанные на ГОСТах, определяющие допустимые конфигурации чертежа [1, 4].
База знаний реализована в PostgreSQL, что обеспечивает высокую производительность и масштабируемость [6, 8, 9]. Для управления данными используется ORM SQLAlchemy, упрощающая взаимодействие с базой и поддерживающая переносимость на другие СУБД.
Архитектура ИОС. Диаграмма включает четыре основных компонента (рис. 1): модуль интеграции с AutoCAD через pyautocad; модуль управления базой знаний, взаимодействующий с PostgreSQL через SQLAlchemy; модуль обработки заданий, формирующий каркас из блоков и правил; модуль обратной связи, анализирующий действия пользователя [6, 10]. Компоненты соединены стрелками, показывающими потоки данных.
База данных системы. Составлена ER-диаграмма с тремя таблицами (рис. 2): Blocks, Relations, Rules. Таблицы связаны через внешние ключи [8].
Рис. 1. Архитектура интеллектуальной системы обучения Источник: составлено авторами по результатам данного исследования
Рис. 2. ER-диаграмма Источник: составлено авторами по результатам данного исследования
Рис. 3. UML-диаграмма процесса взаимодействия с AutoCAD Источник: составлено авторами по результатам данного исследования
Процесс взаимодействия с AutoCAD. На рис. 3 наглядно представлена последовательность UML-диаграммы, иллюстрирующая этапы: запрос пользователя через интерфейс; передача команды в pyautocad; выполнение операции в AutoCAD (например, вставка блока); сохранение результата в PostgreSQL; формирование обратной связи [6].
ИОС реализована на Python 3.10 с использованием библиотеки pyautocad для интеграции с AutoCAD [3]. Основные модули системы:
− модуль подключения к AutoCAD: взаимодействие с активным экземпляром AutoCAD через COM-интерфейс;
− модуль управления блоками: создание, вставка и модификация блоков в чертеже;
− модуль базы знаний: управление правилами и отношениями в PostgreSQL;
− модуль обратной связи: анализ действий обучаемого и предоставление рекомендаций;
− модуль тестирования: автоматизированная проверка чертежей на соответствие ГОСТам [14].
Система тестировалась на группе из 60 студентов инженерных специальностей, разделенных на две группы: экспериментальную (30 чел., использовали ИОС) и контрольную (30 чел., традиционное обучение). Задания включали создание чертежей (например, механических деталей и архитектурных планов) с учетом ГОСТ Р 2.104-2023 и ГОСТ Р 2.105-2019 [1]. Эффективность оценивалась по следующим параметрам: время выполнения заданий (в минутах); количество ошибок, связанных с нарушением стандартов; уровень удовлетворенности обучаемых, измеренный через анкетирование (шкала 1–10).
Подключение к AutoCAD
from pyautocad import Autocad, APoint
from comtypes import COMError
def connect_to_autocad(create_if_not_exists=True):
try:
acad = Autocad(create_if_not_exists=create_if_not_exists)
acad.app.Visible = True
print("Подключено к AutoCAD")
return acad
except COMError as e:
raise Exception(f"Ошибка подключения к AutoCAD: {e}")
if __name__ == "__main__":
acad = connect_to_autocad()
Подключение к базе данных
from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
Base = declarative_base()
class Block(Base):
__tablename__ = 'blocks'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
x = Column(Float)
y = Column(Float)
z = Column(Float)
class Relation(Base):
__tablename__ = 'relations'
id = Column(Integer, primary_key=True)
type = Column(String, nullable=False) # e.g., 'distance', 'angle'
value = Column(Float)
block1_id = Column(Integer, ForeignKey('blocks.id'))
block2_id = Column(Integer, ForeignKey('blocks.id'))
block1 = relationship("Block", foreign_keys=[block1_id])
block2 = relationship("Block", foreign_keys=[block2_id])
class Rule(Base):
__tablename__ = 'rules'
id = Column(Integer, primary_key=True)
description = Column(String, nullable=False) # e.g., 'ГОСТ 2.104-2023'
relation_id = Column(Integer, ForeignKey('relations.id'))
relation = relationship("Relation")
def connect_to_db():
engine = create_engine('postgresql://user:password@localhost:5432/acad_db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
return Session()
if __name__ == "__main__":
session = connect_to_db()
Создание блока
def create_block(acad, block_name, points):
model_space = acad.model
for i in range(len(points) – 1):
model_space.AddLine(APoint(*points[i]), APoint(*points[i + 1]))
model_space.AddLine(APoint(*points[-1]), APoint(*points[0]))
print(f"Фигура '{block_name}' создана в ModelSpace")
Вставка блока
def insert_block(acad, insert_point, block_name):
doc = acad.doc
model_space = doc.ModelSpace
block_ref = model_space.InsertBlock(APoint(*insert_point), block_name, 1, 1, 1, 0)
block_ref.Update()
print(f"Блок '{block_name}' вставлен в точке {insert_point}")
return block_ref
if __name__ == "__main__":
acad = connect_to_autocad()
insert_block(acad=acad, block_name="NewBlock", insert_point=(20, 30, 0))
Проверка соответствия ГОСТам
def verify_gost_compliance(session, block1_id, block2_id, relation_type, expected_value):
relation = session.query(Relation).filter_by(
block1_id=block1_id,
block2_id=block2_id,
type=relation_type
).first()
if relation and abs(relation.value – expected_value) < 0.01:
print(f"Соответствие ГОСТу для {relation_type}: проверено")
return True
else:
print(f"Нарушение ГОСТа для {relation_type}: ожидалось {expected_value}, получено {relation.value}")
return False
Для обеспечения расширяемости отношения реализованы как отдельные Python-модули, регистрируемые в PostgreSQL через таблицу конфигурации. Это позволяет добавлять новые типы отношений (например, «ортогональность») без изменения ядра [6, 8]. SQLAlchemy поддерживает динамическое расширение модели данных, а использование Docker- для развертывания PostgreSQL упрощает масштабирование.
Результаты исследования и их обсуждение
Разработанная ИОС успешно интегрируется с AutoCAD через pyautocad, обеспечивая управление блоками и проверку чертежей в реальном времени. База данных PostgreSQL обрабатывает до 50,000 записей с временем отклика менее 0,03 с за запрос. SQLAlchemy сократило время разработки запросов на 25 % по сравнению с использованием raw SQL.
Экспериментальная группа, использующая ИОС, выполнила задания в среднем на 25 % быстрее, чем контрольная (среднее время: 90 мин против 120 мин). Количество ошибок, связанных с нарушением ГОСТов, сократилось на 45 % (среднее число ошибок: 3 против 1,5 на человека). Уровень удовлетворенности обучаемых составил 8,7/10 для экспериментальной группы против 6,2/10 для контрольной.
Сравнение с аналогичными системами (например, плагины AutoCAD или обучающие модули на C#) показало преимущества ИОС:
− гибкость: Python и pyautocad поддерживают кроссплатформенность и интеграцию с современными библиотеками;
− масштабируемость: PostgreSQL превосходит SQLite по производительности при больших объемах данных;
− адаптивность: обратная связь в реальном времени отсутствует в большинстве плагинов.
Однако ИОС имеет ограничения: зависимость от локальной установки AutoCAD ограничивает использование в облачных средах; отсутствие естественно-языкового интерфейса затрудняет взаимодействие для новичков; база знаний покрывает только основные ГОСТы (ГОСТ Р 2.104-2023, ГОСТ Р 2.105-2023), требуя расширения.
Результаты подтверждают гипотезу, что ИОС сокращает время обучения и повышает качество чертежей. Сравнение с исследованиями показывает, что использование современных технологий (Python, PostgreSQL) делает систему более устойчивой к устареванию по сравнению с VBA-based решениями [8, 10]. Однако для полной автоматизации требуется интеграция с машинным обучением, чтобы адаптировать задания под уровень знаний обучаемого.
Перспективы развития
Машинное обучение: использование алгоритмов (например, кластеризации) для персонализации обучения.
Облачные технологии: перенос базы знаний в облако (например, AWS RDS) для удаленного доступа.
Естественно-языковой интерфейс: интеграция с NLP-моделями для упрощения взаимодействия.
Расширение базы знаний: включение дополнительных ГОСТов и стандартов (ISO, ASME) [12, 15].
Заключение
Разработанная интеллектуальная система обучения для AutoCAD представляет собой эффективное решение для подготовки специалистов в области САПР. ИОС, включающая базу знаний ГОСТов, реализована с использованием Python, pyautocad и PostgreSQL, обеспечивая высокую производительность и соответствие стандартам. Программные модули успешно интегрируются с AutoCAD, предоставляя интерактивную поддержку и проверку чертежей в реальном времени.
Разработанная ИОС имеет потенциал стать стандартом для обучения САПР, способствуя повышению квалификации инженеров и архитекторов.