<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://www.cnc-club.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LinuxCNC_Features_Draw_subroutine</id>
	<title>LinuxCNC Features Draw subroutine - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://www.cnc-club.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LinuxCNC_Features_Draw_subroutine"/>
	<link rel="alternate" type="text/html" href="http://www.cnc-club.ru/wiki/index.php?title=LinuxCNC_Features_Draw_subroutine&amp;action=history"/>
	<updated>2026-05-08T13:16:07Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.34.4</generator>
	<entry>
		<id>http://www.cnc-club.ru/wiki/index.php?title=LinuxCNC_Features_Draw_subroutine&amp;diff=194&amp;oldid=prev</id>
		<title>Nick: Nick переименовал страницу LinuxCNC Features draw subroutine в LinuxCNC Features Draw subroutine</title>
		<link rel="alternate" type="text/html" href="http://www.cnc-club.ru/wiki/index.php?title=LinuxCNC_Features_Draw_subroutine&amp;diff=194&amp;oldid=prev"/>
		<updated>2014-05-16T14:21:54Z</updated>

		<summary type="html">&lt;p&gt;Nick переименовал страницу &lt;a href=&quot;/wiki/index.php?title=LinuxCNC_Features_draw_subroutine&quot; class=&quot;mw-redirect&quot; title=&quot;LinuxCNC Features draw subroutine&quot;&gt;LinuxCNC Features draw subroutine&lt;/a&gt; в &lt;a href=&quot;/wiki/index.php?title=LinuxCNC_Features_Draw_subroutine&quot; title=&quot;LinuxCNC Features Draw subroutine&quot;&gt;LinuxCNC Features Draw subroutine&lt;/a&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 14:21, 16 мая 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Nick</name></author>
		
	</entry>
	<entry>
		<id>http://www.cnc-club.ru/wiki/index.php?title=LinuxCNC_Features_Draw_subroutine&amp;diff=192&amp;oldid=prev</id>
		<title>Nick: Новая страница: «Обработка Draw позволит нам сделать обработку &quot;контуров&quot; из дуг и прямых в  LinuxCNC Features с пр…»</title>
		<link rel="alternate" type="text/html" href="http://www.cnc-club.ru/wiki/index.php?title=LinuxCNC_Features_Draw_subroutine&amp;diff=192&amp;oldid=prev"/>
		<updated>2014-05-16T14:20:14Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Обработка Draw позволит нам сделать обработку &amp;quot;контуров&amp;quot; из дуг и прямых в  &lt;a href=&quot;/wiki/index.php?title=LinuxCNC_Features&quot; title=&quot;LinuxCNC Features&quot;&gt;LinuxCNC Features&lt;/a&gt; с пр…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Обработка Draw позволит нам сделать обработку &amp;quot;контуров&amp;quot; из дуг и прямых в  [[LinuxCNC Features]] с применением заглубления по спирали. Скорее всего в будущем будем использовать созданные шаблоны Draw для организации простых Features - например прямоугольная выборка или круг.&lt;br /&gt;
&lt;br /&gt;
= Примитивы =&lt;br /&gt;
* Line relative&lt;br /&gt;
* Line absolute&lt;br /&gt;
* Close drawing - замыкает drawing&lt;br /&gt;
* Arc - дуги надо еще доделать&lt;br /&gt;
&lt;br /&gt;
= Описание общего принципа работы=&lt;br /&gt;
&lt;br /&gt;
В Draw используется inline python и сторонние скрипты для создания контуров.&lt;br /&gt;
&lt;br /&gt;
Начальные определения &lt;br /&gt;
&lt;br /&gt;
 		( Draw definitions )&lt;br /&gt;
 			;py,import os&lt;br /&gt;
 			;py,import sys&lt;br /&gt;
&lt;br /&gt;
Подгружаем доп модуль:&lt;br /&gt;
&lt;br /&gt;
 			;py,sys.path.append(&amp;quot;&amp;lt;eval&amp;gt;os.path.dirname(__file__)&amp;lt;/eval&amp;gt;/subroutines/mill/draw/&amp;quot;)&lt;br /&gt;
 			;py,from milldraw import *&lt;br /&gt;
 			;py,milldraw = MillDraw()&lt;br /&gt;
 			(Parse commands from external python script)&lt;br /&gt;
&lt;br /&gt;
Функция которая будет парсить возвращаемый от внешнего скрипта код:&lt;br /&gt;
&lt;br /&gt;
 			O&amp;lt;milldraw-exec&amp;gt; SUB&lt;br /&gt;
&lt;br /&gt;
Получаем значения параметров и хитрым способом преобразуем их в Gкод:&lt;br /&gt;
&lt;br /&gt;
*сначала сохраняем в переменные питона:&lt;br /&gt;
&lt;br /&gt;
 	;py,g,x,y,z,i,j,k = milldraw.get_line()&lt;br /&gt;
&lt;br /&gt;
*потом поочереди переводим их в параметры Gкода&lt;br /&gt;
&lt;br /&gt;
 	;py,interpreter.this.params[&amp;#039;draw_param_g&amp;#039;]=g&lt;br /&gt;
 	;py,interpreter.this.params[&amp;#039;draw_param_x&amp;#039;]=x&lt;br /&gt;
&lt;br /&gt;
*и наконец преобразуем в Gкод через условия&lt;br /&gt;
&lt;br /&gt;
 	O&amp;lt;milldraw-exec-if&amp;gt; IF [ #&amp;lt;draw_param_g&amp;gt; EQ 1 ] &lt;br /&gt;
 		G01 X#&amp;lt;draw_param_x&amp;gt; Y#&amp;lt;draw_param_y&amp;gt; Z#&amp;lt;draw_param_z&amp;gt;&lt;br /&gt;
 	O&amp;lt;milldraw-exec-if&amp;gt; ELSEIF [ #&amp;lt;draw_param_g&amp;gt; EQ 0 ] &lt;br /&gt;
&lt;br /&gt;
== Описание примитивов Items ==&lt;br /&gt;
&lt;br /&gt;
Все примитивы просто выдают во внешний скрипт свои параметры. При этом параметры сначала прогоняются через парсер Gкода, это нужно для того, чтобы потом в features можно было пользоваться парамметрами. &lt;br /&gt;
&lt;br /&gt;
Пример обработки из line_to:&lt;br /&gt;
&lt;br /&gt;
 	#&amp;lt;draw_tmp_x&amp;gt; = [[#param_x]+#&amp;lt;_draw_x&amp;gt;]&lt;br /&gt;
 	#&amp;lt;draw_tmp_y&amp;gt; = [[#param_y]+#&amp;lt;_draw_y&amp;gt;]&lt;br /&gt;
 	;py,milldraw.line_to(interpreter.this.params[&amp;#039;draw_tmp_x&amp;#039;],interpreter.this.params[&amp;#039;draw_tmp_y&amp;#039;])&lt;br /&gt;
 	#&amp;lt;_draw_x&amp;gt; = [#&amp;lt;_draw_x&amp;gt;+[#param_x]]&lt;br /&gt;
 	#&amp;lt;_draw_y&amp;gt; = [#&amp;lt;_draw_y&amp;gt;+[#param_y]]&lt;br /&gt;
&lt;br /&gt;
Есть и небольшой негативный момент, мы не можем пользоваться встроенными переменными linuxcnc #&amp;lt;_x&amp;gt;, #&amp;lt;_y&amp;gt; и т.д. Т.к. при задании примитива фактического перемещения не происходит, то во внешний скрипт будет отдаваться #&amp;lt;_x&amp;gt; который был на начало Draw. Но надеюсь это не так страшно, для организации относительных перемещений есть спец Примитивы. Ну и собственно говоря постоянно храним и меняем текущие координаты #&amp;lt;_draw_x&amp;gt;, #&amp;lt;_draw_y&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Nick</name></author>
		
	</entry>
</feed>