Forum:Lisp
Thema:Platzbedarf markieren
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
schachtelmacher

Beiträge: 86 / 1

Windows XP Prof.
Autocad 2004
Autocad 2007
Freecad
Erpa V-Pack
Ubuntu

Hallo,

ich habe wieder mal eine Frage:

Ich frage in einem Lispprogramm nach einem Einfügepunkt,
den ich später zum Einfügen eines Blockes benötige.
Dieser Block hat später eine Ausdehnung in x und y-Richtung.
Kann ich bei der Auswahl an das Fadenkreuz ein Rechteck visuell andocken um den Platzbedarf des Blockes anzuzeigen?
Der Sinn ist, dass ich vorher sehe, ob der Block irgendwo hineinragt,
wo er stören könnte.
Es funtioniert nicht mit der Gummibandlinie, da ich ja kein Aanfangspunkt habe.
Vielleicht eine interessante Aufgabe. Ich hoffe Ihr könnt mir helfen.

Grüsse

Schachtelmacher


------------------
"Es gibt keine Probleme, sondern nur Lösungen"

CADmium

Beiträge: 13458 / 249

.

Ein wenig Code sagt mehr als 1000 Worte. Hoffe, du kommst damit klar

(defun ....
  (setq P (grread 't 5 0))
  (setq VE (VIERECK (cadr P))
  (while (= 5 (car (setq P (grread 't 5 0))))
    (if VE (entdel VE))
    (setq VE (VIERECK (cadr P)))
  )
  (if (= 3 (car P))
    (command "_insert" ... (cadr P)...)
  )
)

(defun VE (P)
  (entmake
    ...
  )
  (entlast)
)
 


..aber insert bringt doch auch die Faktoren vx vy vz für die Voransicht mit ????
------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

[Diese Nachricht wurde von CADmium am 30. Mrz. 2005 editiert.]

schachtelmacher

Beiträge: 86 / 1

Windows XP Prof.
Autocad 2004
Autocad 2007
Freecad
Erpa V-Pack
Ubuntu

Das mit der Voransicht geht nicht, da der Block
erst später erstellt und fertig eingefügt wird.
Ich weiss aber schon die Abmessungen (z.B. 150 x 210 mm).
Jetzt soll bei der Frage nach dem Einfügepunkt, der durch
getpoint gesetzt wird, ein Rechteck am Fadenkreuz angedockt sein,
um die spätere Position des eingefügten Blocks zu demonstrieren.
Es soll kein Rechteck fest gezeichnet werden, oder eine Voransicht des Blocks
wie bei insert angezeigt werden.
Bei Bewegung des Fadenkreuzes soll das virtuelle Rechteck dem Cursor folgen.

Grüsse

schachtelmacher

------------------
"Es gibt keine Probleme, sondern nur Lösungen"

marc.scherer

Beiträge: 2484 / 7

Windows 10 64bit
AutoCAD 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)

Hi,
teste mal das hier:
Aufruf mit z.B.:
(PointByCrosshair 40 55.25 155.37)
Code:

;;; Funktion ermittelt einen Punkt bezogen
;;; auf die aktuelle Lage des Fadenkreuzes
;;; Retval ist nil bei Rechtsklick oder Abbruch
;;; oder der Punkt, der bei einem linksklick
;;; vom Fadenkreuz definiert wurde.
;;; Übergabeparameter ist die Farbe, mit der
;;; die rechteckige Markierung gezeichnet werden soll...
(defun PointByCrosshair (color rw hw / P)
  (setq P (grread 't 1)) ;_ lese aktuelle Lage des Crosshairs
  (XORDRAW (cadr P) color rw hw) ;_ zeichne Geometrie um Crosshair
  (while (= 5 (car (setq P (grread 't 1)))) ;_ lese solange nicht linksgeklickt wird
    (redraw) ;_ grvecs löschen
    (XORDRAW (cadr P) color rw hw) ;_ Geometrie an neuer Lage zeichnen
  ) ;_ end of while
  (redraw)
  (if (= 3 (car P))
    (cadr P)
  ) ;_ end of if
) ;_ end of defun

(defun XORDRAW
      (PKT CLR BL-RW BL-HW / HOCH OBL OBR RECHTS UL UR VEK_LIST)
  (setq RECHTS  (car PKT)
        HOCH    (cadr PKT)
        UL      (list (- RECHTS (/ BL-RW 2)) (- HOCH (/ BL-HW 2)))
        UR      (list (+ RECHTS (/ BL-RW 2)) (- HOCH (/ BL-HW 2)))
        OBR      (list (+ RECHTS (/ BL-RW 2)) (+ HOCH (/ BL-HW 2)))
        OBL      (list (- RECHTS (/ BL-RW 2)) (+ HOCH (/ BL-HW 2)))
        VEK_LIST (list CLR UL UR UR OBR OBR OBL OBL UL UL OBR OBL UR)
  ) ;_ end setq
  (grvecs VEK_LIST)
) ;_ end of defun



...

------------------
Ciao,
Marc

schachtelmacher

Beiträge: 86 / 1

Windows XP Prof.
Autocad 2004
Autocad 2007
Freecad
Erpa V-Pack
Ubuntu

Danke an Euch beide!

Das bringt mich weiter

------------------
"Es gibt keine Probleme, sondern nur Lösungen"