Author Topic: PCB Filter stupidity  (Read 2529 times)

0 Members and 1 Guest are viewing this topic.

Offline ajbTopic starter

  • Super Contributor
  • ***
  • Posts: 2599
  • Country: us
PCB Filter stupidity
« on: September 23, 2018, 07:35:30 pm »
This drives me crazy.  One would expect that IsTrack OR IsVia OR IsPolygon would be sufficient to select all of the copper objects in a PCB, but because the PCB Filter does not distinguish between (copper) tracks and (non copper) lines, you also get all of the lines on every layer.  Okay, so let's add AND OnSignal, surely that will filter out all of the stuff not on signal layers, right?  Nope, OnSignal doesn't do shit.  OnCopper?  Also does fuck-all.  Even free 3D Bodies on mechanical layers get included!  Maybe OnTop?  Nope, still get all of the lines in any topside components, even though component primitives are locked.  There's also OnTopLayer for some reason, maybe that will work?  Nope, same as OnTop.

Okay, different tack.  (IsTrack OR IsVia OR IsPolygon) AND (Not InAnyComponent).  Hey, that works!  But what I actually want is free copper not attached to a net, so let's add AND (Not InAnyNet), and. . . now I get polygons that are DEFINITELY in nets!  WTF?  Okay, strike OR IsPolygon, and okay, that does exactly what I want, except I also wanted polygons, but oh well.

I don't often try to do compound filters like this--has the PCB filter always been this bad, or is this new in AD18?  Am I just doing something wrong?
 

Online T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 21658
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
Re: PCB Filter stupidity
« Reply #1 on: September 23, 2018, 08:05:58 pm »
Are you not using parenthesis/operator precedence correctly?

(IsTrack OR IsArc OR IsFill OR IsRegion OR InPoly) AND OnCopper should work fine.  Or shorten that to skip any you're not using (or add any I've forgotten).

That might be a catch, too.  Polygons are (as far as I know) a sort of hidden union object containing regions.  So IsRegion grabs region objects as well as the copper inside polygons.  Another oddity of AD.

Disclaimer, I'm still in AD16 so I'm not sure if this has changed.

Tim
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline ajbTopic starter

  • Super Contributor
  • ***
  • Posts: 2599
  • Country: us
Re: PCB Filter stupidity
« Reply #2 on: September 23, 2018, 09:26:39 pm »
I tend to over-parenthesize as a rule, doesn't help.  Playing with it some more, it seems like IsPolygon is not compatible with (Not InAnyNet):

(OnCopper AND (IsTrack OR IsVia)) And (Not InAnyNet) works.

(OnCopper AND (IsTrack OR IsVia OR IsPolygon)) And (Not InAnyNet) does not work (tracks and vias are selected correctly, but it selects ALL polygons).

I had forgotten about InPolygon, that also doesn't work with (Not InAnyNet) but in a different way:

(OnCopper AND (IsTrack OR IsVia OR InPolygon)) And (Not InAnyNet) selects tracks and vias correctly, but does not select ANY polygons.

Simplifying it to just IsPolygon and (Not InAnyNet) or InPolygon and (Not InAnyNet) shows the same problems.

Okay, that's at least a specific enough problem to take to BugCrunch so Altium can ignore it for the next ten years.

IsTrack and OnCopper does seem to work now, I swear it didn't before, but I could just be losing my mind.
 

Offline free_electron

  • Super Contributor
  • ***
  • Posts: 8517
  • Country: us
    • SiliconValleyGarage
Re: PCB Filter stupidity
« Reply #3 on: October 11, 2018, 04:02:43 pm »
(istrack or ispolygon or isvia) and onsignal

grabs all on signal layers. does not include planes.
Professional Electron Wrangler.
Any comments, or points of view expressed, are my own and not endorsed , induced or compensated by my employer(s).
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf