Altium, Skripte, Macros oder ähnliches zur Automatisierung

OP #3208677
Lesenswert?

Ich arbeite mit Altium Designer Summer 9 und suche nach einer 
Möglichkeit, immer wiederkehrende Dinge zu automatisieren, sprich: mit 
einem Mausklick oder einer einfachen Tastenkombination anzustoßen, statt 
eine längere Folge von Befehlen auszuführen.

Beispiel:
Umschalten der Sichtbarkeiten von Designators und Comments von 
Bauteilen.
Bisher mache ich das wie folgt:

Comments sichtbar, Designators unsichtbar machen:

- PCBList, "all objects", "only Text":
- Sortieren nach "String Type",
- bei allen Designators "Hide" setzen (mit Hilfe von Markieren, Copy und 
Paste)
- bei allen Comments entsprechend "Hide" zurücksetzen.


Kann man das und ähnliche Dinge irgendwie mittels Skript, Makro etc. 
programmieren und dann mit nur einer Tastenkombination oder von mir aus 
Menübefehl zur Ausführung bringen?
Gast #3208988
Lesenswert?

Hi

>Kann man das und ähnliche Dinge irgendwie mittels Skript, Makro etc.
>programmieren und dann mit nur einer Tastenkombination oder von mir aus
>Menübefehl zur Ausführung bringen?

Das konnte schon Protel99.

MfG Spess
OP #3209445
Lesenswert?

Ich danke Euch für Eure Hinweise.

Mit Hilfe der Doku auf der Altium Seite habe ich inzwischen ein "Hallo 
Welt" realisiert und nach langem Suchen einen ersten Hauch von Ahnung, 
wie man sich in dem Objektsystem zurechtfindet.
Besonders komfortabel finde ich die Dokumentation davon sowie auch die 
IDE nicht gerade.
Mal sehen, ob ich damit 'was zustandekriege...
Gast #3209488
Lesenswert?

Hallo Michael,

ich habe auch schon ein paar Skripte für AD gemacht. Man kann zwar viel 
machen, aber die Doku lässt wirklich zu wünschen übrig.

Ich habe mir aber viel von Skripten aus dem Netz angeeignet. Unter 
anderem von dieser Seite
http://code.google.com/p/altium-designer-addons/downloads/list
Ich glaube das Skript "ShowHideDesignators_v1.1" ist sogar das was du 
suchst.

Gruß
Florian
OP #3209501
Lesenswert?

Hi Florian,

ich danke Dir vielmals für Deine Antwort.
Inzwischen habe ich herausgefunden, wie man das macht, was ich machen 
möchte:

Ich habe eine Sichtbar/Unsichtbareigenschaft vergeblich in IPBC_Text 
gesucht, weil es sie dort nicht gibt.

Es gibt sie für Comment und Designator in der Klasse IPCB_Component als
"CommentOn" und "NameOn".



Comp.SetState_NameOn(true);
Comp.SetState_CommentOn(false);


Procedure NamesOn;
Var
    Board     : IPCB_Board;
    Comp       : IPCB_Primitive;
    Iterator  : IPCB_BoardIterator;

Begin


    // Retrieve the current board
    Board := PCBServer.GetCurrentPCBBoard;
    If Board = Nil Then Exit;

    // retrieve the iterator
    Iterator        := Board.BoardIterator_Create;
    Iterator.AddFilter_ObjectSet(MkSet(eComponentObject));
    Iterator.AddFilter_LayerSet(AllLayers);
    Iterator.AddFilter_Method(eProcessAll);

    // Search and count pads
    Comp := Iterator.FirstPCBObject;
    While (Comp <> Nil) Do
    Begin

        // **** HIER PASSIERTS: ******************
        Comp.SetState_NameOn(true);
        Comp.SetState_CommentOn(false);


        Comp := Iterator.NextPCBObject;
    End;
    Board.BoardIterator_Destroy(Iterator);

End;


// Danke und gute Nacht!

// Gruß,
// Michael
Gast #3210111
Lesenswert?

das oben gezeigte Programm ist übrigens ein modifiziertes Beisiel.

Falls jemand das gleiche Versucht:
die Prozedur macht, was sie soll, aber im Verborgenen. D.h., dass man 
die Änderung erst sieht, wenn man explizit ein Redraw des Boards 
anstößt.

Dies kann man manuell durch Drücken der 'Ende' Taste tun oder, wie ich 
inzwischen mit Hilfe eines Beispiels aus Florians Link mit folgender 
Code-Sequenz:

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren