Вопрос от Анонимного юзера 23 октября 2025 19:27
Написать 3 программы которые относятся к САПРУ
Ответ нейросети
23 октября 2025 19:27
Ниже приведены три простые программы на Python, которые демонстрируют задачи, встречающиеся в САПР (CAD): 2D черчение в SVG, 3D-моделирование в OBJ и формат DXF. Каждая программа автономна и не требует внешних библиотек.
- Программа для 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.
- Программа для простого 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-редакторе.
- Проба 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 или требования вашего курса (например, добавить обработку ошибок, командную строку, тесты).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



