Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Handle eines eingefügten blockes

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:  Handle eines eingefügten blockes (1431 mal gelesen)
JoergAD
Mitglied



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

Beiträge: 43
Registriert: 07.03.2007

erstellt am: 16. Aug. 2007 11:48    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

Hi VBA'ler,

habe ein Problem und hoffe hier auf Hilfe.

Ich habe einen Block in eine Zeichnung eingefügt und würde nun gern dessen Handle auslesen und speichern.

Soweit alles klar.

Aber jetzt das Problem:

Den Block habe ich über die Befehlszeile eingefügt, also

ThisDrawing.SendCommand "-einfüge" & vbCr
ThisDrawing.SendCommand "Blockname" & vbCr & "100,40,0"& vbCr & Wandel(allBLFaktor) & vbCr & vbCr & vbCr

Diesen Block möchte ich nun auslesen und sein Handle für spätere Aktionen speichern.

Wie komme ich an den richtigen Block und dessen Handle?

Vielen Dank im voraus für eure Hilfe.

CUSee You, Jörg

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

Headcase
Mitglied
Dipl.-Ing. (FH) --> Maschinenbau


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

Beiträge: 141
Registriert: 14.10.2004

WinXP Prof., SP3
AutoCAD Mechanical 2010 (2008)
Inventor 2010 (2008)

erstellt am: 16. Aug. 2007 14:13    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 JoergAD 10 Unities + Antwort hilfreich

Hallo!

Also ganz spontan würde ich vorschlagen - da ja der Name des Blockes bekannt ist - einfach die Blockauflistung nach diesem Block zu durchsuchen und das Handle zu speichern, etwa so:

Zitat:

Sub test()

Dim Block As AcadBlock
Dim MeinBlockHandle As String

For Each Block In ThisDrawing.Blocks
    If Block.Name = blockname Then MeinBlockHandle = Block.Handle
Next Block

End Sub


Soweit mein Vorschlag...

Grüße!
René

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

JoergAD
Mitglied



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

Beiträge: 43
Registriert: 07.03.2007

erstellt am: 16. Aug. 2007 14:21    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

Was, wenn der gleiche Block mehrmals eingefügt wird?

Mit der obrigen Lösung darf der Block nicht nochmal eingefügt werden, richtig?

Bei einem Durchlauf nach dem Blocknamen würde er so doch mehrere Ergebnisse finden.

CUSee You, Jörg

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 16. Aug. 2007 14:27    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 JoergAD 10 Unities + Antwort hilfreich

ach, du möchtest das Handle der zuletzt eingefügten Blockrefenz haben?
mit Lisp:
(cdr(assoc 5(entget(entlast))))

Mit VBA .. ist es wohl am sinnvollsten, die Methode InsertBlock zu verwenden, welche auch das Object zurückliefert, von dem man die Property Handle auslesen kann.

------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

JoergAD
Mitglied



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

Beiträge: 43
Registriert: 07.03.2007

erstellt am: 16. Aug. 2007 14:47    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

Beide Antworten von Dir sind richtig, und mir auch bekannt.

Der Sonderfall aber verlangt aus diversen Gründen eine Einfügung über die Zeile mit SendCommand.

Und meine Frage zielte darauf, für diesen Fall das Handle auszulesen.

Ist dies nicht möglich?
Wenn nicht direkt, gibt es einen Trick?
Vielleicht über die Befehlzeilenauswahl L (letztes) oder ähnlichen Tricks?

CUSee You, Jörg!

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - ACA 2013
Arcibem
System:
Windows NT, 2000, XP
Internet-Startseite:
http://www.archi.de

erstellt am: 16. Aug. 2007 15:20    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 JoergAD 10 Unities + Antwort hilfreich

Hi Jörg,
versuchs mal mit
Dim obj As AcadObject
Set obj = AutoCAD.Application.ActiveDocument.ModelSpace.Item(AutoCAD.Application.ActiveDocument.ModelSpace.Count - 1)
hd = obj.Handle

Grüsse, Henning

------------------
VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 16. Aug. 2007 15:23    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 JoergAD 10 Unities + Antwort hilfreich

und wenns im Paperspace eingefügt wurde ??    also doch erst Activespace auswerten und dann entsprechend verzweigen, aber ansonsten könnts ein Ersatz für (entlast) sein ...

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

JoergAD
Mitglied



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

Beiträge: 43
Registriert: 07.03.2007

erstellt am: 16. Aug. 2007 16:27    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

Das ist zumindest schon mal ein guter Lösungsansatz.

Auch wenn er nur für den Modelbereich gilt, in diesem Fall, wo es benötigt wird kann man ausschliessen dass das Objekt auf dem Papierbereich liegt. Und wenn der User es dort einfügt hat er eh schon einen Zeichnungsstandartfehler gemacht, von daher...

Danke, Jörg!

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 16. Aug. 2007 19: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 Nur für JoergAD 10 Unities + Antwort hilfreich

Hallo Jörg,

warum von hinten durch die Brust ins Auge ??

Wenn du den Block per VBA einfügst hast du das Handle

Code:
Dim Blockref As AcadBlockReference
Dim Inspkt(0 To 2) As Double

Inspkt(0) = 10
Inspkt(1) = 20

Set Blockref = ThisDrawing.ModelSpace.InsertBlock(Inspkt, "Blockname", 1, 1, 1, 0)
Debug.Print Blockref.Handle



Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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