| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Daneben ist nicht Enter - grread (1462 mal gelesen)
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 06. Sep. 2009 20:03 <-- editieren / zitieren --> Unities abgeben:
Servus Code: (defun c:# () (while (or (= 5 (setq #tmp (car (grread (setq #obj (entsel "\nObjekte wählen: <Ende> ")) 2 2)))) (= 3 #tmp) );or (while (= 3 #tmp) (setq #tmp (car (grread (setq #obj (entsel "\nDaneben - nochmal wählen: <Ende> "))))) );while #obj ) )
Obiger Code sollte entweder "#obj" liefern oder nil, falls der User mit rechter MT beendet. Bei einem Fehlklick mit der (linken) Picktaste soll die Abfrage wiederholt werden. Das ganze funktioniert auch, allerdings ist bei einem "Fehlschuss" ein weiterer Linksklick notwendig, weil das Programm bei "Objekte wählen: <Ende>" wartet. Weiß jemand, wie man (grread) auch ohne diesen zusätzlichen Klick zum weiterlaufen überreden kann? ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 07. Sep. 2009 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Hi Geos, warum grread? Ich hab' das in dieser Art gelöst: Code:
;; Funktion gibt nil zurück, wenn nicht gewählt oder aber ;; mehr als einer gewählt wurde (Implizit) ;; Oder 'STR bei Rechtsklick ;; Oder Ename, wenn Objekt geklickt (defun IMPLIZIT-ENTSEL (QUESTION / SGET) (if (not (setq SGET (ssget "I"))) ;_ Implizite Objektwahl! (progn (initget " ") (if (= (type (setq SGET (entsel (strcat "\n" QUESTION)))) 'STR) (setq SGET 'STR) (if sget (setq SGET (car SGET)) ) ) ) (progn (if (not (> (sslength SGET) 1)) (setq SGET (ssname SGET 0)) (setq SGET NIL) ) (sssetfirst NIL NIL) ) ) SGET ) (defun C:# (QUESTION / ENAME) (while (not ENAME) (setq ENAME (IMPLIZIT-ENTSEL QUESTION)) (cond ((not ENAME) (setq QUESTION "NICHTS gewählt, neuer Versuch. Rechtsklick beendet die Objektwahl: " ) ) ((= ENAME 'STR) (princ "\nRechtsklick. Objektwahl wurde beendet.") ) ) ) (if (not (= ENAME 'STR)) ENAME ) )
Beispielaufruf: Code: (setq xx (C:# "Objekt wählen:"))
...------------------ Ciao, Marc
[Diese Nachricht wurde von marc.scherer am 07. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Sep. 2009 13:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Marc Danke für Deinen Lösungsvorschlag. Bei (grread) bin ich gelandet, weil ich für die weitere Verarbeitung auch den Pickpunkt - also die Rückgabe von (entsel) brauche/möchte. Mir schwebt da sowas wie fortlaufendes abrunden/verschneiden vor, aber ohne mehrfach zu verwendende Linien vorher aufbrechen zu müssen. ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 07. Sep. 2009 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Hi Ernst, Zitat: Original erstellt von Geos:
Obiger Code sollte entweder "#obj" liefern oder nil, falls der User mit rechter MT beendet. Bei einem Fehlklick mit der (linken) Picktaste soll die Abfrage wiederholt werden.
und wenn du mit mouse-reactor arbeitest!? ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 07. Sep. 2009 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Zitat: Original erstellt von Geos: Bei (grread) bin ich gelandet, weil ich für die weitere Verarbeitung auch den Pickpunkt - also die Rückgabe von (entsel) brauche/möchte.
Hi Geos, aber entsel gibt doch den Punkt bereits zurück!? Warum nimmst Du nicht den entsel Punkt? Guckst Du hier: Code:
(defun ## (QUESTION / LST-ENTSEL) (while (not LST-ENTSEL) (initget " ") (if (= (type (setq LST-ENTSEL (entsel (strcat "\n" QUESTION)))) 'STR ) (setq LST-ENTSEL 'STR) ) (cond ((not LST-ENTSEL) (setq QUESTION "NICHTS gewählt, neuer Versuch. Rechtsklick beendet die Objektwahl: " ) ) ((= LST-ENTSEL 'STR) (princ "\nRechtsklick. Objektwahl wurde beendet.") ) ) ) (if (= LST-ENTSEL 'STR) (setq LST-ENTSEL NIL) ) LST-ENTSEL )
Anwendung: Code: (setq xx (## "Objekt wählen: "))
...------------------ Ciao, Marc 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: 07. Sep. 2009 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Hallo Ernst, ich hätt's so ähnlich wie Marc gemacht: Code: (defun c:# ( / #obj) (while (not #obj) (initget "Ende ,_Quit") (setq #obj (entsel "\nObjekt wählen: <Ende> ")) ) (if (member #obj '("" "Quit")) (setq #obj nil) #obj) )
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 |
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: 07. Sep. 2009 17:30 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Hallo, eine Weitere Möglichkeit wäre die Auswertung der Sysvar "ERRNO": Code: (defun c:## ( / #obj) (setvar "errno" 0) (while (and (not #obj) (not (= (getvar "errno") 52))) (setq #obj (entsel "\nObjekt wählen:")) ) #obj )
Allerdings kann der User dort NICHT "Ende" eingeben.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 |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Sep. 2009 17:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Hatte vorhin nicht soviel Zeit - daher Marc's ersten Code überflogen - (ssget "I") entdeckt (mit ssget hatte ich angefangen, bis ich drauf gekommen bin, dass ich ja den PPunkt brauche) - Hirn hat "Punkt fehlt" gesendet - Code ins ACAD kopiert und ausprobiert - hat ename geliefert - Anwort geschrieben Jetzt hab ich genauer geschaut und festgestellt, dass ich offensichtlich nicht alle Möglichkeiten von initget kenne. Was ich nicht durchschaue:
Code: (setq xxx (entsel))
liefert sowohl bei Enter als auch bei einem Klick ins Leere nil, und Code: (type nil)
ergibt auch nil , wie wird xxx also zu einem String oder kriegt "" bzw. "Quit" zugewiesen?
------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Sep. 2009 17:57 <-- editieren / zitieren --> Unities abgeben:
|
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: 07. Sep. 2009 17:58 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Hallo Ernst, Zitat: wie wird xxx also zu einem String oder kriegt "" bzw. "Quit" zugewiesen?
über initget (F1!) (initget " ");Leerzeichen=Optionstrenner oder (initget ","); Komma=Abkürzungstrenner geben einen Leerstring zurück bei Enter oder RMT 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 |
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: 07. Sep. 2009 18:00 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Sep. 2009 18:21 <-- editieren / zitieren --> Unities abgeben:
Danke Henning Meine F1 redet nur Englisch mit mir, deshalb nehme ich meistens mein altes "Handbuch für Benutzeranpassungen" aus ACAD 13 her. Dort hab ich jetzt auch die Fehlercodes gefunden nicht aber Leerzeichen=Optionstrenner oder Komma=Abkürzungstrenner bei initget (gabs vielleicht damals noch nicht). Muss mich wohl öfter durch die englische Hilfe quälen. ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 29. Sep. 2009 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 30. Sep. 2009 15:03 <-- editieren / zitieren --> Unities abgeben:
|