New work-in-progress EDA package! - Page 1
Forum section: electronics / general

author: Lukas
author_rank: Frequent Contributor
timestamp: January 29, 2017, 07:42:30 pm
content: Hello Everyone,as I hinted over athttps://www.eevblog.com/forum/eda/creating-a-new-eda-package/msg1119148/#msg1119148,I've been working on a new EDA package for some time. Finally, it's on github:https://github.com/carrotIndustries/horizonIt's far from being usable for serious work, but the overall architecture is there. So don't yell at me if things don't work for you.Lukas

author: daveshah
author_rank: Unknown
timestamp: January 29, 2017, 07:57:21 pm
content: Looks really interesting, congratulations! I'll try building it and have a play around tomorrow.

author: vzoole
author_rank: Regular Contributor
timestamp: January 30, 2017, 04:44:41 pm
content: Is there an executable file?

author: ataradov
author_rank: Super Contributor
timestamp: January 30, 2017, 05:53:34 pm
content: Yeah, a lot more people will try this if there were pre-built executables.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 31, 2017, 04:39:27 pm
content: I'm sorry, but I won't provide pre-built windows executables at this point in time. Windows users usually expect applications to be executable files they can double-click and expect something sensible to happen. horizon isn't at this point yet. Since horizon still is in its infancy crashes and other unexpected behaviour is likely to happen. When an executable stripped of its debug symbols crashed, the only thing the user sees is "horizon-imp.exe stopped working". The user is unhappy because horizon crashed and so am I because I can't get a proper bug report i.e. backtrace from that particular user.Said that, compiling on windows isn't much different from compiling on linux. Just grab a copy ofhttp://msys2.github.io/install the dependencies (literally one command), clone the repository and go "make".

author: free_electron
author_rank: Super Contributor
timestamp: January 31, 2017, 04:51:10 pm
content: Quote from: Lukas on January 31, 2017, 04:39:27 pmwould you mind writing a detailed step-by-step guide on how to do this ?i have no clue how github works , how to clone a repository or even what dependencies it needs and what that single command is ...i am not a programmer and hvae no interes tin learning these tools. i want to help by providing feedback on the application though ...so please : put it in laymans terms. i don;t need an EXe file but a step by step guide how to get it to run.

author: Bud
author_rank: Super Contributor
timestamp: January 31, 2017, 05:09:26 pm
content: Quote from: Lukas on January 31, 2017, 04:39:27 pmLukas,please do not be a typical arrogant Linux developer. There is no "just" for many of us here.

author: ataradov
author_rank: Super Contributor
timestamp: January 31, 2017, 05:28:00 pm
content: Quote from: Bud on January 31, 2017, 05:09:26 pmYep. I can set up the environment and all that stuff, but why bother to check out the alpha version of some unknown software?

author: Lukas
author_rank: Frequent Contributor
timestamp: January 31, 2017, 06:09:34 pm
content: Quote from: free_electron on January 31, 2017, 04:51:10 pmThere you are:https://github.com/carrotIndustries/horizon/blob/master/build_win32.md

author: blkdev2
author_rank: Newbie
timestamp: February 03, 2017, 08:02:23 pm
content: I made a run at getting this built on MacOS until I found out that there's no working GdkGLContext for gtk3/Quartz. For what it's worth Clang really doesn't like the combination of const keys and the use of the assignment operator with STL maps, which is all over the place in the code (const UUID).Looks interesting though, keep at it man.

author: Zom-B
author_rank: Regular Contributor
timestamp: February 03, 2017, 11:59:54 pm
content: I'd really like to work together with you, however I'm a seasoned Java engineer. I can write 50 classes in Java without compiling once, and when I'm done it works. When I'm programming ant other language, I have to constantly check my bearings as I'm not even close to as fluent as I am in Java. In Java, I've done OpenGL, .dll/.so interfacing and you name it! (yes, I sinned in all the things that break portability, but I also know how to maintain it when needed so.)Also, I dispise C/C++ because in the past at several times I tried to compile something I needed to work with, followed the the how-tos to the letter, installed all the dependencies, and still got mysterious compile errors that can't be googled. It's worse than pandora's box, so I just hate it now.

author: Lukas
author_rank: Frequent Contributor
timestamp: February 05, 2017, 11:06:13 pm
content: Quote from: blkdev2 on February 03, 2017, 08:02:23 pmCan you give the output of clang? I've compiled horizon with clang 3.9.1 on Linux without errors.

author: blkdev2
author_rank: Newbie
timestamp: February 06, 2017, 03:46:15 am
content: Quote from: Lukas on February 05, 2017, 11:06:13 pmSure. It's actually an issue of libc++ vs libstdc++. I'd try the latter but the version of libstdc++ that ships with MacOS is now outdated and doesn't support C++14 features. What you get with libc++ is endless variation on the following theme:Code:In file included from pool/symbol.cpp:1:In file included from pool/symbol.hpp:2:In file included from util/uuid.hpp:8:.../Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:627:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:305:15: error: no viable overloaded '='first = __p.first;~~~~~ ^ ~~~~~~~~~/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:650:15: note: in instantiation of member function'std::__1::pair<const horizon::UUID, horizon::Text>::operator=' requested here{__nc = __v.__cc; return *this;}^/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:1200:35: note: in instantiation of member function 'std::__1::__value_type<consthorizon::UUID, horizon::Text>::operator=' requested here__cache->__value_ = *__first;^/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:1141:9: note: in instantiation of function template specialization'std::__1::__tree<std::__1::__value_type<const horizon::UUID, horizon::Text>, std::__1::__map_value_compare<const horizon::UUID, std::__1::__value_type<const horizon::UUID, horizon::Text>,std::__1::less<const horizon::UUID>, true>, std::__1::allocator<std::__1::__value_type<const horizon::UUID, horizon::Text> >>::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<const horizon::UUID, horizon::Text>, std::__1::__tree_node<std::__1::__value_type<const horizon::UUID, horizon::Text>,void *> *, long> >' requested here__assign_multi(__t.begin(), __t.end());^/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:928:21: note: in instantiation of member function'std::__1::__tree<std::__1::__value_type<const horizon::UUID, horizon::Text>, std::__1::__map_value_compare<const horizon::UUID, std::__1::__value_type<const horizon::UUID, horizon::Text>,std::__1::less<const horizon::UUID>, true>, std::__1::allocator<std::__1::__value_type<const horizon::UUID, horizon::Text> > >::operator=' requested here__tree_ = __m.__tree_;^pool/symbol.cpp:142:9: note: in instantiation of member function 'std::__1::map<const horizon::UUID, horizon::Text, std::__1::less<const horizon::UUID>, std::__1::allocator<std::__1::pair<consthorizon::UUID, horizon::Text> > >::operator=' requested heretexts = sym.texts;^util/uuid.hpp:11:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' argument has type 'const horizon::UUID', but method is not marked constclass UUID {^util/uuid.hpp:11:8: note: candidate function (the implicit move assignment operator) not viable: 'this' argument has type 'const horizon::UUID', but method is not marked constThis crops up anywhere you have something of the formstd::map<const UUID, T>because the key type is not assignable. I think this is a violation of the standard, and this person's argument is sound:http://stackoverflow.com/questions/27221221/assignement-operator-requirement-for-key-type-in-stdmapHowever, note that I am not a C++ language lawyer and this is not legal advice! Mainly I can't think of any practical reason to do this, and it seems like just a gratuitous use of const. There were also similar issues that cropped up with with const UUID fields.After liberal application of grep/sed I was able toalmostcompile the code, but on discovering the missing GTK implementation I threw in the towel.

author: hlavac
author_rank: Frequent Contributor
timestamp: February 06, 2017, 07:02:14 pm
content: Yep you cannot put const types into a std:: container. It is not allowed by the standard.

author: Lukas
author_rank: Frequent Contributor
timestamp: February 18, 2017, 09:03:57 pm
content: Finally, there are 64-bit windows binaries:https://github.com/carrotIndustries/horizon#quickstart-using-the-project-managerNo need for "command line magic" any more after initially setting up the pool.

author: nctnico
author_rank: Super Contributor
timestamp: February 18, 2017, 11:03:29 pm
content: Any screendumps? I'd like to see some!

author: alexanderbrevig
author_rank: Frequent Contributor
timestamp: February 18, 2017, 11:13:17 pm
content: https://github.com/carrotIndustries/horizon/tree/master/screenshots

author: alexanderbrevig
author_rank: Frequent Contributor
timestamp: February 18, 2017, 11:46:51 pm
content: Got it working on MSYS2 following the instructions.Never mind the goofy schematic, just tried out various things.I think you've got a lot of nice ideas going here Lukas! Very nice code too[I've just spent some hours trying to figure out the KiCAD code base - not that it's fair to compare but at least I understand everything here.... hehe]Are you trying to solve a specific niche/need? Tried to find a few sentences about your vision for this. Would probably indicate what kind of pull requests you'd be likely to approve.F.ex: UI icon? Interactive first time tutorial? A larger pool? Script interface [i.e would be nice to store 'macro like' commands, like for instance binding 10k to place a 10k resistor]? 3d view of PCB?Excellent work, I like it

author: Lukas
author_rank: Frequent Contributor
timestamp: February 19, 2017, 12:59:14 am
content: Thanks for the nice wordsAnd congrats for being the first one reporting getting horizon to build and run.Well, I've been dissatisfied with KiCad and figured starting from scratch is more fun than trying to make KiCad what I want it to be. Right now, my focus is on getting things more stable and polished as well as some developer documentation to attract more of them.Some vague list of planned near-time features in no particular order:improve pool browsers, especially the "place part" one by supplying a non-modal part browserUI for constraints (net classes, clearances) manually editing json and juggling with UUIDs clearly isn't the way to go...DRCUI for CAM jobsActually, there's an icon:https://github.com/carrotIndustries/horizon/blob/master/icon.svgCurrently, it's only used for the project manager since this one is supposed to be the primary user-facing application.

author: Mechatrommer
author_rank: Super Contributor
timestamp: June 05, 2017, 06:30:46 pm
content: well. if only we have the exe ready, we dont mind crashing exe as long as we have experienced it a little bit to tell something about it. anybody who mourn about crashing app he should make one his own... btw, is this Altium like one GUI for all interface? or KiCAD/Eagle/DipTrace like each exe for each pattern, component, schematics, pcb separately?

author: jwm_
author_rank: Frequent Contributor
timestamp: June 05, 2017, 06:57:06 pm
content: My dream for an EDA suite would be the ability to edit the electrical part of the schematic in a version controlled text file in a clear and useful format with macros and modern language features and have the actually making the schematic diagram pretty be completely independent of specifying the electrical connections. (And optional if I wanted to jump straight to layout). I hate that the aesthetic design of the schematic is intermixed and jumbled with the electrical design.

author: Lukas
author_rank: Frequent Contributor
timestamp: June 06, 2017, 04:17:22 am
content: Quote from: Mechatrommer on June 05, 2017, 06:30:46 pmThere are some over there:http://0x83.eu/horizon-zip/Actually it's more like the second one, even if there's just one exe started with different parameters to become schematic/board/etc editor. All editors are mostly the same, apart from the other button or sidebar more or less.

author: Mechatrommer
author_rank: Super Contributor
timestamp: June 06, 2017, 10:16:02 am
content: Quote from: Lukas on June 06, 2017, 04:17:22 amis it 64 bits version? because i tried to open horizon-prj.exe it said not a valid Win32 application. i'm using 32 bit OS...

author: Lukas
author_rank: Frequent Contributor
timestamp: June 09, 2017, 05:49:13 pm
content: Yeah, the binaries I provide are 64 bit ones.

author: Lukas
author_rank: Frequent Contributor
timestamp: October 20, 2017, 04:59:26 pm
content: Several months later, its' time for an update on horizon:Apart from usability improvements like UI for part and project management, horizon now has a rule-driven interactive router, DRC and much more. See for yourself:https://github.com/carrotIndustries/horizon#horizon-is-a-free-eda-package

author: Lukas
author_rank: Frequent Contributor
timestamp: October 25, 2017, 12:31:16 am
content: Getting started with horizon has become super easy:https://github.com/carrotIndustries/horizon/wiki/Getting-startedThere are binaries for windows as well. All features now have a (hopefully easy to use) user interface, no more shell wizardy required.

author: Mr. Scram
author_rank: Super Contributor
timestamp: October 25, 2017, 01:43:29 am
content: This looks very interesting. Can you tell us a little more about your long term vision? Are you planning to open up development, possibly at the cost of control over the project and going towards a KiCad type situation? Or are you planning to stay in control more, at the risk of development dying when you lose interest?From a usability point of view: are you planning to incorporate things like simulation or integration with CAD software like Solidworks?

author: Lukas
author_rank: Frequent Contributor
timestamp: October 25, 2017, 08:18:46 am
content: Quote from: Mr. Scram on October 25, 2017, 01:43:29 amSimulation is an explicit non-goal for horizon right now since I'm focusing on making a great PCB tool. Altium seems to contain some sort of SPICE as well, I've never heard of anyone using that... For my part, I'm perfectly fine with LTSpice. STEP export is on my mid-term roadmap though

author: ElektroQuark
author_rank: Unknown
timestamp: October 25, 2017, 08:21:33 am
content: What about the development part?A one man band?

author: alexanderbrevig
author_rank: Frequent Contributor
timestamp: October 25, 2017, 10:20:19 am
content: Just wanted to chime in and let everyone know that the windows binary and the tutorial works flawlessly.I've been a lurker of your project Lukas, good work!Also curious if you will open up development at some point.EDIT: It would be great to see a complete project down the line. Something ready for manufacture export/gerber.

author: Lukas
author_rank: Frequent Contributor
timestamp: October 25, 2017, 05:59:20 pm
content: Nice to know that things actually workFor now horizon is a one man show, but there's no reason why it has to stay this way. If anyone's interested, I'm happy to merge pull requests. Some things that may be suitable for newcomers to implement:- ERC- Thermals in planes- More DRC- Supporting the diffpair feature of the kicad routerQuote from: alexanderbrevig on October 25, 2017, 10:20:19 amThat was my initial idea with the demo project, but after some time I was more interested in development instead... But yeah, maybe it's best not to develop something myself, but just redo something simple like an Arduino or dave's microcurrent in horizon.

author: tycz
author_rank: Regular Contributor
timestamp: October 26, 2017, 01:12:01 pm
content: Lukas,I tried your recent build (horizon-2017-10-24-0150).The program is very crashy, particularly when trying to close/cancel various dialogs. The schematic editor seems to require keyboard commands to operate. If I click on the help button it pops up a keyboard commands list in a modal dialog. Am I expected to commit the command list entirely to memory before I begin? Most commands are listed twice (with different keys) for no apparent reason.Now I seem to have broken something. I can't create a new project or open the example project. The error provided is 'not found' in both cases.I noticed you are using mm units on your schematic. You may regret this decision in the future. I recommend going unitless for schematics otherwise you end up with users that have different ideas about grids and component sizes making components which have poor compatibility with one another. Kicad users have these problems when sharing symbols for example.I don't understand how to use the pool manager (horizon-pool-mgr). The part creation process looks overly complex and does not appear to be documented on your website. How do I create a schematic symbol?

author: Lukas
author_rank: Frequent Contributor
timestamp: October 26, 2017, 01:50:02 pm
content: Quote from: tycz on October 26, 2017, 01:12:01 pmWhich ones? What have you done before?Quote from: tycz on October 26, 2017, 01:12:01 pmYeah, horizon is mainly keyboard driven. To start tools, you may as well hit the space bar. This will bring up a searchable menu. I don't want to have a toolbar that consists of mostly meaningless icons. There are multiple key sequences to hopefully suit many users tastes.Quote from: tycz on October 26, 2017, 01:12:01 pmLooks like you trashed the pool's database. Open the pool manager and click "Update pool".Quote from: tycz on October 26, 2017, 01:12:01 pmSince you're eventually going to print schematics, I opted for using units. The only available grid for schematics and symbols is 1.25mm.Quote from: tycz on October 26, 2017, 01:12:01 pmIt's somehow documented on the wiki:https://github.com/carrotIndustries/horizon/wiki/Working-with-the-Pool-Manager-and-Part-WizardFor schematic symbol: Either use "Create symbol for unit" in the pool manager, or use the "Edit Symbol" button on the second page of the part wizard.

author: boyddotee
author_rank: Contributor
timestamp: October 26, 2017, 03:07:18 pm
content: New here but been lurking around for years.I just spent the last couple hours playing with Horizon and I think its pretty good, and quite easy to pick up, though i only found the shortcut/command menu by accident (spacebar), not one of those who often reads the manuals. In my opinion its already miles ahead of Eagle which makes me personally want to pull my teeth out.QuoteI would echo this half the industry uses imperial mil, i instinctively tried entering a number and then mil in a dimension box but it took it as mm as many cad packages will do the conversion for you.QuoteCan/Will the keyboard shortcuts be changeable by the user?

author: tycz
author_rank: Regular Contributor
timestamp: October 27, 2017, 08:46:19 am
content: Quote from: Lukas on October 26, 2017, 01:50:02 pmBut why is the help dialog modal? It would be much more helpful if I could use the program and see the command list at the same time.Quote from: Lukas on October 26, 2017, 01:50:02 pmHere's how I corrupted the pool database.Quote from: Lukas on October 26, 2017, 01:50:02 pmNot necessarily. I haven't printed schematics in years. Most engineers I know just send PDFs to one another.After playing with it some more, I realised it's just like Altium schematic. The general grid is too fine and the mouse is always snapping to things. It's very off-putting.

author: Lukas
author_rank: Frequent Contributor
timestamp: October 27, 2017, 09:56:07 pm
content: Quote from: boyddotee on October 26, 2017, 03:07:18 pmNice to hear that!Quote from: boyddotee on October 26, 2017, 03:07:18 pmYeah, converting from imperial units is something missing for sure. I'm happy to accept pull requests for thishttps://github.com/carrotIndustries/horizon/blob/master/widgets/spin_button_dim.cpp#L21is the place to start hacking.Quote from: boyddotee on October 26, 2017, 03:07:18 pmSo far, they're hardcoded. Making them user-configurable will be a bit harder than simply writing a config file from the interactive manipulator since the imp isn't a single-instance application. So i'll probably have to go the route via the project manager.QuoteEvery schematic capture application I've ever used worked that way. There's a grid and pins are aligned at to it.QuoteThat's somehow fixed in the latest version as well. The windows file dialog doesn't seem to be usable for creating folders (that was the first error message), so you selected the "passive" folder. To understand why things broke, we'll have to take a look at what the pool update function does for packages. Packages are folders in the pool since they consist of a package.json for the package and a "padstack" folder for custom padstacks. The pool update function recursively traverses the pool's directory looking packages. If a directory contains a package.json, it's considered a package directory and isn't traversed any further. By creating a package in the passive folder, the pool update function regarded this directory as a package and thus forgot to add all the packages in it. This caused the function to fail when updating the parts since these were expecting the packages to be there.The pool manager now forbids creating packages in non-empty directories.

author: tycz
author_rank: Regular Contributor
timestamp: October 29, 2017, 06:22:34 am
content: Quote from: Lukas on October 27, 2017, 09:56:07 pmYour software does have a grid and the pins do align to it, you have got that much right. The problem is the spacing between the grid points is too fine in the schematic editor relative to the size of text and symbol pin spacing. When the grid is disproportionate to the symbols, the disadvantage is the user must work at a higher zoom level (wasting screen real estate) or with poor dexterity (wasting time trying to line up symbols and wires pixel hunt style).The same ill fitting grid is present in the symbol editor, where it is far too course. Symbols usually have more detail than schematic sheets so why is the grid the same (and unchangeable)? The screen shot attached illustrates this. It shows a capacitor symbol from the example project open in the symbol editor. The lines are off the grid. This symbol could not have been drawn with this software in its current state!I've been trying to create a custom schematic symbol of my own and have not succeeded. This pool manager thing is a great pile of unintuitive rubbish. It constantly pops up file save dialogs asking me to save .json files. Why do I need to save these files manually? What do I call them? Where do I put them? "Do you want to overwrite the previous file something.json ?"I wanted to provide some constructive criticism, because I want to support new PCB design software, especially if it's open source. After a couple of hours of spent with Horizon I'm at a loss for words. My patience ran out before I even got to the board layout section...

author: Lukas
author_rank: Frequent Contributor
timestamp: October 29, 2017, 01:00:07 pm
content: Yeah, it's non-obvious, but you by holding down the Alt key, the grid will get shrunk by a factor of 10. That's how the capacitor symbol was drawn. For pretty much every other symbol that users will create (box with pins on the edges) the grid works just fine. I really don't see your issue with the grid, KiCad works the same and I didn't find anything wrong with it. Which software gets it right? You mentioned it was just like Altium. Since many people in this forum seem to like Altium in general, I think that isn't a bad thing.QuoteAll symbols etc are individual files, so they need to be saved somewhere. Seehttps://github.com/carrotIndustries/horizon/wiki/The-PoolOn how to call them, just take a look at the existing files.BTW, why a symbol? Symbols don't really "define" pins. They just display the pins from their unit. See the wiki page linked above.QuoteThe Pool manager definitely is one of the less-polished things in horizon, that's why there's "WIP" in the thread's title.

author: tycz
author_rank: Regular Contributor
timestamp: October 30, 2017, 02:01:26 am
content: Quote from: Lukas on October 29, 2017, 01:00:07 pmSilly me, I suppose I should have read the source code to find that out.Quote from: Lukas on October 29, 2017, 01:00:07 pmThis is not true. Discreet components are not drawn as boxes on a grid. Also, some users will want to create all their own symbols and not use any provided.Quote from: Lukas on October 29, 2017, 01:00:07 pmThe version of Kicad that I have installed (4.01) has no less than seven choices for grid size in the options. Horizon currently has a grid size equivalent of Kicad set to a 50 mil grid. I'm saying that it's more efficient (for the user) to have the grid set the equivalent of Kicad set to a 100 mil grid. For reference, the Kicad component library policy states that all symbol pins must line up to a 100 mil grid.My point about the grid units still stands. A multiple of 1.25 makes the coordinates difficult to use as a point of reference. Anything other than a direct relationship between coordinates and the grid is sub-optimal. For examples of (free) programs that get this right: Kicad (set to 100/10 mil grid), PCB Elegance, Bsch3v.The grid is by no means the biggest problem with Horizon, it's actually rather minor in comparison to some of your other interface choices. The difference is that the other problems will eventually be corrected when your users complain about them, but the grid size is so fundamental that by the time users complain it will probably be too late to do anything about it. Either that or Horizon will end up with seven grid choices, just like Kicad.Quote from: Lukas on October 29, 2017, 01:00:07 pmQuote from: Lukas on October 29, 2017, 01:00:07 pmThis horrible mess of the Pool manager UI and the assortment of different(?) .json files (please learn what file extensions are for, there's more than just .bin and .xml and .json). Is it not the purpose of the manager to manage the data for the user? It feels like must have total understanding of the contents of every .json file before I can use this software.You keep pointing to your wiki. There isn't enough information there for me to figure how this shit works in a reasonable amount of time. Now I'm fed up with it.

author: Ysjoelfir
author_rank: Frequent Contributor
timestamp: November 20, 2017, 08:43:32 pm
content: Quote from: tycz on October 30, 2017, 02:01:26 amIs it just me or are you complaining (in a pretty rude way) because a "Work in Progress" software is not working the way YOU think it has to work or that you cant find an allmighty help function in a wiki for a "Work in Progress" Software? Seriously?I for myself didn't try the software because I am aware of the WIP part and don't understand enough from github, coding and all that stuff to be particulary helpful. But I subscribed to the thread because I am interested in the software and think it has some potential. So I am always happy about any update here and hope that the project will keep going

author: Lukas
author_rank: Frequent Contributor
timestamp: November 20, 2017, 11:17:13 pm
content: There have been some usability improvements to the pool manager lately and horizon gained support for things such as diffpairs, thermals, dragging tracks, or vias without a track attached.You don't need to be into coding in any way to use horizon at the moment. If you're using windows (7 or later, 64 bit only) you can use the windows binaries over athttps://github.com/carrotIndustries/horizon/wiki/Getting-started#windows

author: tycz
author_rank: Regular Contributor
timestamp: November 21, 2017, 06:28:19 am
content: Quote from: Ysjoelfir on November 20, 2017, 08:43:32 pmThe wiki says "It's far from finished, but the overall architecture is there." I took that to mean I should be able to see through a basic design (I was trying to make a two transistor LED flasher) all the way from schematic to gerber. I got stuck at the component/part creation step. I found this part of the software to be difficult to use and poorly documented. The wiki claims that part creation is easy and part management is simple. I thought I would relate my experience as it was clearly not what was intended.Quote from: Ysjoelfir on November 20, 2017, 08:43:32 pmWhat a piss weak excuse! Never mind me, sit down and try the software if you find it interesting.

author: Ysjoelfir
author_rank: Frequent Contributor
timestamp: November 21, 2017, 08:47:57 am
content: Quote from: tycz on November 21, 2017, 06:28:19 amJep, definitely rude.When I find the time I may take a look, but I will most definitely not do so just because some rude guy on the net tells me to do that. Sorry.

author: Lukas
author_rank: Frequent Contributor
timestamp: November 21, 2017, 10:34:47 am
content: Just for reference. At least one user over athttps://www.mikrocontroller.net/topic/417908managed to create new parts, schematic and board using horizon, go figure.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 22, 2018, 03:12:25 pm
content: Brief update: Apart from the usual continuous improvement, the 3D preview now supports STEP models for packages.

author: SiliconWizard
author_rank: Super Contributor
timestamp: January 22, 2018, 06:44:35 pm
content: Just got to build it on MSYS2 (mingw64). There was no issue after installing all the required dependencies (quite a few).Played with it a little.Just a few remarks for now:- I like how the split parts are handled (tried with the PIC32 component);- I like antialiased graphics in general, but I think that antialiased graphics in Horizon doesn't look too good. I tried all the MSAA options, I don't really like how it turns out;- Many functions are only available as keypresses apparently. The help windows do help, but I think most functions should be made available through others means as well (menus, toolbars, ...);- I like the part reference auto-placement. This is a pain in most EDA packages when you rotate parts, in Horizon it's rather well done;- The parts management tends to remain a bit obscure;- I didn't spend much time trying, but I found routing tracks in the layout editor not very intuitive;- There is a rather complete DRC feature, but there doesn't seem to be any kind of connectivity check (or maybe I missed it?).All in all, it's an impressive work and there are some good ideas in it. But I think you should now focus on usability before implementing a lot more features.Anyway, just my 2 cents.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 22, 2018, 07:24:46 pm
content: Quote from: SiliconWizard on January 22, 2018, 06:44:35 pmYou don't actually need to build it yourself anymore, there are prebuilt binaries for every commit:https://ci.appveyor.com/project/carrotIndustries/horizon/build/artifactsQuote from: SiliconWizard on January 22, 2018, 06:44:35 pmThat's why I made it optionalQuote from: SiliconWizard on January 22, 2018, 06:44:35 pmThe tools specific to the selection are available from the context menu. All tools are available from the tool popover as well. Press space to show it.Quote from: SiliconWizard on January 22, 2018, 06:44:35 pmYeah, it's definitely more complex than other EDA packages that only have symbol and package, but it allows for greater flexibility and prevents duplicate symbols.Quote from: SiliconWizard on January 22, 2018, 06:44:35 pmTry reducing the grid size. The router is the KiCad one, so there's not much I can do about it. But yeah, it takes a bit to get used to.Quote from: SiliconWizard on January 22, 2018, 06:44:35 pmIn which way? In being not connected? Yeah, that's still missing. Misconnected nets will get flagged by the clearance checker.

author: SiliconWizard
author_rank: Super Contributor
timestamp: January 24, 2018, 02:27:38 pm
content: Quote from: Lukas on January 22, 2018, 07:24:46 pmI know. I just tend to go all the way to the build step when I evaluate open source software.Quote from: Lukas on January 22, 2018, 07:24:46 pmI figured that. I'm just saying that I'd like to be able to enable it and enjoy the result.Do you use OpenGL for the schematics and layout rendering? I have used that before and can confirm that getting good results with antialiased 2D graphics in OpenGL is difficult. I am using the project "nanovg" for some projects of mine and it's the best result I've got so far for OpenGL 2D graphics. Still, fonts never look perfect with OpenGL, not even with nanovg, in which they look a bit better than I used to get before though.Usually, cairo graphics look better than OpenGL-based, but whereas cairo is decently accelerated on Linux, it's pretty slow on Windows, so that would probably exclude it for a CAD program, at least if it's designed to be multi-platform. If you try KiCad with the cairo front-end, you'll know what I mean.Quote from: Lukas on January 22, 2018, 07:24:46 pmI didn't always find all the tools. Didn't know about the "space" shortcut to make it pop up though. Yet another keypress you have to know about.But yeah, once you know that trick, it's better.Quote from: Lukas on January 22, 2018, 07:24:46 pmExactly. As in not connected. Making sure a complex design is completely routed without this feature can lead to suicide in some cases.Another thing I didn't figure out how to do (or don't know if it's possible) is to modify parts values directly from the schematics. For instance, changing a resistor from 10k to 20k. The value field is always grayed out. Changing the part completely when you just want to change a value is a royal pain. I understand that OTOH, it allows to always get the right manufacturer part number, but there certainly is something to work on here. Unless we can and I just missed how to do it...

author: Yansi
author_rank: Super Contributor
timestamp: January 24, 2018, 03:00:28 pm
content: What's so freaking complicated about having the grid user settable to ANY arbitrary step, including NO GRID setting?I think in this case Eagle is only the one tool that get the grid function right, including the ALT to switch between two arbitrarily user set grid sizes.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 24, 2018, 08:01:51 pm
content: I went with OpenGL since one of my goals for horizon is to have a single canvas/editor for everything from symbol to board. Drawing schematics with OpenGL is an overkill for sure, but it keeps overall complexity down. (And it's certainly better than KiCad's wxDC)QuoteIn fact, if you're lazy, space is the only shortcut you'll need to remember. Just hit space and search for the tool you want to use.QuoteThat's why I made changing parts a low-effort operation: Use the tool "assign part" to change the component's part, no need to re-add the resistor. Having a generic 12k 0603 resistor without any part number associated with it is worthless for the BOM (BOM export still missing/WIP).Quote from: Yansi on January 24, 2018, 03:00:28 pmYeah, there's still some room for improvement on how grids are handled. I don't see your first point, you can just type in "1.234mm" and it'll work. As a stand-in until there's more than one grid, holding down alt will divide the grid by a factor of 10.

author: nctnico
author_rank: Super Contributor
timestamp: January 24, 2018, 09:01:37 pm
content: Quote from: Lukas on January 24, 2018, 08:01:51 pmBetter keep it that way! Just changing values on parts is very bad practise because you can never create an accurate BOM without also changing the manufacturer's part number and other things like the footprint, etc. Keep in mind that a component is way more than just a value, symbol and a footprint.

author: free_electron
author_rank: Super Contributor
timestamp: January 25, 2018, 11:16:23 pm
content: I played around with it a bit...First of all :One thing that annoys the snot out of me ( or : i can't find how to do it .. ) is command retention.schematic symbol editor : invoke command. lets say Draw Line. I click left mouse , click left mouse somwhere else ,click right mouse somewhere else to end operation.To draw another line i need to reinvoke DL.That should be changed to :click RMB : terminate current drawing operation but retain current command. Only when you click it again (rmb) or hit <esc> do you fall out of the DL command.to draw two lines :DLlmb -> rmb terminates current linelmb -> rmb terminates current linermb : terminates dl since no line drawing is in effectCosmetics : i want to adjust all colors of the UI. i am colorblind and some of the colors in use are VERY confusing. i also want a full size cursor ...Editing. when clicking a line the line highlights but i cannot move it unless i invoke a command... that's not good. you need to strive to have a UI that needs as few possible clicks/ keyboard hits ... if i grab a line i should be able ot move it. if i grab a line by an endpoint : i move that endpoint and attached lines rubberband. if i grab a line in the center : the line splits and a new joint is inserted. if i grab the line anywhere else : the line moves rubberbanding the endpoints.editing seems to be not possible on 'groups'. i selected a bunch of lines and changed width : only one line changed width ... until i clicked the checkbox. there is no need for the checkbox. simple apply immediately to the selection.there is no 'cancle for edits...' i would expect if i hit <esc> it does not apply the changes.Undo / redo ddbuttons ? we really need a small ribbon of buttons at the top ... just having keystrokes is .. meh ...Help : it is not immediately obvious that the key sequence list is actually scrollable.. not until you hover over the edge of that window... that is bloody annoying. don't make too fancy UI's. this is not a webpage.Selection : there is no need for selection modifiers : select from top left to bottom right : only elements fully included. select from bottom right to top up : select 'touching' elements.i would also like to see a select line command : instead of drawing a box : you draw a line. anyting that is touched by that line is selected.i would like to see a 'subtract' from selection just like holding down CTRL lets you 'add' to an existing selection i would want ALT to subtract from a selection ( or have a toggle operation. : when holding CTRL : if the item clicked is selected : deselect it from the group. )command reentry : i really want to see command re-entry. the ability to invoke an operation while doing another. i am in the middle of drawing a line and see something is in the way : i can invoke the move operation : select an object or group : move them end when ending the move i am back in the drawing operation at the last coordinate and can continue what i was doing.there is a rotate and mirror. i would like to see a flip around X and flip around Y operation.selection behavior is not consistent. if i try to grab a line using a 'box drawing' operation : i need to trap at least half of the line to include it. on a pin : the moment i touch it it grabs ...move operation : i would like ot be able to pick the 'origin' now it picks wherever the mouse is as origin. think like this : Move ( m) from here (LMB) to there (lmb)i do not like the way you build parts. you need to define the pins first in one editor, then enter another editor to place them. why can't this happen on-the-fly ?

author: free_electron
author_rank: Super Contributor
timestamp: January 25, 2018, 11:33:39 pm
content: Schematic editor : same comment as in symbol editor : retain the invoked command ! colors . cursor sizes ...Place part : i pick a part in the browser . click in the schematic to place it. and that's it. What if i need the same one again ? .. i need to do it all over ... that is not good.this should be :PP -> pick part in browser -> click 'PLACE' (or hit <ENTER>) LMB : place instance. LMB : place another instance , LMB : place another instance RMB :end of placing but retain command-> go back into part browser to pick something else. <ESC> end part placementmoving parts needs to happen without command invocation. holding down the part and moving the mouse should move the part.part rotation : when rotating the part 90 degrees you also rotate the designator and value 90 degrees. those should stay horizontal....part properties. can we make other parameters visible. for example in a capacitor i specify working voltage ... so i want to see C1 10uF 25V for a resistor i may wan to see 1K 1%hitting <space> : again it is not immediately obvious that popup is scrollable... make that scrollbar visible ! that 'autodimming' and hiding-themselves scrollbar is annoying ! UI elements should not play hide and seek.flip around x and y axis commands are helpful'stealing' an existing part. assign the <INSERT> key on the keyboard to make a duplicate of whatever is under the mouse cursor.so if i point to a capacitor and hit 'insert' it makes a duplicate of that exact part , rests the deisgnator of the copy and lets me place that part with LMB. that speeds up drawing schematics as you often need more of the same ( like adding decoupling caps or resistors as your schematic grows )Overall comment : The basic 'manipulation' of objects is lacking functionality.click a part to select. okclick something else picks this part : deselect all others : ok.hold CTRL : adds to existing selection. : okhow do i 'subtract' from selection ? CTRL should be a 'toggle' operation : if part click is not selected : add it to selection. if it is already selected 'subtract' it from selection.use the way many other cad programs workdrag top left to bottom right : only elements fully enclosed are selected / added to selection (<CTRL> key)drag bottom right to top left : only elements 'touching' rectangle are selected or added <CTRL key>moving a part or selected items needs to be commandless.: hold LMB and move. release LMB to 'drop'. if you change your mind prior to dropping : hit <ESC> to cancel operation.

author: SiliconWizard
author_rank: Super Contributor
timestamp: January 26, 2018, 03:36:19 pm
content: Quote from: nctnico on January 24, 2018, 09:01:37 pmThat's right when you're at (or close to) the manufacturing stage, and/or when you're modifying an existing design.When you're at the early design stage, it can get pretty annoying. Not all parts are linked to any specific manufacturer at this stage, especially passives.You may also want to use the schematics editor just to draw some schematics for illustration purposes and not for manufacturing purposes.Even for manufacturing, not everyone/every company will have the same way of generatings BOMs.In many cases, the BOMs are post-processed and verified before sending orders anyway, so to be able to really make use of this feature on a large scale, it would be more interesting to be able to link your parts to some kind of ERP database, instead of maintaining your own, CAD-centric database, which is a whole other endeavour.Trapping users in just one way of doing things just because you think it's right is rarely a good idea.One way that I would find a lot more flexible would be to allow the user to change values/attributes at will, but automatically check them against manufacturers parts numbers when generating the BOM.In case of a detected discrepancy (or the absence of any manufacturer's PN for a given part), the software would allow you to search your database and assign one or create a new entry if none is a match.Additionally, for some parts (again, especially for passives), it may be more relevant to be able to attach some kind of specification sheet rather than tying it to a specific vendor. Whether you work at a company that has a buying department or you subcontract buying your components by the company doing your board assembly, you don't always decide yourself what the final PN for each part will be (unless you have extremely specific requirements such as in safety related products), and I think that short specs for this kind of parts is a lot more productive and to the point than specific part numbers. Of course, you may use the MPN field for your own spec sheet ID in this case, but that may get confusing.Just my 2 cents.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 26, 2018, 07:03:08 pm
content: First of all, thanks for your comments on the interaction side of things, your the first one to provide reasonable feed back in that regard.Quote from: free_electron on January 25, 2018, 11:16:23 pmI got your point, looks reasonably easy to implement. There are two ways this feature may come into existence:a) RMB resets the tool, so it's just like you started it, key presses will go to the tool.b) RMB puts the tool into a "floating state", LMB will make the tool active again, but pressing a key will make the tool exit and start the requested tool.In any case, ESC will exit the tool. Is that about what you're after?Quote from: free_electron on January 25, 2018, 11:16:23 pmMay take some time, but is certainly doable. Can you elaborate what you're envisioning by a full size cursor? A crosshair that extends to the edges?Quote from: free_electron on January 25, 2018, 11:16:23 pmSeems doable.Quote from: free_electron on January 25, 2018, 11:16:23 pmI never liked property editors that display placeholder values when selecting multiple objects, that's why the property editor always displays a specific object with the possibility to propagate the value to the other objects. Maybe this can be turned into a setting.Quote from: free_electron on January 25, 2018, 11:16:23 pmThe hidden by default scrollbars are a Gtk thing. IMO it's a sane decision since it reduces visual clutter. You can get back the always-visible scroll bars by creating the environment Variable GTK_OVERLAY_SCROLLING and set it to 0.Quote from: free_electron on January 25, 2018, 11:16:23 pmI've always found the selection behaviour based on the direction of the box to be a bit counter-intuitive, but an "auto" selection qualifier should be possible. The "paint" selection tool (available from the selection menu at the bottom left corner) does select by line.Quote from: free_electron on January 25, 2018, 11:16:23 pmI had that on my mind for some time, but couldn't motivate myself to actually implement it. Thanks for the nudge.Quote from: free_electron on January 25, 2018, 11:16:23 pmI kinda expected to hear that from youI'm afraid, but this feature is unlikely to come to life in the near future, since tools will then have to deal with the document being modified behind their back.Quote from: free_electron on January 25, 2018, 11:16:23 pmSuggestions for shortcuts?Quote from: free_electron on January 25, 2018, 11:16:23 pmBy default, an object is selected as soon as its center (the diamond) is inside the selection box.Quote from: free_electron on January 25, 2018, 11:16:23 pmWhat's the difference between these two? Currently, you specify the origin first, then start the tool. Both interactions allow for the same operations.Quote from: free_electron on January 25, 2018, 11:16:23 pmSymbols aren't the source of truth for pin definitions, the units are. Somehow tacking the unit editor onto the symbol editor to enable simultaneous editing should be within the realm of possibility.

author: Lukas
author_rank: Frequent Contributor
timestamp: January 26, 2018, 07:21:27 pm
content: Quote from: free_electron on January 25, 2018, 11:33:39 pmEasy job, both editors share large amounts of code, so some of the points you mention for symbol and schematic editor will get fixed at once.Quote from: free_electron on January 25, 2018, 11:33:39 pmGreat idea!Quote from: free_electron on January 25, 2018, 11:33:39 pmThis happens for symbols such as resistor and capacitor since these include information on how the text should be placed for all orientations. It's up to the one who draws the symbol...Quote from: free_electron on January 25, 2018, 11:33:39 pmParts already include parameters such as working voltage, but displaying these on the schematic is still yet to come.Quote from: free_electron on January 25, 2018, 11:33:39 pmSo basically, copy-paste with the addition that paste can paste more than once? Easy to implement

author: nctnico
author_rank: Super Contributor
timestamp: January 26, 2018, 09:16:28 pm
content: Quote from: SiliconWizard on January 26, 2018, 03:36:19 pmMake the database right first! Going through all the parts and checking them (even with an automated process) is a real PITA. I used to have a colleague who changed parts values instead of the underlying parts. That caused quite a bit of grief when debugging boards because the parts didn't got updated and the wrong values end up on the assembled boards.

author: free_electron
author_rank: Super Contributor
timestamp: January 29, 2018, 04:55:42 pm
content: Quote

author: Lukas
author_rank: Frequent Contributor
timestamp: January 30, 2020, 09:22:08 pm
content: Just in case someone's still following this thread: There's a new thread for the 1.0 release over atHorizon EDA Version 1.0!

author: Mechatrommer
author_rank: Super Contributor
timestamp: January 30, 2020, 11:27:42 pm
content: please correct your link... quote and copy paste this...Horizon EDA Version 1.0!btw it looks interesting, but wait until i can port it to my 64 bits machine and have time playing with it.

author: Wilksey
author_rank: Super Contributor
timestamp: May 11, 2020, 12:18:16 am
content: I just downloaded the latest version (1.1.0) from the releases on GH and after installing, I created a "pool" and it promptly crashed with an OpenGL error, my OpenGL version on my dev laptop seems to be version 4.1 and below, what version of OGL does it require to run?!?It seems it won't do anything but crash, giving the same OGL error, perhaps installing the latest NVIDIA drivers to the laptop would help but I don't really want to mess around with the graphics drivers if I can help it as last time I had to roll back to the Dell drivers as the NVIDIA ones made it run slower.I have run the GL extensions viewer 6 test and it tests fine all the way up to OGL 4.1 then 4.2 onwards it just says unsupported for my driver.

author: Lukas
author_rank: Frequent Contributor
timestamp: May 11, 2020, 10:47:30 am
content: Can you post a screenshot of the error? That's the first time, I've heard of OpenGL issues on nvidia, since their drivers are usually quite good.

author: Wilksey
author_rank: Super Contributor
timestamp: May 13, 2020, 08:57:38 pm
content: Hi Lukas,Yes, the first one is after selecting the base directory for the pool and clicking the "Create" button, the 2nd one is after I press the "Ignore" button, after this it just crashes with "this program is not responding" etc.I haven't found anything else that doesn't work on this chip with OGL, unless it requires a newer version or has missing extensions that are only available on newer cards etc.If i load it back up and create a new project, it allows me to even though the pool is empty, every button I click on afterwards (sch, pcb etc) does the same, shows that message, then crashes.Cheers

author: Lukas
author_rank: Frequent Contributor
timestamp: May 14, 2020, 02:20:21 pm
content: No idea what causes this, you're not using remote desktop or anything similar? Gtk is sometimes a bit picky when it gets to OpenGL on windows...When opening the schematic/boar editor and they crash, you should get a yellow bar in the project manager window with a button "show output". What's in the output window?

author: Wilksey
author_rank: Super Contributor
timestamp: May 14, 2020, 06:31:38 pm
content: Hi Lukas,I've ran other things with GTK and it seems OK, not sure if they were using OGL though, and no remote desktop / VNC etc, just straight windows desktop.No yellow bar, just crashes the program same as already described, does it store a log externally ?Thanks

author: Wilksey
author_rank: Super Contributor
timestamp: May 14, 2020, 06:34:29 pm
content: Hang on, I managed to stop it crashing completely and go back to the screen,stdout shows nothing,stderr shows:Quotethat is all that it says.