Zum Inhalt springen

Alle Objekte einer Klasse auflisten


dherderich

Empfohlene Beiträge

Hallo zusammen,

 

ich bin dabei meine Vorlagendatei etwas aufzuräumen, und möchte nun gerne alle Symbole, die zu einer bestimmten Klasse gehören aufgelistet bekommen.

Auflistung deswegen, da meine Symbole nur in den Ordnern liegen, und nicht in einer Ebene eingefügt sind.

Ich habe schon mit Datei-Info, Ebenen-/Klassen-Manager und Aufräumen experimentiert, aber komme nicht auf mein Wunschergebnis.

 

Einfach die Klassen löschen, und im Löschvorgang neue Klassen zuweisen, ist nicht auch das wahre, da ich ja nicht immer weiß, welche Symbole genau zu der Klasse gehören.

 

Jedes Symbol einzeln durchzuschauen, ist leider auch keine Lösung bei mehr als 1000 Symbolen, welche ja auch oft mehr als eine Gruppe enthalten...

 

Vielen Dank schon im voraus für eure Lösungsvorschläge!

 

MfG Dominik

Link zu diesem Kommentar

Hallo Dominik,

 

hier hilft Dir folgender Befehl weiter: =DATENBANK((C='Keine')), wobei "Keine " für die Klasse steht.

Siehe auch Screenshot.

Hier gibt es dann unter "Kriterium bearbeiten" viele Möglichkeiten, zu sortieren.

1392595430_Bildschirmfoto2014-01-05um14_50_49.png.9963ea6692369020c806fe1c5a64c1e9.png

322426666_Bildschirmfoto2014-01-05um14_51_35.png.496ad89a086ecf2aeb7c4f32a37c7472.png

Vectorworks Spotlight 2014 + Renderworks + C4D

Mac OS X 10.9.1, 3,4GHz i7, 16GB RAM, 2GB AMD Radeon HD 6970M

Link zu diesem Kommentar

Hey Chris,

 

dein Vorschlag funktioniert aber leider nur, wenn die Objekte in der Zeichnung eingefügt sind. Bei mir liegen die aber alle nur in den Bibliotheksordnern.

Eigentlich wollte ich mir den Weg sparen, alle Objekte von Hand einzufügen, oder gibts da nen Befehl, mit dem man alle Objekte einmal in der Zeichnung hat? :cool:

 

MfG Dominik

Link zu diesem Kommentar

Hallo Dominik,

 

ich dachte, Du hast alles in einer Datei, nachdem Du von "Vorlagendatei" gesprochen hast.

Mit so einer Datei arbeite ich für einen Kunden, da habe ich alle seine Lampen und Traversen drin und muss somit nicht mit den einzelnen Bibliotheksordnern arbeiten. Ist aber alles in 2D mit jeweils top und side Ansichten.

 

Grüsse,

Chris

Vectorworks Spotlight 2014 + Renderworks + C4D

Mac OS X 10.9.1, 3,4GHz i7, 16GB RAM, 2GB AMD Radeon HD 6970M

Link zu diesem Kommentar

Hallo Dominik,

 

"Bei mir liegen die aber alle nur in den Bibliotheksordnern.

Eigentlich wollte ich mir den Weg sparen, alle Objekte von Hand einzufügen, oder gibts da nen Befehl, mit dem man alle Objekte einmal in der Zeichnung hat?"

 

Ich glaube, dann hilft nur ein kurzes Script in der Art (schneller Pseudocode):

 

handle:=FSymDef;

WHILE handle<>NIL DO BEGIN

Symbol(handle,x,y,0);

inc x,y;

handle:=NextObj(handle);

END;

 

Dann liegen alle Symbole nebeneinander auf einer Ebene,

und eine Tabelle kann wie gewohnt arbeiten.

 

Schönen Gruß, Uwe.

VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.de

Link zu diesem Kommentar

Hallo Uwe,

 

ich habe nun mal mit der Hilfe eines Programmierers, da meine VectorScript bzw. Pascal-Kenntnisse gegen 0 gehen, folgendes Skrip gebastelt:

 

PROCEDURE Classfinder;
VAR
h : HANDLE;
name : STRING;
x, y : REAL;

BEGIN

h := FSymDef;
x := 0;
y := 0;

WHILE h<>NIL DO BEGIN
	name := GetSymName(h);
	Symbol(name, x, y, 0);

	x := x + 1;
	y := y + 1;

	h := NextObj(h);
END;
END;

RUN(Classfinder);

 

Es kommt keine Fehlermeldung mehr beim Ausführen, allerdings passiert auch nichts in der Zeichnung.

Kannst du den Fehler erkennen, warum es nicht funktioniert?

 

MFG Dominik

Link zu diesem Kommentar

Hallo Dominik,

 

schaut doch gut aus, das Werk des Kollegen.

 

Zwei gemeine Fallen bei Vectorscript:

 

1) GetSymName holt den Namen einer EINGEFÜGTEN Symbolinstanz.

Hier also zu verwenden GetSDName(h);

 

2) Die Symboldefinitionen-Liste ist eine der wenigen, wo NextObj() nicht geht,

statt dessen muss NextSymDef() verwendet werden.

 

Die Increment-Werte von x und / oder y müssten bei Bedarf größer werden,

je nach Deinen Einheiten (Meter oder Millimeter).

Bei sowas wie x:=x+1000 / y:=y+1000 müssten dann alle Symbole in einer langen Diagonalen stehen.

 

WHILE h<>NIL DO BEGIN

name := GetSDName(h);

Symbol(name, x, y, 0);

 

h := NextSymDef(h);

END;

 

Schönen Gruß, Uwe.

VW 2014 Interiorcad - Vectorscript - AV - Mac OS X 10.9 , www.cadtischler.de

Link zu diesem Kommentar

Hallo Uwe,

 

Danke für die Tipps.

Das funktioniert jetzt, aber nur, wenn ich die Symbole aus den Ordnern heraus ins Hauptverzeichnis schiebe. Das lässt sich aber noch ganz gut von Hand machen bzw. sollte doch die FInFolder-Funktion die Richtige sein, um in die Ordner zu gehen, oder?

 

MfG Dominik

Link zu diesem Kommentar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      23,5Tsd
    • Beiträge insgesamt
      120,9Tsd
×
×
  • Neu erstellen...