Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Befehl unterbinden

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:  Befehl unterbinden (850 mal gelesen)
BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 15. Feb. 2006 12:22    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

Hi Forum,
mit folgendem Code will ich das Löschen von Türstempeln unterbinden.
Code:
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
Dim selectionSetObject As AcadSelectionSet
Dim oBlock As AcadBlockReference
Dim Var As Variant
Select Case CommandName
Case "ERASE"
    On Error Resume Next
    If ThisDrawing.SelectionSets("SSet1") Then
        ThisDrawing.SelectionSets("SSet1").Delete
    End If
    Set selectionSetObject = ThisDrawing.SelectionSets.Add("SSet1")
    selectionSetObject.Select acSelectionSetLast
   
            For Each item In ThisDrawing.SelectionSets("SSet1")
                If item.EntityName = "AcDbBlockReference" Then
                    If item.Name = "TTyp" Then
                        MsgBox "Das Löschen von Türstempeln mit " & _
                        "AutoCad-Befehlen ist nicht erlaubt." & _
                        vbCrLf & _
                        "Verwenden Sie die Löschfunktion des " & _
                        "Datenbank-Türmakros!" & vbCrLf & _
                        "(rechter Mausklick auf Türstempel)", _
                        vbCritical + vbOKOnly, "Befehl nicht erlaubt"
                        ThisDrawing.SendCommand "z" & vbCr
                    End If
                End If
            Next item
    ThisDrawing.SelectionSets("SSet1").Delete
End Select

End Sub



Blöderweise erkennt er jetzt bei jedem Löschen einen Block namens TTyp, obwohl doch das selectionset mit selectionSetObject.Select acSelectionSetLast neu gefüllt wird. wie erreiche ich, daß selectionSetObject.Select acSelectionSetLast sich auch tatsächlich auf das zur löschung ausgewählte objekt in mein selectionset eingelesen wird?

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

Bernd

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

ACAD Map2015 3D, W7 x64 Prof. SP3

erstellt am: 16. Feb. 2006 17:07    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 BerndE 10 Unities + Antwort hilfreich

Hallo Bernd,

es ist schon eine geraume Zeit her, da habe ich das auch probiert und bin gescheitert. Ich will dich aber nicht abhalten, es weiter zu versuchen. (vielleicht liegt es auch an mir).

Das Problem liegt meiner Ansicht nach an folgendem:
Wenn du ein Element auswählst und es anschließend mit "ERASE" entfernst, ist es weg - also nicht mehr verfügbar! D.H. Wenn du in deinem Programm den Auswahlsatz füllst mit (..last.) ist der gelöschte Block gar nicht wählbar!

Irgend wo tief in der DWG muss er natürlich noch da sein (für UNDO), aber mit VBA habe ich es nicht geschafft!

Viele Grüsse

Martin

P.S. Von welchem Datentyp ist den item ?

[Diese Nachricht wurde von MartinM am 16. Feb. 2006 editiert.]

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

BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 17. Feb. 2006 10: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

Hi MArtin,
uih..da weißt du mich auf was hin. Habe noch gar nicht gemerkt, daß ich zu testzwecken mal option explicit remarkt hatte. habe jetzt item als objekt deklariert.

da ich so meine problem mit der gewünschten funktion habe, trage ich mich mittlerweile aber mit nem anderen gedanken. irgendwann habe ich mal irgendwo von der möglichkeit gehört, autocad-befehle direkt umzuändern und seinen bedürfnissen anzupassen. also den original-befehl durch eine andern befehl zu ersetzen.
läßt sich sowas mit vba bewerkstelligen?
bernd

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

Bernd

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