Xcircuit - 1

Oct 13, 2019 06:39


Хочу рассказать о хорошем редакторе приципиальных схем. Как видно из названия, этот редактор сделан для X (только не надо путать это с десяткой), и рисовать в нем лучше всего схемы. Для машиностроения он подойдет, мягко говоря, не очень. Он замечательно делает иллюстрации к различным текстам на электротехнические/электронные темы. Прямо типографского качества, это хорошо просматривается в PDF. Редактор может быть использован и для многих прочих целей.

Как программа для UNIX и ее клонов, Xcircuit немного вводит обитателей майкрософтовщины в ступор, но это легко проходит. Нужно сказать, что я еще и сам не до конца разобрался в этом редакторе, без конца обращаясь сюда (не бойтесь, мои ссылки не кусаются), но вовсю использую его для иллюстрирования технических текстов, которые иногда готовлю в LibreOffice с небольшой помощью LaTeX. Я не буду писать, где брать xcircuit и как его поставить, в наши дни это должен сообразить линуксоид начального уровня. Самые ходовые дистрибутивы Linux теперь понятнее и проще, чем Windows.

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




Вы можете перейти из файлового менеджера и все сделать мышкой. Я тоже, как правило, так и поступаю, но тут все иллюстрируется одной картинкой. Первая команда состоит из трех необходимых для решения поставленной задачи: перейти именно в домашний каталог, создать в нем каталог a4 и перейти в этот каталог. Последняя команда pwd означает просто print working directory.

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



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

Навигация в пространстве чертежа делается после нажатия кнопки с лапой примата. Кликайте по ней левой кнопкой мыши (далее, как говорят юристы, просто кликайте, если не оговорено иное) и окажетесь в режиме pan с указателем в виде этой лапы. Сначала грабля движется независимо. Кликнув еще раз, можете двигать пространство чертежа, вместе со всем, что там находится. Кликнув еще раз, снова освобождаете могучую десницу, но по прежнему, остаетесь в выбранном режиме. В принципе, управление редактором не сложнее управления вертолетом. Вертолетчики клянутся мамой, что это проще всего, но самолетные летуны точно разобьют незнакомый ящик и себя заодно. Ко всему надо привыкнуть. Я не управлял ни вертолетом, ни самолетом, но верю, что ко всему надо привыкать.

Внизу, где строка состояния, есть подсказка, о том, что делает в данный момент программа. Это вам в помощь по кнопкам правого вертикального меню.

Теперь переключим привязку на миллиметровый шаг.



Из главного меню выбираем: Options | Grid | Grid type/display | Centimeters

Среди единиц есть сантиметры, выберем одну десятую. Для этого опять пройдем по меню, но немного другим путем:



И установим шаг привязки равным 1 мм:



Нажмем Okay и закроем окно.

Теперь нарисуем рамку размером 297 х 210 мм. Переключимся в режим рисования прямоугольных примитивов draw box. Можно заметить, что выбранный режим обозначается еще зеленой рамкой вокруг кнопки вертикального меню. Кликнем в любом месте рабочей области окна и проведем мышкой:



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

Все объекты в xcircuit легко редактируются. Например, можно двигать левый нижний угол рамки в точку с координатами 0,0. Для этого я выбираю кнопку edit element (следите за строкой состояния в поиске нужной кнопки, пока не разберетесь) и кликаю по рамке. Указатель превращается в крестик измененной формы и перескакивает в ближайший угол рамки. Перетаскивая мышь, я могу изменять положение угла, связанного с указателем. Для выбора другого угла достаточно просто кликать.

Обратите внимание на координаты. Они изменяются вместе с движнием мыши.



Кроме того, в строке состояния показываются клавиатурные макро, которыми можно выдавать дополнительные команды или дублировать кнопки мыши: “e” - заставит мышь перескочить в следующий угол или узловую точку. Не будем пока добавлять никаких точек.

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

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

Чтобы легче было поймать требуемые координаты, можно уменьшить масштаб просмотра, для чего есть соответствующие кнопки в вертикальном меню. Но сначала лучше пододвинуть рукой (см. выше) правый верхний угол к центру экрана. Несколько раз кликнув кнопку zoom in, можно увидеть, что появилась мелкая сетка в виде точек. И теперь можно переходить снова в режим правки. Двигаем угол, следя за координатами:



Если перемещение в требуемую точку с первого раза не удалось, кликнем средней кнопкой и освобождаем указатель. Переходим в режим pan window и двигаем чертеж. Затем снова переключимся в редактирование. Так быстрее привыкнете, это лучше, чем снайперскими потугами ловить мышью нужную точку в большом масштабе.

Если вам нужна кондовая советская миллиметровка, пройдите по меню: Options | Grid | Grid Spacing и установите размер равным 1.000 cm. Вы получите желаемое:



Теперь внешняя рамка готова. Кликнув по левому нижнему углу линеек рабочей области окна можно вогнать весь чертеж в окно:



Кроме того, можно использовать бегунки полос прокрутки в любом режиме.

Сохранять файл (чтобы потом не искать его на разделе /tmp, где xcircuit его время от времени сохраняет, кстати) можно командой File | Write All...



В UNIX исторически сложился свой жаргон: там говорят “записать” (write), вместо “сохранить” (save) , или например, “каталог” (directory) вместо “папка” (folder). Вместо “открыть” (open), говорят, соответственно, “прочитать” (read). Так что, смущаться нечего.

Под “технологиями” тут подразумеваются библиотечные элементы, которые записываются вместе с остальным. Нам пока нечего записывать (сохранять) кроме того, что мы нарисовали.

Но теперь надо нарисовать внутреннюю рамку. Поскольку делать это мы уже умеем, объяснять второй раз не буду. Начнем рисовать с координат 20, 5 и закончим координатами 292, 205. Полезно знать, что текущие координаты указателя можно получить клавишей Esc, если вы находитесь в режиме простого перемещения указателя. Поэкспериментируйте.

Давайте установим толщину линии рамки равной 0.8 мм. Внешнюю рамку мы оставим в покое, она изображает всего лишь физические границы бумаги. Некоторые принтеры ее даже не напечатают, так как оставляют поля. Это делается, чтобы не пачкать принтер краской. Поэтому следует быть особо внимательным к масштабам!

Чтобы выбрать толщину линии, надо выбрать рамку. Это делается при нажатой средней кнопке мыши. Зеленой рамкой обводим интересующий нас объект. После этого он подсвечивается желто-коричневым цветом. Затем выбираем команду в вертикальном кнопочном меню, которая называется set border and line properties. Там есть команда Linewidth. Обратившись к ней, мы получаем знакомое окно DialogBox, в котором предлагается установить ширину линии в каких-то единицах. Надо разобраться с этим.

Xcircuit создает файл на языке PostScript для управления принтером. В этом языке толщина линий измеряется в пунктах, по умолчанию равных 1/72 части дюйма. В миллиметрах это составит 25.4/72 = 0.372(7) мм. Пробуем назначить вес линии в 2.27, что должно составить очень близко к 0,8 мм. Во всяком случае, xcircuit не возражает. Рамка стала жирнее.

Теперь создадим основную надпись по форме 1, как указано в ГОСТ 2.104-68. Рисуем новую рамку в правом нижнем углу внешней - не путайте с границами “бумаги”! - которая имеет размеры 185 х 55 мм (18.500 x 5.500 cm).

Выделим созданную рамку при нажатой среднй кнопке. Нет необходимости выделять ее целиком. Тогда выделится и большая рамка. Можно выделить так:



Результат:



Точно так же, как и прежде, назначим ширину линии выбранного объекта.

Теперь будем создавать жирные линии внутри рамки, следуя гостовской разметке. Но сначала надо сделать саму разметку. К сожалению, более удобной работы с координатами в xcircuit я не обнаружил. Я делаю разметку при помощи вспомогательных линий, длину которых отслеживаю во время рисования. Линии рисуются при помощи команды draw line, расположенной в меню кнопок сразу под рукой. Режим включается кликом, начало рисования очередным кликом. Каждый новый клик добавляет новое звено в ломаную, а для окончания рисования надо сделать клик средней кнопкой.

Для ясности можно ввести текст, командой enter text. Кликните в подходящем месте. Появится зеленый курсор. Введите текст и нажмите Enter. Текстовый объект создан.

Перемещение делается командой move element. Найдите ее среди кнопок.

Наконец, еще вот что. Если вам неудобно рисовать прямо, хотя привязка делает этот процесс возможным, включите режим Manhattan Draw:



Этот режим включается в знакомой команде set border and line properties. Слово “Манхэттен” тут служит синонимом прямоугольной прямизны, “несворачиваемости”, подобной планировке одноименного островка, содержащего основную часть городка NYC. Воспетого Вилли Токаревым и где можно ходить, не пряча сисег. “Зачем нам, советским людям, скрывать свое лицо?” (т. Огурцов, Карнавальная Ночь.) Включив орто, можно не переживать о косяках. При необходимости всегда можно выключить.

Я сделал такую разметку:



Кстати, в строке состояния видно, где сохранен временный файл на всякий случай.

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

Вспомогательные объекты удаляются в режиме delete element. Это кнопка со значком ножниц. Указатель мыши также превращается в ножницы. Кликаем по лишним элементам и они исчезают. Ошибочные действия отменяем командой undo (или клавишей u).

Тонким линиям я придал ширину 0.3 мм (указав вес 0.85).

Теперь можно сделать надписи в графах, но только на латинице. Пока я не разобрался с шрифтами.

Сохраняем файл, а затем экспортируем его в формат SVG: меню File | Export | Export SVG. Файл SVG можно обрабатывать в Inkscape, и надписи делать векторным шрифтом GOST type A, выбирая стандартные размеры.

В Inkscape открываем файл a4l.svg. В нем группа из внешней рамки и всего, что внутри. Переключаемся в режим текста, выбираем шрифт и пишем в графы обычное содержимое:



Мне также пришлось масштабировать содержимое под формат A4. Я не настроил сразу размеры. Но это можно исправить во второй части (в следующем посте).

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

Чтобы шрифт не внедрялся в готовый pdf, причем пропадает наклонное начертание, я преобразую его в векторный объект (Object to Path) и затем печатаю в pdf:



При увеличении качество не меняется:



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

Во второй части будет немного рассказано об использовании библиотек элементов.


Дальше

xcircuit

Previous post
Up