Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Eine ganz einfache Sache...

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  Eine ganz einfache Sache... (1096 mal gelesen)
bug_hunter
Mitglied


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

Beiträge: 3
Registriert: 26.02.2005

erstellt am: 26. Feb. 2005 22: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 Leute,

ich bin neu hier, und finde das Forum sehr gut. Nun habe ich ein Problem in VB6. Ich dachte am Anfang nichts leichter als das, aber langsam bin ich am verzweifeln. Ich will einfach einen Block aus einer DWG in eine andere kopieren. Ja, ich habe die "Suche" benutzt und gefolgt, aber es will trotzdem nicht so recht. Hier mal der code:

Code:

Private Sub Command1_Click()
    Call CopyBlock("MEIN_BLOCK", "C:\Source.dwg", "C:\Target.dwg")
End Sub

Public Sub CopyBlock(sBlockName As String, sSourceFile As String, sTargetFile As String)
    Dim oAcad As AcadApplication
    On Error Resume Next
    Set oAcad = GetObject(, "AutoCAD.Application")
   
    If Err Then
        MsgBox "AutoCAD starten und so..."
        Exit Sub
    End If
   
    Dim oSource As AcadDocument
    Set oSource = oAcad.Documents.Open(sSourceFile)
   
    Dim oBlockRef As AcadBlockReference
    For Each oBlockRef In oSource.ModelSpace
        If oBlockRef.EntityName = "AcDbBlockReference" Then
            If oBlockRef.Name = sBlockName Then
                Exit For
            End If
        End If
    Next

    Dim oTarget As AcadDocument
    Set oTarget = oAcad.Documents.Open(sTargetFile)

    Call oTarget.ModelSpace.InsertBlock(oBlockRef.InsertionPoint, oBlockRef.Name, oBlockRef.XScaleFactor, oBlockRef.YScaleFactor, oBlockRef.ZScaleFactor, oBlockRef.Rotation)
End Sub



Leider wird der Block "MEIN_BLOCK" nicht in die Target.dwg eingefügt. Was mache ich denn falsch ??? Bin für jede Hilfe dankbar.

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 27. Feb. 2005 16: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 bug_hunter 10 Unities + Antwort hilfreich

Hi hunter,

kleiner Vorschlag via Copy, hab faulerweise bissel reingeharkt, einmal zum Selbstbausatz ;-)

Gruss Nancy

Code:
Sub Command1_Click()
    'Call CopyBlock("MEIN_BLOCK", "C:\Source.dwg", "C:\Target.dwg")
    Call CopyBlock("myBlock", "C:\temp\test.dwg")
End Sub

Public Sub CopyBlock(sBlockName As String, sTargetFile As String)
'Public Sub CopyBlock(sBlockName As String, sSourceFile As String, sTargetFile As String)
'    Dim oAcad As AcadApplication
'    On Error Resume Next
'    Set oAcad = GetObject(, "AutoCAD.Application")
'    If Err Then
'        MsgBox "AutoCAD starten und so..."
'        Exit Sub
'    End If
    Dim oSource As AcadDocument, Otarget As AcadDocument
    'Set oSource = oAcad.Documents.Open(sSourceFile)
    Set oSource = Documents("Zeichng1.dwg")
    Dim myCopy(0 To 0) As Object, newO
    Dim oBlockRef As AcadBlockReference
    For Each oBlockRef In oSource.ModelSpace
      If oBlockRef.EntityName = "AcDbBlockReference" Then
        If oBlockRef.Name = sBlockName Then
          Set myCopy(0) = oBlockRef
          Exit For
        End If
      End If
    Next
    Set Otarget = Documents.Open(sTargetFile)
    newO = oSource.CopyObjects(myCopy, Otarget.ModelSpace)
End Sub


 

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

bug_hunter
Mitglied


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

Beiträge: 3
Registriert: 26.02.2005

erstellt am: 27. Feb. 2005 21:28    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 Nancy,

vielen Dank für den Tip. Funktioniert super! So einfach kann die Welt sein. Die Unities sind unterwegs...

lg

bug_hunter

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)2025 CAD.de | Impressum | Datenschutz