| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Problem mit Makro (1631 mal gelesen)
|
BL-CAD Mitglied
Beiträge: 2 Registriert: 08.04.2015 AutoCAD LT 2015
|
erstellt am: 08. Apr. 2015 07:57 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin noch relativ neu auf dem Gebiet der Makros. Seit gestern versuche ich nun folgendes per Tastenkürzel zum laufen zu bringen: _bedit;;_ai_selall;_scale;0,0;0.0045;_bclose;; Ich möchte damit folgendes erreichen: Nach dem Anklicken eines Blockes drücke ich das Tastenkürzel. Dadurch soll der Blockeditor geöffnet werden, der gesamte Blockinhalt ausgewählt und dann mit dem Basispunkt 0,0 um den Faktor 0.0045 skaliert werden. Anschließend soll der Blockeditor wieder geschlossen werden. Der Blockeditor wird auch geöffnet, nur leider klappt der Rest nicht. Weiß jemand, was ich hier falsch mache? Vielen Dank! BL-CAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 08. Apr. 2015 08:28 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
Moin und herzlich Willkommen bei CAD.de allgemeingültiger Tipp für Makro-Probleme aller Art: Schau Dir die Befehlszeile/das Textfenster (F2) an. Code: Befehl: BBEARB Blockname eingeben oder [?]: _ai_selall Regeneriert Modell. Regeneriert Modell. Regeneriert Modell. Befehl: _scale Objekte wählen: 0,0 Entgegengesetzte Ecke angeben: 0.0045 0 gefunden Objekte wählen: _bclose *Ungültige Auswahl* Erwartet einen Punkt oder Fenster/Letztes/Kreuzen/QUADER/ALLE/ZAun/FPolygon/KPolygon/Gruppe/Hinzufügen/Entfernen/Mehrere/Vorher/ZUrück/AUto/EInzeln/Unterobjekt/Objekt
Ohne, dass Du den Namen angibst, läuft das Makro nicht gescheit weiter und strauchelt immer wieder an Angaben, die ACAD an der Stelle nicht erwartet. Und dann Schritt für Schritt die Fehler wegbekommen durch Änderungen an jeweils der Stelle, wo es scheppert. Auf die Schnelle für Dich und gilt nur für Deine Ausgangsfrage: Zitat: Nach dem Anklicken eines Blockes drücke ich das Tastenkürzel. Dadurch soll der Blockeditor geöffnet werden, der gesamte Blockinhalt ausgewählt und dann mit dem Basispunkt 0,0 um den Faktor 0.0045 skaliert werden. Anschließend soll der Blockeditor wieder geschlossen werden.
Code: _bedit;_ai_selall;_scale;0,0;0.0045;_bclose;;
Du hattest ein enter zuviel. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 08. Apr. 2015 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
Willkommen, weil ich es schon länger nicht mehr ausführlich kommentiert habe: 1. baue ein Makro Stück für Stück, Schritt für Schritt, auf. Schreibe dabei jede Eingabe mit. 2. sollte sich doch mal ein Fehler eingeschlichen haben: So sieht man anhand des Textfenster(F2) oftmals schnell was falsch läuft. Falls man mit F2 nicht direkt den Problemfall sieht, kommt Punkt 1 wieder zum tragen: Gehe das Makro in der Befehlszeile per Hand durch. Meine Frage in diesem konkreten Beispiel wäre demnach: Wofür steht das 2. Semikolon ?
Sebastian
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BL-CAD Mitglied
Beiträge: 2 Registriert: 08.04.2015 AutoCAD LT 2015
|
erstellt am: 08. Apr. 2015 08:39 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank euch beiden, jetzt klappt es einwandfrei. Das erspart mir viel Arbeit Das zweite Semikolon sollte das Fenster "Blockdefinition bearbeiten" quittieren, welches erscheint, wenn ich manuell in den Blockeditor wechsle. Offenbar taucht dieses Fenster bei der Ausführung des Makros aber nicht auf. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 08. Apr. 2015 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
ahh ok. Dialogfenster kann man generell nicht bedienen mit Menümakros, in diesen Fällen ist man darauf angewiesen das AutoDesk eine Befehlszeilenvariante zur Verfügung stellt. Entweder durch erkennen das es im Makro, Script,(send)Command läuft (so wie hier, Acad regelt es automatisch) oder aber es gibt einen extra Befehl dafür (ein "-" dem originalBefehl vorangestellt, LAYER => -LAYER, RefEdit => -RefEdit usw.) Aber Adesk bietet dies nicht immer an, so fehlt es zum Beispiel für die Schnellauswahl und den Filter uswusf. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 08. Apr. 2015 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
Hallo zusammen, den Befehl _ai_selall kannte ich so noch nicht. Leider taucht er auch so nicht in der Hilfe auf. Bisher habe ich stattdessen in Makros beim entsprechenden Befehl eine Fensterwahl nach folgendem Schema genutzt: "varia;1000000,-1000000;-1000000,1000000;;0,0;0.0045;". Laut cadforum.cz gibt es eine ganze Reihe dieser "_ai_irgendwas" Befehle. Kann evtl. jemand etwas zu dieser Befehlsgruppe sagen, z. B. warum sie in der Hilfe nicht dokumentiert sind? Darüber hinaus bin auch ich wie BL-CAD verwundert, dass im Makro ein "Enter" zum öffnen des Blockeditors korrekt ist, während über die Befehlszeile zwei "Enter" benötigt werden. Gibt es außer "bbearb" noch andere Befehle, welche in der Befehlszeile anders laufen als im Makro? mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 08. Apr. 2015 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
übersetze _ai einfach mit AutoCAD Intern und belasse es dabei tippe _ai* ein und Acad schlägt dir die vorhandenen Befehle vor. Aktuelles Beispiel: Du nutzt eine Windowsübliche Tastenkombination (Strg+A für ALLESWÄHLEN), Acad benötigt aber intern natürlich einen ordentlichen Befehl dazu.. ein Blick in die Befehlszeile zeigt dir wie dieser lautet: _ai_selall usw. Die Fensterwahl ist ja wirklich die schlechteste Methode für den Fall das man "alles" wählen will, also auch wenn du _ai_selall nicht kennst, dann steht dir noch immer die Basis Objektwahloption ALLE zur Verfügung (was ich auch dem _ai jederzeit bevorzugen würde). "Gibt es außer "bbearb" noch andere Befehle, welche in der Befehlszeile anders laufen als im Makro? " Das ist ja falsch, in deinem Beispiel läuft der Befehl ja nicht in der Befehlszeile sondern im Dialogfenster!! Befehlszeile vs Makro: Natürlich gibt es Befehle welche in in der automatischen Verwendung (Makro,Script, (send-)command) anders abgearbeitet werden. Das fängt ja bereits mit der unterdrückung der Dialogfenster an (leider nicht bei allen, aber bleiben wir bei bedit layer einfüge etc. Provokant würde ich nun sagen: Ändere über die Tastatur in der Layereigenschaftenpalette mal die Farbe des Layer0, dann das Gleiche über die Befehlszeilenversion -Layer, wie du siehst sind das völlig andere (Tastatur)Abläufe.. Es ist also keine Ausnahme sondern die Regel das eine Befehlszeilenvariante anders abgearbeitet wird wie ein Dialogfenster. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 08. Apr. 2015 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
Hallo cadffm, die Auflistung der Befehle funktioniert bei mir leider nicht. Alles andere in diesem Zweig vorgeschlagene aber schon. Befehl: _ai* Unbekannter Befehl "AI*". Eine kurze Beschreibung der Befehle habe ich aber bei "cadforum.cz" gefunden.
Zitat: übersetze _ai einfach mit AutoCAD Intern und belasse es dabei
Gewundert habe ich mich bei den "_ai_irgendwas" Befehlen über die fehlende AutoCAD-Hilfe. Gesehen habe ich solche Befehle bisher oft in Lisp-Codeschnipseln hier im Forum. Daher nahm ich an, dass sie eine Lisp-eigene Geschichte seien. Der TE besitzt jedoch offenbar AutoCAD LT. Aus diesem Grund habe ich mich gewundert, dass das Makro bei ihm läuft. Der Unterschied zwischen "_bedit" und "_-bedit" ist mir schon klar. Die zweite Version wurde aber bisher auch noch nicht erwähnt. Mir war noch nicht aufgefallen, dass auch bei "_bedit" das Dialogfeld unterdrückt wird, wenn der Befehl nicht in der Befehlszeile eingetippt, sondern als Makro einem Knopf zugewiesen wird. Wieder was gelernt. mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 08. Apr. 2015 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für BL-CAD
|