| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Suche Block in Zeichnung bzw Support-list (979 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 04. Jun. 2015 08:12 <-- editieren / zitieren --> Unities abgeben:
Mal kurz nachgefragt, wenn ich prüfen möchte, ob ein Block mit bspw. Namen "CHECK" in der Zeichnung vorhanden ist, gibt es einmal das Problem, dass nur der Blockname mit Grossbuchstaben gefunden werden kann und zum zweiten, sollte der Block nicht in der aktuellen Zeichnung sein, soll in den Supportfiles gesucht werden. In LISP ist das sehr einfach zu erledigen, wie sieht es jedoch mit C#.NET aus Code: using (Transaction myT = db.TransactionManager.StartTransaction()) { //Get the block definition "Check". string blockName = "CHECK"; bool found = false; //Check if block "CHECK" found in databas BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable; foreach (ObjectId id in bt) { BlockTableRecord btRecord = (BlockTableRecord)myT.GetObject(id, OpenMode.ForRead); if (btRecord.Name.Contains("CHECK")) { ed.WriteMessage("\nBlock name: {0}", btRecord.Name); found = true; } //ed.WriteMessage("\nFound Block name: {0", btRecord.Name); }
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 04. Jun. 2015 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, die BlockTable ist ein Array, auf deren Elemente du direkt mit dem BlockNamen abfragen kannst. ObjectId _blockTableRecordId = bt ["CHECK"] if(_blockTableRecordId == ... So ein (findfile ..) wie in Lisp ist mir in .Net-API nicht bekannt. Falls es das wirklich nicht gibt, musst du halt jeden Supportpfad checken, ob dieser die Datei enthält. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 04. Jun. 2015 08:37 <-- editieren / zitieren --> Unities abgeben:
Danke für den Tip mit array (1A.Klasse was ein array alles einsammelt). Der Aufruf 'command' in LISP ist da ziehmlich gediegen, wenn man bedenkt was der unternimmt, um bspw. einen Block zu finden. Gibt es nicht selbiges als Methode in .NET oder wie kann es funktionieren (theoretisch), wenn man externe Suchpfade wie bei findfile in der Suche mit einbeziehen möchte. ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 04. Jun. 2015 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 04. Jun. 2015 19:47 <-- editieren / zitieren --> Unities abgeben:
Klaro! Du bist doch immer mal wieder zum scherzen bereit Habs gefunden und werd mal weiter schwitzen Danke! Zitat: ...musst du halt jeden Supportpfad checken, ob dieser die Datei enthält...
Das meinte ich eben, command erledigt das selbst, wenn der Block irgendwo in den Suchpfaden vergraben ist. Nicht aber das Beispiel, welches ich erst gepostet habe, dass checkt nur in der Zeichnung. Also stellt sich nun die Frage, wie kann ich bei der Abfrage die Support-pfade einbeziehen. Sehe ich wiedermal den Wald vor Bäumen nicht ? [Diese Nachricht wurde von cadplayer am 04. Jun. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 04. Jun. 2015 20:54 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Es gibt (nach Brischkes Kenntnisstand) keinen Wald, du suchst ihn aber verzweifelt weil die alternative Arbeit ist, hmm. Wobei das nicht viel Arbeit sein kann, denn "suche Datei in Ordner XY" wirst du ja hinbekommen und das machst du dann für alle Supportordner, das aktuelle Verzeichnis und alle Projektverzeichnisse(falls die aktuelle Datei einen Projekt zugeordnet ist). Beim ersten Treffer kannst du aufhören/die Datei ist im ACAD-Sinn die gesuchte. Die Reihenfolge der Suche hat man in 5min raus - um es 1:1 zum Einfüge-Befehl gestalten zu können.
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |