Эта документация не закончена. Пожалуйста, помогите и внесите свой вклад в разработку документации.
Пример документирования команды Gui объясняет, как должны быть задокументированы команды. Просмотрите Category:UnfinishedDocu/ru, чтобы увидеть больше незавершённых страниц, подобных этой. Смотрите Category:Command Reference/ru для всех команд.
Смотрите Wiki Страницы, чтобы узнать о редактировании вики-страниц, и зайдите на страницу Помоги FreeCAD, чтобы узнать о других способах, которыми вы можете внести свой вклад.
Я думаю, что Верстак Sketcher нуждается в некоторых примерах, которые не являются подробными руководствами или видео...
Плёночный шарнир - это крошечный кусочек гнущегося пластика, который соединяет две стороны предмета, изготовленного методом литья под давлением, например, ёмкость с крышкой или две половинки корпуса пылезащитной пробки.
В этом примере используется некий мастер-эскиз, на который накладываются несколько зависимых эскизов. Он также показывает, как прикрепить и анимировать простой зажим на основе функций верстака PartDesign (ПроектнаяДеталь) и ограничений из верстака
Sketcher (Скетчер). Использование
выражений, как описано ниже, требует FreeCAD V 0.21 или выше.
Обычно объект моделируется в закрытом состоянии. Позже подвижную часть необходимо развернуть на 180° для формовки в открытом состоянии.
Сгибаемая полоса представлена круговой дугой для закрытого состояния и прямой линией для открытого состояния, обе имеют одну и ту же начальную точку.
Средняя точка линии, соединяющей обе конечные точки, указывает положение оси переворота, нормальной к плоскости эскиза. (Она помещается в начало эскиза, чтобы глобальная ось, нормальная к плоскости эскиза, могла использоваться в качестве оси вращения)
(Некоторые скрытые дополнительные пояснения и описание рабочего процесса можно найти здесь -->
Мастер-эскиз и анимированная петля плёночного шарнира (щёлкните по изображению, если анимация остановилась после нескольких повторов)
Для полуокружности длина дуги равна радиусу, умноженному на Pi (l = r * Pi). Радиус называется NeutralRadius (НейтральныйРадиус), а линия - DevelopedLength (ДлинаРазвёртки). Выражение для DevelopedLength связывает оба значения: .Constraints.NeutralRadius * pi
.
, за которым следует ValueType.ValueName для обращения к другому значению.
Дуга этого плёночного шарнира имеет постоянную длину и переменный радиус. Одним из исходных данных является NeutralRadius базового эскиза; чтобы иметь его под рукой в этом эскизе, он связан как внешняя геометрия, имеющая опорный размер ReferenceRadius
Круговой сегмент вспомогательной геометрии показывает соотношение между дугой и радиусом для заданного угла.
InputLength = ReferenceRadius * Pi
и
ArcLength = DynamicRadius * Pi * ArcAngle / 180°
при постоянной длине это приводит к:
ReferenceRadius * Pi = DynamicRadius * Pi * ArcAngle / 180°
И, исключив Pi, получаем:
ReferenceRadius = DynamicRadius * ArcAngle / 180° или DynamicRadius = ReferenceRadius * 180° / ArcAngle
.Constraints.ReferenceRadius * 180 ° / .Constraints.ArcAngle
Плёночный шарнир обычно симметричен, поэтому для вывода используется другая дуга с той же центральной точкой, называемая HalfArc и представляющая собой половину дуги шарнира.
.Constraints.ArcAngle / 2
Промежуточный эскиз, показывающий DynamicRadius дуги шарнира 4 (мм) при заданном угле 45° (и полудуги для вывода)
Этот эскиз определяет толщину и прилегающую геометрию плёночного шарнира. Поэтому мы загружаем полудугу промежуточного эскиза как внешнюю геометрию, чтобы использовать её в качестве основы для плёночной части. (в данном случае это доля 180°)
Эта плёночная петля предназначена для того, чтобы соединённые части не касались друг друга в закрытом состоянии. Этого можно добиться, рассчитав круговую дугу нужной длины, затем создав полоску постоянной толщины и, наконец, наложив галтели в местах соприкосновения полоски с половинками объекта. Последний шаг укорачивает петлю, но в реальном мире это не проблема, поскольку дуга никогда не будет круглой, а галтели влияют на кривизну дуги, но не на её функциональность.
Эскиз шарнира, показывающий очертания шарнира на основе внешней геометрии по полудуге промежуточного эскиза
Слева: выдавленная половинка петли с видимым эскизом. Справа: полупетля с добавленым
скруглением
Полупетля с выделенной зеркальной плоскостью → зеркальная плёночная петля
Подсказка: Функция Part Зеркально принимает только три основные плоскости и поэтому не может быть использована в данном случае.
Наконец, два параметра определяют размер плёночного шарнира:
Угол изгиба контролируется ограничением ArcAngle промежуточного эскиза и может быть изменён в его редакторе свойств.
Но мы же с вами - правильные дизайнеры и правильно назвали ограничения и размеры наших эскизов, поэтому можем обратиться к контрольному углу через Python.
Несколько основных строк кода для встраивания в контекст GUI могут выглядеть следующим образом:
doc=App.ActiveDocument
sketch=doc.getObjectsByLabel('IntermediateSketch')[0]
...
sketch.getDatum('ArcAngle')
...
sketch.setDatum('ArcAngle',App.Units.Quantity('50.000000 deg'))
doc.recompute(None,True,True)
Краткое объяснение:
doc = App.ActiveDocument
: Чтобы обратиться к активному документу по псевдониму, называемому docsketch = doc.getObjectsByLabel('IntermediateSketch')[0]
: Чтобы обратиться к соответствующему эскизу под псевдонимом sketch.
0
, чтобы выбрать первый объект в списке. (Мы не ожидаем появления другого объекта с такой же меткой и поэтому не должны заботиться о других элементах в списке.)sketch.getDatum('ArcAngle')
: Возвращает текущее значение размерного ограничения ArcAngle (в режим просмотра отчета)sketch.setDatum('ArcAngle', App.Units.Quantity('50.0 deg'))
: Устанавливает значение ArcAngle 50°
doc.recompute(None,True,True)
: Чтобы обновить весь документ и показать изменения зависимой геометрии.
Две половинки клипсы ждут своего часа, чтобы быть прикреплёнными к шарниру: одна на неподвижной стороне, другая - на подвижной.
Две половинки простого зажима
Статическая сторона проста:
PartDesign Булевы с опцией (по умолчанию) Слияние.
Плёночный шарнир и статичная половина в положении для моделирования → Плёночный шарнир с перемещённой и объединённой статической половинкой
Но на подвижной стороне всё иначе: связанная половина геометрии зажима должна переместиться в нужное положение, прежде чем начнётся (повторный) расчёт операции Соединения (Fuse).
На данный момент мне не хватает функции "Присоединение со смещением", как в верстаке Assembly3, чтобы прикрепить геометрию зажима к одной из движущихся граней. Но после некоторых экспериментов и настроек я нашёл решение:
Хотя для их выравнивания можно использовать Присоединение, но оно не будет параметрически связано.
Исходя из этого, рабочий процесс может выглядить следующим образом:
Подвижная половина будет прикреплена к углу подвижной стороны шарнира (режим привязки OXZ: вершина, ребро, ребро)
Оглядываясь назад, можно сказать, что было бы разумнее снабдить геометрию вложения промежуточным эскизом, чтобы избежать ещё одного источника Проблем топологического именования.
Зажим на данный момент и подвижная половина в положении для моделирования → готовый зажим с присоединённой и
объединённой подвижной половинкой
Теперь в результате должен получиться один сплошной зажим, который можно закрывать и открывать, изменяя ArcAngle плёночного шарнира. Допустимые углы: от 0,1° до 180°, при этом участок плёнки не должен становиться прямым, а больше, чем закрытый, не имеет смысла. (При 180° объект может слиться по касательной или в местах перекрытия, но небольшой дополнительный зазор может помочь, если это неприемлемо).
Клипса почти закрыта → Клипса закрыта наполовину → Клипса в положении для отливки в пресс-форме