Author Topic: DIY Layout Creator - software for easy drawing PCB, vero and perfboard layouts  (Read 1093053 times)

cctsim

Ubuntu 16.04 with
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

BTW, many thanks for this wonderful program.

bancika

thanks, and it's always rendered like the one on the left, no matter what settings you use? Do older versions work like this for you?

I have a virtual machine with ubuntu and it was fine.
The new version of DIY Layout Creator is out, check it out here


cctsim

Yes, I went back to version 3.24 (I think) and it was always the same problem with openjdk.

I have now switched to the oracle jdk_1.6.0_45 and it works fine.

Oracle jdk_1.8.0_152 resolves this problem too but it seems to have problems when editing Labels. Nothing happens when you double-click on a label.

Please consider this problem resolved, at least for me. I am happy running the program using the oracle jdk_1.6.0_45 version.

bancika

interesting. It's expected to have a 2-3sec delay the first time you edit a label because that's when it collects system fonts. But it shouldn't hang. Maybe something failed and logged an error?
Logs are at <user>/.diylc/logs, can you please check?
The new version of DIY Layout Creator is out, check it out here


cctsim

Please see below the log after the first error

22:27:05,631  INFO [AWT-EventQueue-0] Presenter - loadProjectFromFile(/home/cctsim/.diylc/autoSave.diy)
22:27:05,631  INFO [AWT-EventQueue-0] ProjectFileManager - loadProjectFromFile(/home/cctsim/.diylc/autoSave.diy)
22:27:05,656  INFO [AWT-EventQueue-0] Presenter - loadProject(New Project, true)
22:27:05,656  INFO [AWT-EventQueue-0] ConfigurationManager - Saving configuration
22:27:05,713  INFO [main] DIYLCStarter - Injecting default properties.
22:27:05,966  INFO [SwingWorker-pool-1-thread-3] UpdateChecker - 0 updates found
22:27:06,405 DEBUG [SwingWorker-pool-1-thread-2] PhpFlatProxy - Connecting to: http://www.diy-fever.com/diylc/api/v1/getAnnouncements.php
22:27:06,578 ERROR [AWT-EventQueue-0] MainFrame - Background task execution failed
java.util.concurrent.ExecutionException: java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.diylc.announcements.Announcement
   at java.util.concurrent.FutureTask.report(FutureTask.java:122)
   at java.util.concurrent.FutureTask.get(FutureTask.java:192)
   at javax.swing.SwingWorker.get(SwingWorker.java:602)
   at org.diylc.swing.gui.MainFrame$4.done(Unknown Source)
   at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
   at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
   at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
   at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
   at javax.swing.Timer.fireActionPerformed(Timer.java:313)
   at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
   at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
   at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
   at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
   at java.awt.Dialog.show(Dialog.java:1084)
   at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:869)
   at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:795)
   at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:757)
   at org.diylc.swing.gui.MainFrame.showConfirmDialog(Unknown Source)
   at org.diylc.swing.plugins.autosave.AutoSavePlugin$1.run(Unknown Source)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.diylc.announcements.Announcement
   at org.diylc.announcements.AnnouncementProvider.getCurrentAnnouncements(Unknown Source)
   at org.diylc.swing.plugins.statusbar.StatusBar$1.doInBackground(Unknown Source)
   at org.diylc.swing.plugins.statusbar.StatusBar$1.doInBackground(Unknown Source)
   at org.diylc.swing.gui.MainFrame$4.doInBackground(Unknown Source)
   at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at javax.swing.SwingWorker.run(SwingWorker.java:334)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at java.lang.Thread.run(Thread.java:748)
22:27:06,580 ERROR [AWT-EventQueue-0] StatusBar - Error while fetching announcements
java.util.concurrent.ExecutionException: java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.diylc.announcements.Announcement
   at java.util.concurrent.FutureTask.report(FutureTask.java:122)
   at java.util.concurrent.FutureTask.get(FutureTask.java:192)
   at javax.swing.SwingWorker.get(SwingWorker.java:602)
   at org.diylc.swing.gui.MainFrame$4.done(Unknown Source)
   at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
   at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
   at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
   at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
   at javax.swing.Timer.fireActionPerformed(Timer.java:313)
   at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
   at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
   at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
   at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
   at java.awt.Dialog.show(Dialog.java:1084)
   at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:869)
   at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:795)
   at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:757)
   at org.diylc.swing.gui.MainFrame.showConfirmDialog(Unknown Source)
   at org.diylc.swing.plugins.autosave.AutoSavePlugin$1.run(Unknown Source)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.diylc.announcements.Announcement
   at org.diylc.announcements.AnnouncementProvider.getCurrentAnnouncements(Unknown Source)
   at org.diylc.swing.plugins.statusbar.StatusBar$1.doInBackground(Unknown Source)
   at org.diylc.swing.plugins.statusbar.StatusBar$1.doInBackground(Unknown Source)
   at org.diylc.swing.gui.MainFrame$4.doInBackground(Unknown Source)
   at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at javax.swing.SwingWorker.run(SwingWorker.java:334)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at java.lang.Thread.run(Thread.java:748)
22:27:07,823  INFO [AWT-EventQueue-0] ConfigurationManager - Saving configuration
22:27:10,396  INFO [AWT-EventQueue-0] Presenter - setNewComponentSlot(Label)
22:27:10,397  INFO [AWT-EventQueue-0] InstantiationManager - Instatiating component of type: org.diylc.components.misc.Label
22:27:12,075 DEBUG [AWT-EventQueue-0] Presenter - mouseClicked(java.awt.Point[x=1073,y=613], 1, false, false, false)
22:27:12,096 DEBUG [AWT-EventQueue-0] Presenter - Loaded auto-cretor: org.diylc.components.autocreate.SolderPadAutoCreator
22:27:12,118  INFO [AWT-EventQueue-0] Presenter - setNewComponentSlot(null)
22:27:12,120  INFO [AWT-EventQueue-0] UndoHandler - Undo state changed
22:27:12,120  INFO [pool-2-thread-1] Presenter - saveProjectToFile(/home/cctsim/.diylc/autoSave.diy)
22:27:13,278 DEBUG [AWT-EventQueue-0] Presenter - mouseClicked(java.awt.Point[x=1110,y=620], 1, false, false, false)
22:27:13,458 DEBUG [AWT-EventQueue-0] Presenter - mouseClicked(java.awt.Point[x=1110,y=620], 1, false, false, false)
22:27:13,467 DEBUG [AWT-EventQueue-0] PropertyEditorDialog - Creating property editor for: [Color = java.awt.Color[r=0,g=0,b=0], Font = java.awt.Font[family=Dialog,name=Tahoma,style=plain,size=14], Font Bold = false, Font Italic = false, Font Size = 14, Horizontal alignment = Center, Orientation = Default, Text = Double click to edit text, Vertical alignment = Center]

bancika

I think that's ok, there are no announcement on the server, so it fails to grab them :)
The new version of DIY Layout Creator is out, check it out here


EL34

Re: DIY Layout Creator - software for easy drawing PCB, vero and perfboard layouts
« Reply #2466 on: September 24, 2018, 12:26:08 PM »
:)

Hi Bancika,
I have added a new board on my amp forum for DIYLC

I make custom turret boards and eyelet boards for my customers
These are tube amp boards, not stomp box boards

I have created a program that can take a .diy file and analyze it
My program pulls out the board and eyelets and ignores everything else
It also looks for cut lines if you need the board cut into multiple segments

People can then have that board made on my CNC machine

My amp forum DIY board is here
https://el34world.com/Forum/index.php?board=26.0

There are some youtube video links in the board above showing how my on line program will work once I finish it

My youtube playlist for DIYLC is here
https://www.youtube.com/playlist?list=PLVvDFekIYJjeQX4On2q6w4f-nuicAhgpN

I will be adding more videos as I go
I would be interested in any comments you may have about this
Contact me and I will give you the link to my custom program on my server
You can test it and let me know if you like it
Thanks
Doug Hoffman
« Last Edit: September 24, 2018, 12:28:02 PM by EL34 »

n.d

Re: DIY Layout Creator - software for easy drawing PCB, vero and perfboard layouts
« Reply #2467 on: September 28, 2018, 02:22:15 PM »
Is, or will there be, a way to make a real installation in ubuntu?
A .deb package maybe?

Thank you.

n.d

Sorry to insist. Perhaps you can use this tool/medium.

https://docs.snapcraft.io/build-snaps/java


I am not a developer, but, as far as I understand, that tool makes it easier. Plus it adresses your problems regarding java versions (I know, that's on macs).
Thank you.

GGBB

Sorry to insist. Perhaps you can use this tool/medium.

https://docs.snapcraft.io/build-snaps/java


I am not a developer, but, as far as I understand, that tool makes it easier. Plus it adresses your problems regarding java versions (I know, that's on macs).
Thank you.

This is more of a users' group than a DIYLC support center. If you want to make an official request, you should probably use the DIYLC GitHub page.
  • SUPPORTER

srmoska

Hi,
I'm thinking about making piece of software for speeding up drawing perfboard and vero layouts. It would have library with components and user would drag&drop them over board. Also, it would have it's own format and ability to save to gif/jpg.
And of course, it would be freeware :)
Would this be useful, should I waste my time on this?
Thanks,
Branislav

Sure thing! I had an awful time trying to work with eagle software. had to hand draw my PCB on adobe ilustrator and was a pain to measure every component

bancika

Re: DIY Layout Creator - software for easy drawing PCB, vero and perfboard layouts
« Reply #2471 on: December 17, 2018, 10:23:19 AM »
Hi,
I'm thinking about making piece of software for speeding up drawing perfboard and vero layouts. It would have library with components and user would drag&drop them over board. Also, it would have it's own format and ability to save to gif/jpg.
And of course, it would be freeware :)
Would this be useful, should I waste my time on this?
Thanks,
Branislav

you realize that was 12 years ago? The app has been through 3 generations and many revisions since then. Grab the latest from here https://github.com/bancika/diy-layout-creator/releases

Sure thing! I had an awful time trying to work with eagle software. had to hand draw my PCB on adobe ilustrator and was a pain to measure every component
The new version of DIY Layout Creator is out, check it out here


EL34

Re: DIY Layout Creator - software for easy drawing PCB, vero and perfboard layouts
« Reply #2472 on: December 17, 2018, 11:29:38 AM »
bancika has been on a roll updating DIYLC with some really cool new features

I have started a Facebook group for DIYLC
It's only been a couple weeks and we have over 500 members in that group

I also created a DIYLC board on my amp forum with info, tips and how to's
Most of this stuff I do with DIYLC is all guitar tube amp stuff

The stompbox guys are welcome to join the Facebook group and my amp forum

Facebook group is here
https://www.facebook.com/groups/866347656903552

The DIYLC amp forum board is here
http://el34world.com/Forum/index.php?board=26.0


cctsim

It seems that if you save a file with version 3.48.0 you can not open it again with older versions.

Is this behaviour correct?

I have also problems with the Ohm sign displayed on resistors.

These problems are on ubuntu 16.04 with jdk1.6.0_45.

GGBB

The save issue is expected - file formats are not always backwards compatible. I think many of us have learned that the hard way.  :icon_redface:
  • SUPPORTER

EL34

There some new components that are not in older versions and you will get an error loading the file

There was a multi section can cap that was removed and that will create an error if you had used it in one of your files

GGBB

I think even if you don't use any of the new components and even if you don't even change the layout, saving causes the file to be unreadable by older versions. Don't know for sure about this latest change, but that has been my experience in the past. The program version is stored in the file so that may have something to do with it and might be fixable by changing it with a text editor. Don't know haven't tried. There is also a global config file that gets updated and may not be backward compatible.
  • SUPPORTER

cctsim

The Ohm symbol issue went away on version 3.49.0 but now is back on 3.50.0.



Do I need to install any additional fonts to get this working on ubuntu linux? I guess I could stay on 3.49.0 until it is sorted.

EL34

The Ohm symbol issue went away on version 3.49.0 but now is back on 3.50.0.



Do I need to install any additional fonts to get this working on ubuntu linux? I guess I could stay on 3.49.0 until it is sorted.

Just wait until Bancika fixes this
He has been notified about this and several other issues in 3.50

Look here for more info on reported issues
https://github.com/bancika/diy-layout-creator/issues

duck_arse

Re: DIY Layout Creator - software for easy drawing PCB, vero and perfboard layouts
« Reply #2479 on: September 13, 2019, 04:36:35 AM »
hello. I recently did a clean linux install and copied my diylc-3.40.0.zip across and installed. some behaviour has changed that I don't understand. on the old machine/install, I would very very often get the 'not shut down properly' autoSave message. which I'd ignore and carry on. NOW, however, I get a first start each time - none of my settings or templates are saved, need to be reselected each time.

much output follows. system is LXLE Eclectica 16.04.4 64-bit.
to start from the main menu I'm using this script:
Code: [Select]
#!/bin/bash
cd programs/diylc
java -splash:splash.png -Xms512m -Xmx2048m -Dorg.diylc.scriptRun=true -Dfile.encoding=UTF-8 -cp diylc.jar:lib org.diylc.DIYLCStarter

exit 0

on starting diylc, the ~/.diylc folder contains:
Code: [Select]
drwxrwxr-x 2 duck duck  4096 Sep 13 17:12 logs
-rw-rw-r-- 1 duck duck    95 Sep 13 17:13 config.xml
-rw-r--r-- 1 duck duck 85604 Sep 13 02:19 update.xml

while running, editing, saving, and after exiting the progam, it looks like this:
Code: [Select]
drwxrwxr-x 2 duck duck   4096 Sep 13 17:12 logs
-rw-rw-r-- 1 duck duck  12457 Sep 13 17:18 config.xml
-rw-rw-r-- 1 duck duck 177478 Sep 13 17:17 autoSave.diy
-rw-r--r-- 1 duck duck  85604 Sep 13 02:19 update.xml

restart and this:
Code: [Select]
drwxrwxr-x 2 duck duck  4096 Sep 13 17:20 logs
-rw-rw-r-- 1 duck duck    95 Sep 13 17:20 config.xml
-rw-r--r-- 1 duck duck 85604 Sep 13 02:19 update.xml

logging info, not sure if it's helpful, shows in part:
Code: [Select]
17:20:02,470 DEBUG [main] DIYLCStarter - Java version: 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10 by Private Build
17:20:02,471 DEBUG [main] DIYLCStarter - OS: Linux 4.4.0-159-generic
17:20:02,471  INFO [main] DIYLCStarter - Starting DIYLC with working directory /home/duck/programs/diylc
17:20:03,267  INFO [main] ConfigurationManager - Initializing configuration
17:20:03,441 ERROR [main] ConfigurationManager - Could not initialize configuration
com.thoughtworks.xstream.converters.ConversionException: Cannot construct org.diylc.core.Template as it does not have a no-args constructor : Cannot construct org.diylc.core.Template as it does not have a no-args constructor
---- Debugging information ----
message             : Cannot construct org.diylc.core.Template as it does not have a no-args constructor
cause-exception     : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message       : Cannot construct org.diylc.core.Template as it does not have a no-args constructor
class               : org.diylc.core.Template
required-type       : org.diylc.core.Template
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /map/entry[3]/map/entry/list/org.diylc.core.Template
class[1]            : java.util.ArrayList
converter-type[1]   : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2]            : java.util.HashMap
converter-type[2]   : com.thoughtworks.xstream.converters.collections.MapConverter
version             : null
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)

[......]

can anyone shed some light on this?
"You ain't seen me, right?"