Creare una dima di controllo su un oggetto

Forum per le domande e le discussioni in Italiano
Forum rules
regole del forum e le informazioni utili

Importante: PRIMA di chiedere aiuto leggete qui!
giuseppe
Posts: 21
Joined: Fri Mar 20, 2020 1:48 pm

Creare una dima di controllo su un oggetto

Post by giuseppe »

Buonasera,
sono nuovissimo del Forum, potreste aiutarmi a capire come poter costruire una dima/calibro di controllo su un'oggetto che importo.
Allego un formato STEP come esempio.

Saluti
Attachments
MATTONCINO LEGO ROSSO.step
(91.5 KiB) Downloaded 51 times
User avatar
onekk
Veteran
Posts: 6222
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: Creare una dima di controllo su un oggetto

Post by onekk »

In che senso, delle tacche per verificare delle misure?

se si

Code: Select all

import FreeCAD
from FreeCAD import Base, Vector
import Part
from math import pi, sin, cos
import Draft

DOC = FreeCAD.activeDocument()

def ref_grid_3d(doc, mp_w=80, mp_l=50, mp_th=50, g_si=(5, 5, 5), trsp = 95):
    """
    Draw a 3D reference grid

    """

    obj = []

    for pos_z in range(0, mp_th+1, g_si[2]):
        pname = "Z_{0}".format(pos_z)

        if pos_z % 2 == 0:
            r_d = mp_l + 5
            # print (x)
        else:
            r_d = mp_l

        if pos_z == mp_th * 0.5:
            r_d = mp_l + 10

        h_z = pos_z - mp_th * 0.5

        obj1 = doc.addObject("Part::Feature", pname)
        obj1.Shape = Part.makePlane(mp_w, r_d, Vector(mp_w * -0.5,  r_d * -0.5))
        obj1.Placement = FreeCAD.Placement(Vector(0, 0, h_z),
                          FreeCAD.Rotation(0, 0, 0))
        obj1.ViewObject.ShapeColor = (0.33, 0.67, 1.00)
        obj1.ViewObject.Transparency = trsp

        obj.append(obj1)

    for pos_x in range(0, mp_w+1, g_si[0]):

        if pos_x % 2 == 0:
            r_d = mp_l + 5
            # print (x)
        else:
            r_d = mp_l

        if pos_x == mp_w * 0.5:
            r_d = mp_l + 10

        h_w = pos_x - mp_w * 0.5

        pname = "X_{0}".format((mp_w * -0.5)  + pos_x)
        obj1 = doc.addObject("Part::Feature", pname)
        obj1.Shape = Part.makePlane(mp_th, r_d, Vector(0, 0), Vector(1, 0, 0))
        obj1.Placement = FreeCAD.Placement(Vector(h_w, r_d * 0.5, mp_th * -0.5),
                          FreeCAD.Rotation(0, 0, 0))
        obj1.ViewObject.ShapeColor = (0.33, 0.67, 1.00)
        obj1.ViewObject.Transparency = trsp

        obj.append(obj1)


    for pos_y in range(0, mp_l+1, g_si[1]):

        if pos_y % 2 == 0:
            r_d = mp_w + 5
            # print (y)
        else:
            r_d = mp_w

        if pos_y == mp_l * 0.5:
            r_d = mp_w + 10

        h_l = pos_y - mp_l * 0.5

        #print("Pos Y = ",pos_y)
        pname = "Y_{0}".format(pos_y)
        obj1 = doc.addObject("Part::Feature", pname)
        #obj1.Shape = Part.makePlane(mp_l, r_d, Vector(-h_l, r_d * 0.5), Vector(1, 0, 0))
        obj1.Shape = Part.makePlane(mp_l, r_d, Vector(0, 0, 0), Vector(0, 1, 0))
        obj1.Placement = Base.Placement(Vector(-r_d * 0.5, h_l, mp_l * -0.5),
                                           FreeCAD.Rotation(0, 0, 0))
        obj1.ViewObject.ShapeColor = (0.33, 0.67, 1.00)
        obj1.ViewObject.Transparency = trsp

        obj.append(obj1)

    #"""

    zp_w = mp_w + 30
    zp_l = mp_l + 30

    zero = Part.makePlane(zp_w, zp_l, Vector(zp_w * -0.5, zp_l * -0.5, 0), Vector(0, 0, 1))

    pl2 = doc.addObject("Part::Feature", "zero_plane")
    pl2.Shape = zero
    pl2.ViewObject.ShapeColor = (1.00, 0.41, 0.70)
    pl2.ViewObject.Transparency = 60

    pl1 = doc.addObject("Part::Compound", "ref_plane")
    pl1.Links = obj
    pl1.ViewObject.ShapeColor = (0.33, 0.67, 1.00)
    pl1.ViewObject.Transparency = trsp
    pl1.ViewObject.Visibility = False

    doc.recompute()

ref_grid_3d(DOC, 80, 50, 50, (5, 5, 5), 95):
DOC.recompute()

I parametri sono:

mp_w = 80 regola la distanza in larghezza (asse X se non ricordo male) -40 +40
mp_l = 50 regola la distanza in lunghezza (asse Y se non ricordo male) -25 25
mp_th = 50 regola la distanza in altezza asse Z
g_si=(5, 5, 5) gli step della griglia per ogni asse in mm
trsp = 95 la trasparenza della griglia

Salva il codice com efile con estensione py ad esempio griglia.py

Caricalo e lanciato dovrebbe visualizzare nel documento attivo (da errore se non c'è un documento aperto) la griglia centrata sull'origine.

Ovviamente giocando con i valori o modificando il codice ottieni quello che desideri

in pratica ho creato dei piani (che non hanno spessore) che intersecano il modello se è centrato sull'origine in punti calcolati.

Spero di aver capito la domanda e di essere stato charo nella spiegazione.

Saluti

Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
MaurinoWeb
Posts: 221
Joined: Thu Jun 22, 2017 1:15 pm

Re: Creare una dima di controllo su un oggetto

Post by MaurinoWeb »

giuseppe wrote: Fri Mar 20, 2020 2:30 pm Buonasera,
sono nuovissimo del Forum, potreste aiutarmi a capire come poter costruire una dima/calibro di controllo su un'oggetto che importo.
Allego un formato STEP come esempio.

Saluti
Cosa vuoi fare esattamente?
giuseppe
Posts: 21
Joined: Fri Mar 20, 2020 1:48 pm

Re: Creare una dima di controllo su un oggetto

Post by giuseppe »

Buonasera, grazie per la risposta, ma non è quello che avevo di bisogno.
Provo a spiegarmi meglio, lavoro in una azienda che fa tubazioni... non posso usare i programmi professionali usati in Azienda... Quindi sto provando con FreeCAD a importare uno Step dei nostri tubi e realizzare una Dima che ad esempio controlla la su dimensione ( curva, tratto ecc... ).Il problema è che quando entrò nello Sketch è uso la funzione usa geometria esterna non sente i lati del tubo, al max i tratti dritti diventano verdi e non Magenta.Purtroppo non posso mandarvi lo Step reale, per questioni di privacy.
Invece con il mattoncino Lego in qualche maniera sono riuscito a farlo. Spero di essere stato chiaro. Grazie mille ancora per la vostra collaborazione.
Saluti
User avatar
onekk
Veteran
Posts: 6222
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: Creare una dima di controllo su un oggetto

Post by onekk »

Se non ho capito male usi il formato STEP.

Presumo che Il formato sia STEP se non ricordo male sia una modellazione a triangoli, per cui sketcher, che dovrebbe essere più vicino al disegno, non è che c'azzecchi molto (come direbbe un noto politico).

Se importi il file in formato STEP potrebbe darsi che venga importato come Mesh e non come solido, va verificato il risultato dell'importazione, se è una mesh, potresti doverla convertire in solido prima di poterci operare sopra.

Alternativamente se vai in Modifica -> Preferenze importa/Esporta dovresti trovare delle schede per ogni formato, magari qualche impostazione per STEP o IGES potrebbe influenzare il modo con cui un solido è importato.

Saluti

Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
giuseppe
Posts: 21
Joined: Fri Mar 20, 2020 1:48 pm

Re: Creare una dima di controllo su un oggetto

Post by giuseppe »

Buongiorno, grazie per la info...
Dato che non sono un esperto c'è qualche tutorial che spiega questo passaggio da te suggerito, cioè di convertire da Mesh a solido?
Oppure potresti indicarmi i passaggi

Grazie ancora per la tua pazienza
User avatar
onekk
Veteran
Posts: 6222
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: Creare una dima di controllo su un oggetto

Post by onekk »

Anche se sono aggiornatissmi questi link dovrebbe essere un buon inizio.

https://wiki.freecadweb.org/FreeCAD_Howto_Import_Export


https://wiki.freecadweb.org/FreeCAD_and_Mesh_Import/it

Saluti

Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
giuseppe
Posts: 21
Joined: Fri Mar 20, 2020 1:48 pm

Re: Creare una dima di controllo su un oggetto

Post by giuseppe »

Grazie gentilissimo..
ma purtroppo non riesco a usarlo ho visto i Tutorial su youtube ma non riesco ad usarlo.
Probabilmente da regolamento non si può, ma sarebbe bello se ci potessimo sentire tramite Tel. o via Skype per spiegare meglio quello che vorrei fare, oppure se c'è un punto di riferimento a Torino per fare un corso o chiedere nei dettagli.
mi spiace di essere cosi poco pratico ma vorrei imparare ad usare questo programma, dato che ho già realizzato qualche lavoretto.

Saluti
MaurinoWeb
Posts: 221
Joined: Thu Jun 22, 2017 1:15 pm

Re: Creare una dima di controllo su un oggetto

Post by MaurinoWeb »

giuseppe wrote: Tue Mar 24, 2020 10:17 am Dato che non sono un esperto c'è qualche tutorial che spiega questo passaggio da te suggerito, cioè di convertire da Mesh a solido?
Non credo che step sia di tipo mesh, comunque controlla il file step problematico che sia un solido valido
https://wiki.freecadweb.org/Part_CheckGeometry/it

Se da errore prova a convertirlo in solido con
https://wiki.freecadweb.org/Part_ConvertToSolid/it

E affinarlo con
https://wiki.freecadweb.org/Part_RefineShape/it

E ricontrolli la geometria con lo strumento indicato all'inizio

Ricorda che "geometria esterna" di sketcher funziona solo se condivide le stesse origini(stesso sistema di cordinate), se non le condivide(per qualche motivo) usa shapebinder(legaforma) sulla faccia interessata, portandola nello stesso sistema di coordinate, cosi userai "geometria esterna" sull'oggetto risultate di legaforma
https://wiki.freecadweb.org/PartDesign_ShapeBinder/it

Non potendo vedere il file è difficile indovinare, ma ci proviamo, spero risolvi.

Un saluto
User avatar
onekk
Veteran
Posts: 6222
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: Creare una dima di controllo su un oggetto

Post by onekk »

Tnato per i posteri, non per creare polemica, ma magari a qualcuno torna utile saperlo

STEP in teoria dovrebbe contenere la descrizione del solido, tutto dipende da come viene formato,

Una descrizione veloce da wikipedia:

the format is not well-defined, for example the same triangle can be encoded in a STEP file literally hundreds of different ways (with FACET_BREP, ADVANCED_FACE, POLY_LOOP, EDGE_LOOP, as a MANIFOLD_SOLID_REPRESENTATION or as a SHELL_BASED_REPRESENTATION, etc.).

STEP è uno standard https://en.wikipedia.org/wiki/ISO_10303-21 creato anni fa per scambiare dati tra diverse applicazioni.

Potrebbe risultare utile, se si usa windows questo programma:

https://www.nist.gov/services-resources ... and-viewer

che analizza e visualizza il file, penso che lafonte sia abbastanza autorevole.

Al solito dipende da come una applicazione intende "lo standard" e per che scopo quel formato è usato, ad esempio se il fomrmato è più compatto e meglio tramsissibile ad esempio via mail tra una società e l'altra del formato proprietario del programma che a volte non passa dai filtri antivirus dei mail server.

Oppure come in genere in certi ambiti è usato per passare i dati di progettazione a diversi applicativi, ad esempio un CAD 2D per creare i disegni tecnici da passare alla carpenteria, oppure ad un programma di analisi FEM o altro, in genere si usano formati standard proprio per questo tipo di interscambio.

Ora senza avere a diposizione il file, una schermata del programma, si può purtroppo andare solo a tentativi, o meglio "a tastoni".

Saluti

Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
Post Reply