| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Objektauswahl bei Makros (528 mal gelesen)
|
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 14. Aug. 2008 15:29 <-- editieren / zitieren --> Unities abgeben:
Hy ihr! Bin mit Makros machen noch nicht so spritzig und hab seit geraumer Zeit ein Problem, das ich anhand folgendem Makro darstellen möchte: ^C^C_tcircle;;r;v; soll ein Rechteck um einen Text erstellen...tut es auch wenn ich den Text bereits selektiert habe, BEVOR ich das Mkro starte. Starte ich aber zuerst das Makro wird der Befehl varia ausgeführt: Befehl: _tcircle Select TEXT, MTEXT or ATTDEF objects... Objekte wählen: No valid objects selected. Befehl: r Unbekannter Befehl "R". Drücken Sie F1-Taste für Hilfe. Befehl: v VARIA Was muss ich tun damit ich den Text sowohl vor als auch nach dem Befehlstart selektieren kann? Thx
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedelzastrow Mitglied Architekt / Bauzeichner
Beiträge: 993 Registriert: 05.07.2007 Win XP AutoCAD 2006 AutoCAD 2009 AutoCAD 2012 LT
|
erstellt am: 14. Aug. 2008 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
Hallo Du, schau Dir mal in der AutoCAD Hilfe (Makro) den Punkt "Erstellen von Makros" an. Meiner Meinung hift Dir wahrscheinlich ein "\" zwischen _tcircle und r weiter (ungetestet). Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 14. Aug. 2008 15:52 <-- editieren / zitieren --> Unities abgeben:
Also die Autocadhilfe hab ich schon längst durch. Werd da a nit schlauer! Habs jetzt folgendermaßen probiert: ^C^C_tcircle;\;;r;v; jetzt funktioniert die Geschichte zwar wenn ich den Befehl vorher starte, aber dafür nicht mehr wenn ich vorher den Text anklicke.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedelzastrow Mitglied Architekt / Bauzeichner
Beiträge: 993 Registriert: 05.07.2007 Win XP AutoCAD 2006 AutoCAD 2009 AutoCAD 2012 LT
|
erstellt am: 14. Aug. 2008 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
Hallo, ein Makro bei dem Du entweder vor oder nach Makrostart ein Objekt auswählen kannst, ist mit einfachen Mitteln meiner Meinung nach nicht möglich. Aber Du hast doch jetzt beide Wege, kannste Dir ja auch zwei Knöppe basteln, einen für vorher und einen für hinterher Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 bis ACA 2013 Arcibem System: Windows Internet-Startseite: http://www.archi.de
|
erstellt am: 14. Aug. 2008 16:58 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
Hallo, Du könntest ein klizikleines Lisp in Dein Menü schreiben etwa in der Art: Code: ^C^C(if (setq ss (cadr (ssgetfirst)))(command "_tcircle" ss "" "r" "v")(command "_tcircle" (ssget) "" "r" "v"))
Jetzt ungetestet, da mein AutoCAD _tcircle nicht kennt Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 19. Aug. 2008 07:40 <-- editieren / zitieren --> Unities abgeben:
|
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. Aug. 2008 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
tcircle ist ein Befehl aus den Expresstools, welcher in der Datei acettxt.lsp definiert wird. Mit einem command-Aufruf wird das also nix. Und innerhalb der Routine wird ssget zur Auswahlsatzerstellung aufgerufen. Wenn was vor Befehlsaufruf selektiert wurde wird das von dem ssget genommen, wenn nicht, wird der Nutzer von dem internen ssget aufgefordert Textobjekte zu wählen. Wenn du nun ein Tcircle haben möchtest, was die Objektwahl und den Abstand offenläßt, aber die Option Rechteck r und v für Variable setzt, mußt das das Lisp entsprechend umschreiben ( am besten darin einen neuen Befehl TRECTANG kreieren, wo dann statt (setq ent (getkword (acet-str-format "\nEnclose text with [Circles/Slots/Rectangles] <%1>: " #bns_tcircle_ent );acet-str-format ) ) halt (setq ent "RECTANGLES") usw. steht. Einfacher gehts nicht. .. ein paarmal copy&pate, ein paar ;;; zur Auskommentierung. Fertig ------------------ - 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 |
xem Mitglied Zeichner
Beiträge: 847 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 19. Aug. 2008 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
|
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 19. Aug. 2008 08:40 <-- editieren / zitieren --> Unities abgeben:
|
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. Aug. 2008 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
Zitat: Original erstellt von spy007: Funktioniert leider nicht wenn ma den Text vorher selektiert.
der Ansatz funktioniert schon ... haste überhaupt getestet ? ------------------ - 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 |
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 19. Aug. 2008 09:05 <-- editieren / zitieren --> Unities abgeben:
Ja...bin grad am stöpseln...verstehe den Ansatz auch vom Prinzip her, nur bin i bis jetzt no nie so weit vorgedrungen u tua mi a bisserl hart damit... Hab jetzt mal den gesamten tcircle Befehl kopiert und ihn in "TRAHMEN" umbenannt, die Befehle reduziert, gespeichert...nur schreit das Autocad, dass es den Befehl nit kennt... ------------------ Panta Rhei 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. Aug. 2008 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
Zitat: Original erstellt von spy007: ...nur schreit das Autocad, dass es den Befehl nit kennt...
dann such dir die acetauto.lsp und ergänze nach der Zeile (acet-autoload2 '("acettxt" "tcircle" nil "tcircle" 2)) noch (acet-autoload2 '("acettxt" "trahmen" nil "trahmen" 2)) und deine Funktion heißt (defun c:trahmen ( / ss flt j rad ent offset slot) ..) ?
------------------ - 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 |
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 19. Aug. 2008 09:35 <-- editieren / zitieren --> Unities abgeben:
Also im Moment schauts mal so aus: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;TRAHMEN - erzeugt einen Rahmen um einen Text ; (defun c:trahmen ( / ss flt j rad ent offset slot) (acet-error-init (list (list "cmdecho" 0 "highlight" (getvar "highlight") "limcheck" 0 );list T );list );acet-error-init (setq flt '((-4 . "<OR") (0 . "TEXT") (0 . "ATTDEF") (0 . "MTEXT") (-4 . "OR>")));setq (princ "\nSelect TEXT, MTEXT or ATTDEF objects...") (if (and (setq ss (ssget flt)) (setq ss (car (acet-ss-filter (list ss '(("LAYERUNLOCKED") ;Dis-allow locked layers, non-current-space ("CURRENTUCS") ;and dis-allow objects not in current ucs ) T );list );acet-ss-filter );car );setq );and (progn (if (not #bns_trahmen_offset) (setq #bns_trahmen_offset 0.35) );if (initget 6) (setq offset "0.35") ) );setq (if (or (not offset) (equal offset "") );or (setq offset #bns_trahmen_offset) (setq #bns_trahmen_offset offset) );if (if (not #bns_trahmen_ent) (setq #bns_trahmen_ent "Circles") );if (initget "Circles Slots Rectangles") (setq ent "Rectangles") );setq (if (or (not ent) (equal ent "") );or (setq ent #bns_trahmen_ent) (setq #bns_trahmen_ent ent) );if (if (not #bns_trahmen_rad) (setq #bns_trahmen_rad "Variable") );if (initget "Constant Variable") (setq rad "Variable") );setq (if (or (not rad) (equal rad "") );or (setq rad #bns_trahmen_rad) (setq #bns_trahmen_rad rad) );if (if (and (equal rad "Constant") (or (equal ent "Slots") (equal ent "Rectangles") );or );and (progn (if (not #bns_trahmen_slot) (setq #bns_trahmen_slot "Both") );if (initget "Width Height Both") (setq slot (getkword (acet-str-format "\nMaintain constant %1 [Width/Height/Both] <%2>: " (strcase (substr ent 1 (- (strlen ent) 1)) T) #bns_trahmen_slot ) ) );setq (if (or (not slot) (equal slot "") );or (setq slot #bns_trahmen_slot) (setq #bns_trahmen_slot slot) );if );progn else get rectang or slot size info );if (setq j (bns_trahmen ss rad ent slot offset)) (if ss (command "_.select" ss "") );if (princ (strcat "\n" (itoa j) " " ent " created.")) );progn then (princ "\nNo valid objects selected.") );if (acet-error-restore) );defun c:trahmen is aba irgendwo no a syntaxfehler drin
------------------ Panta Rhei Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 19. Aug. 2008 09:55 <-- editieren / zitieren --> Unities abgeben:
|
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. Aug. 2008 10:02 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
eeeehj, du sollstest nicht alles tcircle-strings durch trahmen ersetzen!! Nur die Befehlsdefinition! und dann nur die Abfragen durch ein Setzen der Variablen ersetzen!!! ------------------ - 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 |
spy007 Mitglied Technischer Zeichner
Beiträge: 45 Registriert: 24.07.2008 AutoCAD 2016
|
erstellt am: 19. Aug. 2008 10:16 <-- editieren / zitieren --> Unities abgeben:
|
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. Aug. 2008 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für spy007
|