|  |  | 
|  | 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 - zum dritten Mal in Folge, eine Pressemitteilung 
 | 
| Autor | Thema:  Daneben ist nicht Enter - grread (1553 mal gelesen) | 
 | Geos Mitglied
 Vermessungstechniker i.R.
 
     
 
      Beiträge: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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: 2494Registriert: 02.11.2001
 Windows 10 64bitAutoCAD 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: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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: 900Registriert: 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: 2494Registriert: 02.11.2001
 Windows 10 64bitAutoCAD 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: 2154Registriert: 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: 2154Registriert: 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:Allerdings kann der User dort NICHT "Ende" eingeben.(defun c:## ( / #obj)
 (setvar "errno" 0)
 (while (and (not #obj) (not (= (getvar "errno") 52)))
 (setq #obj (entsel "\nObjekt wählen:"))
 )
 #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 | 
                        | Geos Mitglied
 Vermessungstechniker i.R.
 
     
 
      Beiträge: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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:liefert sowohl bei Enter als auch bei einem Klick ins Leere nil,(setq xxx (entsel))
 
 und
 Code:ergibt auch nil(type 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: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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: 2154Registriert: 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: 2154Registriert: 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: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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: 1201Registriert: 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: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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:            |