| |
 | 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: Pickfirst Objekte entfernen (1065 mal gelesen)
|
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 06. Feb. 2008 10:48 <-- editieren / zitieren --> Unities abgeben:         
Wie kann man vom Pickfirst selection set eine Objekt enfernen? ThisDrawing.PickfirstSelectionSet.RemoveItems removeObjects
Er machts damit einfach nicht!! Kein Fehler! (Befinde mich hier mitten im Beginn Command Befehl Löschen wollte Testweise ne Linie entfernen) Mfg Chris
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 07. Feb. 2008 12:07 <-- editieren / zitieren --> Unities abgeben:          Nur für c.schojer
|
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 07. Feb. 2008 13:02 <-- editieren / zitieren --> Unities abgeben:         
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 07. Feb. 2008 13:13 <-- editieren / zitieren --> Unities abgeben:          Nur für c.schojer
|
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 07. Feb. 2008 14:49 <-- editieren / zitieren --> Unities abgeben:         
Function Getactivesset() As AcadSelectionSet Dim ACTIVESSET, ent, ACTIVESSET2, SSetact As AcadSelectionSet Dim a On Error Resume Next Set ACTIVESSET = ThisDrawing.ActiveSelectionSet On Error Resume Next Set ACTIVESSET2 = ThisDrawing.PickfirstSelectionSet On Error Resume Next If ACTIVESSET2.count = 0 Then Set Getactivesset = ACTIVESSET Else Set Getactivesset = ACTIVESSET2 End If End Function Private Sub AcadDocument_BeginCommand(ByVal CommandName As String) Dim ACTIVESSET, ent, ACTIVESSET2, SSetact As AcadSelectionSet Dim a Dim removeObjects() As AcadEntity, index
If CommandName = "ERASE" Then
Set SSetact = Getactivesset If CheckSSet(SSetact) = True Then a = -1 For Each ent In SSetact a = a + 1 If ent.Objectname = "AcDbLine" Then ReDim Preserve removeObjects(0 To a) Set removeObjects(a) = ent End If Next ent If a <> -1 Then ThisDrawing.PickfirstSelectionSet.RemoveItems removeObjects End If 'Debug.Print SSetact.NAME a = -1 End If End If End Sub Function CheckSSet(SSetact) As Boolean Dim a On Error Resume Next a = SSetact.count If Err <> 0 Then CheckSSet = 0 Else CheckSSet = 1 End If End Function Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 07. Feb. 2008 19:02 <-- editieren / zitieren --> Unities abgeben:          Nur für c.schojer
Hi Chris, Ich will dich ja nicht enttäuschen, aber der PickFirstSelectionSet ist ReadOnly. Aus der Hilfe: Zitat: PickfirstSelectionSetSelectionSet object; read only The pickfirst selection set.
Abgesehen musst du das "a = a + 1" in die Zeile vor dem "Redim Preserve..." setzen, da du sonst leere Einträge in dem Array bekommst. Was spricht denn dagegen die Bemassungen, worum es hier ja gehen soll, auf einen gesperrten Layer zu packen, dann können diese auch nicht gelöscht und / oder verändert werden. Was machst du denn, wenn erst der Befehl löschen aufgerufen wird und dann werden die Elemente gewählt?! Das fällt bei deinem Makro durchs Rost. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 07. Feb. 2008 19:11 <-- editieren / zitieren --> Unities abgeben:         
Ich will sie auch noch bearbeiten können!! nur nicht löschen! (über einen Ein/Aus Button) Gehts ev über nen sendcommand Befehl??? Mfg Chris [Diese Nachricht wurde von c.schojer am 07. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 07. Feb. 2008 19:14 <-- editieren / zitieren --> Unities abgeben:          Nur für c.schojer
Hi Chris, Hab noch ne Idee: Dann frage doch den Löschbefehl ab und Sperre dann den Layer der Bemassung bei Löschbegin und entsperre ihn nach dem der Löschbefehl beendet wurde. Gruß, Carsten [Diese Nachricht wurde von Carsten1210 am 07. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 07. Feb. 2008 19:18 <-- editieren / zitieren --> Unities abgeben:         
Hab mal ein Programm geschrieben welches sämtliche Layer sperrt wo Bemaßungen vorkommen Geht natürlich in die Hose wenn man aus Versehen auch auf bemaßungslayer zeichnen würde. Kann man eventuell die Pickfirst Variable mit nem Sendcommand Befehl aktualisieren?? Noch dazu weiß ich nicht was er macht wenn bereits selektierte Objekte plötzlich gesperrt werden und man diese versucht zu löschen. Mfg Chris
[Diese Nachricht wurde von c.schojer am 07. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 07. Feb. 2008 19:52 <-- editieren / zitieren --> Unities abgeben:          Nur für c.schojer
Hi Chris, Dann durchlauf doch den Selectionset, wenn der Löschbefehl gestartet wird und packe alle Nichtbemassungen auf einen nicht-Bemassungslayer und sperr die Bemassunglayer dann. Dann sollte alles im Selectionset ausser den Bemassungen gelöscht werden. Danach entsperrst du den Layer wieder. So, ich gehe jetzt nach Hause. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |