Altium, Skript, PCB nach Modifikation neu zeichnen lassen

OP #6437703
Lesenswert?
• ▲
▼
Ich versuche gerade, in AD20 den Stand zu erreichen, den ich zuvor in
AD17 hatte: dort hatte ich mir vor langer Zeit Skripte gebaut, die mir
entweder alle Designators ein- und alle Comments ausschalten oder
umgekehrt.

Die alten Skripte tun auf AD20 nicht, was sie sollen. Nach einigem
Herumspielen habe ich gemerkt, dass die entsprechenden Eingenschaften
der Texte wohl durchaus geändert werden, nur leider werden diese
Änderungen am Bildschirm nicht sichtbar. Sie werden erst dann sichtbar,
wenn man z.B. einen dieser Texte versucht, zu verschieben. Dann wird er
sichtbar (und der andere wird unsichtbar).

Es funktioniert auch, wenn man das ganze Board selektiert. Dann sehen
die Texte so aus, wie erwartet.

Weiß zufällig jemand hier in der Runde, wie man ein PCB-Redraw unter
AD20 hinbekommt?

Ich war so frech, zu hoffen, irgend wer von Altium könne mir diese Frage
schnell per Chat beantworten.
Fehlanzeige: "kein Support für Skripte, ich solle doch die Community
fragen"..
OP
Lesenswert?
• ▲
▼
// Refresh PCB screen
Client.SendMessage('PCB:Zoom', 'Action=Redraw' , 255, 
Client.CurrentView);

In meinem alten Skript steht es so:

// Board neu Zeichnen, damit man die Veränderung auch sieht
ResetParameters;
AddStringParameter('Action','Redraw');
RunProcess('PCB:Zoom');

Nichts davon funktioniert heute, in AD20.
OP
Lesenswert?
• ▲
▼
Ich hatte gestern noch einen Case beim Altium Support geöffnet, habe 
inzwischen folgende Antwort erhalten:

Das Problem konnte reproduziert werden, es handelt sich um einen Buck, 
Behebung wurde angekündigt.
Es wurde ein Workaround vorgeschlagen, welcher leider bei mir nicht 
funktioniert.

Es bleibt spannend.
OP
Lesenswert?
• ▲
▼
M.A. S. schrieb:
> Es wurde ein Workaround vorgeschlagen, welcher leider bei mir nicht
> funktioniert.

Man hatte mir vorgeschlagen:
1
// Altium Support Antwort vom 13.10.2020 zum Neuzeichnen des PCB
2
Client.SendMessage ('PCB: Select', 'Scope = All', 255, Client.CurrentView);
3
Client.SendMessage ('PCB: DeSelect', 'Scope = All', 255, Client.CurrentView);

Ich hatte dieses einfach per Copy-and-Paste bei mir eingefügt: geht 
nicht.
Bei nochmaligem Hinsehen fiel mir auf, dass zwischen 'PCB:' und 'Select' 
bzw. 'DeSelect' ein Leerzeichen ist.
Nach Entfernen des/der-selben funktioniert die Sache: Alles wird 
selektiert und wieder deselektiert, danach sind genau die Strings 
sichtbar, die sichtbar sein sollen.

Das funktionierende Workaround lautet also:
1
// Altium Support Antwort mit Korrektur:
2
Client.SendMessage ('PCB:Select', 'Scope = All', 255, Client.CurrentView);
3
Client.SendMessage ('PCB:DeSelect', 'Scope = All', 255, Client.CurrentView);

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 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.