Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  SelectionSet Objektwahl Bildschirmausschnitt

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 präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  SelectionSet Objektwahl Bildschirmausschnitt (1184 mal gelesen)
MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 06. Feb. 2006 09:57    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 Zusammen,

in meinem Programm sollen im Umkreis von 100 Einheiten alle Texte gelöscht werden. Den Mittelpunkt gibt der User durch einen Klick an.

Gelöst habe ich das bisher mit einem Auswahlsatz, der alle Texte im "Umkreis" von 100 Einheiten beinhaltet:

sSetObj.SelectByPolygon acSelectionSetCrossingPolygon, dblKoord, groupCode, dataCode

in dblKoord stehen die Eckkoordinaten des Polygons um den Mittelpunkt
in groupCode und dataCode die DXF Eigenschaften vom Text.

PROBLEM: Wenn das Umringpolygon nicht innerhalb des aktuellen Zoomauschnitts liegt, werden auch nicht alle Texte gefunden.
Das kenne ich vom "normalen" Arbeiten mit ACAD: Wenn man während des aufziehens eines Auswahlfensters den Zoom verändert, fallen ggf. auch ausgewählte Elemente wieder aus dem Auswahlsatz.

Gibt es hierfür in VBA eine LÖSUNG ? Ich könnte natürlich hergehen und den Zoom in jedem Falle vergrößern (notfalls zoom extent). Lieber wäre mir aber eine Lösung, wo der USER "nichts bemerkt".

Danke im voraus und viele Grüsse

Martin

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: 06. Feb. 2006 11: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 MartinM 10 Unities + Antwort hilfreich

Hallo Martin,

bilde doch einen Auswahlsatz über alles (?SelectionSetAll?) und
gib einen Filter mit. Im Filter sind dann die DXF Gruppencodes für
Rechts- und Hochwert.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 06. Feb. 2006 12:50    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 Stelli,

vielen Dank für deine Antwort. Interessanter Ansatz: Habe einiges probiert und nachgelesen - ohne Erfolg.
Hast du das schonmal erfolgreich angewendet?

Viele Grüsse

Martin

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: 07. Feb. 2006 10:30    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 MartinM 10 Unities + Antwort hilfreich

Hallo Martin,

ich bekomm es auch nicht "wirklich" hin.
Hatte es mal so probiert:

Code:

Public Sub del_radius()
    Dim AWSatz As AcadSelectionSet
    Dim entity As AcadEntity
    Dim MPunkt As Variant
    Dim LU_Punkt(0 To 2) As Double
    Dim RO_Punkt(0 To 2) As Double
    Dim InsPunkt As Variant
    Dim Radius As Double
   
    On Error Resume Next
    Set AWSatz = ThisDrawing.SelectionSets("Myselset")
    If Err.Number <> 0 Then
      Set AWSatz = ThisDrawing.SelectionSets.Add("Myselset")
    End If
    On Error GoTo 0
   
    ' Mittelpunkt
    On Error Resume Next
    MPunkt = ThisDrawing.Utility.GetPoint(, Chr$(10) & "Mittelpunkt klicken:")
    If Err.Number <> 0 Then
      End
    End If
    On Error GoTo 0
   
    Radius = 100
    LU_Punkt(0) = MPunkt(0) - Radius
    LU_Punkt(1) = MPunkt(1) - Radius
    RO_Punkt(0) = MPunkt(0) + Radius
    RO_Punkt(1) = MPunkt(1) + Radius

    ' alle Blockrefs wählen
    Dim FType%(0), FData(0)
    FType(0) = 0: FData(0) = "INSERT"
   
    AWSatz.Clear
    AWSatz.Select acSelectionSetCrossing, LU_Punkt, RO_Punkt, FType, FData
       
    For Each entity In AWSatz
        InsPunkt = entity.InsertionPoint
        If Sqr((InsPunkt(0) - MPunkt(0)) ^ 2 + (InsPunkt(1) - MPunkt(1)) ^ 2) <= Radius Then
          entity.color = acRed
          entity.Update
        End If
    Next entity
End Sub



Hat aber den gleichen Fehler das Elemente ausserhalb des Bildschirmfensters nicht gewählt werden.

Eine AND / OR Verknüpfung der Filterdaten krieg ich schon noch hin, aber die Formulierung von < oder > als Koordinate nicht mehr.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 07. Feb. 2006 11:00    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 Stelli,

vielen Dank für deine Mühe.
Als Workaround werde ich nun vor dem Füllen des Auswahlsatzes ein ZoomCenter mit festem Zoomfaktor einbauen, damit gewährleistet ist, dass der "richtige" Bildausschnitt am Schirm ist.
Ich werde aber auch noch mal weiterprobieren. Aus meiner Sicht kann aber nur dein Ansatz mit selectAll zum erfolg führen, weil alle anderen Auswahlmodi von Haus aus nur den Bildschirmausschnitt "verwenden".

Viele Grüsse

Martin

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