Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3481706
А
Аноним
23 октября 2025 19:27 · публичный вопрос
А
Аноним

Написать 3 программы которые относятся к САПРУ

Ответ нейросети
23 октября 2025 19:27

Ниже приведены три простые программы на Python, которые демонстрируют задачи, встречающиеся в САПР (CAD): 2D черчение в SVG, 3D-моделирование в OBJ и формат DXF. Каждая программа автономна и не требует внешних библиотек.

  1. Программа для 2D черчения и экспорта в SVG
  • Что делает: строит полилинию по точкам и сохраняет в файл drawing.svg.
  • Подойдет для набросков 2D схем, планировок и т. п.
# drawing_svg.py
# Простая программа: создаёт SVG-документ из заданных точек.

def generate_svg(points, filename="drawing.svg", width=400, height=400, stroke="black"):
    # Простейшее масштабирование по минимальным и максимальным значениям точек
    minx = min(p[0] for p in points)
    maxx = max(p[0] for p in points)
    miny = min(p[1] for p in points)
    maxy = max(p[1] for p in points)
    pad = 10
    dx = maxx - minx if maxx != minx else 1.0
    dy = maxy - miny if maxy != miny else 1.0
    scale = min((width - 2*pad) / dx, (height - 2*pad) / dy)

    def to_screen(p):
        x = pad + (p[0] - minx) * scale
        y = height - (pad + (p[1] - miny) * scale)
        return x, y

    path = " ".join(f"{to_screen(p)[0]},{to_screen(p)[1]}" for p in points)

    svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="{height}" viewBox="0 0 {width} {height}">
  <polyline points="{path}" fill="none" stroke="{stroke}" stroke-width="2"/>
</svg>'''
    with open(filename, "w") as f:
        f.write(svg)

def main():
    # Пример: прямоугольник
    points = [(50, 50), (350, 50), (350, 200), (50, 200), (50, 50)]
    generate_svg(points, "drawing.svg")

if __name__ == "__main__":
    main()

Как запустить:

  • python3 drawing_svg.py
  • В текущей папке появится drawing.svg.
  1. Программа для простого 3D-моделя: экспорт куба в OBJ
  • Что делает: генерирует вершины куба и треугольные faces, сохраняет в cube.obj.
  • Подойдет для базового 3D-моделирования и проверки импорта в другие ПО (Blender, MESHMAGIC и т. п.).
# cube_obj.py
# Генерация простого куба и экспорт в OBJ

def write_cube_obj(side=1.0, filename="cube.obj"):
    s = side / 2.0  # полубоковая ширина
    verts = [
        (-s, -s, -s), ( s, -s, -s), ( s,  s, -s), (-s,  s, -s),  # задняя грань
        (-s, -s,  s), ( s, -s,  s), ( s,  s,  s), (-s,  s,  s),  # передняя грань
    ]
    faces = [
        (1, 2, 3), (1, 3, 4),  # задняя грань
        (5, 6, 7), (5, 7, 8),  # передняя грань
        (1, 2, 6), (1, 6, 5),  # нижняя грань
        (2, 3, 7), (2, 7, 6),  # правая грань
        (3, 4, 8), (3, 8, 7),  # верхняя грань
        (4, 1, 5), (4, 5, 8),  # левая грань
    ]

    with open(filename, "w") as f:
        for v in verts:
            f.write(f"v {v[0]} {v[1]} {v[2]}\n")
        f.write("s off\n")
        for a, b, c in faces:
            f.write(f"f {a} {b} {c}\n")

if __name__ == "__main__":
    write_cube_obj(2.0, "cube.obj")

Как запустить:

  • python3 cube_obj.py
  • В текущей папке появится cube.obj, которую можно открыть в любом 3D-редакторе.
  1. Проба DXF-генератора: минимальная запись LINE и CIRCLE
  • Что делает: создаёт минимальный DXF-файл с двумя примитивами: линией и окружностью.
  • Подойдет для демонстрации базового формата CAD-вида данного стандарта.
# dxf_writer.py
# Минимальный DXF-файл с примитивами LINE и CIRCLE

def write_dxf(filename="scene.dxf"):
    parts = []
    parts.append("0\nSECTION\n2\nHEADER\n0\nENDSEC\n")
    parts.append("0\nSECTION\n2\nENTITIES\n")

    # Линия: от (0,0,0) до (100,0,0)
    parts.append("0\nLINE\n8\n0\n10\n0.0\n20\n0.0\n30\n0.0\n11\n100.0\n21\n0.0\n31\n0.0\n")

    # Окружность: центр (200,200,0), радиус 50
    parts.append("0\nCIRCLE\n8\n0\n10\n200.0\n20\n200.0\n30\n0.0\n40\n50.0\n")

    parts.append("0\nENDSEC\n0\nEOF\n")

    with open(filename, "w") as f:
        f.write("".join(parts))

if __name__ == "__main__":
    write_dxf()

Как запустить:

  • python3 dxf_writer.py
  • В текущей папке появится scene.dxf, который можно открыть в CAD-программе и проверить примитивы.

Советы и варианты расширения

  • Язык: если нужен другой язык (C++, Java, C#) — скажите, могу переписать.
  • Расширение: можно сделать параметры через ввод пользователя, или чтение сцен из файлов (CSV/JSON).
  • Расширение 2D: можно добавить экспорт в формат DXF напрямую из SVG-дрыв, или добавить поддержку полилиний, кругов и дуг.
  • Расширение 3D: можно добавить сетку и нормали, сохранить в STL илиPLY, добавить плавную топологию.

Если нужно, могу адаптировать эти примеры под конкретный язык, IDE или требования вашего курса (например, добавить обработку ошибок, командную строку, тесты).