Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Wer kann mir sagen, warum der Lisp-Befehl nicht funktioniert?

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:  Wer kann mir sagen, warum der Lisp-Befehl nicht funktioniert? (2248 mal gelesen)
Thomas 3D
Mitglied
3D Designer


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

Beiträge: 393
Registriert: 17.09.2008

AutoCad 2012
Athena 2012
SWX 2011

erstellt am: 18. Feb. 2013 19:10    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 Forum,

ich war auf der Suche nach einem Macro, mit dem man an einem vorhandenem Layoutnamen ein weiteren Wert anhängen kann.
Zum Beispiel: Layoutname plus Revisionsnummer.
Das nachfolgende Macro sollte dies tun. Ich hatte keinen Erfolg. Es ließ sich nicht starten.Leider verstehe ich nichts von Macroprogrammierung. Könnte mir bitte jemand sagen, was an diesem Programm nicht stimmt?

Gruß Thomas


Public Sub RenameLayoutTabToInputRevLetter()
Dim sRev As String
sRev = InputBox("Revision Level","Get Revision Level", "A")
'--------------------------------------


Dim acLayout As AcadLayout
'''''''''''''''''''''''''''''''''''''''
If ThisDrawing.Layouts.Count > 2 Then Exit Sub
For Each acLayout In ThisDrawing.Layouts
Select Case acLayout.Name
Case "Model"
Case Else
acLayout.Name = sRev
End Select
Next acLayout
End Sub

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

Wilfried Nelkel
Mitglied
glaubt mir eh keiner


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

Beiträge: 804
Registriert: 15.03.2001

AutoCAD/ADT/ACA 2002 - 2023, Hardware: HP Z620 Workstation, 2 x Xeon E5-2690 v2@3.00GHz, 96 GB RAM, NVIDIA Quadro RTX 4000, Windows 10-64bit .....
ATC-Trainer

erstellt am: 18. Feb. 2013 21: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 Thomas 3D 10 Unities + Antwort hilfreich

Hy,

meinst Du dass dieser Thread im Programmieren - VBA nicht besser aufgehoben wäre?

------------------
Schöne Grüsse


Wilfried Nelkel
http://www.cad-nelkel.de
http://www.schulungshandbuch.de

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 18. Feb. 2013 22:05    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 Thomas 3D 10 Unities + Antwort hilfreich

Hallo Thomas,

das ist VBA und kein Lisp! VBAcode ausführen: KLICK

------------------
Link: User:FAQ (einiges Wissenswertes über AutoCAD)

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

.....
Mitglied



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

Beiträge: 433
Registriert: 01.07.2011

erstellt am: 19. Feb. 2013 08: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 Thomas 3D 10 Unities + Antwort hilfreich

>> ich war auf der Suche nach einem Macro, mit dem man an einem vorhandenem Layoutnamen ein weiteren Wert anhängen kann.
Zum Beispiel: Layoutname plus Revisionsnummer.
Das nachfolgende Macro sollte dies tun. Ich hatte keinen Erfolg. Es ließ sich nicht starten.Leider verstehe ich nichts von Macroprogrammierung.

Fangen wir mal vorne an:
Du hast es gesucht und offensichtlich auch gefunden. Warum gibst Du hier nicht die Quelle an? So mussten wir jetzt ebenfalls suchen. Ich behaupte mal, es ist von >> hier <<

Das Makro hängt so, wie es da steht, gar nichts an einen vorh. Layoutnamen an, sondern es überschreibt den vorhandenen Namen mit dem Wert, dem Du in der InPutBox angibst.

"Es läßt sich nicht starten" äußert sich genau wie?
WAS tust Du, damit es startet? Was tut ACAD während es Deiner Meinung nach nichts tut? Gibt es irgendwelche Meldungen? Hängt die InputBox?
Bei mir tut es jedenfalls das, was es meiner Meinung nach tun soll, sinnvoll finde ich den code jetzt allerdings nicht unbedingt, aber das steht ja auf nem ganz anderen Blatt.

Wie viele Layouts hast Du eigentlich so in der zu behandelnden Zeichnung? 

Copy&Paste ist toll, kann auch funktionieren, aber spätestens, wenn etwas nicht das tut, was ich dachte, dass es das tun sollte, muss ich hergehen und versuchen herauszufinden, was ich da grade von irgendwo aus dem www kopiert und ausgeführt hab. Und evtl. meine onlinebanking-Zugangsdaten wechseln 

Heißt für Dich jetzt: Weitersuchen bis Du was findest, was funktioniert und/oder Du verstehst oder zumindest einen crashkurs in die Grundlagen von VBA hinlegen.

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

Thomas 3D
Mitglied
3D Designer


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

Beiträge: 393
Registriert: 17.09.2008

AutoCad 2012
Athena 2012
SWX 2011

erstellt am: 19. Feb. 2013 10: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 Meister aller Klassen,

ich hatte nicht vor dir irgendwelche Informationen aus dem Netz vorzuenthalten. Werde das nächste Mal extra die Quelle mitangeben.

Du hast recht, ich hätte das genaue Fehlerbild aufschreiben können, damit du besser im Bilde bist. (Manchmal gibt es ja Profis, die einen kurzen Blick drauf werfen und das Problem sofort erkennen. Es bedarf dann da nicht vieler Worte.)

Ich habe in einer Zeichnung zwischen 20 bis 40 Layouts. Dort wurde vergessen, die Revisionsnummer mit anzugeben. Du hast recht man kann jetzt mit Copy und Paste beigehen und die Nummern manuell nachtragen. Ist nur sehr zeitaufwendig bei mehren Dateien.

Ich würde mich gerne mit dem Thema Macroprogrammierung beschäftigen, um mir meine eigenen Programme zuschreiben. Leider reicht die Zeit nicht aus, um sich mal eben schnell das Thema Programmierung reinzuziehen.
Deshalb Frage ich die Mitglieder dieses Forums, (die sich mit dem Thema Programmierung auskennen), ob sie mir bei der Lösung meines Problem behilflich sein könnten.
Denn man kann nicht in allem ein Meister sein.

Gruß Thomas

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 19. Feb. 2013 10:46    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 Thomas 3D 10 Unities + Antwort hilfreich

Die Hinweise des Vorposters sind nicht aus der Luft gegriffen und da brauch man nicht zynisch drauf zu reagieren    .. aber vielleicht lese ich das ja auch bloß so raus .... egal :
Probier dich mal an folgendem Code:

(defun LAYOUTNAMESUFFIX(PRA SUF / N)
  (vl-load-com)
  (or(=(type PRA)'STR)(setq PRA""))
  (or(=(type SUF)'STR)(setq SUF""))
  (vlax-for L(vla-get-layouts(vla-get-activedocument(vlax-get-acad-object)))
    (and(setq N (vla-get-name L))
        (/=(strcase N)"MODEL")
        (setq N(strcat PRA N SUF))
        (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-name(list L N))))
    )   
  )
)

Aufruf in der Befehlszeile z.B.
(LAYOUTNAMESUFFIX "" "A")
oder
(LAYOUTNAMESUFFIX "Vor " " Nach")
...

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

.....
Mitglied



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

Beiträge: 433
Registriert: 01.07.2011

erstellt am: 19. Feb. 2013 11:08    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 Thomas 3D 10 Unities + Antwort hilfreich

Zitat:
It only allows a single Layout tab though.

Code:
If ThisDrawing.Layouts.Count > 2 Then Exit Sub

Und ja, es gibt Leute, die mit einem Blick erkennen, wo wahrscheinlich das Problem liegen wird ;-)
Zitat:
Ich habe in einer Zeichnung zwischen 20 bis 40 Layouts.

Aber eben das mit dem wahrscheinlich ist der Grund, warum ich mir eine ausführlichere Fehlerbeschreibung gewünscht hätte. Deine Fehlerbeschreibung war nämlich schätzungsweise nicht ganz korrekt. Ich tippe eher darauf, dass das Makro bei Dir durchaus gestartet ist (ist die InputBox erschienen?), dann jedoch abbrach, ohne die Layoutnamen zu ändern.

Mit minimalsten Grundlagen hättest Du das wahrscheinlich schnell selber gesehen. Das meinte ich mit der Sinnhaftigkeit von Copy&Paste einer Sprache, die man selbst nicht spricht.

Und dann wäre da halt noch die Sache mit dem Überschreiben <> Suffix anhängen...
Aber dafür gibt es ja dann so nette Leute, wie den CADmium     denn der hat vor Jahren schon mal seine Axt geschärft, obwohl er schon immer sehr viele Bäume zu fällen hatte. ;)

Code:
Sub test()
Dim acLayout As AcadLayout
For Each acLayout In ThisDrawing.Layouts
    If Not acLayout.Name = "Model" Then
        acLayout.Name = acLayout.Name & "TEXT"
    End If
Next acLayout
End Sub

Have fun  

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