TIKZ sottrarre o tagliare una figura da un’altra

  • Creatore
    Topic
  • #122005
    Up
    0
    Down
    ::


    Buongiorno a tutti

    devo disegnare alcuni “pezzi” che sono uno sovrapposto all’altro. Quindi ho dei problemi di trasparenze-sovrapposizioni

    Per esempio: c’è modo di creare un’unica figura fatta da un rettangolo con un foro al centro? Ma che il foro sia “trasparente” in modo da far vedere altre cose disegnate sotto

    Esempio:

    `
    \fill [black!20, draw=black] (4.4,0.3) — (4.8,0.3) — (4.4,2.7) — (4.4,0.3); % PEZZO GRIGIO
    \fill [black!80, draw=black] (2.25,0.6) — (2.25,1.7) — (2.55,1.7) — (2.55,1.1) — (5.1,1.1) — (5.1,0.6) — (2.25,0.6); % PEZZO NERO
    \draw [fill=white](4.6,0.85) ellipse (0.3 and 0.17); % PEZZO NERO, perno (4.6,0.85)
    `

    il primo comando disegna un rettangolo
    il secondo comando disegna un poligono (“pezzo nero”)
    con il terzo comando volevo fare un foro sul pezzo nero, ma faccio il foro anche sul grigio,

    […il secondo ed il terzo comando assieme funzionano, ma il “foro” è un “riempimento bianco”, quindi copre di bianco ciò che ci sta sotto (pezzo grigio)…]

    quindi vorrei fare la figura scura con un foro

    c’è modo?

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #122006
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Benvenuto nel forum.

        Ti confesso che non ho capito il tuo problema.

        Ti suggerirei di mandare:
        a) un disegno fatto a mano e fotografato dove sia possibilmente più chiaro quello che vuoi ottenre.
        b) di mandare fra i tag del codice, non solo quelle tre righe, ma un Esempio Minimo Compilabile (EMC) come descritto qui in calce) che davvero contenga il preambolo minio che tu usi per replicare il tuo problema enel corpo del documentino, appaia completamente l’ambinete tikzpicture, con tutte le impostazioni e opzioni necessarie per replicare il tuo problema.

        Capisco che la lettura della documentazione di TikZ è faticosa nonostante l’indice generale particolazzitatiissimo e l’abbondante indice analitico. Forse è per questo motivo io uso TikZ pochissimo. Non avendo capito quello che vuoi fare non posso consigliarti di usare il pacchetto curve2e, più sempiice e più ruspante, ma disegna benissimo rettangoli e poligoni, anche colorati.

        Quindi speriamo che qualche utente esperto di TikZ ti possa dare consigli migliori dei miei.

      • #122007
        Up
        0
        Down
        ::


        intanto grazie

        non sono nuove nel forum, avevo un altro account ma non sono riuscito a ripristinarlo dopo una lunga pausa dal latex

        ecco il file (ci sono ancora molte cose da sistemare…)

        `
        \documentclass[a4paper,11pt]{scrletter}

        \usepackage[italian]{babel}
        \usepackage[latin1]{inputenc}
        \usepackage{verbatim}
        \usepackage{amsmath}
        \usepackage{hyperref}
        \usepackage{graphicx}
        \usepackage{tikz}
        \usepackage[americanresistors,americaninductors]{circuitikz}
        \usepackage{multicol}
        \setlength{\columnsep}{5mm}
        \setlength\columnseprule{.4pt}
        \usepackage[top=10mm, left=7mm, right=7mm, bottom=10mm]{geometry}
        \setlength{\parindent}{0pt} %indentazione rientri

        \usepackage{xcolor}
        \newcommand\kw[1]{\textcolor{blue}{\itshape #1}}

        \definecolor{burntorange}{cmyk}{0 ,0.51 ,1 ,0}

        \usepackage{enumitem}
        \setlist[enumerate]{noitemsep}
        \setlist[itemize]{noitemsep}
        \setlist[description]{noitemsep} % righe per non avere interlinee grandi nei pacchetti enumerate, itemize e description

        \begin{document}

        \begin{center}
        \textbf{\LARGE INTERRUTTORE MAGNETOTERMICO}\\[0.3em]
        \textbf{\Large IIS LONIGO \hspace{0.5cm} – \hspace{0.5cm} \today}
        \end{center}

        \begin{multicols}{2}

        % L'interruttore magnetotermico è un dispositivo di protezione degli impianti elettrici. Oltre a poter eseguire manualmente le operazioni di apertura e chiusura di uno o più poli, è in grado di aprirsi in modo automatico in caso di sovraccarico.\\
        Il dispositivo contiene due relè (a volte regolabili) che proteggono da due differenti tipologie di sovraccarico:\\

        \resizebox{\columnwidth}{!}{%
        \begin{tikzpicture} [line width=0.8pt]
        % \draw [help lines] (0,0) grid (6,8);
        %INIZIA PEZZO GRIGIO
        \fill [black!20, draw=black] (4.4,0.3) — (4.8,0.3) — (4.8,2.7) — (5.8,2.7) — (5.8,4.8) — (5.4,4.4) — (5.4,3.1) — (2.7,3.1) — (2.7,2.7) — (4.4,2.7) — (4.4,0.3);
        %FINISCE GRIGIO, INIZIA NERO
        \fill [black!80, draw=black] (2.25,0.6) — (2.25,1.7) — (2.55,1.7) — (2.55,1.1) — (5.1,1.1) — (5.1,0.6) — (2.25,0.6); % PEZZO NERO
        \draw [fill=white](4.6,0.85) ellipse (0.3 and 0.17); % PEZZO NERO, perno (4.6,0.85)
        % \draw (4.6,0.85) circle (0.1);
        %FINISCE NERO INIZIA GRIGIO IN ALTO
        \fill [black!20, draw=black] (5.3,4) — (4.9,4.4) — (4.9,8) — (5.3,8) — cycle;

        \draw (4.6,1.5) — (5.6,1);
        \draw (4.6,0.5) — (5.6,0.8);
        \node [align=left, anchor=180, text width=4cm] at (5.8,1) {questo pezzo sta sotto e si deve vedere nel foro del pezzo nero};

        \end{tikzpicture}%
        }

        \end{multicols}

        \end{document}

        `

      • #122008
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Il codice seguente sembra fare quello che desideravi;`\documentclass[a4paper,11pt]{scrletter}

          \usepackage[italian]{babel}
          \usepackage[utf8]{inputenc}% Non occorre, perché utf8 default
          \usepackage{verbatim}
          \usepackage{amsmath}
          \usepackage{graphicx}
          \usepackage{tikz}
          \usepackage[americanresistors,americaninductors]{circuitikz}
          \usepackage{multicol}
          \setlength{\columnsep}{5mm}
          \setlength\columnseprule{.4pt}
          \usepackage[top=10mm, left=7mm, right=7mm, bottom=10mm]{geometry}
          \setlength{\parindent}{0pt} % rientri annullati

          \usepackage{xcolor}
          \newcommand\kw[1]{\textcolor{blue}{\itshape #1}}

          \definecolor{burntorange}{cmyk}{0 ,0.51 ,1 ,0}

          \usepackage{enumitem}
          \setlist[enumerate]{noitemsep}
          \setlist[itemize]{noitemsep}
          \setlist[description]{noitemsep} % righe per non avere spazi nei pacchetti enumerate, itemize e description fra un \item e l'altro

          \usepackage{hyperref}% spostato alla fine del preambolo

          \begin{document}

          \begin{center}
          \textbf{\LARGE INTERRUTTORE MAGNETOTERMICO}\\[0.3em]
          \textbf{\Large IIS LONIGO \hspace{0.5cm} – \hspace{0.5cm} \today}
          \end{center}

          \begin{multicols}{2}

          % L'interruttore magnetotermico è un dispositivo di protezione degli impianti elettrici. Oltre a poter eseguire manualmente le operazioni di apertura e chiusura di uno o più poli, è in grado di aprirsi in modo automatico in caso di sovraccarico.\\
          Il dispositivo contiene due relè (a volte regolabili) che proteggono da due differenti tipologie di sovraccarico:\\

          \resizebox{\columnwidth}{!}{%
          \begin{tikzpicture} [line width=0.8pt]
          % \draw [help lines] (0,0) grid (6,8);
          %INIZIA PEZZO GRIGIO
          \fill [black!20, draw=black] (4.4,0.3) — (4.8,0.3) — (4.8,2.7) — (5.8,2.7) — (5.8,4.8) — (5.4,4.4) — (5.4,3.1) — (2.7,3.1) — (2.7,2.7) — (4.4,2.7) — (4.4,0.3);
          % FINISCE GRIGIO, INIZIA NERO
          \fill [even odd rule, black!80, draw=black] (2.25,0.6) — (2.25,1.7) — (2.55,1.7) — (2.55,1.1) — (5.1,1.1) — (5.1,0.6) — (2.25,0.6) % PEZZO NERO
          (4.6,0.85) ellipse (0.3 and 0.17);
          % PEZZO NERO, perno (4.6,0.85)
          % \draw (4.6,0.85) circle (0.1);
          % FINISCE NERO INIZIA GRIGIO IN ALTO
          \fill [black!20, draw=black] (5.3,4) — (4.9,4.4) — (4.9,8) — (5.3,8) — cycle;
          % Commenti
          \draw (4.6,1.5) — (5.6,1);
          \draw (4.6,0.5) — (5.6,0.8);
          \node [align=left, anchor=180, text width=4cm] at (5.8,1) {questo pezzo sta sotto e si deve vedere nel foro del pezzo nero};

          \end{tikzpicture}%
          }

          \end{multicols}

          \end{document}`Il procedimenti è descritto nella pagina 179 della documentazione di TikZ

          Nel preambolo (che non è minimo come richiede il concetto di esempio MINIMO compilabile) mi sono permesso di fare qualche modifica.
          a) La codifica latin 1 è obsoleta; da 3 o 4 anni la codifica di default è utf8 per tutti i file sorgente da dare in pasto ai compilatori del sistema TeX
          b) il pacchetto hyperref va caricato per ultimo, tranne in alcuni casi specifici, come glossaries, che ridefinisce alcuni comandi di hyperref; è necessario consultare sempre la documentazione dei pacchetti che si usano nel propri documenti, perché l’ordine di caricamento può essere decisivo.
          Naturalmente la documentazione di TikZ va letta selettivamente, perché è lunghissima e quindi bisogna leggerla con attenzione, almeno le sezioni che descrivono i comandi che si intendono usare; tu usi fill, quindi devi sapere tutto su fill.

          Ti ringrazio per avere posto questo problema sul forum; come ti ho detto io non uso TikZ quasi mai perché la sua potenza non mi serve per i tipi di disegni che faccio di solito. In particolare i miei disegni di circuiti elettronici; il pacchetto circuitikz non mi piace nè con lo stile americano che usi tu, ne con gli altri stili; mi sono costruito un mio pacchetto personale e i circuiti disegnati con le mie macro mi piacciono molto di più–ovviamente è una questione di gusti personali. Ci sono moltissime cose che si possono fare solo con TikZ e con pgfplots (basato su TikZ) e quindi in quei casi sono costretto anch’io a usare TikZ ma mi capita tanto raramente che ogni volta devo consultare ila documentazione.

          Grazie a te ho imparato ad usare “even odd rule”, che non ricordavo di avere mai notato.

        • #122009
          Up
          0
          Down
          ::


          Mille grazie.

          Io faccio un uso sinceramente pessimo di latex, tanto che spesso mi chiedo anche perchè lo uso.

          Non ho davvero il tempo di poter leggere ed imparare la dociumentazione.
          Ma ci provo perchè in alcuni casi mi ha aiutato parecchio. (Tipo per un canzoniere)

          Adesso volevo usarlo per scrivere delle “schede” di elettrotecnica per degli studenti di un professionale, per provare ancora ad usare un testo ben fatto al posto di mille riferimenti in internet.

          Adesso per utilizzare tikz mi sono scaricato la guida di Pantieri e uso quella come riferimento.

          Anche con circuitikz mi sta dando parecchio filo da torcere

          Quindi grazie per le dritte, la soluzione è veramente elegante

      Visualizzazione 3 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top