×
Instructions for working with the editor Important note: at the moment, the perpendicular is built only between segments. The editor has two workspaces - a graphic window and a command window. The user can enter data in any of the windows. The status of another window is updated automatically. Data entry in the graphics window is performed using the toolbar. The following commands are currently supported: Geometric elements - line, line, circle. The relationships between the elements: snap to the middle, snap to the intersection, plotting the perpendicular and tangent circle. The order of construction of primitives: User selects primitive from toolbar and chooses one or several points in the graphics area. Editing primitives: When you hover over an element, control points appear. For editing, you need to click once on the control point with the mouse, move the cursor to required place and left click the mouse a second time. Work with binding 1. Snap to the middle of the segment. First, the point to be snapped is selected. It can be the end of a line segment or the center of a circle. Then a segment is selected, to which the binding will be made. Control points that are used to set the line and the radius of the circle cannot be snapped. 2. Snap to the intersection. The point to be snapped is selected. Then a pair of elements is selected, to the intersection of which the binding will be made. If there are several intersections, the nearest intersection to the last mouse click will be selected. 3. Construction of the prependicular. A segment is selected that becomes a perpendicular, then a segment onto which a perpendicular is dropped. 4. Snapping a circle. A circle is selected, then two elements (line, line segment, circle) to which the first specified circle will be attached. Then the user selects the placement of the tangent circle. Also in the text box mode, the "equality" binding is available. For example, you can make the radius of one circle equal to the radius of another circle as follows: c0001 [1] = eq ("c0000 [1]") Here c0000, c0001 are respectively independent and dependent circles (more precisely, their names). c0000 [1] - access to the second element of the circle data array (this is the radius) Circle data structure: [[xc, yc], r] Having information about the data structure of the element, you can set the dependence of any scalar parameter.
Инструкция по работе с редактором Важное замечание: на данный момент перпендикуляр строится только между отрезками. Редактор имеет две рабочие области - графическое окно и окно команд. Пользователь может вводить данные в любом из окон. Состояние другого окна обновляется автоматически. Ввод данных в графическом окне производится при помощи панели инструментов. В настоящее время поддерживаются следующие команды: Геометрические элементы - линия, прямая, окружность. Взаимосвязи между элементами: привязка к середине, привязка к пересечению, построение перпендикуляра и касательная окружность. Порядок построения примитивов: В панели инструментов выбирается элемент и указываются точки, необходимые для построения этого элемента. Редактирование примитивов: При наведении на элемент появляются управляющие точки. Для редактирования нужно один раз щелкнуть мышкой на управляющую точку, переместить курсор в нужном направлении и щелкнуть мышкой второй раз. Работа с привязкой 1. Привязка к середине отрезка. Сначала выбирается точка, которая будет привязана. Это может быть конец отрезка или центр окружности. Затем выбирается отрезок, к оторому будет производится привязка. Управляющие точки которые используются для задания прямой и радиуса окружности не могут быть привязаны. 2. Привязка к пересечению. Выбирается точка, которая будет привязана. Затем выбирается пара элементов, к пересечению которых будет производится привязка. Если пересечений несколько, будет выбрана ближайшее пересечение к последнему нажатию мышки. 3. Построение препендикуляра. Выбирается отрезок, который станет перпендикуляром, затем отрезок, на который будет опущен перпендикуляр. 4. Привязка окружности. Выбирается окружность, затем два элемента (линия, отрезок, окружность), к которым будет привязана первая указанная окружность. Затем пользователь выбирает вариант размещения касательной окружности. Также в режиме текстового окна доступна привязка "равенство". Например, можно сделать радиус одной окружности равным радиусу другой окружности следующим образом: c0001[1]=eq("c0000[1]") Здесь c0000, c0001 соотвественно независимая и зависимая окружности (точнее их имена). c0000[1] - обращение ко второму элементу массива данных окружности (это радиус) Структура данных окружности: [[xc, yc], r] Имея информацию о структуре данных элемента, можно задать зависимость любого скаларного параметра. ls000.p0=point("100","100") ls000.p1=point("465","103") ls000=lineseg("ls000.p0","ls000.p1") ls001.p0=point("89","98") ls001.p1=point("103","167") ls001=lineseg("ls001.p0","ls001.p1") ls001.p1=len("-70","ls001.p0","ls001") layer=layer("f") c1000.c=point("103","167") c1000=circle("c1000.c","231") c1000.c=coin("ls001.p1") ls002.p0=point("103","167") ls002.p1=point("324","102") layer=layer("0") ls002=lineseg("ls002.p0","ls002.p1") ls002.p0=coin("ls001.p1") ls002.p1=int("c1000","ls000","0") ls003.p0=point("137","394") ls003.p1=point("192","477") ls003=lineseg("ls003.p0","ls003.p1") ls003.p1=len("-100","ls003.p0","ls003") layer=layer("f") c1001.c=point("333","392") c1001=circle("c1001.c","118") c1002.c=point("192","477") c1002=circle("c1002.c","198") c1002.c=coin("ls003.p1") layer=layer("0") ls004.p0=point("192","477") ls004.p1=point("390","496") ls004=lineseg("ls004.p0","ls004.p1") ls004.p0=coin("ls003.p1") ls004.p1=int("c1001","c1002","0") ls005.p0=point("333","392") ls005.p1=point("390","496") ls005=lineseg("ls005.p0","ls005.p1") ls005.p0=coin("c1001.c") ls005.p1=int("c1001","c1002","0")
Paraedit
(c) Dmitry Rukavishnikov
Elements
Links
Help
Enter with your google account
VIDEO HOW IT WORKS
get Z3
get Z11
get Z26
load CNC
animation example
Round Rectangle example
Shaped halfmuff example
Editor working area:
Status:
Text area:
layer=layer("f") ls000.p0=point("112","215") ls000.p1=point("460","215") layer=layer("0") ls000=lineseg("ls000.p0","ls000.p1") layer=layer("f") ls001.p0=point("150","275") ls001.p1=point("150","36") layer=layer("0") ls001=lineseg("ls001.p0","ls001.p1") layer=layer("f") ls002.p0=point("150","215") ls002.p1=point("204","259") layer=layer("0") ls002=lineseg("ls002.p0","ls002.p1") layer=layer("f") ls002.p0=int("ls001","ls000","0") ls002.p1=len("-70","ls002.p0","ls002") ls003.p0=point("204","259") ls003.p1=point("365","215") layer=layer("0") ls003=lineseg("ls003.p0","ls003.p1") layer=layer("f") c1000.c=point("204","259") c1000=circle("c1000.c","166") c1000.c=coin("ls002.p1") ls003.p0=coin("ls002.p1") ls003.p1=int("c1000","ls000","0") ls004.p0=point("285","237") ls004.p1=point("150","166") layer=layer("0") ls004=lineseg("ls004.p0","ls004.p1") layer=layer("f") ls004.p0=mid("ls003") c1001.c=point("285","237") c1001=circle("c1001.c","152") c1001.c=mid("ls003") ls004.p1=int("c1001","ls001","0")
layer=layer("0") ls000.p0=point("232","333") ls000.p1=point("418","335") ls000=lineseg("ls000.p0","ls000.p1") ls001.p0=point("232","333") ls001.p1=point("278","280") ls001=lineseg("ls001.p0","ls001.p1") ls001.p0=coin("ls000.p0") ls001.p1=len("-70","ls001.p0","ls001") c1000.c=point("278","280") layer=layer("f") c1000=circle("c1000.c","210") c1000.c=coin("ls001.p1") c1001.c=point("418","335") c1001=circle("c1001.c","101") ls002.p0=point("418","335") ls002.p1=point("487","262") layer=layer("0") ls002=lineseg("ls002.p0","ls002.p1") c1001.c=coin("ls000.p1") ls002.p0=coin("ls000.p1") ls002.p1=int("c1000","c1001","0") ls003.p0=point("487","262") ls003.p1=point("278","280") ls003=lineseg("ls003.p0","ls003.p1") ls003.p0=int("c1000","c1001","0") ls003.p1=coin("ls001.p1") ls004.p0=point("474","214") ls004.p1=point("478","44") ls004=lineseg("ls004.p0","ls004.p1") ls005.p0=point("383","271") ls005.p1=point("478","59") ls005=lineseg("ls005.p0","ls005.p1") c1002.c=point("383","271") layer=layer("f") c1002=circle("c1002.c","232") c1002.c=mid("ls003") ls005.p0=mid("ls003") ls005.p1=int("c1002","ls004","0")
layer=layer("0") ls000.p0=point("187","315") ls000.p1=point("429","314") ls000=lineseg("ls000.p0","ls000.p1") ls001.p0=point("429","314") ls001.p1=point("523","347") ls001=lineseg("ls001.p0","ls001.p1") ls001.p0=coin("ls000.p1") ls001.p1=len("-100","ls001.p0","ls001") c1000.c=point("523","347") layer=layer("f") c1000=circle("c1000.c","216") c1001.c=point("319","418") c1001=circle("c1001.c","152") c1002.c=point("187","315") c1002=circle("c1002.c","168") c1003.c=point("187","315") c1003=circle("c1003.c","111") c1000.c=coin("ls001.p1") c1002.c=coin("ls000.p0") ls002.p0=point("523","347") ls002.p1=point("319","418") layer=layer("0") ls002=lineseg("ls002.p0","ls002.p1") ls002.p0=coin("ls001.p1") ls002.p1=int("c1000","c1002","0") ls003.p0=point("187","315") ls003.p1=point("319","418") ls003=lineseg("ls003.p0","ls003.p1") ls003.p0=coin("ls000.p0") ls003.p1=int("c1002","c1000","1") c1001.c=coin("ls003.p1") c1003.c=coin("ls000.p0") ls004.p0=point("187","315") ls004.p1=point("288","270") ls004=lineseg("ls004.p0","ls004.p1") ls005.p0=point("319","418") ls005.p1=point("288","270") ls005=lineseg("ls005.p0","ls005.p1") ls004.p0=coin("ls000.p0") ls004.p1=int("c1003","c1001","0") ls005.p0=coin("ls003.p1") ls005.p1=int("c1003","c1001","0") ls006.p0=point("165","354") ls006.p1=point("168","72") ls006=lineseg("ls006.p0","ls006.p1") c1004.c=point("288","270") layer=layer("f") c1004=circle("c1004.c","195") c1004.c=int("c1003","c1001","0") ls007.p0=point("288","270") ls007.p1=point("168","116") layer=layer("0") ls007=lineseg("ls007.p0","ls007.p1") ls007.p0=int("c1003","c1001","0") ls007.p1=int("c1004","ls006","0")
pline01.p00=point("100","100") pline01.p01=point("100","450") pline01.p02=point("210","310") pline01.p03=point("210","480") pline01.p04=point("500","500") pline01.p05=point("500","100") pline01.p06=point("100","100") p01=point("595906","20") pline01=pline("pline01.p00","pline01.p01","pline01.p02","pline01.p03","pline01.p04","pline01.p05","pline01.p06") c1000.c=point("100","358") c1000=circle("c1000.c","20") c1000.c=plineMove("pline01","p01","0") t01=setInterval("10","p01","0","myinc2","1") c1001.c=point("326","293") c1001=circle("c1001.c","60") move_right=setInterval("100","c1001.c","0","myinc2","1") move_down=setInterval("100","c1001.c","1","myinc2","1") move_left=setInterval("100","c1001.c","0","mydec2","1") move_up=setInterval("100","c1001.c","1","mydec2","1") bigger=setInterval("100","c1001","1","myinc2","1") smaller=setInterval("100","c1001","1","mydec2","1") c1002.c=point("272","430") c1002=circle("c1002.c","207") c1002=tan21("c1001","c1000","4") c1003.c=point("410","312") c1003=circle("c1003.c","26") c1003=tan21("c1002","c1001","1") ls000.p0=point("210","458") ls000.p1=point("209","135") ls000=lineseg("ls000.p0","ls000.p1") c1004.c=point("243","191") c1004=circle("c1004.c","34") c1004=tan21("c1002","ls000","2") c1005.c=point("217","439") c1005=circle("c1005.c","122") c1005=tan21("c1001","c1000","7")
G01 X10 Y20 X30 Y30 X10 Y50 X100 Y300 G03 X300 Y300 I100 J235
G01 X140 Y110 X360 Y110 G03 X390 Y140 I0 J30 G01 X390 Y260 G03 X360 Y290 I-30 J0 G01 X140 Y290 G03 X110 Y260 I0 J-30 G01 X110 Y140 G03 X140 Y110 I30 J0
G01 X10 Y10 X140 Y100 X360 Y100 G03 X400 Y140 I0 J40 G01 X400 Y260 G03 X360 Y300 I-40 J0 G01 X140 Y300 G03 X100 Y260 I0 J-40 G01 X100 Y140 G03 X140 Y100 I40 J0 G01 X100 Y10 X10 Y10
i3=image("./CNC/round_rect.png","102","103","298","195")
autolisp
load lisp
( (setq b (+ 200 100)) (setq p1 (list b 30)) (setq p2 (list 100 300)) (setq p3 (list 400 400)) (command lineseg p1 p2) (command lineseg p1 p3) )