Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Mittels VBA den Layoutnamen ändern ?

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
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Mittels VBA den Layoutnamen ändern ? (2287 mal gelesen)
Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 11. Mrz. 2010 18:53    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!

Ich bin gerade dabei mir ein kleines Tool zuschreiben, welches die Anzahl der Layouts (- Model) in eine Dialogbox schreibt.
Ferner wird der Name des Layouts mit in eine Textbox geschrieben.
Den Namen des Layouts möchte ich in der Textbox ändern und per
Buttonclick soll der alte Layoutname überschrieben werden.

Bei dem zurückschreiben hakts gerade?
Könnte mir da bitte jemand bei weiterhelfen?

Code:

Private Sub cmdOK_Click()
Dim ALayouts As AcadLayouts, ALayout As AcadLayout

If TextBox9.Text = "Model" Then GoTo MyErrorHandler4

'####---????
If ThisDrawing.ActiveLayout.ModelType = False Then
    ALayouts().Name = TextBox9.Text
End If
'-----------

Exit Sub
MyErrorHandler4:
    MsgBox "Sie befinden sich im Modellbereich", vbInformation, "Zur Info"
End Sub


Vielen Dank im voraus.

Gruß

Dirk

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

ACAD 2008 Mechanical

erstellt am: 11. Mrz. 2010 18:56    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 Dirk.B 10 Unities + Antwort hilfreich

ohne Ahnung von VBA zu haben

If ThisDrawing.ActiveLayout.ModelType = False Then
    ThisDrawing.ActiveLayout.Name = TextBox9.Text
End If


oder halt an anderer Stell in deinem Code
ALayout.NAME

das eine ist die Layoutcollection- da kann man kein NAme zuweisen, das andere das aktuelle Layout.

------------------
      - 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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 11. Mrz. 2010 20: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

Hallo CADmium!

Danke für den "Anschubser".

So gehts nun:

Code:

Dim Layout As AcadLayout
Set Layout = ThisDrawing.ActiveLayout

If TextBox9.Text = "Model" Then GoTo MyErrorHandler4

If Layout.ModelType = False Then
    Layout.Name = TextBox9.Text
End If
...
...


Gruß

Dirk

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

AutoCAD 2021/2022
CAD+T
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

erstellt am: 11. Mrz. 2010 20:34    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!

Noch ne kleine Nachfrage zu Blöcken (Schriftkopfblock) im Layoutberech.
Wenn ich die Blockreferenzen in dem Schriftkopfblock in einem
Layout mittels VBA ändern möchte, wie Filter ich diesen nur in dem
activen Layout heraus?

Geht das auch über DXF - Gruppencode

Code:

Dim EntGrp(0) As Integer
Dim EntPrp(0) As Variant

Set ssnew = ThisDrawing.SelectionSets.Add("DB08")

EntGrp(0) = 2
EntPrp(0) = "dbattab-info"

ssnew.Select acSelectionSetAll, Pt1, Pt2, EntGrp, EntPrp
...


oder wie kann ich diesen direkt ansprechen?

Gruß

Dirk

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

ACAD 2008 Mechanical

erstellt am: 11. Mrz. 2010 20:36    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 Dirk.B 10 Unities + Antwort hilfreich


Ex-Mitglied

erstellt am: 11. Mrz. 2010 21:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>>hier<< war gerade gleiches behandelt.

- alfred -

------------------
www.hollaus.at

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 12. Mrz. 2010 09: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

Hallo CADmium!
Hallo Alfred!

Vilen Dank, funktioniert prima.

Code:

...
EntGrp(0) = 0: EntPrp(0) = "INSERT"
EntGrp(1) = 2: EntPrp(1) = "dbattab-info"
EntGrp(2) = 410: EntPrp(2) = Layout.Name
...

Mein Dank ist unterwegs.

Gruß

Dirk

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

AutoCAD 2021/2022
CAD+T
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

erstellt am: 12. Mrz. 2010 15:32    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!

Noch ne Nachfrage zur Fehlerbehandlung hätte ich da.
Die Übergabe des Layout.name funktioniert soweit.
Nur könnte es ja sein, daß bereits ein Layout den gerade
vergeben Namen hat.
Um hier einem Fehler und somit einem Programmabbruch vorzubeugen,
möchte ich noch einen ErrorHandler einbauen.

Nur beim Abgleich der Layoutnamen, erkennt das Programm ja auch das
active Layout!!!!

Hätte da noch jemand eine Lösung für mich?

Code:

Private Sub cmdOK_Click()
Dim Layout As AcadLayout, Layouts As AcadLayouts, Layout1 As AcadLayout
Set Layout = ThisDrawing.ActiveLayout
Set Layouts = ThisDrawing.Layouts

If TextBox9.Text = "Model" Then GoTo MyErrorHandler1
If TextBox9.Text = "" Then
    TextBox9.Text = "  Kopie"
End If


If Layout.ModelType = False Then
    For Each Layout1 In Layouts
        If Layout1.Name = TextBox9.Text Then GoTo MyErrorHandler2
    Next
    Layout.Name = TextBox9.Text
End If
...
...
Exit Sub
MyErrorHandler1:
    MsgBox "Sie befinden sich im Modellbereich", vbInformation, "Zur Info"
    ThisDrawing.SelectionSets.Item("DB15").Delete
   
MyErrorHandler2:
    MsgBox "Ein Layout mit diesem Namen gibt es bereits", vbInformation, "Zur Info"
    Layout.Name = TextBox9.Text & "  Kopie"
End Sub


Vielen Dank im voraus.

Gruß

Dirk

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


Ex-Mitglied

erstellt am: 12. Mrz. 2010 15:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

vermeide GoTo-Anweisungen, wenn Du Dich später mal mit anderen Programmiersprachen auseinandersetzten willst. 

Und dann gäbe es noch das  'On Error ....', das ich wie folgt verwendet hätte:

Code:
Private Sub cmdOK_Click()
  Dim Layout As AcadLayout
  Set Layout = ThisDrawing.ActiveLayout

  If TextBox9.Text = "Model" Then
      MsgBox "Sie befinden sich im Modellbereich", vbInformation, "Zur Info"
      ThisDrawing.SelectionSets.Item("DB15").Delete
  Else
      'dann koennen wir weiter fortsetzen
      If TextBox9.Text = "" Then
        TextBox9.Text = "  Kopie"
      End If

      Dim tNewLayoutName as string
      tNewLayoutName = TextBox9.Text
      Do While len(tNewLayoutName) < 250    'Sicherheitsgrenze
        'solange der Name nicht gesetzt werden kann, " Kopie" anhängen
        On Error Resume Next
        Layout.Name = tNewLayoutName
        If Err.Number = 0 then
            'dann hat alles funktioniert
            'raus aus der Funktion
            Exit Do
        Else
            'dann wurde beim Setzen des Layout-Names von AutoCAD ein Fehler gemeldet
            tNewLayoutName = tNewLayoutName & " Kopie"
        End If
        On Error Goto 0
      Loop

      if Layout.Name <> tNewLayoutName Then
        MsgBox "Fehler beim Setzen des Layoutnamens (" & tNewLayoutName & ")", vbInformation, "Zur Info"
      End If
  End IF
End Sub


(Blind geschrieben, Tippfehler möglich, Logikfehler möglich, aber weniger wahrscheinlich )

Dabei vermeide ich auch den Fehler, dass es ev. schon einen Namen mit ' Kopie' gibt, dann würde Dein Code abbrechen. Du kannst natürlich auch statt " Kopie" anzuhängen besser eine Zahl anhängen, die sich hochzählt, denn dann läufst Du nicht in Gefahr, dass der Layoutnamens-String zu lange wird.

Lass mich wissen, wenn der Code zu wenig kommentiert und damit ev. unverständlich ist.

- alfred -

------------------
www.hollaus.at

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 12. Mrz. 2010 16:33    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 Alfred!

Vielen Dank erst einmal.
Leider komme ich heute nicht mehr dazu es auszuprobieren.
Aber morgen werde ich es mal testen.

Zitat:

...wenn Du Dich später mal mit anderen Programmiersprachen auseinandersetzten willst.

Ich spiele mit dem Gedanken von VBA auf VB.Net zu wechseln.
Hab mich auch schon mal in dem entsprechenden Forum so umgesehen.
Auch die Infos bzw. Dateien von der Autodesk (USA) Seite habe ich mir
schon mal heruntergeladen.
Nur alles was ich bislang dazu gefunden habe ist alles auf englisch
beschrieben. Gibt es dazu schon Infos und Anleitungen auf deutsch?

Sobald ich dieses Tool unter VBA lauffähig habe, würde ich gerne versuchen diese mittels VB.Net umzusetzen.

Gruß

Dirk

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


Ex-Mitglied

erstellt am: 12. Mrz. 2010 16:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Gibt es dazu schon Infos und Anleitungen auf deutsch?

Nichts von Autodesk, einige (wenige) Hinweise zu (deutschen) Büchern für dotNET mit AutoCAD hätte es in dem Forum AutoCAD-ObjectARX schon gegeben, bisschen suchen. 

- alfred -

------------------
www.hollaus.at

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 12. Mrz. 2010 18:18    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 Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

Ich würde mich an deiner Stelle erst einmal grundsätzlich mit VB.Net auseinander setzten bevor man sich gleich daran macht etwas mit AutoCAD und VB.Net zu machen.
Es gibt doch einige Unterschiede zwischen VBA und VB.Net.

Du kannst dir ja das Galileo Openbook Visualbasic 2008 anschauen. Da hast du Online ein komplettes Buch kostenlos zu VB.Net zur Verfügung.

Gruß, Carsten

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

AutoCAD 2021/2022
CAD+T
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

erstellt am: 13. Mrz. 2010 12:20    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 Alfred!
Hallo Carsten!

Alfred!
Vielen Dank noch mal.
Nun funktionierts.

Carsten!
Vielen Dank für den Link.
Bin bereits da bei, mir einen Überblick über VB.Net zu verschaffen.
- Klassenbibliotek
- Windows Forms-Anwendungen

Ich wünsch Euch noch ein schönes Wochenende.

Gruß

Dirk

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