x-koordinate - 1 / Lisp
Mozi 19. Nov. 2008, 17:17

leider fehlt mir die routine im lisp um ein kleines script zu schreiben

ich würde gerne ein kleines lisp erstellen, in dem alle elemente gewählt werden
um dann mit einfachen "links-klicks" jeweils die elemente neu zu berechnen

klick
alle elemente mit kleineren x-koordinaten als mein klick sollten um 1 einheit nach rechts wandern

also ssget x
dann getpoint
und dann if x im "alle" kleiner als x vom klick dann x+1
elemente ändern

ich bastelte schon mit schieben und command
würde aber mal gerne mit den elementfunktionen etwas professioneller vorgehen

Dorfy 19. Nov. 2008, 19:26

Hi,
naja, das Grundprinzip steht doch,
wenn du nun noch weißt welche Elemente du wandern lassen möchtest,
dann hast du doch schon alles...
Als Hilfestellung
"Der Dauerbrenner" oder als "Kochbuch" im (wie der Name sagt) Buchformat...
Wenn du "Lisp-Konsole" in ACad entdeckt hast, ist die Hilfe auch immer ein heißer Tipp.
(Könnte mir auch vorstellen, dass es komplett mit Script umsetzbar ist)

An welchen Lispzeilen hängt es denn?

mfg Heiko

joern bosse 20. Nov. 2008, 07:32

Hallo Mozi,
vielleicht ein kleines Grundgerüst, mußt Du Dir noch ein bißchen anpassen:

Code:

(defun c:test ( / aws pkt)
  (if(and(setq aws (ssget))(setq pkt (getpoint "\Punkt picken:")))
    (progn
      (setq n 0)
      (repeat (sslength aws)
(if (< (car(cdr(assoc 10 (entget (ssname aws n)))))(car pkt))
(command "_.move" (ssname aws n)"" '(0.0 0.0)'(1.0 0.0)))
(setq n (+ n 1))))))

Anmerkung: Die Abfrage, ob der X-Wert kleiner ist über den GC 10 mußt Du noch überdenken, wenn Du z.B. eine Linie hast ist der GC 10 nur der Anfangspunkt, wenn Du aber eine Block hast ist es der Basispunkt.