| |
| 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: Objekt selektieren (1331 mal gelesen)
|
Lispelmann Mitglied
Beiträge: 14 Registriert: 19.02.2008
|
erstellt am: 17. Jul. 2008 20:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, in Sachen AutoCAD-Objekte bin ich nicht so fit und habe immer wieder Probleme. Ich werde Euch mein aktuelles Problem vortragen: In einer Lisp-Routine lasse ich eine Linie oder einen Bogen oder einen Kreis zeichnen. Sobald das grafische Element gezeichnet wurde, wird eine Zahl, wie z.B. 2 oder 4 oder 8 eingetragen. Um weitere Variablenwerte zu ermitteln, muss ich eine dieser Zahlen mit der Maus anklicken. Wenn ich aber aus Unachtsamkeit neben die Zahl klicke, z. B. ins Leere oder auf ein grafisches Element, dann stürzt mein Programm ab. Wie kann der Lisp-Code einer Schleife aussehen, damit die Routine nur beim Anklicken einer Zahl weiterarbeitet, und beim Anklicken ins Leere oder eines grafischen Elementes die Aufforderung erscheint, eine Zahl anzuklicken?? Ich bin überzeugt, dass für viele von Euch dieses Problem eine Kleinigkeit ist. Eure Hilfe schätze ich sehr hoch. Danke im Voraus. 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 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 17. Jul. 2008 21:42 <-- editieren / zitieren --> Unities abgeben: Nur für Lispelmann
Hi, ich würde es mit einer Subroutine machen in der Art: Code: (defun sel-num ( / ss num) (prompt "\nWählen Sie eine Zahl") (while (not (and (setq ss (ssget "_:S" '((0 . "TEXT") (1 . "#,##,###,####")))) (setq num (atoi (cdr (assoc 1 (entget (ssname ss 0)))))) ) ) (prompt "\nWählen Sie bitte eine Zahl") ) num )
und an geeigneter Stelle dann (setq num (sel-num))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 |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 17. Jul. 2008 22:09 <-- editieren / zitieren --> Unities abgeben: Nur für Lispelmann
Hi, genau. Und das geht auch mit (entsel). Interessant in dem Zusammenhang: (while) funktioniert auch ohne den dann-Teil, weil der optional ist. Die Testfunktion genügt. Es könnte also auch so aussehen. Diesmal mit (entsel):
Code: (while (or (not (setq ent (entsel "\nZahl wählen:"))) (/= "TEXT" (cdr (assoc 0 (entget (car ent))))) (not (wcmatch (cdr (assoc 1 (entget (car ent)))) "#,##") ) ) )
Gruß CADchup ------------------ CADmaro.de 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 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 17. Jul. 2008 22:28 <-- editieren / zitieren --> Unities abgeben: Nur für Lispelmann
Hi, @cadchup: ...nicht ganz, da or nur t oder nil zurück gibt, würde Deine Funktion nur bestätigen, dass eine Zahl gewählt wurde deshalb: Code: ...(not (wcmatch (setq num (cdr (assoc 1 (entget (car ent))))) "#,##")...
und am Ende dann (atoi num) als Rückgabe.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 |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 17. Jul. 2008 22:42 <-- editieren / zitieren --> Unities abgeben: Nur für Lispelmann
|
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 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 17. Jul. 2008 23:03 <-- editieren / zitieren --> Unities abgeben: Nur für Lispelmann
@cadchup: Dann eben was anderes: Zitat: interessant in dem Zusammenhang: (while) funktioniert auch ohne den dann-Teil, weil der optional ist. Die Testfunktion genügt.
Interessant in diesem Zusammenhang: dass while einen dann-Teil hat wußte ich noch gar nicht... 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 |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 18. Jul. 2008 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Lispelmann
|
Lispelmann Mitglied
Beiträge: 14 Registriert: 19.02.2008
|
erstellt am: 18. Jul. 2008 22:22 <-- editieren / zitieren --> Unities abgeben:
|