Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Alle Zeichenobjekte einer Zeichnung in eine andere Kopieren

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:  Alle Zeichenobjekte einer Zeichnung in eine andere Kopieren (10242 mal gelesen)
Gloem
Mitglied
Geoinformatiker


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

Beiträge: 179
Registriert: 07.12.2007

Intel(R) Core(TM) i7 930 @ 2,80GHz
4GB RAM, 300GB Velocity Raptor + 500GB Daten
NVIDIA Quadro FX1800<P>AutoCAD Map 2006 - AutoCAD Civil 2011, VBA, Dot-Net</p><P><p>Momentan nur AutoCAD Maop 2012 mit RXAutoImage und ACroPlot</p>

erstellt am: 22. Okt. 2008 21:24    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 wollte mal kurz fragen ob folgendes Programm ohne weiteres zu realisieren ist:

Ich möchte automatisch per VBA alle Objekte einer Zeichnung auswählen und in eine andere Zeichnung einfügen. Also quasi Kopieren mit Basispunkt(0,0) in der Quelldatei und Einfügen bei 0,0 in der Zieldatei automatisieren, da ich die manchmal für viel Zeichnungen machen muss.

Selectiert hab ich die ganzen Objekte schon nur fehlt mir jetzt der Befehl um die in der Zielzeichnung einzufügen.

Code:
        If (Dir(LB_Dateiliste.List(i, 0)) <> "") Then
            Documents.Open (LB_Dateiliste.List(i, 0))
            Set sourceDrawing = Documents.item(Documents.Count - 1)
           
            sourceDrawing.Activate
       
            Dim selectionSet As AcadSelectionSet
                 
            ' Bei Fehler -> Weitermachen, da .delete bei nicht vorhandensein einen Fehler wirft
            On Error Resume Next
       
            ' Löschen und neu Anlegen des Auswahlsatzes
            sourceDrawing.SelectionSets.item("").Delete
            Set selectionSet = sourceDrawing.SelectionSets.Add("TS_AUSWAHL")

            ' Bei Fehler -> Normales Verhalten
            On Error GoTo 0
           
            selectionSet.Select acSelectionSetAll
                     
            destinationDrawing.Active

        End If


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


Ex-Mitglied

erstellt am: 22. Okt. 2008 21:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

hi,

such mal in der acad-vba-hilfe nach 'CopyObjects', da hast du auch ein beispiel, wie du document-/database-uebergreifend kopieren kannst.

- alfred -

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 22. Okt. 2008 23:11    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 Gloem 10 Unities + Antwort hilfreich

Es geht aber doch auch ohne Programmierung recht fix:
Moglichkeit 1:
Zeichnung als Block einfügen mit automatschem Auflösen (Ursprung) und Einfügen auf 0,0
(Da ist nur die Dateiauswahl nötig und ein OK)

Möglichkeit 2  - 4 Tastenkobinationen:
Annahme:Quell- und Zilzeichnung sind bereits geöffnet
STRQ + A  (Alles Markieren in Quellzeichnung)
STRG + C  (Alles in Zwischenablage Kopieren)
STRG + TAB zur Zielzeichnung wechseln
STRG + SHIFT + Y  (ORIGEINFÜG - Mit Originalkoordinten einfügen) Diese Tastenkombi muss noch def. werden, die anderen sind Standard.


------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

cad4fun
Ehrenmitglied



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

Beiträge: 1846
Registriert: 06.12.2004

erstellt am: 23. Okt. 2008 08:08    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 Gloem 10 Unities + Antwort hilfreich

Auch ganz fix und ohne Programmierung

Annahme:Quell- und Zielzeichnung sind bereits geöffnet
PullDownMenü Fenster --> Nebeneinander oder Untereinander
STRQ + A  (Alles Markieren in Quellzeichnung)
in Quellzeichnung rechte Maustaste drücken und Zeichnung in Zielzeichnung ziehen
Taste lösen und gewünschte Option wählen

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

Gloem
Mitglied
Geoinformatiker


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

Beiträge: 179
Registriert: 07.12.2007

Intel(R) Core(TM) i7 930 @ 2,80GHz
4GB RAM, 300GB Velocity Raptor + 500GB Daten
NVIDIA Quadro FX1800<P>AutoCAD Map 2006 - AutoCAD Civil 2011, VBA, Dot-Net</p><P><p>Momentan nur AutoCAD Maop 2012 mit RXAutoImage und ACroPlot</p>

erstellt am: 23. Okt. 2008 11: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

Danke für eure Antworten.

Aber es geht hier wirklich um wiederkehrende Arbeiten mit massenweise Zeichnungen, weswegen sich das Programmieren schon lohnt. Formular und den Rest hab ich ja auch schon fertig, das war nur ne Stunde Arbeit, leider scheiter ich jetzt jedoch am Einfügen der Objekte.

Den Tipp mit CopyObjects werd ich mir mal genauer anschauen

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 23. Okt. 2008 16:19    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 Gloem 10 Unities + Antwort hilfreich

Hallo,
das mit "copyobjects" funktioniert recht gut. Wenn auch etwas langsam bei großen Dateien. Ich habe dazu folgende Prozedur geschrieben:

Public Sub copyalle()
Dim Enti As AcadEntity
Dim Alle() As Object
Dim i As Integer
Dim olddwg As AcadDocument
Dim newdwg As AcadDocument
Dim newobj As Variant
 
    i = 0
    Set olddwg = ThisDrawing
    ReDim Alle(olddwg.ModelSpace.layout.block.Count - 1)
    Set newdwg = ThisDrawing.Application.Documents(1)
    For Each Enti In olddwg.ModelSpace.layout.block
        Set Alle(i) = Enti
        i = i + 1
    Next Enti
    MsgBox i
    newobj = olddwg.CopyObjects(Alle, newdwg.ModelSpace)
End Sub

Dabei gehe ich davon aus, daß im Fenster eins die Quelldatei geöffnet ist und in Fenster 2 die Zieldatei. Aktiv ist Fenster 1. Viel Spass beim Probieren und hoffentlich hilft es Dir etwas weiter.

Gruß Theo

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 23. Okt. 2008 18:06    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 Gloem 10 Unities + Antwort hilfreich

Hi Gloem,

Dumme Frage: Wenn du alles aus der Quelldatei kopieren willst, warum öffnest du die Quelldatei nicht und speichert diese unter einem neuen Namen ab?!

Und sonst gäbe es noch die WBlock-Methode, wo du mit einem Selectionset eine Vorauswahl der Objekte machen kannst.
Das sollte auf jeden Fall bei größeren Dateien das schnellste sein.

Gruß, Carsten

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

Gloem
Mitglied
Geoinformatiker


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

Beiträge: 179
Registriert: 07.12.2007

Intel(R) Core(TM) i7 930 @ 2,80GHz
4GB RAM, 300GB Velocity Raptor + 500GB Daten
NVIDIA Quadro FX1800<P>AutoCAD Map 2006 - AutoCAD Civil 2011, VBA, Dot-Net</p><P><p>Momentan nur AutoCAD Maop 2012 mit RXAutoImage und ACroPlot</p>

erstellt am: 23. Okt. 2008 19:41    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

Weil jedesmal die Daten aus 30 bis 50Dateien zusammenkopiert werden müssen

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

erstellt am: 23. Okt. 2008 20:26    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 Gloem 10 Unities + Antwort hilfreich

Hi,

Und wie wäre es dann mit der InsertBlock-Methode und eventuell nach dem Einfügen sprengen?!

Gruß, Carsten

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

Gloem
Mitglied
Geoinformatiker


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

Beiträge: 179
Registriert: 07.12.2007

Intel(R) Core(TM) i7 930 @ 2,80GHz
4GB RAM, 300GB Velocity Raptor + 500GB Daten
NVIDIA Quadro FX1800<P>AutoCAD Map 2006 - AutoCAD Civil 2011, VBA, Dot-Net</p><P><p>Momentan nur AutoCAD Maop 2012 mit RXAutoImage und ACroPlot</p>

erstellt am: 23. Okt. 2008 23:22    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

Die Importfunktion von Theo funktioniert ganz gut und das Formular drumrum hat auch nicht lange gebraucht. Aer trotzdem danke für alle weiteren Lösungsvorschläge

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

VBA_Spielmann
Mitglied
Maschinenbautechniker


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

Beiträge: 11
Registriert: 30.09.2004

erstellt am: 29. Jan. 2010 09: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 Gloem 10 Unities + Antwort hilfreich

Hallo zusammen,

ich möchte nochmal aufgreifen. Ich habe mal den Code von Theo37 getestet, funktioniert gut.
Nun habe ich aber festgestellt, daß keine Bemassung kopiert wird ?!? Wenn ich das Objektmodell richtig verstehe, müßten doch Bemassungselemente auch unter die zu kopierenden Elemente fallen...

Kann da jemand nachvollziehen, bzw. hat jemand eine Lösung dafür ?

Danke, Gruß Georg


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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 29. Jan. 2010 09:46    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 Gloem 10 Unities + Antwort hilfreich

Hallo Georg,

die Bemassungen werden schon mit kopiert. Nur werden sie, in der neuen Datei, erst angezeigt wenn man "Bemassung aktualisiern" ausführt.

Gruß, Theo

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

VBA_Spielmann
Mitglied
Maschinenbautechniker


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

Beiträge: 11
Registriert: 30.09.2004

erstellt am: 29. Jan. 2010 12:44    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 Gloem 10 Unities + Antwort hilfreich

Hallo Theo,

super, das funktioniert. Ich konnte mir aber bisher nur so helfen, indem ich die Zeichnung geschlossen und wieder geöffnet habe.
Bei 'Bemassung aktualisieren' im Menü muß ich ja Objekte anwählen, die ich nicht sehe... ?!?

Hast Du eine Idee für einen VBA-Befehl ?

Nochmals besten Dank, Dein Tipp hat auf jeden Fall geholfen.

Gruß GEorg

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 29. Jan. 2010 13: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 Gloem 10 Unities + Antwort hilfreich

Hallo Georg,

ich habe auf die Anfrage "Objekte wählen:" mit "Alle" geantwortet, dann werden alle Bemaßungen der Zeichnung aktualisiert.

Das mit VBA zu lösen wäre kein Problem. Mann müsste nur alle Objekte prüfen ob es sich ume eine Bemaßung handelt und wenn ja dann aktualisiern.

Leider ist es doch ein Problem, weil es in ACAD 10 verschiedene Bemaßungsobjekte gibt. Das ist eine Frage an die Profis wie man die möglichst einfach erwischt. Ich weiß zumindest keine schnelle Lösung

Gruß, Theo

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

VBA_Spielmann
Mitglied
Maschinenbautechniker


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

Beiträge: 11
Registriert: 30.09.2004

erstellt am: 29. Jan. 2010 13: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 Nur für Gloem 10 Unities + Antwort hilfreich

Hallo Theo,

ja, so gehts. Vielen Dank noch mal, ich forsche jetzt mal nach einer VBA-Lösung.

Gruß Georg

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