CADsite forum

AutoCAD => Autolisp => Topic gestart door: Reimer op wo 20 11 2013, 11:41:40

Titel: hoe vraag ik om een waarde in te voeren óf een selectie te maken? [Opgelost]
Bericht door: Reimer op wo 20 11 2013, 11:41:40
Ik ben een lisproutine aan het maken voor het bewerken van hoogtematen op basis van bestaande hoogtes. Nu wil ik de gebruiker vragen om een hoogtemaat op te geven Ã"F een (m)tekst te selecteren. Kan dit in één handeling?
Ik kan bij ENTSEL geen getal opgeven en bij GETREAL geen object selecteren.

Reimer.
Titel: Re: hoe vraag ik om een waarde in te voeren óf een selectie te maken?
Bericht door: roy_043 op wo 20 11 2013, 12:44:34
Dit werkt in BricsCAD:
(defun c:test ( / input)
  (initget 128)
  (if (setq input (entsel))
    (cond
      ((listp input) (car input))
      ((= (type input) 'str) (atof input))
    )
  )
)
Titel: Re: hoe vraag ik om een waarde in te voeren óf een selectie te maken?
Bericht door: roy_043 op wo 20 11 2013, 12:53:49
Ik was er al bang voor. Als dit (http://docs.autodesk.com/ACD/2011/ENU/filesALR/WS1a9193826455f5ff1a32d8d10ebc6b7ccc-69da.htm#WS4b0506698c46277ab5f53aff1e063efc-7f7e) klopt dan zal de code niet werken in AutoCAD. :(
Titel: Re: hoe vraag ik om een waarde in te voeren óf een selectie te maken?
Bericht door: roy_043 op wo 20 11 2013, 15:34:03
2e poging:
(defun c:test ( / input oldOsmode output)
  (setq oldOsmode (getvar 'osmode))
  (setvar 'osmode 512) ; Near.
  (initget 128)
  (setq output
    (if (setq input (getpoint "\nObject of getal: "))
      (cond
        ((listp input)
          (if (setq input (nentselp input))
            (cond
              ((last (cadddr input)))
              ((car input))
            )
          )
        )
        ((= (type input) 'str) (atof input))
      )
    )
  )
  (setvar 'osmode oldOsmode)
  output
)
Titel: Re: hoe vraag ik om een waarde in te voeren óf een selectie te maken?
Bericht door: Reimer op wo 20 11 2013, 16:14:06
Roy,


De eerste werkt inderdaad niet. Je tweede poging deels. Bij het opgeven van een getal is de output ook dit getal. Bij kiezen van een punt is de output:

Command: test
Object of getal: <Entity name: 7fffef3e570>

:oops:  :oops:  :oops:

Stom, stom, stom.. Ik was zo verdiept in het vervolg van mijn lisp dat ik de inhoud van de geselecteerde text verwachte. Jouw code geeft mij netjes het geselecteerde object.  :vreegoe:
Bedankt voor deze bijdrage, het werkt perfect!  :pintje:

Reimer