1c общую команду обычные формы. Операции над объектами

Команда - это объект конфигурации, с помощью которого разработчик может описывать действия, предназначенные для выполнения пользователем.

Существуют общие команды - команды, которые не имеют объектной специфики или служат для выполнения действий с объектами, которые не используют стандартные команды.

Также команды могут существовать и у отдельных объектов конфигурации. Они служат для выполнения операций, связанных именно с этим объектом.

Команды могут быть параметризованными, то есть они могут использовать в своем алгоритме некоторое значение, передаваемое платформой. Тип этого значения задается в конфигураторе и такая параметризованная команда отображается только в тех формах, в которых имеются реквизиты того же типа, что и параметр команды.

Действия, выполняемые командой, описываются на встроенном языке в модуле команды.

Полезные ссылки:

  • Объекты конфигурации,
  • Средства разработки.

Команда (Command)

Команда - это действие, которое пользователь может выполнить в программе. Все команды можно классифицировать несколькими способами.

Стандартные команды и команды, созданные разработчиком

По отношению к тому, каким образом команда появилась в конфигурации, все команды можно разделить на:

  • Стандартные,
  • Созданные разработчиком.

Стандартные команды поставляются автоматически, платформой. Поставлять стандартные команды могут объекты конфигурации, а также расширения форм и расширения элемента Таблица , расположенного в форме. Подробнее...

Например, справочник Контрагенты может поставлять команды Контрагенты , Контрагент: создать и Контрагенты: создать группу .

Разработчик может сам создать произвольные команды в конфигурации. Он может добавить объект Команда в ветку Общие , добавить объект Команда в конкретный объект конфигурации или описать команду в виде процедуры на встроенном языке в конкретной форме. Подробнее...

Например, могут быть добавлены общие команды УстановитьСканерШтрихкодов , НастроитьСканерШтрихкодов и другие.

Навигационные команды и команды действий

По отношению к тому, что является результатом выполнения команды, все команды можно разделить на:

  • Навигационные команды,
  • Команды действий.

Навигационные команды открывают формы в текущем окне. Как правило, таким образом выполняется переход к каким-либо спискам. Подробнее...

Например, навигационная команда Склады откроет список складов в основном окне.

В результате выполнения команды действия открывается вспомогательное окно. Как правило таким образом выполняется переход к форме объекта или к форме отчета/обработки. Подробнее...

Например, команда действия Склад откроет вспомогательное окно для редактирования данных нового склада.

Независимые и параметризуемые команды

По отношению к своему внутреннему устройству, все команды можно разделить на:

  • Независимые,
  • Параметризуемые

Для выполнения независимых команд не требуется какой-либо дополнительной информации. Подробнее...

Например, независимая команда Контрагенты не требует для своего выполнения какой-либо дополнительной информации. Она просто открывает список всех контрагентов.

Для выполнения параметризуемых команд требуется дополнительная информация - значение параметра команды. Подробнее...

Например, параметризуемая команда Расчетные счета (Объект.Поставщик) открывает список расчетных счетов некоторого конкретного контрагента. Поэтому для ее выполнения необходимо знать, расчетные счета какого именно контрагента нужно открыть. То есть контрагент является параметром этой команды.

Глобальные команды и локальные команды формы

По отношению команд к некоторой форме, все команды можно разделить на.

Большая часть современного ПО разрабатывается группами программистов. Кто-то отвечает за пользовательский интерфейс, кто-то за ядро, а кто-то за дополнительные модули. Чтобы работа всех этих людей не пропала даром, нужно грамотно объединить разные части проекта, не забыв при этом о возможном его расширении. Для этого нам пригодится паттерн проектирования «Команда», который инкапсулирует в себе исполнителя задачи и ее условия.

Давай представим, что мы работаем в компании, которая пишет сложный многокомпонентный софт. Проект узкоспециализированный и имеет много разнообразных модулей, количество которых может со временем расширяться. Наша задача состоит в том, чтобы написать гибкую и удобную систему горячих клавиш для этой программы. Набор возможных сочетаний ограничивается хоткеями от до , а также включает в себя комбинацию ctrl-z для отмены действия.

Казалось бы, всё просто: накодил большой блок switch, который при нажатии разных сочетаний кнопок вызывает ту или иную функцию какого-либо модуля, и радуйся. Но, во-первых, такой подход не отличается гибкостью. Когда проект пополнится новыми модулями или hotkeys, нам придется менять код этого раздутого оператора ветвления, из-за чего он впоследствии раздуется еще больше. А во-вторых, начальство большими красными буквами написало, что у пользователя должна быть возможность переназначить эти горячие клавиши. Таким образом, жестко забить команды в код switch у нас точно не выйдет.

Взглянув на код модулей проекта и списки их команд, которые можно присвоить хоткеям, мы еще больше убеждаемся, что придется изрядно помучиться, прежде чем мы придумаем более-менее рабочую архитектуру всего этого.

Интерфейсы модулей, доступные для обращения через HotKeys class Calculator { public: void runCalc(); void closeCalc(); } class Printer { public: void printDocument(); void printImage(); void printEmail(); } class Browser { public: void runBrowser(); void closeBrowser(); } // И дальше много всяких разных классов

Паттерн «Команда»

Отбросив лирику, перейдем к изучению паттерна «Команда», который должен помочь нам в этом нелегком деле. Для начала следует разобраться, что мы имеем. У нас есть множество модулей с самыми разнообразными API. Также у нас есть окошко, в котором пользователь может выбрать из списка одну из команд, предоставляемых модулями, и закрепить ее за определенным сочетанием клавиш.

Формально выражаясь, обработчик нажатий клавиатуры - это клиент, API-функции модулей, вызываемые с помощью горячих клавиш, - это задачи, а модули, предоставляющие эти задачи, - это исполнители. Окошко с настройками hotkeys представляет собой некий посредник между клиентом и исполнителем, скрывающий все детали выполняемых операций. Такая структура позволяет полностью отделить клиент от исполнителя, то есть пользователь понятия не имеет, какой модуль работает при нажатии той или иной комбинации клавиш и что он делает. И это очень хорошо, так как чем лучше изолированы друг от друга части кода, тем надежней работает программа.

Для такой изоляции нам нужно определить объект команды, а следовательно, и соответствующий интерфейс. Он достаточно прост и определяет всего один метод execute(), который должен выполнять метод какого-либо из модулей.

Интерфейс объекта «Команды» class Command { public: void execute() = 0; }

Для определения конкретного объекта мы просто объявляем новый класс, который наследует интерфейс Command, и определяем его метод execute(). Допустим, мы хотим создать команду, запускающую калькулятор. Для этого мы создадим класс RunCalcCommand, который будет наследовать интерфейс Command, и переопределим execute() для вызова метода runCalc() модуля Calculator.

Команда запуска калькулятора class RunCalcCommand: public Command { Calculator *calc; public: RunCalcCommand(Calculator *excalc) { calc = excalc; } void execute() { calc->runCalc(); } }

Если внимательно присмотреться к коду команды, то можно заметить, что в конструкторе класса RunCalcCommand передается указатель на модуль Calculator. Это сделано для большей гибкости. В будущем у нас может появиться класс ModernCalculator, вызывающий продвинутую версию расчетной программы. Используя композицию, то есть не фиксируя исполнителя жестко в коде, мы увеличиваем изолированность кода, что в будущем позволит сэкономить время.

Теперь нужно связать команду с хоткеем. Для этого можно создать массив указателей на объекты класса Command. Размер массива будет равен количеству поддерживаемых горячих клавиш. Каждый элемент массива команд сопоставляется с определенным хоткеем. В нашем случае для этого можно преобразовать значение кнопки, которая вместе с Ctrl составляет какое-либо из возможных сочетаний, в числовое значение. Если бы мы использовали сочетания, например, от ctrl-a до ctrl-k, то нам бы потребовался немного другой подход.

Получив код нажатого сочетания клавиш и преобразовав его в соответствующий индекс для массива команд, мы можем смело вызывать метод execute() объекта, указатель на который находится в нужной ячейке массива.

Назначение команды на hotkey и ее запуск // Код инициализации команды и хоткея const int comCount = 10; Command* commands; Calculator *calc = new Calculator(); commands = new RunCalcCommand(calc); // Код в обработчике нажатий клавиатуры // Получаем нажатые клавиши hotkey = catchHotKey(); // Преобразовываем их в индекс и запускаем команду int index = hotkey2index(hotkey); commands->execute();

Всё довольно-таки просто. Можно определить еще несколько наследников Command, которые будут выполнять определенные действия, и связать их с горячими клавишами. Такая архитектура позволяет полностью отделить клиент от исполнителей. Обработчик клавиатуры понятия не имеет, какой модуль обрабатывает команду и что именно он делает, а модули, в свою очередь, не подозревают, что обращение к ним осуществляется с помощью hotkeys, а не каким-то другим способом.

Отмена команды

Вроде бы всё хорошо, но мы совсем забыли про отмену. Сочетание клавиш ctrl-z должно откатывать действие последней команды. Реализовать отмену довольно просто, хотя на первый взгляд может показаться, что это совсем не так. Для этого мы немного изменим интерфейс Command.

Класс Command, поддерживающий отмену class Command { public: void execute() = 0; void undo() = 0; } class RunCalcCommand: public Command { Calculator *calc; public: RunCalcCommand(Calculator *excalc) { calc = excalc; } void execute() { calc->runCalc(); } void undo() { calc->closeCalc(); } }

Мы просто добавили метод undo(), который должен быть переопределен в классах-наследниках. Программист сам решает, какую именно функцию модуля будет использовать метод отмены. Так, метод undo() для RunCalcCommand будет обращаться к функции closeCalc() модуля Calculator. Нам также потребуется немного подправить код обработчика клавиатуры.


Wikipedia про паттерн «Команда». Обработчик клавиатуры с поддержкой отмены // Код инициализации команды и хоткея const int comCount = 10; Command* commands; Command *lastCommand = new NoCommand(); Calculator *calc = new Calculator(); commands = new RunCalcCommand(calc); // Код в обработчике нажатий клавиатуры // Получаем нажатые клавиши HotKey *hotkey = catchHotKey(); // Если это отмена, то вызываем соответствующий метод if (hotkey->str() == "ctrl-z") { lastCommand->undo(); } // Обработка остальных сочетаний

Здесь мы просто запоминаем в переменной lastCommand указатель на последнюю использованную команду и при нажатии ctrl-z вызываем соответствующий метод. Дополнительно мы прибегаем к небольшому трюку, используя объект пустой команды NoCommand. Код этого класса выглядит так:

Пустая команда NoCommand class NoCommand: public Command { public: void execute() {}; void undo() {}; }

Такие объекты-заглушки используются довольно часто. Они нужны, чтобы уменьшить количество проверок нулевого указателя. Если бы lastCommand был равен NULL, то перед вызовом метода undo() нам пришлось бы проверять корректность значения этого указателя, что нежелательно, так как однажды мы можем забыть это сделать, в результате чего программа с грохотом упадет. Такие же объекты-заглушки рекомендуется использовать и для остальных хоткеев, которым не назначены соответствующие команды.

Кстати, код обработчика клавиатуры можно модифицировать так, чтобы он поддерживал отмену не только последней операции, но и вообще всех цепочек выполненных команд. Для этого вместо простого указателя на последнюю команду следует использовать стек. При обработке какого-либо хоткея в стек будет добавляться указатель на соответствующую команду. Таким образом, мы получим полную историю вызовов команд, что позволит нам последовательно все отменить при помощи ctrl-z.


Макрокоманды

Макросы - одно из величайших изобретений человечества, помогающее ему экономить тонны времени. Наш паттерн позволяет реализовывать макрокоманды всего лишь с помощью нескольких дополнительных строк кода. Для начала определим класс, отвечающий за логику группового выполнения операций.

Макрокоманда class MacroCommand: public Command { Command *commands; int comCount; public: MacroCommand(Command *comArray, int elemCount) { commands = comArray; comCount = elemCount; } void execute() { for (int i = 0; i < comCount; i++) { commands[i]->execute(); } } void undo() { for (int i = 0; i < comCount; i++) { commands[i]->undo(); } } }

Как видно, класс MacroCommand является наследником Command и переопределяет всё те же методы execute и undo. В интерфейсе от обычной команды он отличается лишь конструктором. Этот класс принимает не указатель на исполняющий модуль, а массив указателей на простые команды. Код execute() просто проходит по элементам массива и вызывает каждый из них. Так же ведет себя и undo(). Обработчик клавиатуры при обращении к объекту команды понятия не имеет, макрос это или обычная единичная операция, - главное, что все они предоставляют функции execute() и undo().

Расширенные возможности паттерна «Команда»

Наш паттерн можно использовать не только для обработки горячих сочетаний клавиш. С помощью него можно организовывать очереди запросов. Допустим, что у нас есть пул потоков, который должен выполнять некоторые задания. Все задания представляют собой объекты, реализующие уже знакомый нам интерфейс Command. Команды выстраиваются в очередь, к которой последовательно обращаются потоки. Они забирают команды из этой очереди и запускают их методы execute(). Потокам не важно, что делают эти объекты - главное, чтобы они поддерживали вызов execute(). Команды можно сохранять на жестком диске и восстанавливать их оттуда. Для этого следует немного расширить их базовый интерфейс.

Command с поддержкой сохранения и загрузки class Command { public: void execute() = 0; void undo() = 0; void load() = 0; void store() = 0; }

Метод load() предназначен для сохранения команды в журнале, а store() - для ее восстановления оттуда. Код этих методов может использовать механизмы сериализации языка программирования, если таковые в нем есть. Такая функциональность нужна для работы с большими объемами данных, которые невозможно сохранять после совершения с ними каждого действия. При сбое программы мы сможем загрузить сохраненные команды и последовательно применить их к имеющейся копии данных для приведения этих данных в актуальное состояние.

Заключение

С помощью паттерна «Команда» нам удалось полностью отделить разношерстные модули-исполнители от клиента - обработчика клавиатуры. Если в будущем в программе появятся новые модули, мы сможем легко добавить соответствующие команды и назначить им горячие клавиши. Это будет простое, изящное и эффективное решение.

С помощью команды BREAK (РАЗОРВИ) объект разрывается в точке или точках, определенных пользователем. С помощью команд CHAMFER (ФАСКА) и FILLET (СОПРЯГИ ) создаются фаски и сопряжения

Зачастую бывает проще вычертить один длинный отрезок, а затем разорвать его на два и более, чем вычерчивать несколько отрезков. Команда BREAK (РАЗОРВИ) чаще всего используется при создании архитектурных планов для разрыва стен в местах дверных и оконных проемов. Если задать на объекте две точки, AutoCAD сотрет все, что находится между ними. Обычно для определения этих точек используется объектная привязка. Иногда для этого можно использовать команду TRIM (ОБРЕЖЬ), но если имеются затруднения с указанием режущих кромок, предпочтительно использовать команду BREAK (РАЗОРВИ).

Разрывать можно следующие объекты AutoCAD: отрезки, полилинии, сплайны, прямые (xlines), лучи, окружности, дуги и эллипсы.

С помощью команды CHAMFER (ФАСКА) создаются фаски на углах, образованных двумя непараллельными отрезками. Эта команда может оперировать также с прямыми, лучами и полилиниями. Угол можно создать простым удлинением отрезков до их пресечения или создать фаску. Если создается фаска, она определяется либо двумя катетами, либо одним катетом и углом фаски по отношению к одной из кромок.

Процесс создания фаски состоит из двух шагов. Сначала задаются параметры фаски. Это могут быть либо два катета, либо один катет и один угол фаски. После ввода значений AutoCAD завершит команду CHAMFER (ФАСКА). После этого нужно снова запустить эту команду и выбрать два отрезка, представляющие кромки, между которыми создается фаска. AutoCAD создаст фаску, используя полученную на предыдущем этапе информацию.

Команда FILLET (СОПРЯГИ) используется для построения плавного сопряжения двух отрезков дугой. К этой операции часто обращаются при создании чертежей механических конструкций. В некоторых случаях команда FILLET (СОПРЯГИ) может применяться вместо команды ARC (ДУГА) для создания дуг. Как и при использовании команды CHAMFER (ФАСКА), при помощи команды FILLET (СОПРЯГИ) можно сопрягать отрезки, прямые, лучи или полилинии, которые могут быть и параллельными. Но, кроме этих объектов, сопрягать можно и окружности, дуги и эллипсы. В команде для формирования сопрягающей дуги нужно задать ее радиус

Процесс сопряжения также двухшаговый. Сначала определяется радиус сопрягающей дуги. После этой операции AutoCAD завершает выполнение команды. Теперь необходимо снова начать команду FILLET (СОПРЯГИ) и выбрать два сопрягаемых отрезка. AutoCAD выполнит сопряжение отрезковы в соответствии с имеющейся информацией.

Группы .


Если у вас есть определенный набор объектов, которым целесообразно манипулировать как группой, причем вы работаете с достаточно сложным чертежом многоразового выбора, то можно бежать повторения утомительной процедуры повторного выбора, задействовав механизм объединения объектов в группу.

Создание и изменение групп. Чтобы создать или изменить группу, нужно ввести в командную строку group и открыть таким образом диалоговое окно Object Grouping (Группирование объектов).

Для создания новой группы выполните ряд операций.

1. В поле ввода Group Name (Имя группы) введите имя группы. Для имени можно использовать не более 31 символа без пробелов. В любом месте вводимого имени можно использовать дефис (-) и подчеркивание (_).

2. При желании в поле Description (Описание) можно ввести комментарий длиной не более 64 символов. В комментарий можно включать пробелы.

3. Щелкните на кнопке New (Новая). AutoCAD возвращается к чертежу и выводит в командную строку приглашение Select objects: (Выберите объект:). В ответ на это приглашение выберите объекты, которые предполагается включить в группу. Завершите выбор объектов, нажав . AutoCAD возвращает диалоговое окно на экран.

4. Щелкните на ОК .

Теперь группа сформирована для дальнейшей работы с ней.

Один объект может принадлежать нескольким группам.

В зоне Group identification (Идентификация группы) диалогового окна Object Grouping (Группировка объектов) также имеется кнопка Find Name (Найти имя). Эта кнопка используется для поиска имени группы, к которой принадлежит выбранный объект. AutoCAD позволяет выбрать объект, а затем выводит имя соответствующей группы (или групп).

Щелчок на кнопке Highlight (Подсветить) позволяет зрительно выделить заданную группу. Сначала из списка Group Name (Имя группы) выбирается группа, а после щелчка на кнопке Highlight AutoCAD возвращается к чертежу и выделяет все объекты в группе. После щелчка на кнопке Continue (Продолжить) AutoCAD возвращается в диалоговое окно. Кнопка Highlight используется в тех случаях, когда нет уверенности в правильности выбора из списка группы для дальнейшей работы.

Зона Change Group (Изменение группы) диалогового окна Object Grouping (Группирование объектов) обеспечивает гибкость управления группами. Чтобы изменить группу, нужно в списке групп Group Name в верхней части диалогового окна щелкнуть на любом имени группы. После этого все кнопки в зоне Change Group (Изменение группы) становятся доступными. Опишем их назначение.

Remove (Удалить). Если задать эту опцию, AutoCAD переключается на вывод чертежа в графическую зону экрана и выводит в командную строку приглашение Select objects to remove from group... (Выберите объект для удаления из группы...) . Выберите объекты, которые должны быть исключены из чертежа. Для завершения операции нажмите . ОК .

Add (Добавить). Если задать эту опцию, AutoCAD переключается в область чертежа и выводит в командную строку приглашение Select objects to add to group. . . (Выберите объекты для добавления в группу...). Выберите объекты, которые должны быть добавлены в группу. Для завершения операции нажмите . AutoCAD возвратится в диалоговое окно. Щелкните на ОК .

Rename (Переименовать). При задании этой опции выбирается группа, которая должна быть переименована, и в поле ввода Group Name изменяется ее имя. Щелкните на кнопке Rename (Переименуй). Имя группы в списке Group Name (Имя группы) также должно измениться. Щелкните на ОК .

Re-order (Упорядочить). Каждому объекту в группе присвоены номера, начиная с 0. В некоторых случаях имеет значение порядок размещения объектов в группе (например, при выполнении программы, оперирующей объектами группы). Выберите группу, в которой должен быть изменен порядок расположения объектов. AutoCAD откроет диалоговое окноOrder Group (Порядок группы). Если нужно расположить объекты в группе в порядке, обратном существующему, щелкните на кнопках Reverse Order (Обратный порядок). В ином случае щелкните на кнопках Highlight (Подсветить) и Previous (Предыдущий) . В правом нижнем углу этого окна

Description (Описание) . Эта опция обновляет описание группы.

Explode (Расчленить). Эта опция расчленяет группу на составляющие. Все объекты остаются на чертеже, но они перестают быть группой.

Selectable (Выбираемая). Если группа выбираема, выбор одного объекта группы означает выбор всей группы. Эта опция допускает временное переключение в режим манипуляций одиночными объектами без расчленения группы.

На форме 1С обычно располагаются несколько полей, для ввода данных, а также кнопки управления формой и различных сервисных действий. Например, для автоматического заполнения или проверки.

Для того, чтобы расположить на форме кнопку, раньше, в версии 8.1, нужно было:

  • Перетащить на панель кнопку
  • Добавить функцию — кнопки
  • В данной функции прописать код на языке 1С, который выполнит требуемые действия.

Для того, чтобы пользователь мог запустить их на выполнение – у этих действий есть визуальное представление на форме. Какое оно будет – зависит от того, в какую группу элементов формы Вы перетащите команду.

Например, если перетащить просто на форму – будет кнопка, если в группу командной панели – то кнопка командной панели (плоская), а можно перетащить в меню – тогда это будет пункт меню.

Команду возможно использовать как на обычной форме, так и в управляемом (командном) интерфейсе 1С.

Стандартные команды 1С

Но мы знаем также действия, которые не нужно программировать на языке 1С, так как они уже доступны в платформе 1С. Например, для справочников стандартные действия – это возможность создания элемента. Для формы справочника – возможность записать, а для документа – провести. Это тоже действия?

Да, и теперь они называются – стандартные команды 1С. Свои стандартные команды 1С есть у справочников, документов, форм и прочих .

Стандартные команды 1С можно отключить у конкретного с помощью галочки «Использовать стандартные команды 1С» в 1С на закладке «Команды 1С».

Владелец команды 1С

Команды 1С находятся во вложенной ветке своего владельца. Например, Справочники/Контрагенты/Команды 1С.

Также есть команды 1С, которые не имеют владельца, так как они являются общими. Такие команды 1С не привязаны к объектам и находятся в ветке Общие/Общие команды 1С.

Параметры команды 1С

В конфигурациях в справочниках и документах было меню «Перейти» с помощью которого волшебным образом можно было перейти в связанные объекты 1С.

Например, для справочника Контрагенты, юридический и физический адрес хранятся в связанном регистре Контактные данные. Чтобы перейти в него, необходимо было выбрать меню в форме контрагента(ов) — Перейти/Контактные данные.

То есть для некоторых действий требуется не только факт запуска действия, но и параметр, который определяет, для какого объекта нужно эти действия выполнить – например, для какого контрагента отобразить контактные данные.

В свойствах команды 1С возможно указать:

  • Тип параметра команды 1С – тип объекта 1С, который будет использован в качестве параметра, например, справочник Контрагенты
  • Режим использования параметры – нужно одно значение или список (массив).

Чтобы разместить команду на форме, можно указать в свойствах команды 1С группу командного интерфейса, где она должна располагаться.

Или просто перетащить команду в список элементов формы.

При одновременном выделении нескольких объектов на панели свойств появляются кнопки со следующими командами формирования объектов:

ü Weld (Объединение). Позволяет создать новую фигуру путем объединения двух или более перекрывающихся объектов. Исходные объекты автоматически удаляются. Для заливки нового объекта используется заливка верхнего объекта.

ü Trim (Исключение). Удаляется та часть объекта, которая перекрывает другой объект. Исходные объекты удаляются

ü Intersect (Пересечение). Создает новый объект, образованный из области перекрытия объектов. Исходные объекты сохраняются.

ü Simplify (Упрощение). Позволяет удалять все невидимые, перекрытые другими объектами части.

ü Front Minus Back (Удаление по заднему плану). В результате выполнения команды остается та часть верхней фигуры, которая ничего не перекрывала.

ü Back Minus Front (Удаление по переднему плану). В результате выполнения команды остается та часть нижней фигуры, которую ничто не перекрывало.

Более полный контроль над формированием фигур можно осуществлять, используя докер Shaping (Формирование). Здесь дополнительно можно установить параметры для сохранения исходных или целевых объектов после выполнения команды.

ü если установлен флажок Source Objects (Исходные объекты), то после выполнения команды останется тот объект, который был выделен до выделения команды;

ü при установке флажка Target Object (s) (Целевые объекты) останется тот объект, к которому была применена команда Исключение, Объединение или Пересечение.

Инструмент Knife (Лезвие)

Находится в наборе инструментов на одной кнопке с инструментом. Служит для разделения объекта на несколько частей. Линия разреза может иметь как строго прямую, так и произвольную форму. Начальная и конечная точки должны быть в непосредственной близости от края объекта. На панели свойств инструмента можно настроить:

ü Auto Close On Cut (Автозамыкание после разреза). После разреза части объекта становятся самостоятельными объектами.

Инструмент Eraser (Ластик)

С его помощью можно интерактивно стирать отдельные участки. Инструмент расположен в наборе инструментов на одной кнопке с инструментом Shape (Форма). На панели свойств настраиваются:

ü Erase Thickness (Ширина ластика) от 0,001 до 100 дюймов

ü Auto reduced On Erase (Сокращение числа узлов после стирания) ‑ снижает сложность фигуры после стирания отдельных ее фрагментов путем уменьшения количества узлов стираемой области

ü Circle/Square (Форма ластика) может быть круглой или квадратной

Инструмент Smudge (Размазывающая кисть)

Позволяет менять обводки фигур так, чтобы они были как будто размазаны. Обводка меняется в соответствии с заданными параметрами инструмента.

ü Nb Size (Толщина острия). По умолчанию - 0,1 дюйм. Диапазон от 0,03 до 2 дюймов.

ü Использование пера с нажимом. Используется при работе с графическим планшетом.

ü Add Dryout to the effect (Интенсивность). Определяет постепенное изменение размера мазка в соответствии со скоростью перетаскивания указателя мыши. Диапазон от -10 до 10. При значении 0 эффект не проявляется.

ü Fixed value for title setting (Округлость острия). Контролирует форму мазка. Измеряется в градусах. Может принимать значения от 15 (плоское острие) до 90 (эллиптическое острие).

ü Fixed value for bealing setting (Поворот мазка). Мазок располагается под заданным углом.

Практическая работа

Упражнение Использование команд формирования объектов

1. Нарисуйте какие-либо объекты. Расположите их так. чтобы они перекрывали друг друга.

2. Откройте докер Shaping (Windows‑Docker‑Shaping или Arrange‑Shaping)/

3. В раскрывающемся списке в верхней части окна Shaping выберите команду Weld (Объединение)

4. Выделите один из перекрывающихся объектов - он будет исходным для выполнения команды

5. В докере Shaping в группе Leave Original (Сохранять оригинал) выберите, какие объекты должны остаться после выполнения команды - исходный, целевой или оба. Для выполнения команды нажмите кнопку Apply (в нижней части докера). Указатель мыши при этом примет форму жирной стрелки.

6. Щелкните на целевом объекте (тот, с которым должен взаимодействовать исходный объект). Вы сформировали новый объект из нескольких перекрывающих друг друга простых объектов.

Повторите задания пунктов 1-6 для команд Trim (Исключение) и Intersect (Пересечение).

Упражнение Применение инструмента Knife (Лезвие)

1. Создайте на странице документа какой-либо объект и выберите инструмент Knife (Лезвие) в наборе инструментов.

2. Подведите указатель инструмента к краю объекта (он должен принять вертикальное положение), щелкните мышью и подведите его к любой точке границы объекта и еще раз щелкните мышью. Таким образом вы получили прямой разрез и разделили объект на две отдельные фигуры.

3. Создайте еще один объект. Для разреза его по произвольной траектории после первого щелчка на границе объекта протаскивайте указатель инструмента к другой точке границы по произвольной траектории, дойдя до границы, отпустите кнопку мыши

В начальной и конечной точке разреза указатель инструмента должен принимать вертикальное положение!

Упражнение Применение инструмента Eraser (Ластик)

1. Создайте на странице документа какой-либо объект и выделите его инструментом Pick (Выбор).

2. Выберите в наборе инструментов инструмент Eraser (Ластик). Мысленно определите область фигуры, которую вы хотите удалить. На панели свойств задайте форму и ширину инструмента.

3. Установите указатель в выбранном месте и дважды щелкните кнопкой мыши. Фрагмент объекта, соответствующий форме и ширине ластика, будет удален.

4. Теперь сотрите часть объекта, перетаскивая указатель произвольным образом внутри объекта. Как только кнопка мыши будет отпущена, процесс удаления завершится.

5. Для удаления прямолинейного фрагмента можно щелкнуть указателем сначала в начальной точке, а затем - в конечной точке линии.

6. Для стирания ломаной линии инструментом Erase используется следующая последовательность действий:

ü Щелкните начальную точку ломаной линии и ведите указатель мыши инструмента к следующему- узлу (за ним потянется пунктирная линия), дойдя до узла - нажмите клавишу Tab

ü затем ведите указатель к следующему узлу и снова нажимайте клавишу Tab для удаления линии по траектории движения и так далее, пока не удалите необходимый фрагмент линии или всю линию целиком;

ü в конце процедуры нажмите левую кнопку мыши - стирание закончится.

Упражнение 4 Применение инструмента Smudge (Размазывающая кисть)

1. Создайте или выделите фигуру, к которой будет применен инструмент Smudge . Если это -динамическая фигура (прямоугольник, многоугольник, эллипс и т.п.). то обратите ее контур в кривые Ctrl+Q .

2. Выберите инструментSmudge . на панели инструментов установите толщину кисти и другие свойства.

3. Чтобы начать «размазывание», перетаскивайте указатель инструмента Smudge через контур фигуры. Обратите внимание, что каждый раз при пересечении контура он меняет свою форму в соответствии с установленными параметрами. Процесс «размазывания» может продолжаться сколь угодно долго до получения нужного эффекта.

Упорядочивание объектов

Команды группирования

При одновременном выделении более одного объекта в строке свойств появляются следующие команды для группирования объектов:

Группировать (сгруппированные объекты выделяются как один) ‑ кнопка Group на панели свойств доступна в случае одновременного выделения двух или более объектов, команда Group из контекстного меню или сочетание клавиш <Ctrl+G >. Группа ведет себя как единый объект, т.е. любые изменения сделанные по отношению к группе распространяются на все объекты внутри группы. Каждый объект группы называется дочерним объектом. Объект в группе выделяется инструментом Pick с зажатой клавишей <CTRL >. Одновременно можно выделить только один объект в группе.