Разработка Gcodetools - плагин Inkscape для экспорта в Gкод

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Следующее направление разработки

Можно выбрать до 5 вариантов ответа

 
 
Результаты голосования

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

Разработка Gcodetools - плагин Inkscape для экспорта в Gкод

Сообщение Nick »

Разработка Gcodetools

Screenshot-output.ngc - AXIS-4.png (181790 просмотров) <a class='original' href='./download/file.php?id=348&mode=view' target=_blank>Загрузить оригинал (31.64 КБ)</a>
Эта ветка посвящена разработке Gcodetools, плагина для векторного редактора Inkscape, позволяющего конвертировать кривые из Inkscape в Gкод, используя круговую и линейную интерполяцию.

Описание работы, установка, помошь и уроки по плагину можно найти в теме: Gcodetools - plug-in Inkscape для экспорта в Gcode

На данный момент ведется работа над Gcodetools 1.7

Что мы хотим увидеть в новой версии:
  • Улучшение расширения для плазменной резки
  • Добавление дополнительных опций экспорта:
  • Улучшение функции обработки площади
  • Угол заглубления
  • Расширение для сверловки

Требуются

  • Тестеры
  • Разработчики
  • Помощь в технических аспектах по работе станков и обработке материалов
  • Новые идеи

Последняя версия

Исходный код находится на launchpad.net. Получить последнюю версию при помощи bazaar можно так:

Код: Выделить всё

bzr branch lp:gcodetools
Последнюю версию можно загрузить через web-интерфейс: http://bazaar.launchpad.net/~gcodetools ... lope/files

Установка

1. Загрузите последнюю ревизию, из указанных выше мест.
2. Выполните "python create_inx.py" в директории с загруженными файлами.
3. Скопируйте все созданные файлы с расширением *.inx и файл gcodetools-dev.py в каталог:
Linux: /usr/share/inkscape/extensions/ и перезапустите inkscape
Windows: Program Files\Inkscape\share\extensions\
4. Перезапустите Inkscape

Последняя версия может быть не рабочей! Для получения стабильной рабочей версии зайдите сюда Gcodetools - plug-in Inkscape для экспорта в Gcode или загрузите предыдущие ревизии.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Выходной файл делается с теми же значениями Z, которые мы вносим как Zsafe,Zdepth, то масштабирование по Z надо выполнять как 1/orientation-scale (переведёт в px ?) и обратные значения для матрицы XY.

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

По идее, если Xscale == Yscale, то Zscale должно быть равно Xscale, но если Xscale != Yscale, то возникает вопрос что делать?
И еще просто обычным методом orientation points Zscale не задать. Значти итоговый Zscale должен зависеть от заданного Zscale.
поэтому я и предложил Zscale = Zacale * (xscale+yscale)/2, где xscale и yscale вычисляются из матриц трансформации.

У меня еще возник вопрос: как рассчитать xscale и yscale?
ИМХО то что мы делали при в Area это не правильно. :think:
Похоже, что должно быть:
xscale = self.transform_matrix[0,0]
yscale = self.transform_matrix[1,1]
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Хмммм...
Вот что придумал:

scale = math.sqrt( (xscale**2+yscale**2)/2 )
xscale, yscale = self.trensfor_martix[0, 0], self.trensfor_martix[1, 1]
Т.е. берем вектор (1,1) он трансформируется в (xscale,yscale) из этого scale = |(xscale,yscale)| / |(1,1)| = math.sqrt(xscale**2 + yscale**2) / math.sqrt(2) = math.sqrt( (xscale**2+yscale**2)/2 )
И соответственно Zscale = self.options.Zscale*scale.

В Area tool_d и r трансформируем наоборот px -> unit (mm).
соответсвенно:
xscale, yscale = self.trensfor_martix_reverse[0, 0], self.trensfor_martix_reverse[1, 1]
scale = math.sqrt( (xscale**2+yscale**2)/2 )
tool_d = self.tool['diameter']*scale
r = self.options.area_inkscape_radius * scale

Вроде сделал... теперь вроде работает правильно ... Сейчас сделаю новую ревизию...


-------------------

Ревизия 33
Zscale bug fix
Добавлена Zauto_scale ее значение вычисляется на основе точек ориентации
Убраны не используемые поля из файла inx.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Предлагаю отвлечённо посмотреть на процесс.
1. Исходный файл чертежа хранится в px.
2. px однозначно связаны с дюймами (90) и мм (3.5...).
3. Выходной файл либо в мм, либо в дюймах. С точки зрения EMC² это только G20/21 строчка. Сами цифры - это масштабирование.

4. В Inkscape всё чертится в px, смена масштаба линеек и сетки сам чертёж не меняет.
5. В Inkscape нет масштаба (я не нашёл) как в многих чертёжных программах (т.е. нельзя задать "1:4", его как раз подменяют Orientation points)

Фактически, возможно задать масштаб только при помощи нашей рамки Orientation points, выкинув orientation_scale.
Масштаб линии на чертеже относительно Orientation points уже задаёт всё необходимое (Orientation points = 0(0,0,0),X(100,0,0),Y(0,100,0), длина линии OX=100мм=350px=4", если какой-то объект на чертеже имеет размер 50mm, то он сам собой получится правильным в результирующем G-коде, если преобразовывать дюймы/мм на стадии вывода)

6. В реальном мире (в дюймах или мм) даются: Area radius, все параметры фрез.
7. Процедуры Inkscape работают в px, поэтому обязательно надо конвертировать наши (причём для одних это mm, для других - in) единицы в px
8. Наши Orientation points задают только плоскость в 3D, а не куб (там требуется 4 точки!!!). Возможно сейчас самый повод сделать четвёртую точку Z (через 3D диагональ от точки O). Координаты точек направляющего куба 0(0,0,0),X(100,0,0),Y(0,100,0),Z(100,100,100). Такой куб задаст полный переход от реального мира обратно в плоские px (предполагаем пространство Inkscape однородным по px).
9. Отдельно останется только 1 параметр добавить к четвёртой Orientation point Z: Z-высоту в пространстве px (аналог самой длины линии OX, OY Orientation points). Наше преобразование это (XOYZ)→(X'O'Y'Z') и обратно. Можно либо честно сделать, либо костыли постоянно подставлять.

Выводы

1. Вместо 3-х точек XOY по две координаты сделать 4: XOYZ по 4 координаты и добавить Z-высоту.
2. Убрать orientation_scale как класс
3. Параметр units использовать только как G20/G21 в EMC² коде, всё масштабирование делать кубом, т.е. для перехода в дюймы будет достаточно изменить цифры в скобках у Orientation points.
4. Если хочется привязать units к автопересчёту in/mm, то точка смещения O в px пространстве должна остаться на месте, а размер рёбер куба XOYZ должен масштабироваться, предполагая её центром координат :) При этом надо не забыть, что так же придётся пересчитывать все параметры скоростей и т.п. у библиотеки инструментов!

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

dormouse писал(а):

Выводы

1. Вместо 3-х точек XOY по две координаты сделать 4: XOYZ по 4 координаты и добавить Z-высоту.
2. Убрать orientation_scale как класс
3. Параметр units использовать только как G20/G21 в EMC² коде, всё масштабирование делать кубом, т.е. для перехода в дюймы будет достаточно изменить цифры в скобках у Orientation points.
4. Если хочется привязать units к автопересчёту in/mm, то точка смещения O в px пространстве должна остаться на месте, а размер рёбер куба XOYZ должен масштабироваться, предполагая её центром координат :) При этом надо не забыть, что так же придётся пересчитывать все параметры скоростей и т.п. у библиотеки инструментов!
1. Не будет ли это слишком сложно? Имхо, уже немного сложно сделать например точный поворот. Если начать двигать одну точку из трех, не меняя остальные, к чертям едет вся матрица трансформации. А что будет когда их станет 4?
2. Он может быть полезен для начального задания масштаба (например 1:4). Кстати есть такой вопрос: Может стоит развернуть точки ориентации, чтобы все стрелки показывали наружу от группы, чтобы стало проще масштабировать всю группу целиком. Можно выбирать initial scale в зависимости от единиц измерения. Initial scale используется только при создании точек ориентации, перенесу это в orientation и я думаю нужно добавить зависимость от units.
if (self.options.orientation_scale < 0):
self.options.orientation_scale = 3.5433070660
print_("orientation_scale < 0 ===> switching to mm units=%0.10f"%self.options.orientation_scale )

4. Имхо feed и параметры инструмента пересчитывать не нужно, они должны быть заданы в выбранных единицах.
P.S. пары муфт будет достаточно? наконец-то purelogic готов её предоставить.
Да, конечно! Спасибо :) !



PS

Ревизия 34

Перенес определение initial scale в orientation добавил зависимость от выбранных единиц измерения.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Надо определиться насчёт пропорционального изменения. Варианты:
1. [12]Полное: куб→ 4 произвольные точки X'O'Y'С' [точка O(3)+X(3)+Y(3)+C(3), т.е. i,j,k - обращаем внимание как они грамотно на клавиатуре расположены, наводит на мысли! :lol: ]
2. [07]Сохранение пропорций: куб→ куб' [точка O(3)+точка Z(3)+одинаковый масштаб(1)]
3. [05]Сохранение пропорций и параллельности нижней плоскости: куб→куб с плоскостью X'O'У' параллельной плоскости XOY реальной 3D С.К. [точка O(3)+поворот(1)+одинаковый масштаб(1) либо точка O(3)+точка D(2)]
4. [04]Сохранение пропорций и параллельность всех граней куба плоскостям С.К.: куб → куб с плоскостью X'O'Y' параллельной плоскости XOY и Z'O'Y' параллельной ZOY [точка O(3), одинаковый масштаб(1)]

В квадратных скобках число параметров.
O(0,0,0),X(1,0,0),Y(0,1,0),Z(0,0,1),C(1,1,1),D(1,1,0)

Наша задача - это п.4, либо п.3 - это новый отрезок OX⇒O'X'

Задумка "прямоугольный треугольник" ⇒ "косоугольный треугольник" наверное порочна, т.к. фрезы круглые ⇒ в пространстве px одни должны быть эллиптическими, что сложновато для Engraving'a и Area =)

Вывод:

Сделать вместо трёх Orientation points X(100,0),O(0,0),Y(0,100) только две O(0,0,0)X(100,0,0) с 3-мя координатами. Причём координата O.z - это ноль по Z в G-коде, а X.z - это как раз наш размер изделия по оси Z (Zsize=X.z-O.z)

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Может оставить возможность выбора:
  • ориентация по 2 точкам (поворот, перенос и масштаб в плоскости xy, причем xscale=yscale)
  • ориентация по 3 точкам (поворот, перенос и масштаб в плоскости xy) это то, что сейчас.
Имхо не стоит задавать координату z на рисунке, т.к. она там никак не отображается. И это может привести к заблуждению.
По идее, для нашего случая если нам нужно вырезать изделие толщиной 35 мм нужно будет задать две точки (0,0,0) и (100,0,-35), не совсем понимаю как это объяснить пользователю.
Даже мне не понятно какие параметры нужно будет задать в случае с уже опробованным прямоугольником 5х20 для engraving?
Можно попробовать перетащить параметры оси z во вкладку ориентация. И сделать так, чтобы ось Z задавалась в конечных единицах, т.е. мм или дюймы...
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Для Xscale=Yscale значительно логичнее сделать только 1 отрезок [OR]. Т.к. ориентацию менять мы не будем ( :lol: ) - это самое логичное решение.

Попытаюсь проиллюстрировать своё предложение ([5]куб-куб: перенос+угол+масштаб; всё параллельно+углы сохранены). Слева - Inkscape в мм, справа - G-code mm. Масштаб получается 2 инкскейпа:3 G-кодам

Вектор OR→O'R'. Третьи Z-координаты это попытка вместить два числа: Zstart=-20 и Zend=-10. Мне кажется логичным, что вектор OR перейдёт в 3D вектор ребра A'D'R' нового куба. Это легко графически представить.

Синий параллелепипед это задаваемый нашим преобразованием целевой объект в пространстве G-кодов.
Вложения
vectra.svg
(35.16 КБ) 786 скачиваний
vectra.png (3826 просмотров) <a class='original' href='./download/file.php?id=436&mode=view' target=_blank>Загрузить оригинал (41.75 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Я то это хорошо понимаю, но как это втолковать пользователю?
Нужно найти референсного юзера и на нем проводить испытания :lol: !
И на счет engraving что там будет в параметрах, и как они будут влиять на результат? (Там как такового нет максимального заглубления)
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Пользователю втолковать сможем: мультики и туториалы. Отлично понятно в коротком ролике как прямоугольник передвигается, поворачивается, вырастает в толщину и т.п. =) Так же я склонен убрать страшные поля Orientation point I J из вкладки Orientation - их лучше после править мышкой на листе. Scale Z и оффсет Z так же убрать надо.
Закладка "generate parametric code" должна вносить все эти параметры в G-код с единичными значениями для последующей ручной правки.

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

dormouse писал(а):Закладка "generate parametric code" должна вносить все эти параметры в G-код с единичными значениями для последующей ручной правки.
Сейчас это уже так.

А что на счет engraving? Как с ним быть?
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Требуется пояснить вопрос. Что с Engraving "не так" ?

От текущего релиза предлагаю:
1. убрать Options:Scale along Z axis, Options:Offset along Z axis
2. убрать всё ! брать значения 3.5... если Preference:unit=mm, или 90 если Preference:unit=in
3. При нажатии Apply на любом табе path to gcode, Area, Engraving проверять есть ли OR и tool. Если нет - страшно ругаться, либо [юзер френдли] делать их автоматом и сразу с их учётом работать дальше (придётся это в виде goto или функций тогда оформить в коде) =)
4. заменить 3 Or.p. на 2: O(3)R(3)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

dormouse писал(а):Требуется пояснить вопрос. Что с Engraving "не так" ?
Что для engraving значат zmin/zmax и как определять для него zscale?
От текущего релиза предлагаю:
1. убрать Options:Scale along Z axis, Options:Offset along Z axis
2. убрать всё ! брать значения 3.5... если Preference:unit=mm, или 90 если Preference:unit=in
3. При нажатии Apply на любом табе path to gcode, Area, Engraving проверять есть ли OR и tool. Если нет - страшно ругаться, либо [юзер френдли] делать их автоматом и сразу с их учётом работать дальше (придётся это в виде goto или функций тогда оформить в коде) =)
4. заменить 3 Or.p. на 2: O(3)R(3)
1. Согласен, если определится с енгравингом.
2. ок, см п.1
3. Лучше ругаться на пользователей, иначе ругаться будут они, что все работает не так :lol:
Хотя, с другой стороны, я заметил, чем стабильнее программа, тем слабее feedback, а он нужен для разработки новых функций и прочих улучшений + поиск новых девелоперов для новых функций.
4. Можно сделать выбор - 2 или три точки. (Иначе совсем пустая вкладка получится). Кстати, придумать бы еще ругалку, если два раза подряд создают ОП или инструмент вместо того, чтобы выполнить нужную функцию. Я сам на этом кучу раз попадался :).
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Zscale я вообще предлагаю выбросить. Только (Zfrom,Zto) + обычная пара (Zscale,Zoffset) для parametric g-code.

Касаемо engraving: Zmax - это верхняя граница (нулевая плоскость) для него, Zmin - это нижняя плоскость. Я думал, что они совпадают для N1, N2, N3. Отдельный оффсет ему не нужен, т.к. у нас всё для 2.5D станков сейчас рассчитано - можно изменять Z-координаты у OR либо отдельную вкладку Zoffset прям на закладке Engraving сделать - она будет добавкой для O.z.

P.S. Во всех туториалах будем предполагать, что O - это центр новой СК, т.е. O(0,0,0). Тогда можно назвать наоборот Zmax=0, Zmin = R.z. Т.е. обойтись 3-мя числами R(3), предполагая что O всегда переходит в т.O'(0,0,0)
Последний раз редактировалось dormouse 06 апр 2010, 16:17, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

dormouse писал(а):Zscale я вообще предлагаю выбросить. Только (Zfrom,Zto) + обычная пара (Zscale,Zoffset) для parametric g-code.

Касаемо engraving: Zmax - это верхняя граница (нулевая плоскость) для него, Zmin - это нижняя плоскость. Я думал, что они совпадают для N1, N2, N3. Отдельный оффсет ему не нужен, т.к. у нас всё для 2.5D станков сейчас рассчитано - можно изменять Z-координаты у OR либо отдельную вкладку Zoffset прям на закладке Engraving сделать - она будет добавкой для O.z.
Ок, Zmax понятно, но у engraving нет нижней плоскости! И ему нужен scale ктоторый имхо должен зависеть от xscale и yscale.

PS если O.z<O.r то меняем их местами?
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Что за коэффициент у engraving?
Ему по идее должно быть нужно: контур объекта, профиль фрезы, критерий чтоб останавливаться, максимальное заглубление

Контур объекта - как есть
Контур фрезы - из библиотеки, масштабированная 1/scale
Критерий - из библиотеки, масштабированная 1/scale
Максимальное заглубление - R.z
-------------------------
Сейчас на картинке O'=A', R'=d' (верхний контур синего прямоугольника)
Возможно, надо выбрать наоборот: O'=a', R'=D', тогда R.z принимает смысл "самой глубокой точки изделия"
-------------------------

Метод использования

1. На рабочий стол прикрепили заготовку в полтонны весом. Маркером наметили две точки O'r' (проекция O'R' на деталь), подогнали станок к ним, измерили их координаты.
2. сместили начало координат станка g10l2p1x(O'.x)y(O'.y)z(O'.z), где O'.x..z - измеренные в режиме g53 из п.1
3. Открыли Inkscape, загрузили файл, OR перенесли в соответствующие точки чертежа, вписали R.z=глубине изделия
4. сделали 3 g-кода n1.ngc, n2.ngc, n3.ngc
5. последовательно грузим их в EMC² и исполняем
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Контур фрезы - из библиотеки, масштабированная 1/scale

Откуда берем 1/scale?
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

у нас есть :
1. чертёж в px/mm/in, px/mm=3.5.... и px/in=90
2. вектор OR на чертеже в px/mm/in
3. вектор O'R' в G-коде в mm/in

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Я понял почему у меня вызывает противоречие размещение координат Z на рисунке - потому, что значения Z не зависят от положения точек O и R.

Со scalе-ом, так и не понял из чего мы его будем вычислять:
scale = |O'R'|/|OR|
или
scale = |O'R'XY| / |ORXY|, где ORXY это проекция вектора OR на плоскость XY, т.е. (Rx-Ox,Ry-Oy)
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Правильный вариант: scale = |O'R'XY| / |ORXY|, где ORXY это проекция вектора OR на плоскость XY, т.е. (Rx-Ox,Ry-Oy) Z-координаты у O'R' не участвуют в расчёте коэффициента. Я так погрузился, что никак не мог понять этого вопроса =) Формулы:

Код: Выделить всё

|OR|²=(R.x-O.x)²+(R.y-O.y)²
|O'R'|²=|R'.x-O'.x|²+|R'.y-O'.y|²
Метод: деталь на станок, измерили 2 пары координат R'(2)O'(2)(плоские), перенесли начало в т.O'=>посчитали "х'y'-проекционную плоскую длину |R'O'|xy". Открываем Inkscape с чертежом, рисуем OR с соразмерной чертежу длиной, с началом и концом в правильных точках чертежа, дописываем в (R.x,R.у)=(R'.x-O'.x,R'.y-O'.y), в R.z вписываем глубину изделия.

P.S. Надеюсь, так я адекватно объяснил.
Ответить

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