Пример создания плоскостей и автоматического наложения зависимостей
https://t.me/nanoSPDS MechWizard вообще, и мастер создания зависимостей в частности, не могут обеспечить создания 100% законченного объекта. Но существенно помогает на начальном, этапе в процессе освоения и предоставляет вспомогательные инструменты для интерактивного получения «заготовки» скрипта для последующей доработки напильником. Тело документа: https://cloud.mail.ru/public/EQo1/wADasya4n 00:07 Вызываем команду spconstraint – (Управление зависимостями) 00:09 Выбираем, в качестве дочернего объекта, «Крестовину» и разбираемся с наличием и расположением рабочих плоскостей (WP1…WP4) и public параметрами 00:25 Открываем MechWizard, создаем новый объект, размещаем объект в структуре БД и выбираем «Шаблон по умолчанию» в качестве заготовки 00:48 Создаем новое исполнение, и, выбрав «Параметрическое распознавание вида», распознаём эскиз. В данном случае эскиз очень простой и не будем уделять внимание его построению. 00:57 Вызываем «Мастер создания скриптов» и последовательно проходим все шаги для создания простой параметрической графики. Пока наша цель просто вставить графику в чертеж и проверить её работу. 02:27 Вставляем объект в чертеж и проверяем его работу. 02:45 Открываем MechWizard и, вызвав «Мастер создания скриптов» переходим на шаг «Рабочие плоскости». Вводим название плоскости WP1 и добавляем её в список. Плоскость расположена параллельно плоскости OYZ на расстоянии rL от вставки объекта. 02:58 В А Ж Н О!!! Если мы в дальнейшем планируем использовать плоскость при взаимодействии с другими объектами, обязательно нужно указать «Плоскость доступна на редактирование другими объектами». В этом случае в функции OnChangeParameters будет добавлена запись (03:28) для обработки этой плоскости при изменении этого объекта. 03:03 Мы специально не будем указывать «Доступно для изменения другими объектами» для плоскости WP2. Плоскость WP1 добавилась в Changeable параметры, а WP1 нет. Кроме того в OnChangeParameters, добавилась обработка плоскости для WP1, а для WP2 нет. 03:48 Запускаем «Мастер создания скриптов» и делаем плоскость WP2 «Доступной для редактирования другими объектами» 03:52 04:12 Распознаём эскиз и добавляем записи из эскиза в SetGripPoint и OnMoveGripPoint 04:30 Заходим в функцию OnMoveGripPoint и для первой точки (pntGrip1) добавляем vecDirection = pntGrip1 - pntGrip0; При движении этой точки (кроме записи выше, что она будет растягивать rL), будет поворачивать объект относительно pntOrigin. Для второй точки (pntGrip2) редактируем параметр rD rD = (rD = (OYPlane - pntGrip2)*2; - pntGrip2)*2; Диаметр (rD) будет вычислять как расстояние от плоскости OYPlane до точки курсора (pntGrip2), умноженного на два 05:32 Проверяем работу объекта 05:42 Вызываем команду spconstraint – (Управление зависимостями), указываем наш объект как «Дочерний», а в качестве «Родительского» Указываем «Крестовину». Последовательно указываем параметры в левой и правой части для зависимостей, нажимаем «Двунаправленная». 06:27 Переходим на закладку «Сборочные зависимости» и совмещаем плоскость WP2 нашего примера и плоскость WP1 «Крестовины». Указывать плоскости можно как на чертеже, так и в структуре дерева объекта. Забыли указать «Двунаправленную зависимость». Исправим это позже 10:10. 06:42 Проверяем работу наложенных параметрических и геометрической зависимости 06:58 Открываем MechWizard и в меню выбираем «Мастер зависимостей». Так как у нас на чертеже уже есть объекты с предустановленными зависимостями, но нажимаем «ESC» на предложения выбора объектов из базы. В открывшемся диалоге «Управления зависимостями» в качестве «дочернего» указываем наш пример. При указании в дереве а имеющиеся зависимости будет «подтягиваться» нужны «родительский» объект. Нажимаем ok и в диалоге «Обучение детали установке зависимостей» последовательно проходим все шаги. Так как у нас простой обучающий пример никаких изменений мы тут проводить не будем. 07:34 Проверяем установку зависимостей. Так как пока у нас прописан коннект только к одной плоскости крестовины (obj.WP1) и параметр rD связывается только с параметром obj.rD1, то, естественно, требуется ручная доработка. 07:54 Предварительно разместим два объекта на чертеже. С ними пока коннект на производится 08:13 Открываем MechWizard и переходим в функцию OnConnect. Нам нужно определить ближайшую рабочую плоскость под курсором. Добавляем переменную iWPindx. iWPindx = findNearest(pntOrigin,obj.WP,1,4) вернёт нам индекс ближайшей плоскости под курсором. Для предварительно проверки и визуализации (Зря на самом деле. Только время затянул) выведем имя плоскости в нотификатор ShowMessage("Плоскость WP"+iWPindx); 09:33 Вставляем пример и в нотификаторе смотрим имя плоскости. 10:09 Редактируем имя родительской плоскости подставляя вместо obj.WP вычисленное имя obj.WP[iWPindx] 10:10 Редактируем наш косяк (06:27) и делаем зависимость «Двунаправленной» Продолжение в первом комментарии
https://t.me/nanoSPDS MechWizard вообще, и мастер создания зависимостей в частности, не могут обеспечить создания 100% законченного объекта. Но существенно помогает на начальном, этапе в процессе освоения и предоставляет вспомогательные инструменты для интерактивного получения «заготовки» скрипта для последующей доработки напильником. Тело документа: https://cloud.mail.ru/public/EQo1/wADasya4n 00:07 Вызываем команду spconstraint – (Управление зависимостями) 00:09 Выбираем, в качестве дочернего объекта, «Крестовину» и разбираемся с наличием и расположением рабочих плоскостей (WP1…WP4) и public параметрами 00:25 Открываем MechWizard, создаем новый объект, размещаем объект в структуре БД и выбираем «Шаблон по умолчанию» в качестве заготовки 00:48 Создаем новое исполнение, и, выбрав «Параметрическое распознавание вида», распознаём эскиз. В данном случае эскиз очень простой и не будем уделять внимание его построению. 00:57 Вызываем «Мастер создания скриптов» и последовательно проходим все шаги для создания простой параметрической графики. Пока наша цель просто вставить графику в чертеж и проверить её работу. 02:27 Вставляем объект в чертеж и проверяем его работу. 02:45 Открываем MechWizard и, вызвав «Мастер создания скриптов» переходим на шаг «Рабочие плоскости». Вводим название плоскости WP1 и добавляем её в список. Плоскость расположена параллельно плоскости OYZ на расстоянии rL от вставки объекта. 02:58 В А Ж Н О!!! Если мы в дальнейшем планируем использовать плоскость при взаимодействии с другими объектами, обязательно нужно указать «Плоскость доступна на редактирование другими объектами». В этом случае в функции OnChangeParameters будет добавлена запись (03:28) для обработки этой плоскости при изменении этого объекта. 03:03 Мы специально не будем указывать «Доступно для изменения другими объектами» для плоскости WP2. Плоскость WP1 добавилась в Changeable параметры, а WP1 нет. Кроме того в OnChangeParameters, добавилась обработка плоскости для WP1, а для WP2 нет. 03:48 Запускаем «Мастер создания скриптов» и делаем плоскость WP2 «Доступной для редактирования другими объектами» 03:52 04:12 Распознаём эскиз и добавляем записи из эскиза в SetGripPoint и OnMoveGripPoint 04:30 Заходим в функцию OnMoveGripPoint и для первой точки (pntGrip1) добавляем vecDirection = pntGrip1 - pntGrip0; При движении этой точки (кроме записи выше, что она будет растягивать rL), будет поворачивать объект относительно pntOrigin. Для второй точки (pntGrip2) редактируем параметр rD rD = (rD = (OYPlane - pntGrip2)*2; - pntGrip2)*2; Диаметр (rD) будет вычислять как расстояние от плоскости OYPlane до точки курсора (pntGrip2), умноженного на два 05:32 Проверяем работу объекта 05:42 Вызываем команду spconstraint – (Управление зависимостями), указываем наш объект как «Дочерний», а в качестве «Родительского» Указываем «Крестовину». Последовательно указываем параметры в левой и правой части для зависимостей, нажимаем «Двунаправленная». 06:27 Переходим на закладку «Сборочные зависимости» и совмещаем плоскость WP2 нашего примера и плоскость WP1 «Крестовины». Указывать плоскости можно как на чертеже, так и в структуре дерева объекта. Забыли указать «Двунаправленную зависимость». Исправим это позже 10:10. 06:42 Проверяем работу наложенных параметрических и геометрической зависимости 06:58 Открываем MechWizard и в меню выбираем «Мастер зависимостей». Так как у нас на чертеже уже есть объекты с предустановленными зависимостями, но нажимаем «ESC» на предложения выбора объектов из базы. В открывшемся диалоге «Управления зависимостями» в качестве «дочернего» указываем наш пример. При указании в дереве а имеющиеся зависимости будет «подтягиваться» нужны «родительский» объект. Нажимаем ok и в диалоге «Обучение детали установке зависимостей» последовательно проходим все шаги. Так как у нас простой обучающий пример никаких изменений мы тут проводить не будем. 07:34 Проверяем установку зависимостей. Так как пока у нас прописан коннект только к одной плоскости крестовины (obj.WP1) и параметр rD связывается только с параметром obj.rD1, то, естественно, требуется ручная доработка. 07:54 Предварительно разместим два объекта на чертеже. С ними пока коннект на производится 08:13 Открываем MechWizard и переходим в функцию OnConnect. Нам нужно определить ближайшую рабочую плоскость под курсором. Добавляем переменную iWPindx. iWPindx = findNearest(pntOrigin,obj.WP,1,4) вернёт нам индекс ближайшей плоскости под курсором. Для предварительно проверки и визуализации (Зря на самом деле. Только время затянул) выведем имя плоскости в нотификатор ShowMessage("Плоскость WP"+iWPindx); 09:33 Вставляем пример и в нотификаторе смотрим имя плоскости. 10:09 Редактируем имя родительской плоскости подставляя вместо obj.WP вычисленное имя obj.WP[iWPindx] 10:10 Редактируем наш косяк (06:27) и делаем зависимость «Двунаправленной» Продолжение в первом комментарии