Jump to content
IGNORED

JBrickBuilder, un CAD in Java per LDraw


bricksnspace
 Share

Recommended Posts

NB: a partire da ottobre 2015 questo software non riceve più nessun aggiornamento e supporto

Una serie di vicende personali ha ridotto ulteriormente il mio già scarsissimo tempo libero, per cui mi trovo a dover ridurre il mio impegno. Preferisco dedicare il poco tempo a maneggiare mattoncini "reali".

 

Per esercizio e per imparare un po' meglio Java, ho messo in cantiere quest'estate un semplice CAD per MOC che usa la libreria di parti LDraw (http://www.ldraw.org).

 

jbrickbuilder-aa.png

JBrickBuilder al lavoro

 

Ne esistono vari, ma la cosa che manca in tutti, secondo me, è la semplicità d'uso del LEGO Digital Designer, con la "connessione" automatica dei pezzi, dove basta prendere un pezzo ed avvicinarlo alla posizione e quello va in "snap" al posto giusto. JBrickBuilder implementa questa funzione.

 

Al momento ho creato:

  • Il CAD vero e proprio
  • il gestore delle connessioni

 

Versione corrente: 0.4.1 (2015-06-12)

 

Entrambi sono in beta, ma il CAD è utilizzabile per piccoli progetti (1000-2000 pezzi) in funzione della velocità della vostra macchina. Considerate che un progetto di 1000 pezzi è ben gestibile su un portatile del 2008...

 

Il gestore delle connessioni permette di caricare un pezzo LDraw dalla libreria e posizionare le connessioni usando una visualizzazione 3D. Parte delle connessioni sono "autorilevate", usando particolarità della libreria di parti LDraw. Il CAD usa in parte l'autorilevamento ed in parte i file delle connessioni, posizionati nella cartella "conn" dentro il pacchetto software.

 

Qui un breve video che mostra il funzionamento dell'editor per i pezzi "flessibili":

 

Per chi volesse provarlo:

JBrickBuilder.jar (il programma)

Il manuale (PDF, inglese)

Non c'è manuale in italiano (per ora), e non usatelo su progetti vostri importanti, visto che è ancora in fase di sviluppo pesante (diciamo che sono al 60% del totale)

 

Createvi una directory a piacere, metteteci dentro il solo file JAR ed avviatelo. Scarica da solo tutto quello che serve la prima volta che lo avviate.

 

Fatemi sapere cosa ne pensate e se siete convinti che Java sia lento, beh... dovrete ricredervi.

 

Link to comment
Share on other sites

Se ti può essere utile sotto linux non sono riuscito a farlo partire perchè non trova il file complete.zip.

Ho provato ad indicarglielo ma niente da fare! :-[

 

Ciao sbraaa.

Da Linux, per evitare "interferenze" da parte della configurazione della propria distribuzione, va lanciato da terminale, andando nella directory dove risiede il JAR e usando il comando:

java -jar jBrickBuilder-0.1b.jar

Ossia deve essere eseguito nella "directory corrente".

 

 

Link to comment
Share on other sites

Anch'io ho avuto lo stesso problema, la soluzione è cercare nel classpath il nome del tuo jar così scopri in che directory si trova:

String[] dirs = System.getProperty("java.class.path").split(System.getProperty("path.separator"));
for (int i = 0; i < dirs.length; i++) {
 String dir = dirs;
 if (dir.endsWith("miofile.jar")) {
   pos = dir.lastIndexOf(System.getProperty("file.separator"));
   dir = (pos < 0 ? "./" : dir.substring(0, pos + 1);
   // Adesso hai la directory
 }
}

Link to comment
Share on other sites

Ciao! Bell'idea!

Io ho scaricato e usato il db suo (complete.zip) però poi mi dice che non riesce a creare il db delle connessioni.

Uso Win7 x64

 

Ciao superforno.

Dovresti avere un file dal nome "ldrconn.zip" di poco più di 100kb nella stessa cartella del programma, se è stato scaricato correttamente.

Se non c'è o è di dimensione differente, prova ad aggiornarlo dal menu "Catalogs"->"Download connections database"

 

 

Link to comment
Share on other sites

Punti a farlo utilizzabile con il touch visto che è in ambiente java?! Sarebbe la prima app nel suo genere... E per me avrebbe un successo enorme...

In effetti l'idea mi era venuta, ma ci sono alcune difficoltà:

- non conosco l'ambiente "tablet" (leggi Android)

- non ho a disposizione un tablet per fare prove di "usabilità" (ma questo non è un gran problema...)

 

In futuro, chissà... ;)

Link to comment
Share on other sites

Punti a farlo utilizzabile con il touch visto che è in ambiente java?! Sarebbe la prima app nel suo genere... E per me avrebbe un successo enorme...

In effetti l'idea mi era venuta, ma ci sono alcune difficoltà:

- non conosco l'ambiente "tablet" (leggi Android)

- non ho a disposizione un tablet per fare prove di "usabilità" (ma questo non è un gran problema...)

 

In futuro, chissà... ;)

 

In realtà visto che è realizzato in Java, una certa portabilità di potrebbe essere.

Partire con Android non è impossibile, io l'ho fatto anche se poi mi ci sono arenato più per mancanza di voglia e tempo che altro... :)

Se vuoi il mio tablet mi ha confidato di essere disponibile come beta tester :D

Link to comment
Share on other sites

Temo che la difficoltà più grande sia dare la precisione di posizione con le dita, che se nn sbaglio è lo stesso problema incontrato dai programmatori di LDD. Il più (ometto questa parte va) possiede un tablet al giorno d'oggi e un buon programmatore Java no?! Che peccato! Perché non provi ad aprire il progetto e raccogli i fondi?! Sono sicuro che potresti avere delle belle sorprese! Sopratutto se punti alla app per Tablet. Cmq continua così. Se riesco stasera la provo su Lubuntu su un netbook. Se funziona li... Ti promuovo!

Link to comment
Share on other sites

Veramente niente male e vedo che sembra diventare qualcosa di più di un semplice "esercizio"

 

Alcune perplessità/dubbi:

Se non si ha una risoluzione di 1920x1080 come minimo, non si possono selezionare gli strumenti delle toolbar che vengono nascosti, ricordo di aver visto qualche componente per delle toolbar scrollabili, potrebbe essere una buona idea darci un'occhiata ;)

 

Una volta posizionato un pezzo non c'è verso di spostarlo senza fare il classico taglia-incolla?

 

Sarebbe opportuno deselezionare i pezzi selezionati quando se ne aggiunge uno nuovo... ho premuto "canc" per sbaglio e ho cancellato mezza roba dopo aver costruito in un altro punto senza accorgermi che erano selezionati dei pezzi.

 

Interessante il procedimento per costruire in SNOT, almeno i pezzi vengono già posizionati correttamente e non bisogna stare a ruotarli in posizioni assurde ogni volta, visto che su LDD ogni singola volta mi dimentico da che lato ruotarli oppure ho la vista leggermente spostata e mi si ruota in un modo completamente non voluto :D

 

Immagino che attualmente non sia possibile ruotare 2 pezzi assieme ::)

 

Di nuovo complimenti e spero che tu riesca a completarlo e farlo diventare uno dei migliori digital builder in circolazione

Link to comment
Share on other sites

Veramente niente male e vedo che sembra diventare qualcosa di più di un semplice "esercizio"

 

Alcune perplessità/dubbi:

Se non si ha una risoluzione di 1920x1080 come minimo, non si possono selezionare gli strumenti delle toolbar che vengono nascosti, ricordo di aver visto qualche componente per delle toolbar scrollabili, potrebbe essere una buona idea darci un'occhiata ;)

 

Devo rivedere il codice che decide se usare le icone da 24 pixel o quelle da 48. Ho notato che non sempre sceglie correttamente...

 

Una volta posizionato un pezzo non c'è verso di spostarlo senza fare il classico taglia-incolla?

Al momento no. Personalmente odio LDD quando vuoi fare una selezione via "finestra" di un gruppo di pezzi e se non clicchi su un punto vuoto dello schermo inizia a spostare pezzi, invece di selezionare.

 

Sarebbe opportuno deselezionare i pezzi selezionati quando se ne aggiunge uno nuovo... ho premuto "canc" per sbaglio e ho cancellato mezza roba dopo aver costruito in un altro punto senza accorgermi che erano selezionati dei pezzi.

Il mantenimento della selezione è utile per l'allineamento della griglia di posizionamento quando usi "allinea al pezzo selezionato". E poi c'è l'Undo :P

 

Interessante il procedimento per costruire in SNOT, almeno i pezzi vengono già posizionati correttamente e non bisogna stare a ruotarli in posizioni assurde ogni volta, visto che su LDD ogni singola volta mi dimentico da che lato ruotarli oppure ho la vista leggermente spostata e mi si ruota in un modo completamente non voluto :D

Ci ho ragionato molto, ed è uno delle cose che più mi danno fastidio di LDD.

 

Immagino che attualmente non sia possibile ruotare 2 pezzi assieme ::)

Ruotare più pezzi insieme richiede l'introduzione di un modello più complesso di "connessioni" con calcoli di fisica (gradi di libertà, vincoli, assi di rotazione, ...).

 

Di nuovo complimenti e spero che tu riesca a completarlo e farlo diventare uno dei migliori digital builder in circolazione

 

Grazie, ce la sto mettendo tutta ;)

Link to comment
Share on other sites

...e via con la versione 0.4.0 ;D

 

Ho implementato la gestione degli STEP (in LDraw sono i passi per costruire qualcosa) in modo totalmente visuale.

 

Non è probabilmente la soluzione finale ed è ben lontana dall'essere perfetta, ma la considero un punto di partenza.

Mancano ancora molte cose, ma il CAD inizia ad essere completamente utilizzabile.

 

Ah, ora il database delle connessioni è arrivato a quota 1260 parti.

 

Fatemi sapere cosa ne pensate.

 

PS: per chi sarà a Lecco 2015 ci si vede al laboratorio per la presentazione del programma: vi aspetto! ;)

Link to comment
Share on other sites

Ciao

Come promesso a Lecco, di seguito le mie prime impressioni su JBB.

 

Innanzitutto COMPLIMENTI ;D, è veramente un ottimo lavoro.

In pochi munuti l'ho installato.

 

++++++++++++

- Ottimo il modulo per le parti flessibili

- Ottima la connessione dei pezzi

- Ottima la possibilità di importare modelli LDR o MPD

- Interessante la possibilità di svincolare i pezzi

- Interessante la funzione OCCHIO per nascondere i pezzi

 

Gli spunti che seguono sono soprattutto legati al mio INTENSIVO utilizzo di MLCAD

 

- possibilità di visualizzare/editare la posizione (X,Y,Z) e l'angolo di rotazione di ogni singolo pezzo

- possibilità di (sbloccare !!) e muovere (con le frecce o pulsanti appositi del menù) i pezzi già posizionati, potendo scegliere lo step

- possibilità di avere viste standard (fronte, dx, etc..)

- possibilità di avere le dimensioni fisiche del modello (e il peso ????)

- possibilità di spostare il punto di inserimento inserendo la posizione della griglia

 

Buon divertimento :o :o e Buone Vacanze 8)

 

Link to comment
Share on other sites

Come TEST ho provato a caricare i modelli CAD dei miei SUMO.

A parte qualche pezzo LDRAW con codice differente, li ha caricati perfettamente.

Considera che i modelli sono da 300/400 pezzi, tra cui alcuni complessi e "pesanti" come i "mindstorms".

Ottimo

 

Per caso tra i pezzi flessibili ci sono anche i cavi RCX , NXT/EV3 e i Power Functions ??

Link to comment
Share on other sites

Ciao,

scusa se ti rispondo solo ora, ma sono tornato in ufficio che sembravo mancare da due anni...

 

Rispondo "in linea"

 

Ciao

Come promesso a Lecco, di seguito le mie prime impressioni su JBB.

 

Innanzitutto COMPLIMENTI ;D, è veramente un ottimo lavoro.

In pochi munuti l'ho installato.

 

Grazie.

 

++++++++++++

- Ottimo il modulo per le parti flessibili

- Ottima la connessione dei pezzi

- Ottima la possibilità di importare modelli LDR o MPD

- Interessante la possibilità di svincolare i pezzi

- Interessante la funzione OCCHIO per nascondere i pezzi

 

Gli spunti che seguono sono soprattutto legati al mio INTENSIVO utilizzo di MLCAD

 

- possibilità di visualizzare/editare la posizione (X,Y,Z) e l'angolo di rotazione di ogni singolo pezzo

Si può fare, nessun problema.

Anzi, potrebbe essere una delle funzioni da aggiungere alla modalità "expert". Come mi hai suggerito a Lecco, si potrebbe dotare il programma di più modalità:

  • Standard - per i costruttori "occasionali" o non troppo esigenti come me
  • Kid-mode - versione semplificata, "LDD-like", per bambini e costruttori alle prime armi
  • Expert - per i costruttori esigenti e navigati

Ci lavoro su.

 

- possibilità di (sbloccare !!) e muovere (con le frecce o pulsanti appositi del menù) i pezzi già posizionati, potendo scegliere lo step

Questa è una richiesta ricorrente, come puoi vedere anche nei messaggi precedenti. Posso mettere una funzione simile, ma personalmente una cosa che odio di LDD è che se vuoi selezionare un gruppo di pezziil primo clic del mouse lo devi fare *per forza* in un punto dove non ci sono mattoncini, altrimenti passa alla funzione "stacca e sposta".

Certo, se alla fine la maggioranza degli utilizzatori la preferisce, dovrò cedere al volere popolare :D

Non voglio usare un tasto o una variante tipo "shift-clic", se devo introdurre la funzione preferisco sia "liscia" e operare la selezione a finestra come in LDD

 

- possibilità di avere viste standard (fronte, dx, etc..)

Ok

 

- possibilità di avere le dimensioni fisiche del modello (e il peso ????)

Le dimensioni fisiche non dovrebbero essere un problema, per il peso è tutta un'altra storia. Bricklink ha il peso della maggior parte dei pezzi, ma la "nomenclatura" dei pezzi non è identica al 100% a quella di LDraw, per cui dovrei integrare parte delle funzioni di BrickUtils in JBrickBuilder, e sinceramente penso non ne valga la pena. Potrei aggiungere la funzione in BrickUtils.

Ci ragiono su.

 

- possibilità di spostare il punto di inserimento inserendo la posizione della griglia

Qui non ho capito cosa intendi.

 

Buon divertimento :o :o e Buone Vacanze 8)

Link to comment
Share on other sites

Come TEST ho provato a caricare i modelli CAD dei miei SUMO.

A parte qualche pezzo LDRAW con codice differente, li ha caricati perfettamente.

Considera che i modelli sono da 300/400 pezzi, tra cui alcuni complessi e "pesanti" come i "mindstorms".

Ottimo

 

Per caso tra i pezzi flessibili ci sono anche i cavi RCX , NXT/EV3 e i Power Functions ??

 

Ottimo! :)

Per i cavi, se mi indichi i codici LDraw, li "ingegnerizzo" e li inserisco nel prossimo aggiornamento delle connessioni.

 

Grazie per i feedback!

 

Link to comment
Share on other sites

Grazie a te per le risposte e per l'impegno che ci metti :o

 

La griglia si può spostare in X,Y,Z e viene visualizzato graficamente lo spostamento.

Quello che pensavo era di poter visualizzare/editare la posizione, in modo da posizionarla correttamente nel punto d'inserimento del pezzo (in particolare se non sono presenti connessioni standard) e agganciare a quel punto il pezzo inserito.

 

Di seguito i codici dei connettori per cavi elettrici:

 

5306.dat : Electric Brick 2 x 2 x 2/3 with Wire End (RCX e 9V)

933c01.dat : Electric Mindstorms NXT RJ12 Style Plug w/ Cable End (Complete)

58124c01.dat: Electric Power Functions Connector with PF Bottom

58124c02.dat: Electric Power Functions Connector with 9V Bottom

58124c02.dat: Electric Power Functions Connector with PF Bottom and Flat Top

 

Note:

il codice 933c02.dat è un cavo completo NXT (e EV3)

 

Buon Lavoro e Buone Vacanze ;)

Link to comment
Share on other sites

Ciao Mario,

io avrei un problemino ::): magari è colpa mia o del computer o non so che altro (sicuramente qualcosa c'è), ma quando si apre la finestra del programma non succede niente. Mi spiego meglio: si apre la finestra e carica graficamente tutti i tools delle barre che ci sono a lato dello spazio di lavoro, ma lo spazio di lavoro appunto resta vuoto, non si vede niente se non una schermata bianca o nera a seconda delle volte.

 

Aggiungo anche un'immagine così si capisce meglio.

Grazie mille :)

 

 

 

 

 

5586.jpg

Link to comment
Share on other sites

Ciao.

 

Naturalmente, immagino, i driver della scheda video saranno aggiornati e cose così, quindi parto con un po' di domande per capire dove sta il problema:

 

- il programma in quello stato è comunque "vivo"? Nel senso, se provi ad aprire un file o a inserire un pezzo ti mostra i dialog o è proprio bloccato?

- che versione di Java hai?

- se ti è possibile, dovresti avviare il programma dal prompt dei comandi, andando prima nella directory dove lo hai installato, con il seguente comando:

java -jar jbrickbuilder.jar

se ci sono errori dovrebbe visualizzarli nella finestra del prompt dei comandi. In questo caso se potessi mandarmi i messaggi sarebbe molto utile.

 

Mario

 

Link to comment
Share on other sites

Il programma funziona, nel senso che se provo a fare qualcosa per cui dovrebbe aprirsi una finestra si apre senza problemi però per esempio se provo ad aggiungere un brick l'anteprima del pezzo nella finestra non si vede e quando faccio invio non succede niente nell'area di lavoro.

 

Ho installato java 8 e la scheda video è una Radeon x1650 series se può servire.

 

- se ti è possibile, dovresti avviare il programma dal prompt dei comandi, andando prima nella directory dove lo hai installato, con il seguente comando:

java -jar jbrickbuilder.jar

se ci sono errori dovrebbe visualizzarli nella finestra del prompt dei comandi. In questo caso se potessi mandarmi i messaggi sarebbe molto utile.

mmmhh ::) so cos'è il prompt ma non ho mai provato a usarlo.....non saprei come fare

Link to comment
Share on other sites

esatto sì, il computer l'ho comprato credo nel 2008 quindi è possibile. mi è venuto un dubbio: OpenGL è un programma da scaricare o dovrebbe essere già nella scheda video?

 

Ho provato il cad anche su un portatile del 2007 che ha come scheda video una Mobile Intel 4 Series Express Chipset Family e mi dà lo stesso identico problema....probabile che siano troppo datati e debba cambiare la scheda video?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...