Strona 1 z 1

Obliczanie ofsetu dla freza w rogu...

: 25 lip 2012, 15:24
autor: mitek
Witam

Mam problem i pustkę w głowie... chodzi by stworzyć skrypt który automatycznie będzie frezował mi trójkąt ale by to zrobić poprawnie muszę mieć odcinek oznaczony na różowo na rysunku. Koła to frez oczywiście stycznie poruszający się po czarnej lini symbolizującej dany kawałek tak naprawdę mamy tylko informacje o średnicy freza.

Ktoś ma jakiś pomysł ? oczywiście będzie to skrypt więc wymagane jest obliczenie matematyczne nie pomiar bo sam kąt może się zmienić i tak dalej...

Obrazek

[ Dodano: 2012-07-26, 07:51 ]
Udało mi się obliczyć z tangensem ale bez użycia funkcji trygonometrycznych nie dam rady.

Widać ze kąty są do obliczane 37=90-(26,5*2)

Obrazek

: 30 lip 2012, 08:45
autor: cosimo
Jestem... ;-)
Mam problem i pustkę w głowie... chodzi by stworzyć skrypt który automatycznie będzie frezował mi trójkąt ale by to zrobić poprawnie muszę mieć odcinek oznaczony na różowo na rysunku.
To może nie licz tego ;-), a zamiast tego daj łuk o promieniu narzędzia z końca jednego offsetu do początku drugiego.

Tak w ogóle „zainspirowany” dodałem do „wbudowanych” funkcji skryptów funkcje obliczające równoległe do odcinków a także obliczające punk przecięcia dwóch odcinków. Myślę, że to trochę pomorze. Na dole w obrazku przykład funkcji robiącej offset dla figury z prostych odcinków, której wierzchołki umieszczono w tablicy punktów.

Obrazek

: 30 lip 2012, 12:34
autor: mitek
http://www.e-manta.eu/forum/viewtopic.php?t=9330 już rozwiązany problem

może by się te tangensy przydały :)

musisz to dokładniej opisać bo już nie wiem co jest co pascal dla mnie tylko tyle by linie powstawały :)

: 30 lip 2012, 13:36
autor: cosimo
Z wrażenia omal z krzesła nie spadłem ;-) ale można i tak. Jednak w ogóle nie potrzebnie się nad tym głowiłeś. Skoro potrafiłeś policzyć wektory odsunięte o offset to trzeba był łukiem pojechać z końca jednego na początek drugiego podając tylko promień łuku tak jak jest w linii 52 tego przykładu na obrazku. Tam jest jeszcze dodane Abs(diam) na wypadek „ujemnego” offsetu.

Dodatkowe funkcje obowiązkowo opiszę w manualu ;-).

: 30 lip 2012, 15:22
autor: grg12
cosimo pisze:
Z wrażenia omal z krzesła nie spadłem ;-) ale można i tak. Jednak w ogóle nie potrzebnie się nad tym głowiłeś. Skoro potrafiłeś policzyć wektory odsunięte o offset to trzeba był łukiem pojechać z końca jednego na początek drugiego podając tylko promień łuku tak jak jest w linii 52 tego przykładu na obrazku. Tam jest jeszcze dodane Abs(diam) na wypadek „ujemnego” offsetu.

Dodatkowe funkcje obowiązkowo opiszę w manualu ;-).
Nie tylko ujemne offsety - ciekawe rzeczy robią się też jeśli figura ma zakręty "w lewo" a jeszcze zabawniej jest jeśli są w niej wcięcia - np. coś w rodzaju wybrania pod jaskółczy ogon.
W załączniku - kawałek kodu który liczy parametry łuku łączącego w moim programie (s1 i s2 - łączone segmenty, orginalConnectionPoint - miejsce gdzie przed dodaniem offsety segmenty się stykały)

double startTangential=s1->getTangentialAngle(1.0);
double endTangential=s2->getTangentialAngle(0.0);
double startAngle,endAngle;
if(offset<0)
{
startAngle=startTangential+(M_PI/2);
endAngle=endTangential+(M_PI/2);
if(startAngle<endAngle)
startAngle+=(2*M_PI);
}
else
{
startAngle=startTangential-(M_PI/2);
endAngle=endTangential-(M_PI/2);
if(startAngle>endAngle)
endAngle+=(2*M_PI);
}


PathXYSegment *connector = new PathXYSegment_Arc(orginalConnectionPoint,radius,startAngle,endAngle);


Pozdrawiam
Grzesiek

: 30 lip 2012, 17:13
autor: mitek
to jest z piko skrypt?

: 30 lip 2012, 18:54
autor: grg12
mitek pisze:to jest z piko skrypt?
Nie - ale zależności potrzebne do obliczenia łuku łączącego chyba da się z tego odczytać?

: 30 lip 2012, 21:00
autor: mitek
tak ale zacząłem się zastawiać czy aż tyle nie wiem :)