openscad - 3d z dvou ploch
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Neděle Duben 19 19:21:30 CEST 2020
Jen takovej drzak roletky do kufru auta, na jedny strane mi chybi tak to
zkousim udelat podobne jak je ne druhe strane, jeste tam bude svetlo ;-)
Dne 19.04.2020 v 19:08 Pavel Hudecek napsal(a):
>
> Moc pěkný:-)
>
> Normálně mám z kódu představu, jak bude objekt asi vypadat, ale tady
> ani ťuk:-) Musel jsem si to zkopírovat a udělat preview.
>
> Co to vlastně bude?
>
> PH
>
> *Od: *Jaroslav Buchta <mailto:jaroslav.buchta na hascomp.cz>
>
> Jj, hned jak jsem no poslal tak jsem to nasel ;-)
>
> Jako reseni to zda se je, renderuje to i prekvapive rychle. Zatim
>
> zkusebni program vypada takhle:
>
> function circlepts(xc, yc, a1, a2, r, segments, z) =
>
> [for (i=[0:segments-1]) [
>
> xc + r*sin(a1 + (a2-a1)/(segments-1)*i),
>
> yc + r*cos(a1 + (a2-a1)/(segments-1)*i),
>
> z]
>
> ];
>
> function basepts(z, ext) = concat(
>
> [[-ext,-ext,z]],
>
> circlepts(28-ext, 115+ext, -90, -30, 28, 30,z),
>
> circlepts(28+ext, 115+ext, 30, 60, 28, 30,z),
>
> circlepts(63.5+ext, 133+ext, 240, 180, 12, 20,z),
>
> circlepts(115, 116+ext, 0, 90, 5, 10,z),
>
> circlepts(115, 105, 90, 270, 5, 20,z),
>
> circlepts(102, 106, 90, 0, 8, 20,z),
>
> circlepts(91, 104, 0, -180, 10, 20,z),
>
> circlepts(115, 100, 250, 180, 20, 30,z),
>
> [[132+ext,80,z]],
>
> circlepts(122+ext, 75-ext, 90, 180, 10, 20,z),
>
> circlepts(90+ext, 30-ext, 0, -90, 35, 30,z),
>
> [[55+ext,0-ext,z]]
>
> );
>
> module basepoly()
>
> {
>
> ptsb = basepts(0, 0);
>
> ptst = basepts(20, 6);
>
> faceb = [[for (i=[0:len(ptsb)-1])i]];
>
> facet = [[for (i=[0:len(ptst)-1])2*len(ptsb)-i-1]];
>
> faces = [for (i=[0:len(ptsb)-1])[i + len(ptsb), i != len(ptsb)-1 ?
>
> i + len(ptsb)+1 : len(ptsb), i != len(ptsb)-1 ? i+1 : 0, i]];
>
> echo ( concat(facet, faces, faceb));
>
> polyhedron(concat(ptsb, ptst), concat(facet, faces, faceb), 10);
>
> }
>
> basepoly();
>
> Dne 19.04.2020 v 18:07 Milan B. napsal(a):
>
> > On 19.04.2020 16:52, Jaroslav Buchta wrote:
>
> >> ale marne patram, jak zjistit velikost vektoru (jasne da se iterovat
>
> >> pres vsechny prvky ale potrebuju index - no ono by to nakonec asi
>
> >> takhle taky slo spocitat ale rovnak na ohejbak...)
>
> >
>
> > Toto nevyhovuje?
>
> >
> https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Mathematical_Functions#len
>
> >
>
> > a=[[1,2,4],[3,4,5],[5,6,7]];
>
> >
>
> > n=len(a);
>
> >
>
> > for (i=[0:n-1]) {
>
> > echo(sqrt(a[i].x*a[i].x+a[i].y*a[i].y+a[i].z*a[i].z));
>
> > }
>
> >
>
> >> Dne 19.04.2020 v 14:07 Pavel Hudecek napsal(a):
>
> >>>
>
> >>> Napsal bych si program ve VB, kterej ten polyhedron vygeneruje.
>
> >>>
>
> >>> PH
>
> >>>
>
> >>> *Od: *Jaroslav Buchta <mailto:jaroslav.buchta na hascomp.cz>
>
> >>> *Odesláno:*neděle 19. dubna 2020 14:01
>
> >>> *Komu: *hw-list na list.hw.cz <mailto:hw-list na list.hw.cz>
>
> >>> *Předmět: *Re: openscad - 3d z dvou ploch
>
> >>>
>
> >>> No jedna se o stovky bodu, je to nasledujici tvar - to je obrys
>
> >>> spodni plochy, horni plocha by byla definovana podobne jen obrys
>
> >>> vetsi ruzne na ruznych mistech, ale jak z toho udelat polyhedron mne
>
> >>> nenapada...
>
> >>>
>
> >>>
>
> >>> function circlepts(xc, yc, a1, a2, r, segments) =
>
> >>> [for (i=[0:segments-1]) [
>
> >>> xc + r*sin(a1 + (a2-a1)/(segments-1)*i),
>
> >>> yc + r*cos(a1 + (a2-a1)/(segments-1)*i)]
>
> >>> ];
>
> >>>
>
> >>>
>
> >>>
>
> >>> module basepoly()
>
> >>> {
>
> >>> //translate([-132/2, -133/2])
>
> >>> polygon(points=concat(
>
> >>> [[0,0], [0,115]],
>
> >>> circlepts(28, 115, -90, -30, 28, 30),
>
> >>> circlepts(28, 115, 30, 60, 28, 30),
>
> >>> circlepts(63.5, 133, 240, 180, 12, 30),
>
> >>> [[115,121]],
>
> >>> circlepts(115, 116, 0, 90, 5, 10),
>
> >>> [[120,105]],
>
> >>> circlepts(115, 105, 90, 270, 5, 20),
>
> >>> circlepts(102, 105, 90, 0, 8, 20),
>
> >>> [[81,113]],
>
> >>> circlepts(91, 103, 0, -180, 10, 20),
>
> >>> circlepts(115, 100, 250, 180, 20, 30),
>
> >>> [[132,80], [132, 75]],
>
> >>> circlepts(122, 75, 90, 180, 10, 20),
>
> >>> [[90,65]],
>
> >>> circlepts(90, 30, 0, -90, 35, 30),
>
> >>> [[55,0]],
>
> >>>
>
> >>> [[0,0]]
>
> >>> )
>
> >>> );
>
> >>> }
>
> >>>
>
> >>> linear_extrude(height=20, convexity=10, scale=1.0, center = false)
>
> >>> basepoly();
>
> >>>
>
> >>> Dne 19.04.2020 v 13:52 Pavel Hudecek napsal(a):
>
> >>>
>
> >>> Jestli je to nadefinované jako skupiny bodů, šlo by z toho udělat
>
> >>> polyhedron.
>
> >>>
>
> >>> PH
>
> >>>
>
> >>> *Od: *Jaroslav Buchta <mailto:jaroslav.buchta na hascomp.cz>
>
> >>>
>
> >>> Dejme tomu, ze mam 2 skicy plochy slozitejsiho tvaru, jde provest
>
> >>> nejaka
>
> >>>
>
> >>> transformace, ktera z toho udela 3D objekt ktery bude mit zakladnu
>
> >>>
>
> >>> odpovidajici jedne a horni stranu druhe plose? Aby proste vznikly
>
> >>> sikme
>
> >>>
>
> >>> steny (scale u linear_extrude nedava dobry vysledek, tvar neni
>
> >>> rozumne
>
> >>>
>
> >>> centrovatelny)
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20200419/b31dd0c2/attachment-0001.html>
Další informace o konferenci Hw-list