Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block in Block suche

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Block in Block suche (898 mal gelesen)
gerhard123
Mitglied
techn.Angestellter


Sehen Sie sich das Profil von gerhard123 an!   Senden Sie eine Private Message an gerhard123  Schreiben Sie einen Gästebucheintrag für gerhard123

Beiträge: 151
Registriert: 29.11.2007

erstellt am: 29. Jan. 2014 08:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

Wir haben bei eine Zeichnung mit sehr vielen Blöcken ein Problem.
Es gibt Block in Blockdefinitionen und jetzt musste ich herausfinden in welchen Blöcken überall der Block X zu finden ist.

Hat da jemand vielleicht eine Idee wie ich das umsetzen könnte!

Vorab schon mal Danke für eure Hilfe
Gerhard

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 29. Jan. 2014 08:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gerhard123 10 Unities + Antwort hilfreich

Du durchläufst einfach jede Blockdefinition und schaust nach einem INSERT dieses gesuchten Blockes.

EDIT: Du hättest nicht noch mal einen neuen Thread starten müssen, HIER GEHT WEITER. KLICK!

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

[Diese Nachricht wurde von cadffm am 29. Jan. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 29. Jan. 2014 09:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gerhard123 10 Unities + Antwort hilfreich


GetAllBlockReferencies.zip

 
Hallo Gerhard,

grundsätzlich ist es richtig, was mein Kollege cadffm schreibt.
Ich fand das aber als gutes Beispiel, die Unterschiede zur .Net-API mal aufzuzeigen, bzw. zu zeigen, wie man beides gut miteinander verbinden kann.

In .Net hat man die Möglichkeit, die Blockreferenzen einer Blockdefinition direkt abzufragen. Ebenso hat man die Möglichkeit, die von einer dyn. Blockdefinition abgeleiteten anonymen Blockdefinitionen (die entstehen, wenn man an einer Blockreferenz eine dynamische Eigenschaft ändert) abzufragen. Von diesen kann man dann wiederum die Blockreferenzen abfragen.
Das habe ich mit folgenden .Net-Code erledigt (ich denke verstehendes Lesen wird unter Beachtung der oben beschriebenen Vorgehensweise möglich sein):

Code:
public static ObjectIdCollection RunTool(String _Name)
        {
            ObjectIdCollection _refIds = new ObjectIdCollection();
            _myInit();
            using (Transaction _tr = _db.TransactionManager.StartTransaction())
            {
                BlockTable _bt = (BlockTable)_tr.GetObject(_db.BlockTableId, OpenMode.ForRead);
                ObjectId _btrId = _bt[_Name];
                _bt.Close();
                BlockTableRecord _btr = (BlockTableRecord)_tr.GetObject(_btrId, OpenMode.ForRead);
                _refIds = _btr.GetBlockReferenceIds(true, true);
                ObjectIdCollection _BtrRefIds = _btr.GetAnonymousBlockIds();
                _btr.Close();
                foreach (ObjectId _btrRefId in _BtrRefIds)
                {
                    BlockTableRecord _nBtr = (BlockTableRecord)_tr.GetObject(_btrRefId, OpenMode.ForRead);
                    foreach (ObjectId _brId in _nBtr.GetBlockReferenceIds(true, true))
                        _refIds.Add(_brId);
                    _nBtr.Close();
                }
            }
            return _refIds;
        }

Nun habe ich .Net-seitig eine zusätzliche Lisp-Funktion definiert, die als Parameter den Namen des Blocks erwartet.
Diese zusätzliche Funktion findest du in der anbei befindlichen DLL-Datei, die du mit dem Befehl: Netload zunächst laden musst.
Danach hilft dann vielleicht dieser Lisp-Code weiter, mit dem ich für jede in der Zeichnung definierte Blockdefinition die Referenzen abfrage.

Code:
(defun getAllBlockReferencies(/ Names)
  (vlax-for Item (vla-get-Blocks(vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq Names (cons (vlax-get-Property Item 'Name) Names))
    )
  (mapcar '(lambda (Name)
    (cons Name (cod-getblockreferencies Name))
    )
  Names
  )
  )

Ist die .Net-DLL geladen, wird das zusätzliche Lisp-Command cod-getblockreferencies in der VLIDE wie eine ganz normale Lisp-Funktion angezeigt (im Standard blau).

Kannst es ja mal testen, besonders im Vergleich zu Lisp, hinsichtlich der Bearbeitungsgeschwindigkeit.

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

gerhard123
Mitglied
techn.Angestellter


Sehen Sie sich das Profil von gerhard123 an!   Senden Sie eine Private Message an gerhard123  Schreiben Sie einen Gästebucheintrag für gerhard123

Beiträge: 151
Registriert: 29.11.2007

erstellt am: 29. Jan. 2014 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

danke für dein Beispiel, konnte es leider nicht testen da wir nohc mit Autocad2010 arbeiten und deine DLL's erst ab 2011 beginnen
Vielleicht hast du ja die Möglichkeit mit auch eine 2010 DLL zukommen zu lassen..

Vorab schon mal Danke für deine Mühe
Gerhard

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 29. Jan. 2014 11:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gerhard123 10 Unities + Antwort hilfreich


GetAllBlockReferencies.zip

 
... anbei ab 2009.

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

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 12. Feb. 2014 12:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für gerhard123 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von gerhard123:
Hallo Holger,

danke für dein Beispiel, konnte es leider nicht testen da wir nohc mit Autocad2010 arbeiten und deine DLL's erst ab 2011 beginnen
Vielleicht hast du ja die Möglichkeit mit auch eine 2010 DLL zukommen zu lassen..

Vorab schon mal Danke für deine Mühe
Gerhard


Und? -- Bist du schon zum testen gekommen?

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

gerhard123
Mitglied
techn.Angestellter


Sehen Sie sich das Profil von gerhard123 an!   Senden Sie eine Private Message an gerhard123  Schreiben Sie einen Gästebucheintrag für gerhard123

Beiträge: 151
Registriert: 29.11.2007

erstellt am: 12. Feb. 2014 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

sorry, hab vergessen zu antworten,
hab es getestet und ist supper!!

Lg.
Gerhard

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz