Files

9.7 KiB
Raw Permalink Blame History

Чертёж: оформить деталь по ГОСТ

Дополнение к SKILL.md — методика оформления 2D-чертежа. Чертёж строится не так, как деталь: авто-валидации здесь нет. Правило трёх проверок из SKILL.md §«Два правила прежде всего» в 2D не работает — операция не отчитывается «построилось верно», потому что верность тут не про геометрию, а про место на листе. Проверять приходится самому, и способ ровно один: посмотреть.

Порядок, который окупается:

  1. Деталь строится в чертёжной ориентации. Набор видов задаётся ОТ модели: mainOrientation выбирает, какую ориентацию модели показывает главный вид, но саму ориентацию модели он не вращает. Если самая информативная проекция детали — не одна из шести стандартных, чертежа по ГОСТ не выйдет; планируешь чертёж — строй эскизы так, чтобы главный вид попадал на плоскость с наибольшей информацией.
  2. drawing_set_sheet_format (формат до видов — иначе виды придётся двигать), при необходимости drawing_add_sheet для второго листа.
  3. drawing_create_standard_views(views=[…], mainOrientation=…, hiddenLines=…) — бери ровно те проекции, которые нужны: лишний вид — лишнее место и лишний повод ошибиться видом. Главный вид входит в набор сам: перечисленные коды — это проекции ОТНОСИТЕЛЬНО него, поэтому views=["top"] даёт ДВА вида (главный и сверху). Ответ возвращает НОМЕРА видов, и дальше всё адресуется ими.
  4. Координаты — замером, а не формулой. drawing_get_view_info(viewNumber) отдаёт паспорт вида одним вызовом: положение на листе, масштаб, габарит и — главное — локальную СК: куда попадает начало координат модели и куда смотрят её оси +X/+Y/+Z в координатах вида (нулевой орт = ось проекции, вдоль неё вид смотрит). Этого хватает, чтобы пересчитывать точки модели в вид арифметикой; отдельные точки переводит drawing_project_point(x, y, z, viewNumber). Выводить оси из головы не надо и вредно: у КОМПАС «спереди» показывает плоскость XY детали, а «сверху» — X и минус Z, и знаки инверсии зависят от mainOrientation — формула, выведенная на одном чертеже, на соседнем врёт.
  5. Разрез — до размеров, а не после. Внутреннюю геометрию (зенковка, ступенчатое отверстие, паз, глубокая расточка, полость) показывай разрезом, а не невидимыми линиями: по штриховой линии нельзя ни поставить нормальный размер, ни разобрать форму. drawing_add_section_view — см. §«Разрез» ниже. Размеры внутренней геометрии ставятся УЖЕ НА РАЗРЕЗЕ, поэтому строить его надо раньше простановки, иначе размеры придётся переносить.
  6. Размеры, drawing_add_axis (осевые и центровые), шероховатость, выноски, техтребования, штамп. Осевые сначала посмотри, потом добивай: ассоциативные виды приходят со СВОИМИ центровыми и осевыми, которые КОМПАС ставит сам, и drawing_add_axis вслепую даёт дубли поверх существующих. Сначала list_drawing_objects(kind="axis"|"centreMarker", viewNumber=…).
  7. drawing_export_image — посмотреть глазами. Пока картинки не было, чертёж не сдан.

Разрез

drawing_add_section_view делает всё сразу: проводит линию разреза на базовом виде и строит по ней производный вид со штриховкой. Механика, ступенчатый разрез и встроенная проверка честности — help(topic="drawing-sections"); здесь только решения, которые принимаешь ты:

  • Разрез или hiddenLines. Разрез — когда внутреннее нужно ИЗМЕРИТЬ или показать форму: зенковка и цековка, ступенчатое или резьбовое отверстие, паз, канавка, глубокая расточка, тонкая стенка полой детали. Невидимые линии — только намёк на то, что уже показано где-то ещё; размер к штриховой линии не привязывают.
  • Веди линию с запасом за габарит (плита 60 мм → от −40 до +40): линия по самому краю режет не всю деталь. Координаты — в ЛСК БАЗОВОГО вида, её даёт drawing_get_view_info.
  • Строй разрез, когда модель готова: после правки детали перестраивается только ПЕРВЫЙ разрез базового вида. Модель всё же изменилась — снеси разрезы и построй заново.
  • Сам разрез дальше — обычный вид: размеры и обозначения ставятся на него по его номеру.

Промах простановки лечится, а не остаётся навсегда. Отката (undo) у чертежа нет, но list_drawing_objects показывает обозначения с индексами, drawing_delete_object убирает одно, а drawing_move_object его СДВИГАЕТ — слипшиеся тексты соседних размеров лечат именно сдвигом, а не заменой размера на выноску. Так же правится и компоновка: drawing_move_view переставляет вид со всеми обозначениями, drawing_add_view доносит недостающую проекцию, drawing_delete_view убирает лишнюю. Пересоздавать документ ради компоновки не нужно. Подробности адресации и порядок удаления — help(topic="drawing-fixing").

Три вещи, на которых чертёж молча выходит неверным — держи их в голове, детали в справочнике:

  • viewNumber=0 — это НЕ главный вид, а координаты ЛИСТА; знак, поставленный «на главном виде» с нулём, уезжает за границы формата (help(topic="drawing-views"));
  • ассоциативны только диаметральный и радиальный размеры; линейный и угловой меряют координаты, и «60» останется, когда деталь станет 70 — после правки модели перепроверяй их сам (help(topic="drawing-dimensions"));
  • допуск, не легший в размер, виден только по пустому read-back в ответе — техтребования его не заменят (help(topic="drawing-dimension-text")).

Ещё две ловушки, о которых узнаёшь только столкнувшись: штамп частично ведёт МОДЕЛЬ, а не чертёж (help(topic="drawing-title-block")), и у цилиндрической грани нет «координат оси» — её восстанавливают и проверяют сходимостью площадей (help(topic="cylinder-axis")).

Чего нет. Выносного элемента (увеличенный фрагмент), МЕСТНОГО разреза внутри вида, местного вида и вида с разрывом. Ассоциативного ЛИНЕЙНОГО размера нет и не будет: в API у него нет привязки к геометрии ни под каким именем (проверено QI, поздним связыванием и размером с обрывом). Экспорта в PDF/DXF тоже нет — наружу уходит растр (drawing_export_image) и STEP.