Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Block änderungen

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
Autor Thema:  Block änderungen (1314 mal gelesen)
dw
Mitglied
cad


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

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 22. Apr. 2013 12:11    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

Wer ist in der Lage mich weiter zu helfen?

Habe da eine Routine welche Blocks in der Zeichnung ändert aber das Problem liegt da wen ich zb block altername_3 und 4 nicht in der Zeichnung habe bekommt das altername_2 die neuername_4 und das darf eben nicht passieren wie kann man diese Fehler unterfangen?

Private Sub CommandButton1_Click()
Dim block As AcadBlock

On Error Resume Next

    Set block = ThisDrawing.Blocks("altername_1")
    block.Name = "neuername_1"
 
 
    Set block = ThisDrawing.Blocks("altername_2")
    block.Name = "neuername_2"


    Set block = ThisDrawing.Blocks("altername_3")
    block.Name = "neuername_3"


    Set block = ThisDrawing.Blocks("altername_4")
    block.Name = "neuername_4"
   
     
  MsgBox "alle blocks sind geändert....."
 
  Me.Hide
 
End Sub

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: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 22. Apr. 2013 12: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 dw 10 Unities + Antwort hilfreich

if .....

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

dw
Mitglied
cad


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

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 22. Apr. 2013 12: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

Sorry weiss nicht wie ich das mit if das anstellen Sal?

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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 22. Apr. 2013 13:12    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 dw 10 Unities + Antwort hilfreich

hallo dw,

versuchs mal so ...

Bernd

Code:

Private Sub CommandButton1_Click()
Dim block As AcadBlock

On Error Resume Next

    Set block = ThisDrawing.Blocks("altername_1")
    If Not (block Is Nothing) Then block.Name = "neuername_1"


    Set block = ThisDrawing.Blocks("altername_2")
    If Not (block Is Nothing) Then block.Name = "neuername_2"

   
  MsgBox "alle blocks sind geändert....."

  Me.Hide

End Sub



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

dw
Mitglied
cad


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

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 22. Apr. 2013 13: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

Tut mir leid aber diese geht auch nicht, wenn man block altername_3 wegnehmt in der Zeichnung kriegt block altername_2 die neuername_3 und sollte neuername_2 bleiben.


Private Sub CommandButton1_Click()
Dim block As AcadBlock
On Error Resume Next

    Set block = ThisDrawing.Blocks("altername_1")
    If block.Name = True Then block.Name = "neuername_1" Else: MsgBox " kein block im Zeichnung"
   
  

    Set block = ThisDrawing.Blocks("altername_2")
    If block.Name = True Then block.Name = "neuername_2" Else: MsgBox " kein block im Zeichnung"


    Set block = ThisDrawing.Blocks("altername_3")
    If block.Name = True Then block.Name = "neuername_3" Else: MsgBox " kein block im Zeichnung"

   
'
'    Set block = ThisDrawing.Blocks("altername_4")
'    If Not (block Is Nothing) Then block.Name = "neuername_4"
'
   
  MsgBox "alle blocks sind geändert....."

  Me.Hide

End Sub

[Diese Nachricht wurde von dw am 23. Apr. 2013 editiert.]

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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 23. Apr. 2013 12:45    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 dw 10 Unities + Antwort hilfreich

Hi dw,

Das liegt vermutlich daran das der Variablen 'block'
noch die Blockreferenz des vorherigen Set-Befehls
zugewiesen ist.

und 'If block.Name = True' ist auch nicht so toll.
Wenn es den Block nicht gibt ist das Objekt nothing,
(True/False)

Probier mal das:

    Set block = ThisDrawing.Blocks("altername_1")
    If Not (block Is Nothing) Then block.Name = "neuername_1"
    Set block = Nothing

    Set block = ThisDrawing.Blocks("altername_2")
    If Not (block Is Nothing) Then block.Name = "neuername_2"
    Set block = Nothing

Bernd

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 23. Apr. 2013 16:16    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 dw 10 Unities + Antwort hilfreich

Eure Programme möchte ich nicht unbedingt übernehmen wollen (und die Rechtschreibung auch nicht)

Beiliegendes Programm sollte so funktionieren
und dann macht Euch mal Gedanken zum Programmierstil ...

Code:

Sub Block_Tausch()

    Dim oBlock As AcadBlock
    On Error GoTo 0
    For Each entity In ThisDrawing.Blocks
      Set oBlock = entity
      If UCase(oBlock.Name) = UCase("Altername_1") Then Call Tauschen(oBlock, "AlterName_1", "NeuerName_1")
      If UCase(oBlock.Name) = UCase("Altername_2") Then Call Tauschen(oBlock, "AlterName_2", "NeuerName_2")
      If UCase(oBlock.Name) = UCase("Altername_3") Then Call Tauschen(oBlock, "AlterName_3", "NeuerName_3")
    Next
   
End Sub

Sub Tauschen(sBlock As AcadBlock, sA As String, sN As String)

    Dim tBlock As AcadBlock
    Dim gefunden As Boolean
   
    On Error GoTo 0
    gefunden = False
   
    For Each ent In ThisDrawing.Blocks
      Set tBlock = ent
      If UCase(tBlock.Name) = UCase(sN) Then
        gefunden = True
        Exit For
      End If
    Next ent
   
    If gefunden Then
      MsgBox "Neuer Name " & sN & " bereits vorhanden " & vbCrLf & "Block " & sA & " nicht geändert"
    Else
      sBlock.Name = sN
    End If
End Sub


Grüße
Klaus 

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 26. Jun. 2013 20:38    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 dw 10 Unities + Antwort hilfreich

*pruhst* wo du recht hast hast du recht  !!!

Ich wuerd die blocknamen mit split ersteinmal in den text und den numerischen teil aufsplitten
dann nen temporaeren blocknamen erstellen mit dem um 1 hochgezaehlten numerischen teil
guggen ob der existiert und wenn ja das ganze solange wiederholen bis er nicht existiert.
Sie ueben halt noch 

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !

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)2023 CAD.de | Impressum | Datenschutz