Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Automatisierung: Funktion auf alle Text Elemente anwenden und in eigenen Layer schrei

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Automatisierung: Funktion auf alle Text Elemente anwenden und in eigenen Layer schrei (1092 mal gelesen)
ernstloeffel
Mitglied


Sehen Sie sich das Profil von ernstloeffel an!   Senden Sie eine Private Message an ernstloeffel  Schreiben Sie einen Gästebucheintrag für ernstloeffel

Beiträge: 3
Registriert: 04.12.2014

erstellt am: 04. Dez. 2014 16:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich bin kompletter Neuling sowohl in AutoCad (bzw. ich verwende Map 3D 2015) als auch in AutoLisp. Ich suche eine Möglichkeit einen Verarbeitungsschritt zu automatisieren - also es muss komplett ohne Benutzerinteraktion ausführbar sein.

Und zwar möchte ich a) für alle Text Elemente (aus allen Layern) eine Bouding Box zeichnen und b) diese Bounding Boxen in einen eignene neuen Layer packen. Der neue Bounding Box Layer muss entsprechend dem originalen Layer wo das Text Element gefunden wurde benamt werden. Also z.B. für Layer "Türschilder" sollten alle Bounding Boxes der Text Elemente dieses Layers nach "Türschilder_BoundingBoxes" geschrieben werden.

Das Skript unten ist das einzige, was ich bisher gefunden habe. Das zeichnet eine Bounding Box um ausgewählte Text Elemente. Meine ersten Skript Versuche dies entsprechend a) zu automatisieren und b) in eigene Layer zu schreiben sind kläglich gescheitert. Den Spagetthi Code erspare ich euch 

Könnt ihr eure Lisp Skills mit mir teilen und mein Skript anpassen? Und vielleicht auch erklären?

(defun c:MyTextBounds ( / ss)
    (if (not bns_tcircle) (load "acettxt.lsp"))
    (if (setq ss (ssget '((0 . "TEXT,MTEXT,ATTDEF"))))
        (bns_tcircle ss "Variable" "Rectangles" "" 0.35)
    )
    (princ)
)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 04. Dez. 2014 16:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ernstloeffel 10 Unities + Antwort hilfreich

also es so so aussehen, als hätte man
Befehl: QTEXT Ein
Befehl: REGEN
eingegeben?
Was ist mit den Boundingboxen, die bereits auf den Layern existieren - vorher löschen?

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ernstloeffel
Mitglied


Sehen Sie sich das Profil von ernstloeffel an!   Senden Sie eine Private Message an ernstloeffel  Schreiben Sie einen Gästebucheintrag für ernstloeffel

Beiträge: 3
Registriert: 04.12.2014

erstellt am: 04. Dez. 2014 17:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wieder etwas dazu gelernt. Ja, so soll es aussehen.

Bestehende Bounding Boxen müssen nicht gelöscht werden. Wir brauchen nur die Bounding Boxes, welche mit eigenen Parametern erstellt wurden, in einem eigenen Layer entsprechend einer Schematischen Benamung. Bestehende Bounding Boxen sollten nicht übernommen werden in diese neu erstellten Layer.

Vielleicht zum Hintergrund:
Diese Bounding Boxes werden in einem nachgelagerten Schritt (GIS Kartendaten Import) später wieder weg geworfen. Wir verknüpfen mit diversen eigenen und Open Source Tools ID Layer und Geometrien (entweder über Text Ankerpunkt oder Näherungsverfahren, also Grad der Überlappung einer Text Bounding Box mit darunter liegender Geometrie). Wobei auch Polygone aus Linestring erzeugt werden (was mit GRASS sehr gut geht, brauchen wir nicht über AutoCad / MAps 3D zu erledigen).
Bisher bekommen bzw. berechnen wir den Text-Ankerpunkt und die Text-Bounding-Boxen mit GRASS, dxfgrabber und Co. Meistens funktioniert das ganz gut, aber oft genug müssen wir Anpassungen vornehmen. Daher evaluieren wir gerade Maps 3D um zu schauen, ob wir damit weniger Sonderfälle nachträglich manuell behandeln müssen. 

[Diese Nachricht wurde von ernstloeffel am 04. Dez. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

spider_dd
Mitglied



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 05. Dez. 2014 08:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ernstloeffel 10 Unities + Antwort hilfreich

Hallo Ernst,

quick and dirty aber probier es mal hiermit.

Code:

(defun c:MyTextBounds  ( / ss anz i elem data newlay aa )
    (if (not bns_tcircle) (load "acettxt.lsp"))
    (if (setq ss (ssget '((0 . "TEXT,MTEXT,ATTDEF"))))
(progn
        (setq anz (sslength ss) i 0)
        (while (< i anz)
    (setq elem (ssname ss i))
  (setq data (entget elem))
  (setq newlay (strcat (cdr (assoc 8 data)) "_BoundingBoxes"))
  (setq aa (ssadd elem))
  (command "layer" "m" newlay "")
          (bns_tcircle aa "Variable" "Rectangles" "" 0.35)
  (setq i (1+ i))
        )
      )
    )
    (princ)
)

HTH
Gruß
Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ernstloeffel
Mitglied


Sehen Sie sich das Profil von ernstloeffel an!   Senden Sie eine Private Message an ernstloeffel  Schreiben Sie einen Gästebucheintrag für ernstloeffel

Beiträge: 3
Registriert: 04.12.2014

erstellt am: 05. Dez. 2014 14:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von spider_dd:
Hallo Ernst,

quick and dirty aber probier es mal hiermit.

Thomas


Vielen Dank! Ich werde erst am Montag dazu kommen es auszuprobieren, aber vorab vielen Danke das du dir die Zeit genommen hast. Ich melde mich nochmal.

Ernst

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz