Design-Rules in Altium UND behandelt als OR?

Gast #7276333
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.
Gast #7276431
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.
#7276708
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.