Вверх ↑
Этот топик читают: Гость
Ответов: 172
Рейтинг: 1
#1: 2020-06-22 14:24:34 ЛС | профиль | цитата
Здравствуйте.
Есть потребность в предпросмотре G-кода, что там в последствии станок фрезеровать будет.
Как это сделать прямыми линиями, я более менее понял, но как дело дошло до дуг, что то не пойму как это сделать...
Прикреплю несколько файлов в архиве, то как должно выглядеть на самом деле, краткое пояснение g-кода, мою программку недоделанную, пример g-кода... ну а также пробник где можно порисовать дуги и ее область.
Если кто то сталкивался, подскажите пожалуйста......

(упс, не допер как залить архив...)

Залил на яндекс диск https://yadi.sk/d/ri4UOL5GRd_NAA

Редактировалось 2 раз(а), последний 2020-06-22 14:27:30
карма: 1

0
Ответов: 8961
Рейтинг: 824
#2: 2020-06-22 18:40:48 ЛС | профиль | цитата
Gitarist, окружности (дуги) рисуются проще через синусы/косинусы
SIN


Add(MainForm,2953706,259,63)
{
 Width=434
 link(onCreate,11335311:doWork2,[])
}
Add(Edit,12153667,161,133)
{
 Left=5
 Top=25
 Text="100"
 DataType=2
 ClearAfterEnter=1
 link(onEnter,6809032:doWork2,[(200,146)(200,118)])
}
Add(Label,13915465,112,175)
{
 Left=20
 Top=5
 Width=91
 Height=17
 Caption="X     Центр    Y"
}
Add(Label,3205524,119,182)
{
 Left=5
 Top=50
 Width=51
 Height=17
 Caption="Радиус R"
}
Add(Edit,15954973,266,133)
{
 Left=5
 Top=70
 Text="80"
 DataType=2
 ClearAfterEnter=1
 link(onEnter,5624251:doWork3,[(312,146)])
}
Add(Image,11758879,364,259)
{
 Left=150
 Top=30
 Width=201
 Height=201
 Color=12639424
 Point(doRefresh)
 link(Bitmap,5323349:Var2,[])
}
Add(Label,13814760,259,287)
{
 Left=50
 Top=145
}
Add(Bitmap,16619400,364,63)
{
 HWidth=201
 HHeight=201
 FillColor=12639424
 Point(doCreate)
}
Add(Hub,14293548,175,224)
{
 OutCount=3
 link(onEvent1,14691064:doCalc,[])
 link(onEvent2,13459956:doCalc,[])
 link(onEvent3,10075584:doString,[(200,244)(200,293)])
}
Add(MathParse,13459956,210,231)
{
 DataCount=3
 MathStr="cos(%2/10)*%1 + %3"
 ResultType=0
 AngleMode=1
 link(onResult,1116387:doDraw,[(249,237)(249,328)])
 link(X1,14888807:Var1,[(216,208)])
 link(X3,4405020:Var2,[])
}
Add(FormatStr,10075584,210,287)
{
 Mask="X=%1 Y=%2"
 link(onFString,13814760:doText,[])
 link(Str1,13459956:Result,[])
 link(Str2,13980225:Var1,[(223,271)])
}
Add(Img_Line,13468380,392,210)
{
 Point(Point1)
 Point(Point2)
 Point(Size)
 Point(Color)
 link(onDraw,563300:doDraw,[])
 link(Bitmap,3316699:Var2,[])
 link(Point1,3319651:Point,[(405,178)(398,178)])
 link(Point2,6834355:Point,[])
 link(Size,1635941:Var1,[(419,194)])
 link(Color,1635941:Var2,[])
}
Add(Img_Line,563300,441,210)
{
 Point(Point1)
 Point(Point2)
 Point(Size)
 Point(Color)
 link(onDraw,11758879:doLoad,[(487,216)(487,230)(355,230)(355,265)])
 link(Bitmap,3316699:Var3,[(447,187)])
 link(Point1,2594502:Point,[(454,179)(447,179)])
 link(Point2,14938808:Point,[])
 link(Size,7114521:Var2,[])
 link(Color,5246863:Var2,[])
}
Add(Hub,3052766,322,77)
{
 link(onEvent1,16619400:doCreate,[])
 link(onEvent2,4839593:doWork1,[(354,90)])
}
Add(PointXY,3319651,392,140)
{
 X=100
 link(X,8692592:Var2,[])
}
Add(PointXY,6834355,406,140)
{
 X=100
 Y=199
 link(X,8692592:Var3,[(412,131)])
}
Add(PointXY,2594502,441,140)
{
 Y=100
 link(Y,15439192:Var2,[])
}
Add(PointXY,14938808,455,140)
{
 X=200
 Y=100
 link(Y,15439192:Var3,[(468,124)])
}
Add(GetDataEx,5323349,364,182)
{
 link(Data,16619400:Bitmap,[])
}
Add(GetDataEx,3316699,392,182)
{
 Angle=3
 link(Data,5323349:Var3,[])
}
Add(Memory,10239166,476,140)
{
 Default=Integer(1)
}
Add(GetDataEx,1635941,420,189)
{
 Angle=1
 link(Data,7114521:Var1,[])
}
Add(GetDataEx,7114521,462,189)
{
 Angle=1
 link(Data,5246863:Var1,[])
}
Add(GetDataEx,5246863,469,189)
{
 Angle=1
 link(Data,10239166:Value,[(482,194)])
}
Add(Img_Point,1116387,364,322)
{
 Color=255
 Size=2
 Point(X)
 Point(Y)
 Point(Color)
 Point(Size)
 link(onDraw,11758879:doRefresh,[(409,328)(409,301)(354,301)(354,279)])
 link(Bitmap,11758879:ImageBitmap,[])
 link(Y,13980225:Var3,[(384,313)(349,313)(349,271)])
 link(Color,1580276:Value,[(391,306)(419,306)])
 link(Size,2504854:Value,[(398,313)(461,313)])
}
Add(GetDataEx,8692592,392,126)
{
 Angle=3
 link(Data,4405020:Var3,[(349,131)(349,194)])
}
Add(GetDataEx,15439192,448,119)
{
 Angle=3
 link(Data,9720267:Var3,[(342,124)(342,187)])
}
Add(Edit,8039995,210,133)
{
 Left=65
 Top=25
 Text="100"
 DataType=2
 ClearAfterEnter=1
 link(onEnter,6809032:doWork3,[(256,146)])
}
Add(ScrollBar,10779851,119,224)
{
 Left=135
 Top=10
 Width=230
 Max=1800
 Min=-1800
 Page=10
 link(onPosition,14293548:doEvent1,[])
}
Add(Memory,1580276,413,259)
{
 Default=Integer(255)
}
Add(Memory,2504854,455,259)
{
 Default=Integer(10)
}
Add(MathParse,14691064,266,224)
{
 DataCount=3
 MathStr="sin(%2/10)*%1 + %3"
 ResultType=0
 AngleMode=1
 link(onResult,4839593:doWork2,[(305,230)(305,216)])
 link(X1,14888807:Var2,[])
 link(X3,9720267:Var2,[])
}
Add(GetDataEx,14888807,266,203)
{
 link(Data,15954973:Text,[])
}
Add(GetDataEx,4405020,224,189)
{
 Angle=3
 link(Data,12153667:Text,[(167,194)])
}
Add(GetDataEx,9720267,280,182)
{
 Angle=3
 link(Data,8039995:Text,[(216,187)])
}
Add(HubEx,4839593,350,210)
{
 link(onEvent,13468380:doDraw,[])
}
Add(GetDataEx,13980225,266,266)
{
 link(Data,14691064:Result,[])
}
Add(HubEx,11335311,308,77)
{
 link(onEvent,3052766:doEvent1,[])
}
Add(HubEx,5624251,308,112)
{
 Angle=3
 link(onEvent,11335311:doWork3,[])
}
Add(HubEx,6809032,252,112)
{
 link(onEvent,5624251:doWork2,[])
}

карма: 19

0
Ответов: 2437
Рейтинг: 693
#3: 2020-06-22 19:19:45 ЛС | профиль | цитата
Gitarist писал(а):
ну а также пробник где можно порисовать дуги и ее область.

Попробуйте измененный элемент Img_Arc. При включении свойства UseAngle = True. Point3 будет задавать начало дуги, а Point4 конец дуги в градусах.
Зайдите в эту тему: Доработка элементов ГрафикаРисование
Скачайте архив с элементами в первом посте (testelements.zip).
Замените файл hiImg_Arc.pas в папке \Elements\delphi\code\ и файл Img_Arc.ini в папке \Elements\delphi\conf\.
Оригинальные файлы скопируйте для последующего восстановления.
Перезапустите HiAsm.
Схема для тестирования


Add(MainForm,2953706,161,280)
{
 Width=362
 Height=502
 Position=1
}
Add(Img_Arc,8255685,434,532)
{
 Point2AsOffset=0
 Size=3
 UseAngle=1
 Direction=1
 Point(Point1)
 Point(Point2)
 Point(Point3)
 Point(Point4)
 link(Bitmap,2330156:Var2,[])
 link(Point1,2810144:Var2,[])
 link(Point2,12373068:Var2,[])
 link(Point3,11759686:Position,[])
 link(Point4,8851225:Position,[])
}
Add(PaintBox,880944,434,105)
{
 Left=20
 Top=120
 Width=300
 Height=310
 Color=16777215
 ClearBeforeDraw=0
 link(onBeforeDraw,15251476:doDraw,[(478,111)(478,96)(332,96)(332,538)])
}
Add(Edit,5113297,448,154)
{
 Left=100
 Top=20
 Text="50"
 link(onChange,8919054:doWork2,[])
}
Add(Edit,9314071,455,189)
{
 Left=100
 Top=40
 Text="50"
 link(onChange,12839978:doWork2,[])
}
Add(Edit,6904018,455,273)
{
 Left=170
 Top=20
 Text="100"
 link(onChange,528179:doWork2,[])
}
Add(Edit,13102730,462,308)
{
 Left=170
 Top=40
 Text="100"
 link(onChange,13288155:doWork2,[])
}
Add(PointXY,2063720,448,238)
{
 link(X,5113297:Text,[])
 link(Y,9314071:Text,[])
}
Add(PointXY,1671955,455,350)
{
 link(X,6904018:Text,[])
 link(Y,13102730:Text,[])
}
Add(HubEx,8919054,703,154)
{
 Angle=3
 link(onEvent,880944:doRefresh,[(707,146)(422,146)(422,111)])
}
Add(HubEx,12839978,703,189)
{
 Angle=3
 link(onEvent,8919054:doWork3,[])
}
Add(HubEx,528179,703,273)
{
 Angle=3
 link(onEvent,12839978:doWork3,[])
}
Add(HubEx,13288155,703,308)
{
 Angle=3
 link(onEvent,528179:doWork3,[])
}
Add(Img_Rectangle,15251476,385,532)
{
 Point2AsOffset=0
 LineStyle=2
 Point(Point1)
 Point(Point2)
 link(onDraw,8255685:doDraw,[])
 link(Bitmap,2330156:Var1,[(391,495)])
 link(Point1,2810144:Var1,[(405,502)])
 link(Point2,12373068:Var1,[(412,509)])
}
Add(GetDataEx,2330156,434,490)
{
 link(Data,880944:Bitmap,[])
}
Add(GetDataEx,12373068,455,504)
{
 link(Data,1671955:Point,[])
}
Add(GetDataEx,2810144,448,497)
{
 link(Data,2063720:Point,[])
}
Add(ScrollBar,11759686,462,406)
{
 Left=30
 Top=70
 Width=260
 Max=359
 link(onPosition,12145677:doEvent1,[])
}
Add(ScrollBar,8851225,469,483)
{
 Left=30
 Top=95
 Width=260
 Max=359
 Position=90
 link(onPosition,8737459:doEvent1,[])
}
Add(HubEx,15440027,703,413)
{
 Angle=3
 link(onEvent,13288155:doWork3,[])
}
Add(Label,3318855,630,378)
{
 Left=295
 Top=70
 Caption="от 0"
}
Add(Hub,12145677,504,406)
{
 link(onEvent1,7468557:doStrCat,[(556,412)(556,384)])
 link(onEvent2,15440027:doWork2,[])
}
Add(StrCat,7468557,574,378)
{
 Str1="от "
 link(onStrCat,3318855:doText,[])
}
Add(Label,3796690,630,455)
{
 Left=295
 Top=95
 Caption="до 90"
}
Add(Hub,8737459,518,483)
{
 link(onEvent1,5464319:doStrCat,[(553,489)(553,461)])
 link(onEvent2,15440027:doWork3,[(707,496)])
}
Add(StrCat,5464319,574,455)
{
 Str1="до "
 link(onStrCat,3796690:doText,[])
}
flood
Вот казалось бы открыть Paint (или какой другой редактор) и наглядно показать как рисуется дуга в этом g-коде.
карма: 11

1
Голосовали:Gitarist
Ответов: 172
Рейтинг: 1
#4: 2020-06-23 14:15:59 ЛС | профиль | цитата
sla8a писал(а):
Скачайте архив с элементами в первом посте (testelements.zip).
Замените файл hiImg_Arc.pas в папке \Elements\delphi\code\ и файл Img_Arc.ini в папке \Elements\delphi\conf\.

Сделал все, как вы написали, теперь программа не собирается... Видимо что то еще надо...
лог


C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(26) Error: Undeclared identifier: 'PGeometricPen'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(40) Error: Undeclared identifier: '_prop_UseOffsetFill'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(43) Error: Undeclared identifier: '_data_OffsetFill'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(70) Error: Undeclared identifier: '_prop_Outline'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(72) Error: Undeclared identifier: '_data_Pen'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(72) Error: Undeclared identifier: 'GEOMETRICPEN_GUID'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(73) Error: Operator not applicable to this operand type

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(94) Error: Undeclared identifier: '_prop_UseAngle'

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(113) Error: Operator not applicable to this operand type

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(113) Error: Type of expression must be BOOLEAN

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiImg_Arc.pas(113) Error: Missing operator or semicolon

C:\Users\USER\AppData\Roaming\HiAsm_AltBuild\Elements\delphi\code\hiMainForm_19D6610.pas(8) Fatal: Could not compile used unit 'hiImg_Arc.pas'



Леонид писал(а):
Gitarist, окружности (дуги) рисуются проще через синусы/косинусы

Спасибо за совет Леонид, не первый раз выручаете! Подумаю чуть позже (после того как разберусь с Img_Arc.ini\ini) как прикрутить вашу схемку к отрисовке дуг
SIN


Редактировалось 3 раз(а), последний 2020-06-23 14:24:48
карма: 1

0
Ответов: 2437
Рейтинг: 693
#5: 2020-06-23 16:40:15 ЛС | профиль | цитата
Gitarist писал(а):
программа не собирается
Попробуйте из этого архива и заодно замените и Img_Draw в папке \Elements\delphi\code\.
Архив с элементом и примером
карма: 11

0
Ответов: 172
Рейтинг: 1
#6: 2020-06-23 16:49:38 ЛС | профиль | цитата
Леонид писал(а):
Gitarist, окружности (дуги) рисуются проще через синусы/косинусы
SIN

Этот пример маленько не то что нужно. В нем можно задать центр дуги и получить к примеру массив координат точек для отрисовки.
А мне известно только 4 значения для постороения дуги: дуга по часовой или против (G02 или G03), координата начала дуги, координата конца дуги, и радиус.
Как используя эти 4 переменные отрисовать дугу?

например, такой текст как отрисовать:


G00X100Y100 - начало дуги
G03X200Y100A50 - "G03"- по часовой, "X200Y100"- конец дуги, "A50" - радиус.

Редактировалось 2 раз(а), последний 2020-06-23 16:51:21
карма: 1

0
Ответов: 523
Рейтинг: 167
#7: 2020-06-23 19:39:31 ЛС | профиль | цитата
Gitarist писал(а):
"G03"- по часовой

а разве G03 по часовой, вроде G03 - круговая интерполяция против часовой стрелки.
пояснение с рисунком https://www.intuwiz.ru/articles/g02-g03.html

Редактировалось 1 раз(а), последний 2020-06-23 19:52:05
карма: 4

0
Ответов: 2437
Рейтинг: 693
#8: 2020-06-23 19:52:05 ЛС | профиль | цитата
tig-rrr, правильно понимаю что координаты это диаметр (как в примере ТС) или хорда окружности от которой и рисуется дуга?
карма: 11

0
Ответов: 523
Рейтинг: 167
#9: 2020-06-24 09:18:33 ЛС | профиль | цитата
sla8a, в данном примере идеальные условия и хорда окружности = диаметру...

а реальная ситуация скорей всего должна описывать эти варианты


Редактировалось 1 раз(а), последний 2020-06-24 09:44:21
карма: 4

0
Ответов: 2437
Рейтинг: 693
#10: 2020-06-24 10:12:51 ЛС | профиль | цитата
Тогда достаточно стандартного элемента.
карма: 11

0
Ответов: 523
Рейтинг: 167
#11: 2020-06-24 14:53:23 ЛС | профиль | цитата
Или как предложил
Леонид писал(а):
окружности (дуги) рисуются проще через синусы/косинусы

рисовать самому

Add(MainForm,15196061,119,392)
{
 Width=761
 Height=446
 Position=1
 link(onCreate,1731741:doWork2,[])
}
Add(Edit,12153667,413,140)
{
 Left=20
 Top=25
 Text="150"
 DataType=2
 ClearAfterEnter=1
}
Add(Edit,15954973,504,140)
{
 Left=145
 Top=25
 Text="100"
 DataType=2
 ClearAfterEnter=1
}
Add(Hub,14293548,329,308)
{
 OutCount=3
 link(onEvent1,6809237:doWork3,[(385,314)])
 link(onEvent2,15940227:doWork2,[])
 link(onEvent3,3555499:doData,[(362,328)(362,482)])
}
Add(MathParse,13459956,399,315)
{
 DataCount=3
 MathStr="cos(%2)*%1 + %3"
 AngleMode=1
 link(onResult,9096087:doValue,[])
 link(X1,14148705:Var1,[(405,257)])
 link(X3,12153667:Text,[])
}
Add(Edit,8039995,455,140)
{
 Left=75
 Top=25
 Text="150"
 DataType=2
 ClearAfterEnter=1
}
Add(MathParse,14691064,455,273)
{
 DataCount=3
 MathStr="sin(%2)*%1 + %3"
 AngleMode=1
 link(onResult,1085043:doValue,[])
 link(X1,14148705:Var2,[])
 link(X3,8039995:Text,[(475,179)(461,179)])
}
Add(For,6517650,280,308)
{
 Point(doStep)
 link(onEvent,14293548:doEvent1,[])
 link(Start,2096612:Var2,[])
 link(End,12140828:Text,[(293,186)(342,186)])
}
Add(DoData,3555499,434,476)
{
 link(onEventData,5214857:doDraw,[])
}
Add(Button,6526443,119,441)
{
 Left=325
 Top=180
 link(onClick,13968087:doEvent2,[(611,447)(611,419)])
}
Add(Img_Line,5214857,504,476)
{
 Size=3
 Point(Point1)
 Point(Point2)
 link(Bitmap,6637295:Bitmap,[(510,457)(671,457)])
 link(Point1,2063720:Point,[])
 link(Point2,6259505:Point,[(524,465)(566,465)])
}
Add(PaintBox,6637295,665,413)
{
 Left=15
 Top=55
 Width=300
 Height=305
 Color=16777215
 ClearBeforeDraw=0
 link(onBeforeDraw,13814849:doEvent1,[(715,419)(715,200)(207,200)(207,230)])
}
Add(MemFIFO,1085043,504,273)
{
}
Add(MemFIFO,9096087,567,315)
{
}
Add(PointXY,2063720,511,371)
{
 link(X,1085043:Value2,[])
 link(Y,9096087:Value2,[(524,359)(580,359)])
}
Add(PointXY,6259505,560,371)
{
 link(X,1085043:Value1,[(566,346)(510,346)])
 link(Y,9096087:Value1,[])
}
Add(GetDataEx,14148705,455,252)
{
 Angle=1
 link(Data,15954973:Text,[(510,257)])
}
Add(Hub,13814849,217,224)
{
 link(onEvent1,3423076:doData,[])
 link(onEvent2,6517650:doFor,[(255,237)(255,314)])
}
Add(Edit,11892794,1022,203)
{
 Left=395
 Top=25
 Text="150"
 DataType=2
 ClearAfterEnter=1
}
Add(Edit,10777866,1106,203)
{
 Left=525
 Top=25
 Text="100"
 DataType=2
 ClearAfterEnter=1
}
Add(Hub,5078315,987,315)
{
 OutCount=3
 link(onEvent1,5002889:doCalc,[(1028,321)(1028,286)])
 link(onEvent2,10186292:doCalc,[])
 link(onEvent3,9477739:doData,[(1024,335)(1024,482)])
}
Add(MathParse,10186292,1050,322)
{
 DataCount=3
 MathStr="cos(%2)*%1 + %3"
 AngleMode=1
 link(X1,16768445:Var1,[(1056,264)])
 link(X3,11892794:Text,[(1070,274)(1028,274)])
}
Add(Img_Point,10001748,1092,476)
{
 Size=3
 Point(X)
 Point(Y)
 Point(Color)
 Point(Size)
 link(Bitmap,3964531:Bitmap,[(1098,468)(1070,468)])
 link(X,10186292:Result,[(1105,382)(1056,382)])
 link(Y,5002889:Result,[])
}
Add(Edit,6404793,1064,203)
{
 Left=450
 Top=25
 Text="150"
 DataType=2
 ClearAfterEnter=1
}
Add(MathParse,5002889,1106,280)
{
 DataCount=3
 MathStr="sin(%2)*%1 + %3"
 AngleMode=1
 link(X1,16768445:Var2,[])
 link(X3,6404793:Text,[(1126,252)(1070,252)])
}
Add(GetDataEx,16768445,1106,259)
{
 link(Data,10777866:Text,[])
}
Add(PaintBox,3964531,1064,406)
{
 Left=395
 Top=50
 Width=310
 Height=305
 Color=16777215
 ClearBeforeDraw=0
 link(onBeforeDraw,16736643:doFor,[(1130,412)(1130,369)(871,369)(871,321)])
}
Add(For,16736643,882,315)
{
 Point(doStep)
 link(onEvent,5078315:doEvent1,[])
 link(Start,13920560:Text,[])
 link(End,11229334:Text,[(895,261)(937,261)])
}
Add(DoData,9477739,1029,476)
{
 link(onEventData,10001748:doDraw,[])
}
Add(Hub,13968087,630,406)
{
 InCount=2
 link(onEvent1,3964531:doRefresh,[])
 link(onEvent2,6637295:doRefresh,[])
}
Add(Edit,2463932,280,140)
{
 Left=275
 Top=25
 Text="90"
 DataType=2
 ClearAfterEnter=1
}
Add(Edit,12140828,336,140)
{
 Left=225
 Top=25
 Text="270"
 DataType=2
 ClearAfterEnter=1
}
Add(Edit,13920560,882,203)
{
 Left=605
 Top=25
 Text="-180"
 DataType=2
 ClearAfterEnter=1
}
Add(Edit,11229334,931,203)
{
 Left=655
 Top=25
 Text="0"
 DataType=2
 ClearAfterEnter=1
}
Add(ScrollBar,10999977,119,322)
{
 Left=270
 Top=380
 Width=150
 Max=30
 Min=1
 Page=10
 Position=1
 link(onPosition,16631915:doEvent1,[])
}
Add(Hub,16631915,182,322)
{
 OutCount=3
 link(onEvent1,6517650:doStep,[])
 link(onEvent2,4207655:In,[])
 link(onEvent3,1731741:doWork1,[(207,342)])
}
Add(LineBreak,4142984,833,329)
{
 link(Out,16736643:doStep,[])
 Primary=[4207655,-609,0]
}
Add(HubEx,1731741,203,406)
{
 link(onEvent,13968087:doEvent1,[])
}
Add(DoData,3423076,308,224)
{
 link(onEventData,6016783:doEvent1,[])
 link(Data,2096612:Var3,[(314,208)])
}
Add(GetDataEx,2096612,280,203)
{
 link(Data,2463932:Text,[])
}
Add(HubEx,6809237,381,273)
{
 link(onEvent,14691064:doCalc,[])
}
Add(Hub,6016783,357,224)
{
 link(onEvent1,6809237:doWork1,[(385,230)])
 link(onEvent2,15940227:doWork1,[(375,237)])
}
Add(HubEx,15940227,371,315)
{
 link(onEvent,13459956:doCalc,[])
}


Редактировалось 5 раз(а), последний 2020-06-25 18:49:26
карма: 4

1
Голосовали:Gitarist
Ответов: 172
Рейтинг: 1
#12: 2020-06-25 08:35:31 ЛС | профиль | цитата
tig-rrr писал(а):
Gitarist писал(а):
"G03"- по часовой

а разве G03 по часовой, вроде G03 - круговая интерполяция против часовой стрелки.
пояснение с рисунком https://www.intuwiz.ru/articles/g02-g03.html

Редактировалось 1 раз(а), последний 2020-06-23 19:52:05


Конечно же против... Очепятался, звинити пзязя...
tig-rrr писал(а):
рисовать самому

Прикольная схемка! Точно, отрисовывать можно же линиями, не обязательно дуги... Спасибо большое! Попробуем прикрутить...

--- Добавлено в 2020-06-25 08:40:57

sla8a писал(а):
tig-rrr, правильно понимаю что координаты это диаметр (как в примере ТС) или хорда окружности от которой и рисуется дуга?

но ведь дуга может быть иметь еще вот такой вид:


Редактировалось 4 раз(а), последний 2020-06-25 08:44:40
карма: 1

0
Ответов: 172
Рейтинг: 1
#13: 2020-06-25 14:09:22 ЛС | профиль | цитата
tig-rrr писал(а):
Или как предложил
Леонид писал(а):
окружности (дуги) рисуются проще через синусы/косинусы

рисовать самому


Но нет таких вводных как в вашем примере... угол, центр итд...
Нипанимаю чот

--- Добавлено в 2020-06-25 14:19:42

Кстати, если отрисовывать что то подобное как на картинке выше, G-Код выглядит примерно так:
G00X20.000Y20.000
G02X85.000Y160.000A85.089
G02X150.000Y20.000A85.089

Редактировалось 2 раз(а), последний 2020-06-25 14:20:06
карма: 1

0
Ответов: 8961
Рейтинг: 824
#14: 2020-06-25 14:35:59 ЛС | профиль | цитата
Ну, коллеги, создаётся впечатление, что вы или прогуливали арифметику в школе, или являетесь жертвами ЕГ или одно из двух
Gitarist, нарисованная вами "балда" целиком и полностью задаётся значением радиуса
Для решения поставленной ТС задачи в первую очередь надо вычислить положение ДВУХ центров искомой окружности!
Тут несколько путей -- решить систему из двух окружностей по двум точкам пересечения, или найти линию перпендикулярную нашей хорде и на ней искать точки на расстоянии радиуса опять через систему из двух уравнений, или повернуть координаты до параллельности одной из осей хорде, по Пифагору посчитать эти центры окружностей и повернуть координаты в исходное положение.
Когда центры найдены, то нарисовать кусочек окружности не составит труда с любой точностью.
К тому же ТС не рисует, но "фрезерует" и поэтому нужна равномерность, т. е. расчёт точек по углу с выходом на таблицу.
Придётся заняться самому
карма: 19

0
Ответов: 172
Рейтинг: 1
#15: 2020-06-25 15:20:12 ЛС | профиль | цитата
Леонид писал(а):
Тут несколько путей -- решить систему из двух окружностей по двум точкам пересечения, или найти линию перпендикулярную нашей хорде и на ней искать точки на расстоянии радиуса опять через систему из двух уравнений, или повернуть координаты до параллельности одной из осей хорде, по Пифагору посчитать эти центры окружностей и повернуть координаты в исходное положение.


Пожалуй, пойду лучше выйду в окно...
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)