Kirjoittaja Aihe: [ ratkaistu ] Openscad-ongelma, erotus näyttää toimivan vain toiseen suuntaan  (Luettu 347 kertaa)

teele

  • Käyttäjä
  • Viestejä: 928
    • Profiili

Tein kaksi yksinkeratista tasomuotoa, mutta en millään saa erotusta toimimaan suunttan, jossa venytetyt ympyrät pitäisi vähentää monikulmiosta.

Alla olevassa koodissa erotus koe2 - koe1 ei näytä toimivan, enkä keksi, missä menee väärin. Kommentoitu erotus näyttäisi jättävän erotuksen huomiotta.

Koodia: [Valitse]

module koe1(r1, r2, t1, q1)
{
 translate([r1-1*r2, q1*r2+t1, 0])
 scale([1,q1,0])
 circle(r2);
}

module koe2(r1, r2, t1, q1)
{
  polygon([ [0, 0], [r1, 0], [r1, q1*2*r2], [0, q1*2*r2] ]);
}
 
/* 
difference()           // tämä ei näytä toimivan, vain monikulmio näkyy, ympyrää ei vähennetty
{
  koe2(40, 6, 2, 2); 
  koe1(40, 6, 2, 2);
}
*/

difference()        // tämä toimii
{
  koe1(40, 6, 2, 2); 
  koe2(40, 6, 2, 2);
}

« Viimeksi muokattu: tänään kello 11:15 kirjoittanut teele »

SuperOscar

  • Käyttäjä
  • Viestejä: 4455
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Nelikulmio on kolmiulotteinen, kun taas soikio kaksiulotteinen ja sijaitsee XY-tasolla. Taitaa käydä niin, että soikio kyllä leikkaa nelikulmion, mutta koska nelikulmio jatkuu Z-suunnassa kumpaankin suuntaan, 0-ulotteinen ”leikkaus” jää sen sisälle. Kokeile antaa soikiolle paksuutta (Z-ulottuvuutta) vaikka reilustikin yli nelikulmion.
pöytäkone 1, kannettavat 1–3, NUC: Debian GNU/Linux 13;  pöytäkone 2: OpenBSD 8.0; RPi: Alpine Linux 3.24

teele

  • Käyttäjä
  • Viestejä: 928
    • Profiili

Pienen muutoksen jälkeen näyttäisi toimivan

Koodia: [Valitse]

module koe1(r1, r2, t1, q1)
{
 translate([r1-1*r2, q1*r2+t1, 0])
 scale([1,3])
 circle(r2);
}

module koe2(r1, r2, t1, q1)
{
  polygon([ [0, 0], [r1, 0], [r1, q1*2*r2], [0, q1*2*r2] ]);
}

/*
difference()
{
  koe2(40, 6, 2, 2); 
  koe1(40, 6, 2, 2);
}
*/

difference()
{
  koe1(40, 6, 2, 2); 
  koe2(40, 6, 2, 2);
}

Niin kuin vastauksessakin vihjaistiin, kyse oli 2- ja 3- ulotteisten muotojen yhdistelemiseen liittyvästä ongelmasta. Luultavasti scale-käsky teki kolmiulotteista jälkeä, kun parametrimäärä oli kolme. Kaksi parametria scalessa näyttäisi johtavan kumpaankiin suuntaan toimivan vähennyksen syntymiseen.

Kiitoksia neuvosta  :)