Startseite

Über Jürgen A. Becker

Impressum

CAD-Dienstleistungen

Schulungsangebot

Visual Lisp - Einfügen von Flächen-Schriftfeldern -

In Architektur-Zeichnungen werden häufig Flächenwerte in Räume eingetragen. Dieses ist ein etwas aufwendiges Verfahren, weil einerseits die Fläche berechnet und dann per Text-Befehl eingefügt werden muss.

Eine Arbeitserleichterung sind Felder, die Werte von Objekten oder der Zeichnung als Text in die Zeichnung darstellen.

Die Werte dieser Felder werden bei bestimmten Aktionen oder Befehle (z.B. Regenerierung) aktualisiert.

Diese Felder können manuell über den Befehl Schriftfeld oder aber auch mit Hilfe einer kleinen Visual-Lisp Routine eingefügt werden.

Dieses möchte ich hier erläutern:

Die Auswahl des Objektes ist ein normaler Vorgang, wie in jeder anderen Lisp-Routine. Die Innovation hier ist die Ermittlung der ObjektID per VL-Befehle, die vorher mit

(vl-load-com)

geladen werden müssen.

Der VL-Befehl vla-get-objectid ermittelt die ObjektID aus einem Objekt, welches aus einem Elementname mit

(vlax-ename->vla-object ...)

erzeugt wird.

Hier der Code:

(defun c:P-Area (/ ent strField objID
         P1 TextHoehe Winkel)
  (vl-load-com)
  (if (setq ent (entsel))
   (progn

    ;Objekteigenschaften werden ermmittelt
    ;nur LWPolylinien sind erlaubt
    (setq ent (car ent))

    (if (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
      (progn
        ;Die Objekt ID wird ermittelt.
        (setq objID
          (vla-get-objectid
            (vlax-ename->vla-object ent)))

        ;Der Flächen-Text wird zusammengestellt
        (setq strField
         (strcat "A=%<\\AcObjProp Object(%<\\_ObjId "
           (rtos objID 2 0)
        ">%).Area \\f \"%lu2%pr2%ps[,m^2]%ds44%ct8[0.0001]%th46\">%"
         )
        );;;end setq
       
        ;Der Flächen-Text wird in die Zeichnung eingefügt.
        (setq p1 (getpoint "\nStartpunkt: "))
        (setq TextHoehe (getdist p1 "\nTexthöhe: "))
        (setq Winkel (getangle p1 "\nDrehwinkel: "))
        (command "._-text" p1 TextHoehe Winkel strField)

      )
      (princ
        "\nDas ausgewählte Objekt war keine LW-Polyline.")
    )
   )
   (princ "\nKein Objekt ausgewählt.")
 )
 (princ)
)

Nach Ausführung der Routine sollte der Flächentext in die Zeichnung eingefügt worden sein.

Flächentext innerhalb eines Raums

Flächentext innerhalb eines Raums

Viel Spaß beim Ausprobieren

Autor: Dipl.-Ing. Jürgen A. Becker
Kontakt: Juergen.Becker@CAD-Becker.de oder Juergen.Becker@AUGI.COM

  • Langjährige Schulungserfahrung
  • Autorisierter AutoCAD Trainer (AutoCAD, Mechanical Desktop etc.)
  • Software- und Datenbankentwicklung

Kommentieren