Inkscape точное рисование контуров для инженеров

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Inkscape точное рисование контуров для инженеров

Сообщение Nick »

Снимок-Новый документ 1 — Inkscape.png (5060 просмотров) <a class='original' href='./download/file.php?id=8214&mode=view' target=_blank>Загрузить оригинал (108.89 КБ)</a>
Решил сделать маленькое расширение для точного рисования контуров в Inkscape.
Используется "консольный" метод. Т.е. в расширении есть строка, куда пишем требуемые параметры кривой. И inkscape все точно отрисовывает.
Основная идея сделать ручную отрисовку чертежей удобной, быстрой и точной.

Главная фишка - нарисовать отрезок нужной длинны в заданном направлении.

Примерный синтаксис:
[примитив][параметры];[примитив][параметры];

Примитивы:
l = линия
a = дуга
m = переместить маркер

Параметры:
x = смещение по x
y = смещение по y
a = угол
l = длинна

Для X и Y, если их писать большими буквами - будут использоваться абсолютные координаты.

Пример:
lx10y0;la60l10;la120l10;la180l10;la240l10

Новая кривая будет дорисована к концу выбранной кривой, или если ничего не выбрано, то появится новая.

Пока работают только линии.

Параметр Silent нужен для режима "Предпросмотра", так можно видеть результат действия в реальном времени.

Также пока запихал в репозиторий к Gcodetools, т.е. берем тут: http://bazaar.launchpad.net/~gcodetools ... lope/files
нужны
csp.py
points.py
biarc.py
bezier-console.inx
bezier-console.py


Нужны тесты, замечания и предложения :)
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

Ну, первые глюки - при работе в абсолютных координатах по Х все нормально, а по Y - добавляется 297 мм,
причем при разных размерах листа одинаково, кроме того, если рисовать с нуля, то начальная точка появля-
ется где хочет, так про стандартном размере листа (210*297) - примерно в центре (X - 105.833;Y-144.659),
а при других размерах - в другом месте, хотелось бы 0,0 . С углами вроде бы работает корректно, включая и такие сочетания, как a60x10, причем если указать нереальные a60x-10, то к углу просто добавляется 180 градусов, но работает ! Проверил и другие сочетания - axy - угол игнорируется, xl и yl - дают ошибку скрипта ...

Еще хотелось бы чтобы можно было строить прямую от любой выделенной точки, и
выбирать,снимается выделение после отработки плагина или нет(неудобно каждый раз заново выделять).
В общем, здорово, жду продолжения !
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

sherr писал(а):то начальная точка появля-ется где хочет, так про стандартном размере листа (210*297) - примерно в центре (X - 105.833;Y-144.659)
Все правильно, именно в центре экрана (вида).
sherr писал(а):указать нереальные a60x-10
Почему же не реальные, так все и должно быть.
sherr писал(а):Проверил и другие сочетания - axy - угол игнорируется, xl и yl - дают ошибку скрипта ...
Да, варианты с избыточностью пока не проработаны.
sherr писал(а):Еще хотелось бы чтобы можно было строить прямую от любой выделенной точки, ивыбирать,снимается выделение после отработки плагина или нет(неудобно каждый раз заново выделять).
Это к сожалению никак нельзя. Нельзя задавать выделение после выполнения расширения :(. Тоже с точками - только контур, разве что как в Gcodetools отдельный маркер задавать. Но тут проще, можно любой отрезок рисовать и плагин будет начинать с него.
Кстати, пробовал делать предпросмотр?


По Y - все так, т.к. inkscape отсчитывает координаты от верхнего угла страницы. попробую исправить.


Кстати, сразу вопрос, сейчас, если не указан примитив (l,a линия или дуга) то используется предыдущий примитив и можно например писать lx10y10;x5;
Но как быть с a и l - это и примитив и параметр... Надо как-то разделить arc и angle и length и line. Как это сделать, чтобы было удобнее?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

Добавил относительны углы.
+ Начал делать дуги, на данный момент готово построение дуги в указанную точку с касательной в начальной точке. Т.е. плавно выходящая дуга :).
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

Наверное, так - А -дуга, L-линия , а - угол, l - длина, ну или другие буквы выбрать, если неохота shift жать всю дорогу. Сокращённую форму
записи попробовал - работает, предпросмотр - тоже ,,,
Кстати где посмотреть, к чему есть доступ у плагинов Inkscape, а к чему - нет , ну и шаблон простейшего плагина не помешал бы,
просто так осваивать Python - неохота ...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

Доступ есть к svg, фактически плагину передается файл svg и параметры с формы плагина. А на выходе inkscape забирает готовый переработанный svg.

Шаблон... даже не знаю, я обычно смотрел на простые плагины и переделывал их. Плюс есть вспомогательные питоновские скрипты для работы с кривыми, стилями. трансформациями и прочим, все лежит в /usr/share/inkscape/extensions. Но последнее время мне не нравятся эти скрипты и я активно переписываю их функции. в том числе csp.py это клон cubicsuperpath с использованием классов. Что не переделываю - так это парсинг самого svg - муторный он :)
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

Попробовал дугу, работает, но чтобы получилось желаемое надо много думать и чуть-чуть считать :cheesy: . Вот чего наваял за 10 минут
test1.svg
небольшой тест
(2.68 КБ) 755 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

Скоро доделаю по радиусу, углу и длинне, будет проще.

вот, что придумал по командам, пусть все буквы без цифр - это команды, все остальные (буква и цифра за ней) - параметры
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

Можно ли сделать окошко скрипта побольше, нарисовать (редактируемые) окошки для координат опорной точки и несколько кнопок (5-6)
для запоминания - проигрывания скриптов (например, сохраняемых в файле)?
И (для общего развития) - кто-нибудь пытался обойти ограничения Inkscape, например, поправив что-то в пресловутом парсере SVG -
ведь сам Inkscape как-то получает те же координаты точек ...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

sherr писал(а):Можно ли сделать окошко скрипта побольше, нарисовать (редактируемые) окошки для координат опорной точки и несколько кнопок (5-6)
Не, так нельзя... :(
Можно написать свой интерфейс для расширения, но тогда исчезнет интерактивность. Т.е. не будет предпромсотра. А писать свой предпросмотр геморно...
И нельзя будет держать окно постоянно открытым.
sherr писал(а):И (для общего развития) - кто-нибудь пытался обойти ограничения Inkscape, например, поправив что-то в пресловутом парсере SVG -ведь сам Inkscape как-то получает те же координаты точек ...
В каком смысле? Ты по поводу работы с точками через расширения?

Кстати, на днях в inkscape смерджили какую то ветку и там говорили про fillet - т.е. скругление углов, что полезно для всяческих инженерных нужд. http://wiki.inkscape.org/wiki/index.php ... letChamfer
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

Да, забыл добавить, дописал в арки построение по углу, длине дуги. радиусу и центру. Все для плавно выходящих дуг.

Вот сижу, думаю, что делать с дугами не плавно выходящими...
Просто там комбинаций всяких, по которым все это можно рассчитать просто немерено..
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

А синтаксис для дуг - построение по углу, длине дуги. радиусу и центру - не подскажете ? А то чего-то странное выходит ...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

ну по идее
a x10;
ax10y10;
ar10l10
aa10r5;
a a40 l20;

Дуга будет плавно выходить из предыдущего сегмента (если его нет - то в сторону (1,0))
Надо доделать дугу по трем точкам....

ЗЫ со мной можно "на ты", надеюсь взаимно :)
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

ar10l10 дает ошибку

('a', 'r10l10')

Traceback (most recent call last):
File "/usr/share/inkscape/extensions/bezier-console.py", line 254, in <module>
bezier_console.affect()
File "/usr/share/inkscape/extensions/inkex.py", line 207, in affect
self.effect()
File "/usr/share/inkscape/extensions/bezier-console.py", line 222, in effect
self.run()
File "/usr/share/inkscape/extensions/bezier-console.py", line 243, in run
self.parse_command(a)
File "/usr/share/inkscape/extensions/bezier-console.py", line 211, in parse_command
if t in ("a","A") : self.draw_arc(x,y,a,r,i,j,l)
File "/usr/share/inkscape/extensions/bezier-console.py", line 167, in draw_arc
arc = self.get_arc_param(x,y,a,r,i,j,l)
File "/usr/share/inkscape/extensions/bezier-console.py", line 160, in get_arc_param
return get_arc_param(None, None, a, r, None, None, None)
NameError: global name 'get_arc_param' is not defined

Остальное работает, но -
большой пользы от aa40l20 для себя не увидел (может кому сгодится ?),
чуть полезнее aa90r20, но зависимость результата от угла весьма неочевидна,
а вот такая вещь, как ar20x25 или ar25x20y20 - работает, но не реагирует
на радиус, видимо из-за требования плавности ...

PS - на ты конечно можно
Ps - купил учебник по Питону, накачал с сети все что нашел по созданию расширений
для Inkscape. Хочу для начала понимать как оно работает - уже знаю волшебное
слово inkex :cheesy:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

sherr писал(а):ar10l10 дает ошибку
Спасибо, исправил. Надо было self. добавить.
sherr писал(а):большой пользы от aa40l20
Он очень просто получается через aa--r-- - буквально одно деление, потому и сделал :)
sherr писал(а):уже знаю волшебное слово inkex
А знаешь где оно лежит? :)
sherr
Кандидат
Сообщения: 56
Зарегистрирован: 01 сен 2012, 17:10
Репутация: 0
Откуда: Ставрополь
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение sherr »

Лежит наверное в inkscape/extensions ...
У меня тут вообще веселуха - дома Debian Squeeze + Inkscape 0.47.2 а на работе XP + 0.48.3 ( + USBCNC контроллер) - так что кроссплатформенность и всё такое - пока полёт нормальный .
Ты лучше скажи, 0.49- devel на Линукс собирать стоит ?(может еще и с поддержкой чертежных инструментов,
если ума хватит)
ps ar40l100 - работает .
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape точное рисование контуров для инженеров

Сообщение Nick »

sherr писал(а):Ты лучше скажи, 0.49- devel на Линукс собирать стоит ?(может еще и с поддержкой чертежных инструментов,если ума хватит)
Есть где-то репозиторий daily builds, там валяются пакеты последнего dev. Можно ничего не собирать. Но вот где он точно не помню...
Ответить

Вернуться в «LinuxCNC»