domenica 31 luglio 2022

Qulache aggiornamento

Lo so, non tengo aggiornato molto questo blog. Qualche aggiornamento: Sono disponibile per domande e altro su FreeCAD, posso anche dare qualche lezione sullo scripting, e modellare cose usando lo scripting, nel caso chiedete qualche informazione. Non è un "servizio professionale" ma alcuni hanno trovato utile la cosa, e sono soddisfatti del "lavoro svolto". Il lavoro con FreeCAD procede bene, sto aggiornando la guida con cose leggermente più complesse di un tutorial. Se mi seguite sul forum di FreeCAD link con il nome di onekk. Al momento non c'è altro, ma sono in preparazione altre pagine. Saluti Carlo D.

venerdì 13 agosto 2021

Emacs, texlab e zathura come editor per Latex.

 Buongiorno, una cosa che esula dal solito, ma che penso potrà tornare utile a qualcuno.

Ho usato fino ad ora VsCode in Linux come editor di testi per Python e per LaTex.

Però la nota "stabilità" del prodotto VsCode, mi ha creato recentemente una serie di problemi, in quando la "catena di esecuzione" composta da VsCode (per Linux), alcuni plugin e texlab ha smesso di funzionare.

Ho dovuto cercare un'alternativa, ma c'era sempre qualcosa che mancava nella "catena" alla fine ho preso il "coraggio a due mani" è ho provato emacs, con la determinazione di riuscire a "piegarlo a miei voleri".

La mia catena di compilazione è relativamente "complessa", in quanto usa molti pacchetti aggiuntivi per ottenre i glossari, gli schemi e le figure, nonché il file sorgente di latex e diviso in uno o due file per ogni capitolo, per cui è necessario che la catena di compilazione e visualizzazione sia a prova di bomba.

uso Arara come aiuto alla compilazione, per cui anche texlab va configurato per non usare i valori per difetto in quanto usa "latexmk" come compilatore predefinito.

Non sono proprio riuscito a piegarlo completamente ai mie voleri, però il compromesso raggiunto è decisamente buono, la catena di compilazione del file Latex.

 

Per prima cosa vanno installati emacs e texlab ma di questo se ne occupa egregiamente il gestore dei pacchetti della distribuzione Linux.


La parte più complicata è fare funzionare tutto cioè il collegamento tra:


  • Emacs e TexLab
  • Emacs e Zathura per visualizzare il file pdf compilato e saltare al file pdf partendo da un punto preciso dei sorgenti.
  • Zathura ed Emacs per partire da un certo punto del file pdf e saltare al file sorgente per correggere errori od altro.

Emacs e TexLab

per prima cosa vanno istallati alcuni pacchetti usando il gestore dei pacchetti di Emacs.


 ;; packages settings  
 (require 'package)  
 (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")  
              ("melpa-stable" . "http://stable.melpa.org/packages/")  
              ("melpa" . "http://melpa.org/packages/")  
              ))  
 (package-initialize)  
 (unless package-archive-contents  
  (package-refresh-contents))  
 (unless (package-installed-p 'use-package)  
  (package-refresh-contents)  
  (package-install 'use-package))  
 (require 'use-package)  
Questo nel cappello del file init.el per impostare l'uso del pacchetto "package" come pre requisito per usare il resto. Se usate altri sistemi per emacs, non posso aiutarvi. Questa parte serve per installare i pacchetti lsp-mode e lsp-latex e configurarli per usare Arara come compilatore. Per lanciare la compilazione ho impostato la sequanza di tasti C-c b che nel gergo di emacs vuol dire premere CTRL e C e poi il tasto B.

;; LSP-MODE

(require 'lsp-mode)

;; LSP LATEX

(require 'lsp-latex)
;; "texlab" must be located at a directory contained in `exec-path'.
;; If you want to put "texlab" somewhere else,
;; you can specify the path to "texlab" as follows:
;; (setq lsp-latex-texlab-executable "/path/to/texlab")

;;(add-to-list 'lsp-enabled-clients 'texlab)

(with-eval-after-load "tex-mode"
 (add-hook 'tex-mode-hook 'lsp)
 (add-hook 'latex-mode-hook 'lsp))

;; For bibtex
(with-eval-after-load "bibtex"
 (add-hook 'bibtex-mode-hook 'lsp))

;; set C-c b as latex build
(eval-after-load "tex-mode"
    '(define-key latex-mode-map (kbd "C-c b") 'lsp-latex-build))

(setq lsp-latex-texlab-executable-argument-list
      '("-vvv"))

(setq lsp-latex-build-executable "arara")
(setq lsp-latex-build-args
      '("-v" "%f" ))

;; END LSP LATEX


Emacs e Zathura

La cosa prevede di settare il collegamento tra Emacs e Zathura, cioè di lanciare Zathura per visualizzare la parte di codice dove vi trovate nel file PDF appena compilato usando la sequenza dei comandi impostata precedentemente. La cosa non è automatica per cui dovete lanciare il comando a mano.


;; set C-c f to latex forward search
(eval-after-load 'tex-mode
    '(define-key latex-mode-map (kbd "C-c f") 'lsp-latex-forward-search))

(setq lsp-latex-forward-search-executable "zathura")
(setq lsp-latex-forward-search-args    
      '("--synctex-forward" "%l:1:%f" "%p"))
Il comando è C-c f e come potete vedere e cambiare se serve nella prima parte del codice. le due istruzioni che riportano setq lsp-latex-forward-search servono per impostare il "collegamento magico" in modo che il comando lsp-latex-forward-search avvii Zathura con i corretti comandi e la posizione da visualizzare.

Zathura e Emacs

Ora rimane da configurare il collegamento tra Zathura ee Emacs in modo da usare il comando "CTRL Click-sinistro" del mouse per andare al sorgente relativo alla parte del file PDF in oggetto. La cosa prevede due impostazioni, una nel file init.el di Emacs:

;; start a server 
(server-start) 
Questo serve per far partire Emacs come server per il comando che Zathura eseguirà quando useremo la sequenza "CTRL Click-sinistro". Per questo dovremo trovare il file zathurarc ed inserire queste due righe:

set synctex true
set synctex-editor-command "emacsclient +%{line} %{input}"
Che faranno in modo di lanciare una sessione emacsclient che aprirà una "finestra" nel nostro editor che visualizzerà il file e la posizione da cui abbiamo lanciato il comando in Zathura

Sperando di essere stato ragionevolmente chiaro per ora vi saluto. Carlo D.

sabato 7 agosto 2021

FreeCAD un modellatore parametrico


 Cominciamo questa avventura introducendo FreeCAD.


FreeCAD è un modellatore 3D parametrico.


Permette di creare modelli 3D (per questo è un modellatore), usando dei parametri, cioè permette di legare dimensioni ed altro a dei parametri che possono essere variati per fare in modo che l'intero modello cambi di conseguenza.


Questa parametricità però è poco spiegata e "poco visibile" ad un primo sguardo.


Gli oggetti che vengono creati non sono descritti semplicemente con "punti nello spazio",  ad esempio una linea dal punto A al punto B, che si unisce ad una altra linea ecc. fino a formare un cubo.


Al modellatore viene fornita l'informazione che si vuole creare un cubo con determinate dimensioni, altezza, larghezza, profondità, e che lo volgiamo posizionare con il vertice in basso a sinistra nella posizione X = 10, Y = 10, Z = 0.


Il motore geometrico di FreeCAD, cioè le funzioni di modellazione sono affidate alla libreria OCCT (Open Cascade Technology) che compie il lavoro di modellazione.


La visualizzazione invece è affidata alle librerie Coin3d che usano il formato OpenInventor


Queste informazioni sono basilari per comprendere alcune particolarità di FreeCAD, come la dicotomia tra il modello e la sua visualizzazione, soprattutto in termini di precisione del modello.


Mi spiego con una immagine:



La linea nera è la rappresentazione di una porzione di cerchio con la "normale precisione" impostata in FreeCAD.


La linea verde invece è lo stesso cerchio visualizzato con una precisione maggiore.


La differenza è evidente, tutte e due però non sono il vero "luogo dei punti" del cerchio, che è memorizzato come una curva di precisione "infinita", per cui ad ogni livello di zoom il "visualizzatore" di FreeCAD deve ricalcolare la "vista", partendo dai dati del modellatore.

 

La differenza è abbastanza importante, perché ad esempio in ambito della stampa 3D, FreeCAD è ritenuto un concorrente di OpenSCAD, ma il paradigma di modellazione è completamente diverso.

 

OpenSCAD è un modellatore di mesh, infatti per ogni oggetto dobbiamo impostare un parametro di precisione per indicare "quanto fine" deve essere la mesh generata (e calcolata dal modellatore).


In FreeCAD questo lavoro lo facciamo solamente al momento di trasformare il solido generato che ha linee curve definite come "funzioni infinite" nel modello mesh da dare in pasto allo Slicer per la stampa 3D.


Con questo abbiamo appena cominciato.


Nel prossimo articolo affronteremo più in dettaglio alcune cose:


- L'interprete Python di bordo di FreeCAD

- gli "oggetti" di FreeCAD



Saluti


Carlo D.

   

domenica 6 giugno 2021

Nuova destinazione del blog

 Buongiorno, potete notare la lunga assenza, il blog doveva documentare la costruzione della stampante, ma ora la mia attenzione si è focalizzata su altro.

La stampante è costruita ed ha anche stampato alcune cose, meno di quelle che volessi, e ora devo risistemarla perché ho problemi con la stampa dell'ABS, non so se causate dal materiale oppure da altro.

 

Nel frattempo anche la mia CNC è in restauro, devo cambiare tutti i cuscinetti, e ne ho approffittato per una revisione completa, poi l'inverno ha impedito il proseguimento dei lavori.


Comunque non sono rimasto con le mani in mano e ho proseguito l'attività con FreeCAD e sto mettendo a punto una guida per la stampa 3d con FreeCAD, o meglio una guida alla modellazione 3d finalizzata alla stampa 3d, usando FreeCAD.


Quindi ho modificato l'intestazione del blog e anche la destinazione generale del blog.


mercoledì 21 giugno 2017

Work in progress

The work is in progress some material is arrived from Spain so I can complete with the missing bearings.

In the mean time I have done some wiring work:


I have managed to find some blue wiring cover and I've decided to follow the same approach used in my CNC, each motor is connected to the board throuh a screw terminal near the motor.



A view of the X carriage, (one LM8UU is missing, but soon i will be in place with the spare arrived from Spain), I have used some washer for the M4 bolts so the belt is mantained in place by them (the most lower) the upper seem to interfere with the free part of the belt, so maybe i have to check the or better replace with some smaller ones. 

This is the upper Z axis plate, I haven't seen none made in this manner maybe it is a Lythuanian patent, the smooth rod is held in place by a screw and the threaded rod is hel by a 635zz bearing.

The toolson solution is not useful with this configuration, so I have to study an approach to "suspend" the Z rods, maybe i will made a counter plate using a big washer and some bolts to hold the 625ZZ bearing so the weight of the Z axis is not held by the coupler,  as it is a flexible coupler it is not made to hold weight and I suspect that many Z wobble problems are arising from that project flaw.

Many people have adressed this problem in many ways, but think a the Z rod as a wire if you attach a weight it will stay straight if you push the wire it bend.  


First problem arising in the build the clearance between the Y endstop and the motor is too tight and the wiring is touching the rear of the motor, I have to rethink the position. (One of the first thinks to print).

Stay Tuned and happy printing.