Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Daneben ist nicht Enter - grread

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Daneben ist nicht Enter - grread (1173 mal gelesen)
Geos
Mitglied
Vermessungstechniker i.R.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2448
Registriert: 02.11.2001

Windows 7 Professional 64bit
AutoCAD Architecture 2011/2015 (deu/eng)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung

erstellt am: 07. Sep. 2009 10:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

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.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Dorfy an!   Senden Sie eine Private Message an Dorfy  Schreiben Sie einen Gästebucheintrag für Dorfy

Beiträge: 892
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 07. Sep. 2009 13:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2448
Registriert: 02.11.2001

Windows 7 Professional 64bit
AutoCAD Architecture 2011/2015 (deu/eng)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung

erstellt am: 07. Sep. 2009 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

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.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Schon wieder eine Antwort ...

Servus Henning

Das Beenden mit der rechten MT reicht völlig.
Wo gibts denn die Fehlercodes für errno?
Wieder was gelernt!

------------------
Schöne Grüße
Ernst

www.geopaint.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich

Zitat:
Wo gibts denn die Fehlercodes für errno?

in Vlisp unter F1 > AutoLISP Developer's Guide > Appendixes >  AutoLISP Error Codes >

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.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1199
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 29. Sep. 2009 13:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Geos 10 Unities + Antwort hilfreich



Architekt/in für Bauleitung (LP 5-8)!
StepStone - Ihr neuer Job bei der Mueller, Benzing und Partner - freie Architekten - Unser Büro in Esslingen am Neckar besteht heute aus 3 Partnern und 17 Mitarbeitern, davon 10 Architekten. Das Architekturbüro wurde im Jahre 1949 gegründet. Schwerpunkte sind neben dem Industrie- und Verwaltungsbau der Wohnungsbau, Bauten für Bildungs- und Betreuungseinrichtungen sowie öffentliche Bauten und Sanierungen aller Art....
Anzeige ansehenArchitektur
Geos
Mitglied
Vermessungstechniker i.R.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Anton

- wäre auch eine Möglichkeit, allerdings signalisiert das Fadenkreuz eine Punktwahl.
- würde auf den "Objektwahlcursor" (Pickbox, Kasterl) nur ungern verzichten ...

Trotzdem danke

------------------
Schöne Grüße
Ernst

www.geopaint.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de