FastFiber

hoe vraag ik om een waarde in te voeren óf een selectie te maken? [Opgelost]

Gestart door Reimer, wo 20 11 2013, 11:41:40

Vorige topic - Volgende topic

Reimer

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.

roy_043

Dit werkt in BricsCAD:
(defun c:test ( / input)
  (initget 128)
  (if (setq input (entsel))
    (cond
      ((listp input) (car input))
      ((= (type input) 'str) (atof input))
    )
  )
)

roy_043

Ik was er al bang voor. Als dit klopt dan zal de code niet werken in AutoCAD. :(

roy_043

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
)

Reimer

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

FastFiber