Hallo,
ich habe ein kleines Verständnisproblem mit den Design-Rules von Altium.
Hier mal die Regel:
First Object:
InLayerClass('Top and Bottom') AND InNetClass('Extern')
Second Object:
InLayerClass('Top and Bottom') AND (InNetClass('All Nets') AND NOT
InNetClass('EXTERN')AND NOT InNetClass('PE'))
Nun habe ich die Regel bewusst verletzt, indem ich einen Track auf
Toplayer der Netzklasse "Extern" mit einem der Netzklasse "Intern" zu
dicht herangeführt habe.
Warum löst die Regel aus?
Die Abfrage: InLayerClass('Top and Bottom') müsste doch strenggenommen
immer false sein, da nur entweder Top oder Bottom gleichzeitig erfüllt
ist. Altium scheint die Regel selbsttätig als InLayerClass('Top or
Bottom') zu behandeln, also mit einer Oder-Verknüpfung, die dort aber
nicht steht.
Auch wenn man die Regel InLayerClass() aufstellt und sich die Vorschläge
zur Autovervollständigung per Space-Taste anzeigen lässt, dann gibt
Altium entweder "Mid" oder "Top and Bottom" zur Auswahl, aber kein "Top
or Bottom"
Wenn man die Regel selbsttätig zu "Top or Bottom" ändert, funktioniert
sie übrigens gar nicht mehr.
Alzium schrieb: > Die Abfrage: InLayerClass('Top and Bottom') müsste doch strenggenommen > immer false sein, da nur entweder Top oder Bottom gleichzeitig erfüllt > ist. Nein. Es gibt eine Layer-Klasse, die "Top and Bottom" heißt. Es ist aber nur eine Layerklasse, die den Top-Layer UND den Bottom-Layer beinhaltet. Und in dieser einen Layer-Klasse kann ein Objekt natürlich vorkommen oder nicht.
Wühlhase hat es ja schon geschrieben, wenn es in Anführungszeichen steht
ist es ein String z.B. 'Max und Moritz'. Mich wundert es nur, dass Du
eine Klasse mit Namen 'Top and Bottom' hast, die habe ich nicht per
Default.
Aber warum ich antworte ist, weil ich glaube InLayerClass('Top and
Bottom') ist nicht was Du willst. Objekte auf dem Multilayer wie Pads
und VIAs werden nicht erfasst. Onlayer() wäre daher auch nicht das
Richtige.
Ich denke, was Du haben möchtest ist (ExistsOnLayer('Top Layer') or
ExistsOnLayer('Bottom Layer')) and ...
PS: InNetClass('All Nets') lässt sich abkürzen durch InAnyNet. Zudem
nimmst Du NoNet Objekte damit aus, ich weiss nicht ob bewusst. Einfach
mal überlegen ob NoNet Element von dieser Rule betroffen sein sollen
oder nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.