Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Insert's finden

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
  
PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Insert's finden (1356 mal gelesen)
tfreudi1
Mitglied



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

Beiträge: 11
Registriert: 15.02.2007

erstellt am: 25. Jun. 2007 12: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

Ich habe einen Block auf einem Layer eingefügt. Wenn ich den Layer ausblende verschwindet der Block, d.h. er muss schon auf diesem layer liegen. Wenn ich aber in VBA versuche über ein Selectionsset den eingefügten Block zu finden klappt das nicht. hat jemand einen Tip ? Hier die Funktion:

Public Static Function GetLimitFromBlock(newDoc As AcadDocument) As Boolean
Dim sset As Object, Entity As AcadObject
Dim fType%(1), fData(1)

    On Error Resume Next
   
    Set sset = newDoc.SelectionSets("Rahmen")
    If Err.Number Then
      Set sset = newDoc.SelectionSets.Add("Rahmen")
    End If
    fType(0) = 0
    fData(0) = "INSERT"
    fType(0) = 8
    fData(0) = "vuski"
       
    sset.Select acSelectionSetAll, , , fType, fData
    For Each Entity In sset
  If Entity.EntityType = acBlock Then
              ' Hier kommt er nie an ?
        Print Entity.InsertionPoint
    End If
    Next
    sset.Delete
       
 
End Function

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: 1360
Registriert: 24.07.2002

AutoCAD ACA 2024
Solidworks 2022 Sp5
Enterprise PDM 2022 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell Precision 3660
Intel Core i9-12900K
32 GB Arbeitsspeicher
2x Dell U2415

erstellt am: 25. Jun. 2007 12:33    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 tfreudi1 10 Unities + Antwort hilfreich

Hi,

Wie wäre es, wenn du den Filter so definierst:

Code:
    fType(0) = 0
    fData(0) = "INSERT"
    fType(1) = 8
    fData(1) = "vuski"

Gruß, Carsten

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

tfreudi1
Mitglied



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

Beiträge: 11
Registriert: 15.02.2007

erstellt am: 25. Jun. 2007 12: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

Gute Idee. Ich hatte zwischenzeitlich versucht mir alle Objekte auf vuski ausgeben zu lassen, daher der Fehler. Geht aber auch nicht wenn man 1 reinschreibt.
Noch ne Ide?

Freudi

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: 1360
Registriert: 24.07.2002

AutoCAD ACA 2024
Solidworks 2022 Sp5
Enterprise PDM 2022 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell Precision 3660
Intel Core i9-12900K
32 GB Arbeitsspeicher
2x Dell U2415

erstellt am: 25. Jun. 2007 12:58    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 tfreudi1 10 Unities + Antwort hilfreich

Hi Freudi,

Hier noch ein Beispiel:

Public Sub test()
Dim sset As AcadSelectionSet
Dim Entity As AcadEntity
Dim fType%(0), fData(0)

    On Error Resume Next
 
    Set sset = ThisDrawing.SelectionSets("Rahmen")
    If Err.Number Then
      Set sset = ThisDrawing.SelectionSets.Add("Rahmen")
    End If
    fType(0) = 0
    fData(0) = "INSERT"
    fType(1) = 8
    fData(1) = "vuski"
     
    sset.Select acSelectionSetAll ', , , fType, fData
    For Each Entity In sset
  If Entity.EntityType = "IAcadBlockReference" Then
              ' Hier kommt er nie an ?
        MsgBox "Test"
    End If
    Next
    sset.Delete
End Sub


Gruß, Carsten

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

tfreudi1
Mitglied



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

Beiträge: 11
Registriert: 15.02.2007

erstellt am: 27. Jun. 2007 12:59    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

Geht auch nicht. Komischerweise findet er lauter LineObjecte obwohl er doch Inserts suchen soll. Ich iteriere jetzt durch alle Objecte der zeichnung , da findet er das.
Das reicht mir. Finde ich aber komisch das das mit Selektionen nicht geht.

Danke für die Hilfe
Freudi

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: 1526
Registriert: 17.08.2005

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

erstellt am: 27. Jun. 2007 13: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 Nur für tfreudi1 10 Unities + Antwort hilfreich

Hallo Freudi,

dann mach mal den Kommentar aus Carstens Code vor dem Filter weg.
Und bevor du die Selektion anwendest machst du mal ein Zoom Grenzen.

Seltsamerweise werden nur sichtbare Objekte in das Selectionset übernommen.

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

tfreudi1
Mitglied



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

Beiträge: 11
Registriert: 15.02.2007

erstellt am: 27. Jun. 2007 14: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

Das macht wiedre Sinn. Mit Kommentar bekomme ich die Linien und ohne garnichts. Irgendwie sind die Kommentare in Autocad nicht gefärbt wie in meiner VB Umgebung. Das muss mich mal ändern dann wäre mir das gleich aufgefallen. Im Block sind 4 Linien die gruppiert sind, 3 davon sind sichtbar. Ich probiere es nochmal.

Danke

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: 1526
Registriert: 17.08.2005

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

erstellt am: 28. Jun. 2007 14:15    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 tfreudi1 10 Unities + Antwort hilfreich

Hallo Freudi,

vielleicht hast du was mit dem Block falsch gemacht ?
Bei mir läuft es so:

Code:
Public Sub test()
Dim sset As AcadSelectionSet
Dim Entity As AcadEntity
Dim fType%(1), fData(1)

    On Error Resume Next
 
    Set sset = ThisDrawing.SelectionSets("Rahmen")
    If Err.Number Then
      Set sset = ThisDrawing.SelectionSets.Add("Rahmen")
    End If
    On Error GoTo 0
   
    fType(0) = 0
    fData(0) = "INSERT"
    fType(1) = 8  ' Layer
    fData(1) = "Layer1"
    fType(1) = 2  ' Blockname
    fData(1) = "Testblock"
   
    sset.Select acSelectionSetAll, , , fType, fData
    For Each Entity In sset
        If Entity.ObjectName = "AcDbBlockReference" Then
              ' Hier kommt er nie an ?
          MsgBox Entity.Name
        End If
    Next
    sset.Delete
End Sub



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

tfreudi1
Mitglied



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

Beiträge: 11
Registriert: 15.02.2007

erstellt am: 03. Jul. 2007 09: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

Sorry aber ich habe das jetzt wieder umstellen lassen und LWPOLYLINES anstatt Blöcken verwendet. Das hat zwar den Nachteil das wieder 4 Linien daraus werden wenn man es in eine andere Zeichnung kopiert ( ist mir auch ein Rätsel ) aber die 4 Linien sind dannn die längsten in der Zeichnung und so erkenne ich sie. Ich versuche es nochmal mit einer alter Zeichnung aber das ist mir zu unsicher. Irgendwie finde ich auch blöd das man Entitys keinen Namen geben kann. Dann könnte der Zeicher sagen die Linien die soundso heissen haben die und die Funktion und dann könnte per Programm prima wiederfinden. Das hatte ich schon mal in einem anderen Thread gefragt, aber das scheint nicht zu gehen.
Danke für die Hilfe
Freudi

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: 1526
Registriert: 17.08.2005

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

erstellt am: 03. Jul. 2007 11:52    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 tfreudi1 10 Unities + Antwort hilfreich

Hallo Freudi,

du kannst schon einen Namen geben. Versuchs doch mal so

Code:
Public Sub MakeGroup()
    Dim ss As AcadSelectionSet
    Dim objGroup As AcadGroup
    Dim objEntitys() As AcadEntity
   
    On Error Resume Next
    Set ss = ThisDrawing.SelectionSets("GroupSel")
    If Err.Number Then
      Set ss = ThisDrawing.SelectionSets.Add("GroupSel")
    End If
    On Error GoTo 0
   
    ThisDrawing.Utility.Prompt Chr(10) & "Elemente der Gruppe wählen:"
    ss.SelectOnScreen
   
    Debug.Print ss.Count
    If ss.Count > 1 Then
      On Error Resume Next
      Set objGroup = ThisDrawing.Groups("MyGroup")
      If Err.Number Then
            ' Gruppe gab es noch nicht
            Set objGroup = ThisDrawing.Groups.Add("MyGroup")
      Else
            On Error GoTo 0
            ' Elemente entfernen
            If objGroup.Count > 0 Then
                ReDim objEntitys(0 To objGroup.Count - 1)
                For i = 0 To objGroup.Count - 1
                    Set objEntitys(i) = objGroup(i)
                Next i
                objGroup.RemoveItems objEntitys
            End If
      End If
      On Error GoTo 0
     
     
      ReDim objEntitys(0 To ss.Count - 1)
      For i = 0 To ss.Count - 1
          Set objEntitys(i) = ss(i)
      Next i
      objGroup.AppendItems objEntitys
         
    End If
   
End Sub


Dann kannst du einfach die Elemente der Gruppe lesen.

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:Infos zum Werbeplatz >>

pitCAD Ultimate Heizung - Kälte - Sanitär - Laborbau - Netzwerk CAD APP für TGA, Elektro, Facility Management

Vereint die langjährige Erfahrung von pit-cup im Bereich der Gebäudetechnikplanung und des Facility Management zu einem durchgängigen 2D/3D CAD/BIM Planungswerkzeug, über den gesamten Lebenszyklus einer Immobilie.

tfreudi1
Mitglied



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

Beiträge: 11
Registriert: 15.02.2007

erstellt am: 03. Jul. 2007 13: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

Ja das ist auch ne Möglichkeit der Zeichner kann sicher solche Gruppe über normale Menübefehle anlegen und ich Programmierer identfiziere diese dann mittels ThisDrawing.Groups("MyGroup").

Das ist doch noch mal ne Möglichkeit.

Danke
Freudi

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