Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Selectionset

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:  Selectionset (830 mal gelesen)
c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 21. Jul. 2008 08: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

Hallo Leute!
Also was mich interessieren würde ist ob ich bei einem Selectionset einfach ein Element entfernen kann? ohne ein Neues Array zu machen

und ohne daß ich ich dann bei
For each ent in ObjSelectionset
next ent <<<-einen Fehler bekomme?
Ich weiß ich kanns mit On Error Resume Next auch abfangen
aber sauberer wäre es das Element aus dem Selectionset zu entfernen
und das sollte recht schnell funktionieren!
Mfg Chris

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 21. Jul. 2008 08: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 c.schojer 10 Unities + Antwort hilfreich

was ist mit der Methode RemoveItems ?

Gibts sogar ein Bsp in der hilfe zu.

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 21. Jul. 2008 08:42    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 aber nicht

Sub ONsset_1() 'Neu programmiert
Dim ObjSSet, Status, ent, Anz, Index, a, ARRDEL(), ARRI
ARRI = 0
Status = 0
'On Error Resume Next
Call getselectionset("Defsset1", ObjSSet, Status)
If Status = 0 Then Exit Sub
'Call AllesAus
Anz = ObjSSet.count
'On Error Resume Next
For a = 0 To ObjSSet.count
On Error Resume Next
Set ent = ObjSSet(a)
   
    If Err = 0 Then
        Index = Index + 1
        If ent.Visible = False Then
            ent.Visible = True
        End If
    Else
        ARRI = ARRI + 1
        ReDim Preserve ARRDEL(1 To ARRI)
        ARRDEL(ARRI) = a
        Debug.Print "Fehler im Sset gefunden"
   
    End If
Err.Clear

'On Error Resume Next
Next a
On Error GoTo 0
For a = 1 To UBound(ARRDEL)
ObjSSet.RemoveItems (VBA.CInt(ARRDEL(a)))
Next a
Exit Sub


End Sub
Sub getselectionset(Name, ObjectsSelectionset, Status)
Dim ent
For Each ent In ThisDrawing.SelectionSets
If ent.Name = Name Then
    Status = 1
Set ObjectsSelectionset = ent
    Exit For
End If
'Debug.Print Ent.Name
Next ent
End Sub

[Diese Nachricht wurde von c.schojer am 21. Jul. 2008 editiert.]

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: 21. Jul. 2008 12: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 c.schojer 10 Unities + Antwort hilfreich

Hallo Chris,

Zitat:
Original erstellt von c.schojer:
geht aber nicht

Das geht schon. Dein Fehler ist in der Deklaration.

Zitat:
Dim ObjSSet, Status, ent, Anz, Index, a, ARRDEL(), ARRI

Das zu entfernende Objekt muss in einem Array sein. Auch wenn es nur eines ist. Bei dir ist es ein Variant und wird zum Objekt.
Code:
Dim DelEnt(0) as acadentity

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 21. Jul. 2008 13:04    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 leider aber auch nicht

Sub OFFsset1() 'Neu programmiert
Dim ObjSSet, Status, ent, Anz, Index, a, ARRDEL(), ARRI, DelEnt() As AcadEntity
ARRI = 0
Status = 0
'On Error Resume Next
Call getselectionset("Defsset1", ObjSSet, Status)
If Status = 0 Then Exit Sub
'Call AllesAus
Anz = ObjSSet.count
'On Error Resume Next
For a = 0 To ObjSSet.count
On Error Resume Next
Set ent = ObjSSet(a)
   
    If Err = 0 Then
        Index = Index + 1
        If ent.Visible = True Then
            ent.Visible = False 'True
        End If
    Else
        ARRI = ARRI + 1
        ReDim Preserve ARRDEL(1 To ARRI)
        ARRDEL(ARRI) = a
        Debug.Print "Fehler im Sset gefunden"
   
    End If
Err.Clear

'On Error Resume Next
Next a
On Error GoTo 0
ReDim Preserve DelEnt(0 To ARRI - 1)
For a = 1 To UBound(ARRDEL)
Set DelEnt(a - 1) = ObjSSet(ARRDEL(a))
Next a
ObjSSet.RemoveItems DelEnt
Exit Sub


End Sub

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: 21. Jul. 2008 13: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 c.schojer 10 Unities + Antwort hilfreich

Hallo Chris,
irgendwie ist nicht ersichtlich was du mit dem Programm erreichen willst und wie es funktioniert.
Da ist weiterer Rat schwer 

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 21. Jul. 2008 13:40    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

Der selectionset soll korrigiert werden wenn ein Objekt gelöscht wird.
und dieser wird im Programm dann noch weiter verwendet.
Ich will nur ne Möglichkeit haben aus einem Selectionset einen gelöschten Eintrag zu entfernen. (Und das soll den Rechner nicht in die Knie zwingen sondern schnell gehen)
Mfg Chris

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 21. Jul. 2008 15: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 c.schojer 10 Unities + Antwort hilfreich

ich würde in der Schleife über das selectionset nicht einfach nur die zu löschenden Einträge merke, sondern einfach paralell einen temporären Selectionset zusammenstellen, der nur die gültigen Objekte enthält.

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 24. Jul. 2008 10: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

@ Fuchsi
Tja das ist gerade das was ich mir sparen wollte aber danke

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