| | | 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
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2012 Athena 2012 SWX 2011
|
erstellt am: 18. Feb. 2013 19:10 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Thomas 3D
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Feb. 2013 22:05 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
|
..... Mitglied
Beiträge: 433 Registriert: 01.07.2011
|
erstellt am: 19. Feb. 2013 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
>> 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
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2012 Athena 2012 SWX 2011
|
erstellt am: 19. Feb. 2013 10:33 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Thomas 3D
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
Beiträge: 433 Registriert: 01.07.2011
|
erstellt am: 19. Feb. 2013 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
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 >>)
|