Il Bar dell'Ingegneria

Il dilemma del "bulge"

« Older   Newer »
 
  Share  
.
  1.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Da una discussione sulla scrittura del dxf di una polilinea nasce il dilemma del "bulge", una delle più inutilmente complicate questioni che Autodesk ha saputo tirare fuori dal suo primitivo cilindro delle primitive.

    Questo topic è praticamente inutile alla quasi totalità dei lettori. Non mi rimproverino quelli che, pur non avendo la minima cognizione del significato del termine "bulge", si avventurerannocomunque oltre lettura. Ne usciranno con i neuroni attorcigliati e saranno costretti a trovare la soluzione del loro "scatenamento" per sopravvivere al dilemma.

    Per dissipare ogni residuo dubbio sulla inutilità del topic accenno che si tratta di contorte disquisizioni sull'elemento che unisce due vertici consecutivi di una polilinea 2D.

    fB6mWT6
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Delineo meglio la questione.

    Per disegnare una polilinea attraverso la scrittura di un file dxf, occorre prima definire i parametri generali della polilinea tipo se trattasi di una polilinea chiusa o aperta, il layer dove posizionarla, stili di linea, colore ecc, ed a seguire dare la sequenza dei vertici che la compongono.

    Se voglio disegnare la seguente polilinea:

    JDLAe3s

    è sufficiente scrivere con la corretta sequenza di "group code" e dell'associato "valore" i quattro vertici 1 - 2 - 3 - 4 scrivendone naturalmente le coordinate.

    Un vertice generico della polilinea è un oggetto autocad denominato VERTEX.

    Fin qui non ci sarebbe nulla di misterioso o di dilemmatico. Come è naturale aspettarsi verrà disegnata la polilinea in cui tra il vertice 2 ed il vertice 3 c'è un segmento come lato e lo stesso vale per le restanti coppie di vertici consecutivi. Se poi diamo tra i parametri generali il flag che la polilinea deve essere chiusa, allora Autocad aggiunge di suo il segmento che dal vertice 4 porta al vertice 1.

    Edited by afazio - 29/8/2014, 19:34
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Il dilemma del "bulge" nasce dalla tabella di definizione dei parametri dell'oggetto "VERTEX".

    1MliMUX

    Vedete i soliti codici di gruppo 10, 20 e 30 che rappresentano le coordinate del vertice della polilinea, altri parametri che si riferiscono agli spessori iniziale e finale che deve avere il lato che dal vertice in esame va al successivo ed ecco spuntare finalmente il "bulge".

    Questo nel manuale del formato DXF è definito come:

    Bulge (optional; default is 0). The bulge is the tangent of one fourth the included angle for an arc segment, made negative if the arc goes clockwise from the start point to the endpoint. A bulge of 0 indicates a straight segment, and a bulge of 1 is a semicircle.

    Bulge (parametro opzionale; il suo default è 0). Il "bulge" (tradotto da google translate col termine "rigonfiamento" quindi anche "bombatura", "smusso") è la tangente di 1/4 dell'angolo sotteso da un eventuale arco che unisce il vertice col successivo. Un bulge pari a 0 indica che il lato che unisce il vertice col successivo è retto.

    Proprio questa ultima frase ci indicherebbe come dobbiamo intendere il significato di questo parametro. Praticamente rappresenta un "modificatore" della rettilinearità del lato tra il vertice in esame ed il successivo, potendo quindi considerare una "curvatura del lato" che tende ad essere nulla per lato che tende ad essere rettilineo.

    Edited by afazio - 29/8/2014, 19:36
     
    Top
    .
  4.     +1   +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Questo processo di "modificazione" prodotta dal bulge la possiamo immaginare come se il lato 2-3 fosse circolar-elastico e deformabile stirandolo verso l'alto o verso il basso prendendolo per il suo punto medio e spostandosi ortogonalmente ad esso.

    Ecco una immagine esplicativa di questo processo.

    7J6rloI

    D'altra parte se pensiamo che una polilinea in Autocad può anche essere del tipo misto cioè con l'insieme di segmenti rettilinei ed archi di cerchio e che comunque in dxf vengono scritti solo i vertici della polilinea (e non i lati) ecco spiegata la necessità da parte di Autodesk di ricorrere ad un qualche modificatore del lato.

    Provate a disegnare una polilinea mista e poi salvare il tutto in DXF R12 (ma anche R14). Leggendo il file prodotto (con notePad) a partire dalla sezione ENTITIES troverete definita una polilinea ed una sequenza di VERTEX. Il vertice di inizio del lato "bombato" presenterà il parametro "bulge" diverso da zero.
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Quindi, se vogliamo una polilinea costituita dai tre archi di cerchio come nella seguente immagine

    TYCBrv5

    dobbiamo sempre scrivere le coordinate dei quattro vertici (d'altra parte nessun altra entità è registrabile come componente di una polilinea: SOLO VERTEX) ma ad ogni vertice dare il parametro bulge (group code 42) che rappresenta la bombatura del lato che segue il vertice.

    Il quarto vertice non ha un lato seguente e quindi l'eventuale Bulge ad esso attribuito dovrebbe essere ignorato. Se la polilinea fosse chiusa allora il vertice quattro avrebbe come lato seguente il 4-1 ed un bulge attribuito al VERTEX 4 ne modifichrebbe la curvatura.
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Come riuscire a definire univocamente la bombatura da disegnare sul lato in esame?

    Basta stabilire il raggio dell'arco di cerchio per poterla disegnare?

    Dal punto di vista geometrico la conoscenza del raggio e la conoscenza della distanza tra i due vertici, quindi dellla corda dell'arco, sono sufficienti a determinare tutto dell'arco (saetta, angolo al centro) ma dal punto di vista CAD non sono sufficienti dato che lo stesso arco puo' essere tracciato sopra o sotto la corda. Ma cosa significa sopra o sotto?
    Sappiamo che questi termini perdono di significato quando la corda non è orizzontale e quando l'ordine dei vertici puo' essere qualsiasi.

    Ebbene la Autodesk ha scelto come parametro univoco che permette il disegno dell'arco proprio questo dilemmatico Bulge e cioè il rapporto tra la saetta e la metà della distanza tra i due vertici.
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Torniamo allora a guardare la prima figura che ho postato.

    kSQw2R7

    Definendo il bulge come il rapporto tra la saetta e meta della corda avremo:

    b = h/(d/2) = 2*h/d

    Ma queso rapporto altro non è che la tangente dell'angolo β

    b= tan (β)

    Ricordando poi il teorema dell'angolo al centro e dell'angolo al cerchio, β - angolo al cerchio della corda A-3 - è pari alla metà dell'angolo al centro α/2 della stessa corda , quindi

    β = 1/2* α/2 = α/4

    da cui b= tan(α/4)

    Assumendo poi la convenzione che per bulge negativo si deve disegnare la parte oraria dell'arco e col bulge positivo la parte antioraria abbiamo univocamente definito il tutto.

    In questo modo il bulge puo' assumere valori compresi nel range -1<= bulge<=1 questo semplicemente perchè la saetta non puo' essere maggiore del raggio dell'arco.

    P.S.: Qui devo correggere. In effetti il segmento che unisce i due vertici non è un diametro del cerchio ma una sua corda, Il range di variabilità del bulge è pertanto molto piu' ampio e varia tra -INF < bulge < INF
    Praticamente quando il bulge supera il valore unitario per cui si ha un semicerchio, l'arco diventa sempre pù grande e la corda in proporzione al raggio diventa poca cosa.

    Ma l'arco potrà anche avere sviluppo maggiore dello sviluppo del semicerchio e questo dipenderà solo da segno dello stesso che stabilirà da quale parte dovremo disegnare la bombatura. Anche qui devo correggere in base a quanto corretto sopra. Lo sviluppo dell'arco dipenderà solo dal rapporto 2h/d, quindi maggiore è h maggiore sarà lo sviluppo dell'arco.

    Farragginoso?

    Edited by afazio - 29/8/2014, 18:48
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Nel caso della figura precedente, dopo aver determinato il valore del parametro bulge, dato che l'arco disegnato viene percorso in senso orario dovremo darlo negativamente. Se invece volessimo disegnare l'altra parte di arco, cioe quello percorso in senso antiorario, dovremo darlo positivamente ottenendo quindi quanto segue:

    Qui si deve correggere. In effetti dando il valore del bulge che abbiamo calcolato col segno negativo otteniamo il disegno dello stesso arco di prima ma percorso in senso antiorario. Quindi una cosa del genere:

    lCgycDR

    Se invece volessimo ottenere la seguente bombatura
    hzIbJiF

    dobbiamo ricalcolare il bulge ma assumendo la corretta saetta che va dal segmento rettilineao al vertice dell'arco come nel disegno che segue:

    1BUfxX7

    In sostanza il bulge serve per costruire una polilinea mista in cui vi sono sia lati rettilinei che archi di cerchio.

    Una immediata applicazione di tutto ciò la si puo' trovare nel disegno dei profili che presentano smussi o raccordi.
    Questi non sono altro che archi di cerchio, ma per riuscire ad ottenere l'effetto smusso o raccordo occorre che i vertici interessati dall'inizio e fine smusso/raccordo siano tali da consentirne l'inserimento (altrimenti otteniamo una generica bombatura).

    Edited by afazio - 29/8/2014, 19:27
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Vediamo come applicare il bulge per la costruzione in dxf di un raccordo tra due segmenti.

    Siano 1-2-3 i tre vertici esterni dei due segmenti ognuno di lunghezza pari a 120 ed il raccordo si deve inserire, ovviamente, nel vertice 2.
    Sia γ=130° il minore degli angoli formati tra i due segmenti.

    gNZDPF6

    Qualunque sia il raggio del raccordo siamo già in grado di determinare il bulge. Infatti qualsiasi arco di cerchio con estremi tangenti ai due segmenti dati sottende l'angolo supplementare a γ

    quindi
    α=180-γ = 180-130= 50°

    bulge= tan(50/4) = 0.221695

    Nel caso dell'esempio, l'arco del raccordo è percorso in senso antiorario ed il segno del bulge resta positivo.

    Per poter inserire il raccordo il solo bulge non basta; occorre sdoppiare il vertice 2 in due vertici come nella figura che segue.
    nyTSgja

    i due vertici che prendono il posto dell'iniziale vertice 2, devono però essere tali che la loro distanza dall'originario vertice 2 sia uguale e dipendente proprio dal raggio del raccordo.

    La distanza a dei nuovi vertici 2 e 3 dal vecchio vertice 2 è facilmente determinabile:

    a= R*tan(α/2)

    Se fissiamo per esempio un raggio di raccordo pari a 20 otteniamo

    a= 20*tan(25°) = 9.326
    e le coordinate x,y del nuovo vertice 2 (supponendo che il vertice 1 sia l'origine del sistema) valgono

    x2 = 120 - 9.236
    y2=0

    mentre le coordinate del nuovo vertice 3 valgono:
    x3= 120 + 20*cos(50°) = 132.856
    y3= 20*sen(50°) = 15.321

    Il nuovo vertice 4 avrà le coordinate che aveva il vecchio vertice 3

    x4 = 120+120*cos(50°) = 197.135
    y4= 120*sen(50°) = 91.925.

    Nella lista dei VERTEX, da scrivere nel file dxf, il bulge deve essere attribuito al nuovo vertice 2.

    E' tutto.
     
    Top
    .
  10.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,169
    Reputation
    +294

    Status
    Offline
    Naturalmente le formule possono essere riscritte secondo i nostri scopi.

    Se per esempio siamo in fase di lettura del dxf ci potrebbe interessare conoscere quanto vale il raggio del raccordo, ma noi leggiamo solo il bulge oltre alle coordinate dei vertici.

    Avendo il bulge possiamo risalire subito all'angolo sotteso dall'arco invertendo la formula b = tan(α/4) oppure risalire all'angolo β invertendo la formula b=tan(β) oppure risalire al valore della saetta h invertendo la formula b=2*h/d.

    α = 4*Atn(b)

    Mediante le coordinate dei vertici 2 e 3 calcoliamo la distanza d cioè la corda del raccordo
    d= Radq[(x3-x2)² +(y3-y2)²]

    e quindi siamo in grado di calcolare R

    R= 0.5*d/sen(α/2) = 0.5*d/ sen [2*Atn(b)]

    Ma le possibilità sono diverse e compete a noi capire quale è la miglior via da seguire in base alle nostre necessità.
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    792
    Reputation
    +15

    Status
    Offline
    ...e però a me sta roba non sembra tanto inutile come anticiparvi nel primo post.

    È interessante anche come curiosità.
     
    Top
    .
10 replies since 29/8/2014, 09:15   801 views
  Share  
.