Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Objekte aus Referenz kopieren -> Block Explode Problem

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:  Objekte aus Referenz kopieren -> Block Explode Problem (3843 mal gelesen)
Hendrik2
Mitglied


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

Beiträge: 6
Registriert: 14.09.2009

erstellt am: 14. Sep. 2009 20:25    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,
ich habe folgendes Problem bei der Programmierung in AutoCAD 2008.

Ich muss aus einer DWG Datei alles in eine andere übernehmen und einen Teil der Objekte löschen oder von vornherein nicht kopieren.

Ich habe das wie folgt gemacht:

Code:

' Als Referenz anhängen
Set XRefFile = ThisDrawing.ModelSpace.AttachExternalReference(Filename, fso.GetBaseName(Filename), EinfügePt, 1, 1, 1, 0, False)

' Binden - Hier entsteht ein Block
ThisDrawing.Blocks.Item(XRefFile.Name).Bind True

' Um damit weiterarbeiten zu können muss ich den Block auflösen
SelSet.Select acSelectionSetAll
For Each Entity In SelSet
If TypeOf Entity Is AcadBlockReference Then
Set BlockRef = Entity       
BlockRef.Explode
End If
Next Entity


Nur das ich beim Explode die tolle Meldung erhalte: "Nicht geeignet" - Manuell also per Ändern->Ursprung kann ich diese BlockReferenz aber auflösen.

Wenn das so schlicht Falsch ist würde ich mich über den richtigen Weg freuen.

Gruß, Hendrik

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


Ex-Mitglied

erstellt am: 14. Sep. 2009 21:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Hendrik,

mit VBA ist der einfachste Weg:

- mach die Zeichnung auf statt zu referenzieren
- selektiere dort die Objekte, die in eine andere DWG zu transportieren sind
- erstelle mit den selektierten Elementen eine Zeichnung mittels 'WBlock'
- füge diese mit 'insert' in die Zielzeichnung ein (und explodiere diese bei Bedarf)

Sample von 'WBlock' findest Du in der VBA-Hilfe
Sample von 'Insertlock' ebenfalls

arbeitest Du mti VB.NET, da gibt's schnelleres (vor allem da die Quellzeichnung nicht in den AutoCAD-Editor zu laden ist), dann lass es mich/uns wissen.

- alfred -

------------------
www.hollaus.at

Hendrik2
Mitglied


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

Beiträge: 6
Registriert: 14.09.2009

erstellt am: 14. Sep. 2009 21:56    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

Danke - ich werde das gleich mal testen.

Aber nur mal so aus neugier - warum geht das denn nicht so wie ich das versucht habe?

Zum Punkt Sprache kann ich sagen das ich primär in C#.NET und was CAD angeht in Micostation fit bin - leider entwickle ich eine vorhandene Anwendung weiter daher komme ich nicht um VBA herum.

Gruß, Hendrik

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


Ex-Mitglied

erstellt am: 14. Sep. 2009 22:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

sorry, ich vergaß: Herzlich willkommen bei CAD-de!  

Ich gebe zu, den Weg von Dir habe ich nicht ausprobiert. Wieso sich das XRef nicht explodieren lassen sollte, dem bin ich auch nicht nachgegangen.

Meine Antwort kommt aus der Überlegung der 'Performance' und 'Verunstaltung der aktuellen Zeichnung', denn:

- Zuerst mittels XRef zu referenzieren um es danach mittels explode aufzulösen ist langsamer als gleich mit 'InsertBlock' einzufügen

- Wenn Du eine ganze Zeichnung einfügst (aber nur einen Teil davon brauchst), dann hast Du zumindest mal in der aktuellen Zeichnung eine Blockdefinition, die alle Bestandteile der externen Zeichnung inkludiert. Auch wenn Du diese BlockReferenz zerlegst und Teile davon löscht, bleibt noch immer die Definition im Block-Header. Damit ist die Zeichung zumindest bis zum Befehl 'bereinigen'/'_purge' größer als gewünscht und notwendig.

----------

Zu dem Explode-Problem zurück: ich sehe nur, dass Du ein SelectionSet von 'allem' machst, war Deine Zeichnung vor binden des XRefs leer oder sind da ev. schon BlockReferenzen enthalten, die nicht-proportional skaliert sind (ScaleX <> ScaleY <> ScaleZ)? Denn eingentlich 'darf' der Explode-Befehl nur diese BlockReferenzen 'ablehnen'

Ein Beispiel zum Explodieren, in dem SendCommand für solche Fälle eingebaut ist, findest Du >>>hier<<<

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 14. Sep. 2009 editiert.]

Hendrik2
Mitglied


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

Beiträge: 6
Registriert: 14.09.2009

erstellt am: 17. Sep. 2009 18:01    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

So - erstmal vielen Dank.
Das hat soweit geklappt wobei es auch geht, wenn ich die ganze DWG als Block einfüge und den Kram auflöse.

Eine kleinere Frage hätte ich aber noch:

Code:

Dim HSW As AcadText
'PtHSW ist ein Double(2) mit den Koordinaten
Set HSW = ThisDrawing.PaperSpace.AddText("Text", PtHSW, 1)
HSW.Alignment = acAlignmentCenter
HSW.TextAlignmentPoint = PtHSW

Ich befinde mich im Layout.
Wenn dich das bis zum SET... ausführe kann ich den Text sehen.
Wenn ich die Ausrichtung änder ist der Text weg.

Was mache ich falsch?

Gruß, Hendrik

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


Ex-Mitglied

erstellt am: 17. Sep. 2009 18:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich sehe keinen Fehler und kann auch keinen reproduzieren. Dein Code (mit Anfangswert von PtHSW = 10,5,0) funktioniert bei mir.

Sorry, - alfred -

------------------
www.hollaus.at

Hendrik2
Mitglied


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

Beiträge: 6
Registriert: 14.09.2009

erstellt am: 22. Sep. 2009 01:07    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,
so den Fehler habe ich gefunden. War schlicht eine falsch geschriebene Variable für den TextAligenmentPoint.

Ich habe aber glatt noch eine Frage:
Kann ich die Bereinigungsfunktion auch aus VBA aufrufen?

Gruß, Hendrik

Und auf jeden Fall schonmal vielen Dank! 

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


Ex-Mitglied

erstellt am: 22. Sep. 2009 01:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Code:
ThisDrawing.PurgeAll

- alfred -

------------------
www.hollaus.at

Hendrik2
Mitglied


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

Beiträge: 6
Registriert: 14.09.2009

erstellt am: 23. Sep. 2009 17:03    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

Vielen dank nochmal für deine Hilfe.

Gruß, Hendrik

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