Author Topic: DEX eval by free_electron  (Read 337048 times)

0 Members and 9 Guests are viewing this topic.

Offline rsjsouza

  • Super Contributor
  • ***
  • Posts: 6023
  • Country: us
  • Eternally curious
    • Vbe - vídeo blog eletrônico
Re: DEX eval by free_electron
« Reply #500 on: February 16, 2015, 03:58:33 pm »
Try requesting it as a wish.
http://kov.com/Support/WishList

Iliya, thanks. I filed four wish requests from my post. Hopefully the explanations are clear.

1) Implement a command to set the origin to the center of the part
2) Allow manually entered offsets and/or X/Y coordinates to be applied to a selection of elements
3) Allow manually entering a grid step, or perhaps 100 points per grid
4) Implement snap rulers for adjacent elements
Vbe - vídeo blog eletrônico http://videos.vbeletronico.com

Oh, the "whys" of the datasheets... The information is there not to be an axiomatic truth, but instead each speck of data must be slowly inhaled while carefully performing a deep search inside oneself to find the true metaphysical sense...
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #501 on: February 16, 2015, 06:13:04 pm »
Multiple Selected Object

When selecting multiple objects one of them becomes the dominant objects.
The dominant object is used for alignment.
The dominant object is the one controlled by the properties panel.
If more than one object of is selected, only sensible common properties are changed.
E.g for line setting the start X only sets the start for the dominant object.
Setting the color sets all the selected objects colors.

See attachment.

Hopefully this explains the possible confusion.

NOTE: select more than 1 pad in the part editor, you can set all their rounded corners at once. Press ALT key when clicking on each pad.
« Last Edit: February 16, 2015, 06:19:43 pm by Iliya »
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #502 on: February 16, 2015, 06:43:18 pm »
I ventured in creating a TPS60120 that has a powerPad and vias (I don't care for the ST part, really) and can comment on a few details about footprint creation, as well as free_electron's takes on it.

Problem: DEX only has 1 grid dimension , and can only accept numerical entry in 1 unit type at a time.
I have never used mixed units, especially when trying to reproduce a part from the datasheet. Although it wouldn't hurt to allow this for the folks that want/like it.
The problem is that often you have no choice. You will send out the board and manufacturing will come back : we need pads which are 0.6mm wide  to improve solderability... Damn this is a part that was completely made from imperial units ... The datasheet has the pads as  24 mils. Manufacturing wants to bump them to 0.6mm ... See the problem ? Being able to enter the unit suffix solves that problem immediately. Select the pad , type 0.6mm <enter> and done. The cad software recalculates for me.

We have a historical imperial/metric duality in the PCB world. There is nothing that can change that, except if we abolished all imperial system based parts, but that is not going to happen in the foreseeable future. The same problem exists in the printing world. Pica's, millimeter, mils, DPI, and other 'odd' units. The software in that world solves the problem the same way : let the user enter the suffix and we recalculate it to the scaling system we are in. For example in mechanical CAD programs i can type a thing like 1'2''7/64 : 1 foot 2 inches and 7/64 of an inch. Do i know what that is in millimeters? No ? Do i need to? No ? Should i have to attempt converting it myself using a pocket calculator ? No: We have computers and CAD software. It is expected that they do this.

Having the CAD program do the calculation removes the unit problem. The speed of working goes up and the number of errors goes down. Who was it again that f-ed up in one of the mars landers? That thing shot itself into the ground as opposed to landing... The British (who made the propulsion system)went: well, we thought , you guys being american , you had specified it in miles per second. NASA answered: we are a government institute and fully metric. So, speed was kilometers per second. Oops. 2 billion dollars of scrap metal now pollute a crater on mars...
So now it is mandated on every document that the units are explicitly mentioned. And now the CAD guys are growling cause they have to enter the damn thing every time : more work.

It woulds be like working in an environment where both Ohms and Siemens are commonly used. You very quickly would wish you could enter that suffix and let the computer deal with it. I need a 5000 Siemens current sensing resistor here.. shit, i put in 5 Kilo-ohm ...
Quote
Quote
You can only grab a selection by grabbing an edge. Be careful not to grab a corner because then DEX will scale it  !
I personally don't see this as a big problem.
I do see it as a huge problem, and for this reason : PCB structures is all about dimensions. Dimensions given in numbers. Dimensions that need to be accurate.
Simply selecting a group of carefully placed elements, then taking the corner of the selection and, intentionally or unintentionally, shifting that corner 2 mm to the left and 0.5 millimeter down gives you what ? Something where nobody knows what the impact was on all the elements in the group, apart from being completely wrong now.
Scaling operations should be a deliberate action. If you need scaling that should be hidden under a menu and you deliberately need to invoke that.
The same goes for 'accidentally' moving the origin. I Had carefully set the 'origin point' at a certain stage and am working of this origin point. I Made a selection of a group of elements move them and the origin shifted because the CAD program treats it as a general object.

Origins , pick points should be immutable, unless a specific command is issued to move them. Here is the problem : Datasheets often have missing information in them. They are drafted by mechanical engineers and they will specify, for example the length of the pad, and the toe to toe dimensions of the columns. As PCB designers we really need center to center as that is how PCB programs work. Workaround : set the origin to the toe of one pad , pick the other column up at its toe and move it over by the given distance. Done. No calculations required. I Specified the origin from which i want to work , i gave the cad program the pickup point and the drop off point. CAD program does the rest.

Other things you will run into: sometimes specifying dimensions from one coordinate clutters up a mechanical drawing. So mechanical engineers tend to give dimensions from several 'home' points. in the same drawing you may find a bunch of numbers based on a hole , some other numbers given from one corner and yet another cluster of dimensions given from soe other point in the assembly. LCD displays are a prime example of that. You always have to spend 15 minutes figuring out how the hell you will get the location of that one point you really need ( like the distance between pin 1 and the top left corner of the actual glass so you can indicate where the display window will be).

Being able to set the working origin, and trusting it will stay in place and not move 'by accident', is the key solution here. So the re-positioning of an origin needs to be a deliberate action. Meaning : go to some menu or type some command to 'unlock' it. Once placed it is automatically re-locked.

Shortcomings of DEX in dealing with the above mentioned problems :
- too easy to move the origin , especially by mistake
- moving operations have no explicit 'pick up' and 'drop-off' points
- no snap to object edges, object corners, object edge centers, object centers , no concept of electric grid (This may require additional explanation. I will come back in a moment on this.)

We live in a world where mechanics meshes with electronics, where we have to deal with imperial and metric as well as have to deal with incomplete documentation. Having a flexible and rich tool set in the CAD program solves such problems.

Electrical grid : we have a part that is imperial based, let's say a pad pitch of 25 mils. We are currently working on a metric grid. Right now, if you draw a trace towards that pad the trace does not land in the center. It only snaps to the metric grid.So you end up with a stub of copper that connects off-center. In the PCB world that is a no-no. Manufacturing rules say that a trace shall enter only on a corner , or on the center of a side, except, when the aspect ratio between the trace width and the width of the pad edge is larger than <some number> I can't remember off the top of my head. Since I can't remember, I make it a general rule not to do it, just to simplify my life.

The underpinning reason is the following : a small trace connecting to a large pad becomes a mechanical stress point. Flex the board and that is where it will crack first. Connecting on a corner solves the stress point as , from the traces perspective, the trace gradually widens as opposed to a hard stop. Connecting it in the center of the pad allows for a teardrop structure to be created that adds such a stress relief. Not all boards are 1.62 mm thick. There are even flex boards. So we have to deal with these things. The CAD program has no idea what kind of board we are making. It does not know if this will be a flex board or a thin board or a thick board. It would be cumbersome to have to write design rules for this each and every time. So the solution is: the CAD program needs to have a concept of 'electrical grid'. The electrical grid is a grid that emanates from the center point , or end point of any electrical object in a very localized area. No further than half the objects' size.  So when you approach, on your design grid (doesn't matter if imperial or metric), with a trace, and come within this 'local field' the CAD tool leaves the board grid and starts working of the objects grid. Since the objects grid emanates from the center coordinate of the object, or the end coordinate in case of a trace, you automatically terminate correctly.

The above is another example that differentiates a general purpose CAD tool from a PCB cad tool. The PCB cad tool understands these concepts.

The comments I make are based on the rules that drive the design of a PCB. PCB layout software differentiates itself from other CAD software, and its own competition, by the tool set it gives the user. The richer and more flexible the tool set the more enjoyable the program is. That is what killed OrCad. OrCad was great in its time but it started lacking in functionality. The competition added tools and capabilities and OrCad did not follow. Then they were absorbed by Cadence, mainly to get their hands on the Masstek router, they didn't care about the rest, they had a program and wanted to integrate it. At one point Cadence sent a 'Dear John' letter to its users saying that OrCad PCB was now on life support and that soon they would pull the plug. You should have heard the massive groan at that time.

Talk to users of certain layout tools from Mentor... that all call it 'Tormentor'. it has some really convoluted ways of doing things. Sometimes CAD companies just look at the current tool and go: there just is no fixing this thing as the base platform just is too convoluted... Let's build a new thing, completely from scratch using a different object model. We can't retrofit this in our existing code base as there is no telling what will be broken and how many patches will be undone...

Some of that is companies like Mentor and Cadence actually have several, completely different, tools. One tool is more designed to do this kind of work, another that kind of work.

I Still believe DEX could be a great PCB design tool. The base is there. But, in my opinion, as it is now; it has a sub-par toolset (compared with other CAD programs, not just PCB programs) and is more of a vector drawing program. It has some cool idea's, and even idea's that other PCB packages don't have.

It tries to simplify certain processes like automatically creating a schematic symbol when you work on the footprint, but at the same time sacrifices flexibility. This automatic symbol creation may be great for some, but for others that want the flexibility to create their own shape it is a hindrance. Touch the footprint and the symbol is destroyed.

You can have both. All that is required is an option setting somewhere that says : do not rearrange symbol pins, only add. Or even a per pin flag that says : the user has moved this one by hand, the automatic routine should not touch it anymore.

These are relatively simple things to add, I think, I don't know i am not a real programmer. My skills in programming are mediocre.

Anyway. I Am glad to see it is growing.

In this footprint experiment : the goal is not to make this footprint. The goal is to discover the manipulation toolset DEX has, to do such a thing in an easy way.
So i won't bitch if you get the number of via's wrong or some dimension wrong. That is not the purpose.

The intent is to find out : how can I align these two things ? How can I drop this, here ? How do I work with metric/imperial. What are the commands and where are they ?
That is why I said at the end of the L6203 footprint creation: do NOT use the wizard as base point. The wizard is great and in real life I use those all the time.
But the goal is to discover the base tool set. Using the wizard masks the discovery. The wizard finishes with the 0:0 set to center. I Want to know how I can set it to center when I need to. I May want to tweak the footprint and afterwards reset the origin to center. By having the wizard do that for me I have not discovered where that function is, or even if it exists.

Verbal explanation of CAD steps is hard to follow. I will record a short video showing how i go about designing this thing , making use of as much as the tools in the toolset i have access to.

I do understand that other programs have may have a different toolset. But at the same time I don't think that the tools I use are that 'special', or unique to 1 program, as I find these same base operations in many other programs, even non PCB programs (like Paintshop, Photoshop , Illustrator, Solidworks, Rhino) and even free programs like Paint.net, The Gimp, Inkscape and many more.

And yes I don't sugarcoat problems and can be blunt. So I'm sorry if i step on toes (probably much more than only toe's. I suspect at least up to the knees.)
The program looks great and you get a feeling of 'wow', this thing is killer.

When I run into problem after problem this initial 'elation' very quickly turns sour...  and then i get very cranky.
I've said this many times before : i still think DEX has the potential, but it need spit and polish.

Many people have suggested 'why don't you review this or that'. Because those tools don't come anywhere close to what DEX already has on board. KiCad, up till a few months ago, still required you to assign footprints by hand prior to going to PCB. Such things are unforgivable in 2015. Nobody works like that anymore. So that makes such programs an immediate write-off.

Modern software is all about integrating various kinds of data and collaboration between fields. DEX already has that capability (3d model, datasheet links, the whole shebang) so it is worth looking at, picking and poking at and find out where it needs tweaking. It has some inconsistencies and some 'issues' that are annoying for people, like me, who are trying to do a bit more than your average PCB layouter that never deals with manufacturing, DFM or DFT and never builds a footprint tuned for production.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #503 on: February 16, 2015, 06:50:27 pm »
Multiple Selected Object

When selecting multiple objects one of them becomes the dominant objects.
The dominant object is used for alignment.
The dominant object is the one controlled by the properties panel.
If more than one object of is selected, only sensible common properties are changed.
E.g for line setting the start X only sets the start for the dominant object.
Setting the color sets all the selected objects colors.

See attachment.

Hopefully this explains the possible confusion.

NOTE: select more than 1 pad in the part editor, you can set all their rounded corners at once. Press ALT key when clicking on each pad.

aha. So that is what that 'screen artefact' means. It indicates where the dominant part is. Good. I Had a feeling this was not arbitrary as it seemed to depend on the order of selection but I couldn't figure it out what drove it. When just drawing a rectangle to do a group selection the dominant part is picked randomly, so that completely threw me off to the point where i thought: this is a drawing artefact.

In your example : you have those three pads selected. Can you enter a new value for 'Y'. They do share that property in common. I May want to shift them upward a bit. I Know their X location is unique and should stay that way, I want to shift them up by 1 mm. That was one of the things that did not work. Only one (probably the dominant one) would move.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline Mechatrommer

  • Super Contributor
  • ***
  • Posts: 11701
  • Country: my
  • reassessing directives...
Re: DEX eval by free_electron
« Reply #504 on: February 16, 2015, 06:54:09 pm »
good behaviour! good behaviour! keep it up :-+ you did that before for a while but went sour after that, now i see positive result but kinda wave up and down, but please maintain on the positive side. this one is a compliment i think that needs mentioning (rubbing friend's shoulder mode). i know its daunting to ask but i should also mention this again, what you need are details of such type (step by step) in your documentation, written or videos. so next time you dont have to teach others in forum the same thing, its a waste of typing. you are half way in this venture (please dont argue saying you are at the end of the road in dev stage), the other half is the documentation, just as difficult as the sw dev itself i know enthusiasmwise. so you may pick... either to stay in the middle of the road, or go further (making proper documentation). i think you should have done that in parallel with software development and the workflow/procedure/process planning or just after its completion/conslusion, but its already too late to ask or too much to ask for a single person burden. if you have to, leave this place for the serious work and come again later with bigger debute, by this you can also avoid confrontation and unnecessary emotional disbalance, keep you safe and healthy clear of mind. i wish you luck and looking forward for further dex improvement, until then ;) :-+
Nature: Evolution and the Illusion of Randomness (Stephen L. Talbott): Its now indisputable that... organisms “expertise” contextualizes its genome, and its nonsense to say that these powers are under the control of the genome being contextualized - Barbara McClintock
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #505 on: February 16, 2015, 07:07:03 pm »
Multiple Selected Object

When selecting multiple objects one of them becomes the dominant objects.
The dominant object is used for alignment.
The dominant object is the one controlled by the properties panel.
If more than one object of is selected, only sensible common properties are changed.
E.g for line setting the start X only sets the start for the dominant object.
Setting the color sets all the selected objects colors.

See attachment.

Hopefully this explains the possible confusion.

NOTE: select more than 1 pad in the part editor, you can set all their rounded corners at once. Press ALT key when clicking on each pad.

aha. So that is what that 'screen artefact' means. It indicates where the dominant part is. Good. I Had a feeling this was not arbitrary as it seemed to depend on the order of selection but I couldn't figure it out what drove it. When just drawing a rectangle to do a group selection the dominant part is picked randomly, so that completely threw me off to the point where i thought: this is a drawing artefact.

In your example : you have those three pads selected. Can you enter a new value for 'Y'. They do share that property in common. I May want to shift them upward a bit. I Know their X location is unique and should stay that way, I want to shift them up by 1 mm. That was one of the things that did not work. Only one (probably the dominant one) would move.

Changed the artefact.

I'll think about the Y.
« Last Edit: February 16, 2015, 08:11:59 pm by Iliya »
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #506 on: February 16, 2015, 08:22:39 pm »
Multiple Selected Object

When selecting multiple objects one of them becomes the dominant objects.
The dominant object is used for alignment.
The dominant object is the one controlled by the properties panel.
If more than one object of is selected, only sensible common properties are changed.
E.g for line setting the start X only sets the start for the dominant object.
Setting the color sets all the selected objects colors.

See attachment.

Hopefully this explains the possible confusion.

NOTE: select more than 1 pad in the part editor, you can set all their rounded corners at once. Press ALT key when clicking on each pad.

aha. So that is what that 'screen artefact' means. It indicates where the dominant part is. Good. I Had a feeling this was not arbitrary as it seemed to depend on the order of selection but I couldn't figure it out what drove it. When just drawing a rectangle to do a group selection the dominant part is picked randomly, so that completely threw me off to the point where i thought: this is a drawing artefact.

In your example : you have those three pads selected. Can you enter a new value for 'Y'. They do share that property in common. I May want to shift them upward a bit. I Know their X location is unique and should stay that way, I want to shift them up by 1 mm. That was one of the things that did not work. Only one (probably the dominant one) would move.

Changed the artefact.

I'll think about the Y.

Such an operation is useful under many different circumstances. For example simply to line up some selected objects. I got some pads and two or more are out of line . I can select the group and simply go : here is your X or Y coordinate. They now all line up. That would be an instance where i change only one coordinate.  Of course, like you said, this only makes sense if the objects share a common property.
Another instance where this is useful, and where both X and Y would be set: placing two objects so they are concentric. I've drawn a rectangle (or a square) and a circle. Select both and type in both X and Y : they are now concentric. No more guesswork by eyeballing it.

Another hint i wanted to give : really consider creating a real soldermask layers and paste mask layers. Also give top and bottom courtyards. Doesn't need to be immediately, but at some point in the future.

I Was working on the chapter about DFM yesterday. ( I Love my new toy : Dragon Dictate. I can crank out three times as many pages as before and they are flawless. That thing is fantastic. I may even upgrade to the pro version)

Here is the case statement for Courtyards top and bottom.
Consider a connector: right angle with a part sticking out over the board edge. For example a VGA or DB9 connector, or even a USB connector. Plenty of examples around.
We make a double sided board. SMD Top and SMD on the bottom. The board only has one or two connectors which are thru-hole. In production you cannot send bottom sided SMD through a wave soldering machine. Not unless the pads were specifically designed to avoid shadowing in the solder wave. And even then parts such as TSSOP or TQFP could not sit on the bottom side. Furthermore, parts would need to be glued down.  So this would require lots of additional steps which economically not feasible. Some people would say : switch to SMD versions of the connectors. That may not be possible for several reasons : They may not exist, there may be mechanical implications , or their size is different.

In such cases a selective soldering machine is used. Think of an X-Y table that moves a small 'spout'. This spout creates a miniature wave. The spout is essentially two concentric tubes , kind of like a desoldering gun but a bit larger. The center tube brings liquid solder upwards, it flows over the edges, and is sucked back down through the opening between the two tubes. The machine solders pin by pin by simply going to the pin coordinate, rasie the spout, wait a few seconds, and lower the spout. The machine has a second spout that applies liquid flux prior to that in a similar fashion.

Now you need 2 courtyards. You need a top courtyards telling you where the connector body sits so you can place parts up till the edge. You need a bottom courtyard that is larger than the top one as parts cannot be as close to the connector as they are on the topside. SSMs typically require 5mm clearance around the pins. So it is beneficial to set that up in the library. You don't have to worry about these things while you are placing the parts on the board later.

Paste masks have similar implications. Even though the manufacturer of a part may give you a land pattern (most datasheets these days include not only the mechanical drawing for the package but also suggest the pcb footprint) there is a problem with that. The part manufacturer does not know the thickness of the stencil used , nor does he know what flux to solder ratio your paste has.

A good solder joint depends on the volume of tin applied to a pad. Using a paste with larger flux/tin ratio will require a larger volume of paste than using a paste with lower flux/tin ratio. This can be compensated by playing with the stencil thickness. Simply use a thicker stencil if your Flux/tin ratio goes up. However, changing the thickness of the stencil may have other implications on the design. QFN packages are a typical example. These packages are so light (they have very little mass) that, once the solder on the thermal pad(the center pad) goes liquid it 'pillows'. The surface tension of solder tends to contract the solder into a bubble. This pushes the component upwards. The tiny amount of solder on the pads now also bubbles , but the bubble is nowhere as tall as the one in the center. The end result is that there is no solderjoint between the pad on the board and the pad on the part. We have a defective board now. The solution is to 'underprint' the center pad. We contract the paste mask on the center pad so that the bubble does not rise that tall avoiding the breaking of the joints on the outer pins. Underprinting can be done by contracting the pad as is , or by printing a lattice structure. (Like i have shown in the Power SO package). Creating lattices is annoying as the stainless steel stencil will 'curl' in that area allowing paste to slip under it (smearing). it also causes more wear and tear on the squeegee. And the structure is more fragile. Sometimes the lattice cannot be avoided. For example, in case of the sample i gave : thermal via's. In that case we need a lattice to avoid paste seeping into the holes due to capillary effects.

These are all things the board layout engineer has to take into account and set up in the CAD tool. The CAD tool needs to give him the capability to do that.

Other suggestions: add a few 'mechanical layers'. These are simple layers where no routing or pads are placed. only lines, texts, etc. This can be used to create a frame for the PCB (like you have in the schematic) Multiple layers are needed as they will be used for different documentation output. During generation of output I may specify to have a plot that shows only the holes , combined with mechanical 1 (which contains may my (speech recognition  ::) ) 'template') and mechanical 2 (which could contain notes for the drilling). I may produce a different output containing only the top silkscreen, mechanical (to get the template) and mechanical 3 (which contains the notes for the assembly person).

By having multiple layers in the CAD package I can keep all documentation in the PCB design. I simply need to select what combination of layers produce what output. The current template I have now uses 12 different layers just for documentation. One for top assembly, one for bottom assembly (where all text is in mirror image , so when it gets printed everything mirrors at the same time), one for drill , one for layer stackup (The number of layers, the thickness of the core materials used, what core material is to be used etc), one layer shows where the conformal coating goes for top, another for the bottom (again mirrored). Other layers show where V-scores and milling contours are for panelisation. Others may have special notes for assembly, like where to apply 'hot-snot' to mechanically glue down a large capacitor for example. Or a plot showing where selective masking needs to be done for a gold plated edge connector.
Having multiple layers allows me to partition all this information and store it in the design fie.

When creating the output every layer becomes an individual Gerber file. When creating PDF files I have a setup screen where I can say : I need one page in the pdf that shows this collection of layers. Another page has that collection of layers. In this layer i want to see only the pads, do not print the traces. I can toggle classes of objects on and off or make em solid or outlined.

This 'output description' can be saved as a preset. So whenever I do a project I do not have to set that up over and over. Apply preset, hit Print to PDF, and i'm done. Documentation is the most tedious, time consuming and annoying part of the job, but at the same time the most important one. Accurate instructions, parts lists , exploded views , fabrication notes are all indispensable to be able to create an assembly first-time-right. And then we have not dealt with things like parts obsolescence mid-cycle or backporting revisions. Let alone dealing with variants. In flavor 'a' of this board R7 and R9 are not installed. In flavor 'B' of this board C22 becomes a 220nF instead of a 100nF, same package, same footprint, same location on the board but different value and order code. So we need output for 'flavors' now : specific drawings that mark what parts are not installed and specific BOM's  with the correct parts listed for this flavor.

Stuff to think about. Again, this is feedback I give based on what goes on in the world of PCB design. There is not a day that goes by where we run into some additional requirement that needs 'dialing-in' in the CAD program. It is very important that the CAD tool is flexible enough so we can do that in an efficient way without disturbing what is already there.

Adding a few layers should be fairly easy and it will make DEX so much more capable.
You may still think I am out to piss you off but that is not true. I could have given up on DEX long time ago and written it off as another 'Kicad, gEDA' or whatever. It is far better than that.
You have an excellent base program and it has potential. You've admitted that your knowledge of PCB design is a bit ... shall we say 'rusty' ? You can go off and read 50 books and still be none the wiser. Most books are outdated by the time they hit the store. PCB design is progressing at lightspeed.

We live in a time where we embed resistive layers. Pull up or down resistors are simply drawn as structures on inner layers to save room and be able to make the board smaller. Open a smartphone or tablet. You will not find pull up resistors, they are created on an inner layer. We even embed components inside boards now. Things like decoupling capacitors are placed inside cavities in the board and then the outer layers are placed over that. You look at such a board and all you see is integrated circuits. Where is the rest ? inside the board. Moreover, the integrated circuits you do see are bare silicon with copper pillars friction welded to an ENIG or ENEPIG top plating. Stuff is nuts these days. And CAD programs are lagging behind what is technologically possible when it comes to board manufacturing and assembly.
« Last Edit: February 16, 2015, 08:42:58 pm by free_electron »
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #507 on: February 16, 2015, 08:24:37 pm »
Placing multiple parts.

You can auto-repeat commands such as add pad.
Right click to show context menu. Select Auto-repeat.

I have set Mouse button 4 and 5 to do copy/paste.

1. Select objects.
2. Click button 4 or 5 and drag to move copied items.
3. Click to do final place or click button 4 or 5 to place and paste again.

Hope this works.
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #508 on: February 16, 2015, 08:38:36 pm »
How to set the Y for all pads.

1. Select all the pads.
2. Set the Y for the Dominant pad.
3. Click on align middle.

See align and distribute menu items. Remember undo is always there.

Using align you can also do the Y as well as all 4 edges.
Distribute is great for spacing items.

 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #509 on: February 16, 2015, 08:47:00 pm »

I have set Mouse button 4 and 5 to do copy/paste.
Quote

What is mouse button 4 and 5 ? Be careful using non-standard entry devices. Not unless you are willing to sell the software AND the hardware required to run it.
I don't have any mouse with buttons 4 and 5. Simple mice these days are left button right button and scroll wheelie. Scroll wheelie acts as middle button if you press it but even that is annoying as you typically end up scrolling as well.

You are better of using CTRL ALT and SHIFT + mouse button.

I know this is not always easy. But this is UI design.

Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #510 on: February 16, 2015, 08:54:50 pm »
How to set the Y for all pads.

1. Select all the pads.
2. Set the Y for the Dominant pad.
3. Click on align middle.

See align and distribute menu items. Remember undo is always there.

Using align you can also do the Y as well as all 4 edges.
Distribute is great for spacing items.
I'm not sure i understand the images in this one correctly.

Let's say i have 4 pads.

I select the four pads by dragging a rectangle around them. The dominant one is now selected at random by DEX.
Question : how do I tell DEX what I want the dominant pad to be in this group. I can take it from there. Is there a key combination or mouse combination that lets me pick the dominant one in the selection ?
In your example select pad 1, 3, 4 and 5. Pad 3 is to be the dominant as that is the one i want the others to align to.

If I can do that then it is easy to align other objects. Select the objects , including the reference one (the dominant one) and do the align from the menu. And done. Great ! That will work.

Additional question : i assume this is for the centers. What about edge alignment ?
« Last Edit: February 16, 2015, 09:02:11 pm by free_electron »
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #511 on: February 16, 2015, 09:03:07 pm »
How to set the Y for all pads.

1. Select all the pads.
2. Set the Y for the Dominant pad.
3. Click on align middle.

See align and distribute menu items. Remember undo is always there.

Using align you can also do the Y as well as all 4 edges.
Distribute is great for spacing items.
I'm not sure i understand the images in this one correctly.

Let's say i have 4 pads.

I select the four pads by dragging a rectangle around them. The dominant one is now selected at random by DEX.
Question : how do I tell DEX what I want the dominant pad to be in this group. I can take it from there. Is there a key combination or mouse combination that lets me pick the dominant one in the selection ?

If I can do that then it is easy to align other objects. Select the objects , including the reference one (the dominant one) and do the align from the menu. And done. Great ! That will work.

Additional question : i assume this is for the centers. What about edge alignment ?

The dominant one is the last selected.
You can press Alt or Shift during selection.
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #512 on: February 16, 2015, 09:10:31 pm »
If you are doing custom parts you can take advantage of the pads ability to auto-generate the 3D for the pin.

Here I set the pins for left and right. (window select left or right and set pin)
Then I added 1 blue 3D rectangle, set its height, offset.
1 added a gray rectangle, set its height, offset.
Copied and pasted it to get the second box. I just love the new paste. Thanks Vincent.  :-+
Then added a sphere and set its Z offset.
This is easier than searching for 3D and makes the file much smaller.

This is all the XML for that part.
----------------------------------

<?xml version="1.0" encoding="utf-8"?>
<!--Created on 16 February 2015 at 21:08:04-->
<AutoTRAX version="10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.kov.com/XmlSchemas/Dex.xsd" designVersion="2" type="part" smt="true" symbolValue="Value">
    <design nextId="718" saved="635597161732379290" revisionPrefix="1" revision="1">
        <schematicSettings />
        <sheets>
            <schematic id="2" name="Symbol">
                <entities>
                    <symbolBorder penWidth="0.02" lineJoin="miter" brushColor="255,255,176" x="5.3" y="4.20000029" width="0.5" height="0.199999809" />
                    <terminal id="288" pad="287" at="5.3,4.3" />
                    <symbolValue text="Value" at="5.55,4.12575" height="0.05" />
                    <partId text="U" at="5.55,4.474266" height="0.05" prefix="U" />
                </entities>
                <schematicSettings origin="5.2,3.70000029" showPage="false" />
            </schematic>
        </sheets>
        <pcb id="1" name="Footprint" autosizeBorder="true">
            <layers currentLayer="4">
                <layer name="Documentation" plot="false" electrical="false" />
                <layer name="Net" plot="false" electrical="false" />
                <layer name="Top Package" plot="false" electrical="false" />
                <layer name="Top Silkscreen" electrical="false" color="255,255,255" fixedColor="true" />
                <layer name="Top Copper" routeVerical="true" color="255,0,0" fixedColor="true" />
                <layer name="Bottom Copper" color="0,0,255" fixedColor="true" />
                <layer name="Bottom Silkscreen" electrical="false" color="255,255,255" fixedColor="true" />
                <layer name="Bottom Package" visible="false" plot="false" electrical="false" />
                <layer name="Background" plot="false" electrical="false" />
            </layers>
            <pcbSettings origin="4.5,3.25" snapToGrid="false" autoPositionPlacementPoint="false" />
            <entities>
                <pcbBorder type="rectangle" x="0.006377965" y="0.759760141" width="0.5552739" height="0.9028113" thickness="0.05" color="0,95,192" maskColor="64,255,255,255" />
                <rectangle layer="2" dx="-0.00265789032" dy="-0.5495278" penWidth="0" penColor="0,255,255,255" brushColor="200,200,200" x="0.239214" y="1.428473" width="0.107646286" height="0.0358821154" extrusionHeight="0.04" />
                <rectangle layer="2" penWidth="0" penColor="0,255,255,255" brushColor="200,200,200" x="0.239214" y="1.428473" width="0.107646286" height="0.0358821154" extrusionHeight="0.04" />
                <footprintValue layer="2" brushColor="255,255,255" text="" at="0.28401494,1.17165017" height="0.1" showInPcb="false" />
                <courtyard x="0.110314973" y="0.859260142" width="0.34739992" height="0.62478" />
                <footprintId layer="3" text="U" at="0.110314973,1.51404011" height="0.05" alignment="topRight" prefix="U" />
                <placementPoint location="0.290546715,1.4103477" />
                <pad id="287" name="1" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.15,0.95" type3D="gullWing" />
                <silkscreen layer="3" x="0.110314973" y="0.859260142" width="0.34739992" height="0.62478" />
                <pad id="318" name="2" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.15,1.04188275" type3D="gullWing" />
                <pad id="319" name="3" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.15,1.13376546" type3D="gullWing" />
                <pad id="320" name="4" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.15,1.22564828" type3D="gullWing" />
                <pad id="321" name="5" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.15,1.31753111" type3D="gullWing" />
                <pad id="322" name="6" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.15,1.40941381" type3D="gullWing" />
                <pad id="349" name="7" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.418029845,0.950000048" type3D="gullWing" orientation="right" />
                <pad id="350" name="8" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.418029845,1.04188275" type3D="gullWing" orientation="right" />
                <pad id="351" name="9" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.418029845,1.13376546" type3D="gullWing" orientation="right" />
                <pad id="352" name="10" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.418029845,1.22564828" type3D="gullWing" orientation="right" />
                <pad id="353" name="11" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.418029845,1.31753111" type3D="gullWing" orientation="right" />
                <pad id="354" name="12" type="rectangle" widthEqualsHeight="true" layer="4" size="0.04,0.04" at="0.418029845,1.40941381" type3D="gullWing" orientation="right" />
                <rectangle layer="2" penWidth="0" penColor="248,255,254" brushColor="0,56,124" x="0.170082822" y="0.9017342" width="0.227937922" height="0.540564" extrusionBase="0.0138979647" extrusionHeight="0.066091" />
                <ellipse layer="2" dx="0.2319749" dy="-0.06341221" penWidth="0" penColor="0,0,0,0" brushColor="255,0,0" x="-0.03623262" y="1.42112613" width="0.06126395" height="0.06126395" extrusionBase="0.0526118539" extrusionHeight="0.1" sphere="true" />
            </entities>
        </pcb>
    </design>
    <viewports windowIndex="1" location="-8,-8" size="2576,1576" tabbedView="true" activeTab="1">
        <viewport sheetId="2">
            <view />
        </viewport>
        <viewport sheetId="1">
            <view />
        </viewport>
        <viewport3D>
            <camera position="-0.66039276363284594,-0.17378147888656659,0.84604895841826488" target="0.28195919853272761,1.1642494915680974,-0.04271685567496486" up="0.27329097150698939,0.3912380094935296,0.87877463824367785" angle="45" />
        </viewport3D>
    </viewports>
</AutoTRAX>

« Last Edit: May 19, 2015, 07:07:39 am by Iliya »
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #513 on: February 16, 2015, 09:27:22 pm »
Extending DEX.
Here's a little known feature.

You can add your own menu commands with icons to DEX and script them using Python.
I have only exposed a partial API so far. Nobody uses it  :(
There are a few commands.

See Panels->Script.
 
So if DEX can't do it, then maybe you can.

The full .NET framework is exposed in the API.

Try a few of the commands out.
 

Offline c4757p

  • Super Contributor
  • ***
  • Posts: 7799
  • Country: us
  • adieu
Re: DEX eval by free_electron
« Reply #514 on: February 16, 2015, 09:34:57 pm »
Extending DEX.
Here's a little known feature.

You can add your own menu commands with icons to DEX and script them using Python.

I like that. :-+
No longer active here - try the IRC channel if you just can't be without me :)
 

Offline Iliya

  • Frequent Contributor
  • **
  • !
  • Posts: 396
  • Country: 00
Re: DEX eval by free_electron
« Reply #515 on: February 16, 2015, 09:43:47 pm »
Extending DEX.
Here's a little known feature.

You can add your own menu commands with icons to DEX and script them using Python.

I like that. :-+

If people start to use it then I finish off the API.
Its .NET Python.

TUTORIALS
https://docs.python.org/3/

BOOK
http://www.amazon.com/IronPython-Action-Michael-J-Foord/dp/1933988339/ref=sr_1_1?s=books&ie=UTF8&qid=1424122993&sr=1-1&keywords=ironpython



P.S. If I was starting out doing DEX again, all the ribbon menu would be Python applets.
 

Offline c4757p

  • Super Contributor
  • ***
  • Posts: 7799
  • Country: us
  • adieu
Re: DEX eval by free_electron
« Reply #516 on: February 16, 2015, 09:46:36 pm »
If people start to use it then I finish off the API.

I must wonder whether more people would use it if the API were complete.
No longer active here - try the IRC channel if you just can't be without me :)
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #517 on: February 16, 2015, 09:57:03 pm »
The problem is that most PCB design people know ZERO about programming. Altium has the same problem. They initially thought it was the choice of the language (pascalscript) then they added VB and Java. Still nothing. The problem is learning the API. That command set is enormous, a hell to document and, unless you are a full time programmer, difficult to understand.

What would be nice to have is a script recorder. Hit the record button.  Do a couple of manipulations. Hit stop and see the recorded script. Excel has that.
That would speed up finding the right command names and creating scripts. I've suggested that to Altium a couple of times, but scripting is on the backburner for them.

I'll record the video on how I make that footprint. It may give some insight in how I use CAD operations and may trigger some idea's to add to DEX. Cross pollination is always a good thing as it improves the ecosystem. I will try to explain why I use that specific command or function and why it saves time as opposed doing it a different way.

Damn, there goes the afternoon, and I really wanted to take the car for a spin and go to the beach ... It's 27 degrees C out , crystal clear blue sky and i'm sitting inside mucking around with PCB tools on my day off. I must be insane.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline c4757p

  • Super Contributor
  • ***
  • Posts: 7799
  • Country: us
  • adieu
Re: DEX eval by free_electron
« Reply #518 on: February 16, 2015, 10:06:43 pm »
It's 27 degrees C out , crystal clear blue sky and i'm sitting inside mucking around with PCB tools on my day off.

"You bastard." - all of NYS


Also, am I the only one baffled that engineers who work with computers and technology all day long could possibly have never bothered to learn anything about programming? How do you make things nice and smooth and efficient? but...but...beautiful shell scripts are beautiful.... :o
« Last Edit: February 16, 2015, 10:09:22 pm by c4757p »
No longer active here - try the IRC channel if you just can't be without me :)
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #519 on: February 16, 2015, 10:49:10 pm »
Hardware engineer <> programmers.

How many programmers does it take to change an led ? (Lightbulbs or old-school)
They can't do it. It's a hardware problem...

How many hardware engineers does it take to write a bubble sort algorithm ?
Where do we stick the screwdriver ?

Video is rendering right now. That should shed some light why i am flapping around like a flightless bird in DEX.
« Last Edit: February 16, 2015, 10:52:29 pm by free_electron »
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline c4757p

  • Super Contributor
  • ***
  • Posts: 7799
  • Country: us
  • adieu
Re: DEX eval by free_electron
« Reply #520 on: February 16, 2015, 10:50:58 pm »
Hardware engineer <> programmers.

Of course not, I just can't imagine how terrible it'd be to try to use a computer so much without being able to really tell it what to do!
No longer active here - try the IRC channel if you just can't be without me :)
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #521 on: February 16, 2015, 11:04:10 pm »
like i said: the problem is the thousands and thousands of commands in the API. If you write a program for windows, how many of the API functions do you use ? A good programmer knows maybe 20% of all the function calls in the operating system. I've witnessed multiple times where one code-slammer goes : look at what i wrote : isn't that cool? Only for the other guy to  go: you do know that there is already such a function. It sits in that DLL and here is how you invoke it.  -SHIT- just wasted a whole day.

The same goes for PCB programs. A: Look here's what i did. B: You do know that there is a single command specifically for that right ? A:-blank stare, sinking feeling in stomach-
The API in Altium is gigantic and the documentation to most of it is only available under NDA (You need to register as developer and sign the NDA. It's free, but you need the NDA). I've started to write a bunch of scripts and it is amazing what you can do with the API. Once the script works you can actually compile it as a DLL and it becomes part of the system. Scripting languages typically only give you access to what was decided to expose. Not everything is there.
If you become a developer then Altium gives you the entry points to everything. (That is why you sign the NDA). You can import the entire program as a group of classes and off you go. The restriction is that you cannot release any code that links to their libraries. Technically you could take their core library and build your own GUI around it and sell that as a totally new program, but that is explicitly forbidden (understandable).
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #522 on: February 17, 2015, 12:01:31 am »
I just had an idea (oh no!)

In the help form: allow attaching a picture to the help. Words only go so far in explaining a problem and not everyone knows the technobabble or even speaks the same technobabble.

You could give a button on the help screen to do a screen capture (alt-printscreen) of the DEX window and automatically pull that in. That should be a big help as you now can see what the user sees.
Another button could pull in whatever was already on the windows clipboard.
Yet another button would take a snapshot of the currently open project as a zip file and attach that to the help request.

That could be a big help because now you have a lot more information and, so to speak, can look over their shoulder what they are on about.

just an idea.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Online free_electronTopic starter

  • Super Contributor
  • ***
  • Posts: 8520
  • Country: us
    • SiliconValleyGarage
Re: DEX eval by free_electron
« Reply #523 on: February 17, 2015, 12:19:04 am »
Video Posted :

http://dl.dropbox.com/u/62657892/Making%20a%20PowerSO20%20package.mp4

The goal of this video is to show some basic cad manipulations like playing with reference points, grids , scaling and snapping to quickly create a relatively complex structure.
« Last Edit: February 17, 2015, 01:06:51 am by free_electron »
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 

Offline BradC

  • Super Contributor
  • ***
  • Posts: 2108
  • Country: au
Re: DEX eval by free_electron
« Reply #524 on: February 17, 2015, 12:54:49 am »
The problem is that most PCB design people know ZERO about programming. Altium has the same problem. They initially thought it was the choice of the language (pascalscript) then they added VB and Java. Still nothing. The problem is learning the API. That command set is enormous, a hell to document and, unless you are a full time programmer, difficult to understand.

This is the same with AutoCAD. They started with AutoLISP and over the years added VB to try and promote use of the scripting abilities, but got no extra take up. The API is complex and convoluted, but extremely powerful (and thankfully _well_ documented). I use it all the time (LISP that is, VB makes me puke), but that's because I can program and programmers by definition are lazy. We'll spend 4 hours writing code to save 20 minutes work, but then the next 10 times we do the task we save the 20 minutes without having to spend any more time. Sure, I had to lean another language, but that seems to be a par for the course with anything these days anyway.

If I spent as much time in front of Altium as I do AutoCAD, I'd probably learn to script that too.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf