Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Text-Bearbeitung (BricsCAD)

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:  Text-Bearbeitung (BricsCAD) (2631 mal gelesen)
Vino
Mitglied



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

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 07. Aug. 2012 09:09    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 zusammen,

ich bin kein Programmier-Profi, habs aber vor einiger Zeit geschafft, mir mit Hilfe von kleinen Code-Schnippseln und etwas Fummelei eine kleine Funktion zu schreiben.

Die Aufgabe war folgende:
Wir haben einen Aufsatz für ACAD, der einen Planrahmen zeichnet. Dabei werden automatisch 2 Texte mit erzeugt. Im einen wird die Plangröße (Länge * Höhe = Fläche) und im Anderen der Dateipfad ausgegeben.
Da beim Kopieren der Datei oder beim Ändern der Plangröße (Strecken) diese Ausgaben nicht mehr korrekt waren, hab ich folgenden Code gebastelt:

Code:
(defun c: pg ()
(setq sblip (getvar "blipmode"))
(setq scmde (getvar "cmdecho"))
(setvar "blipmode" 0)
(setvar "cmdecho" 0)
(setq LU (getpoint "Links unten: "))
(setq RO (getpoint LU "Rechts oben: "))
(setq x_LU (car LU) y_LU (cadr LU))
(setq x_RO (car RO) y_RO (cadr RO))
(setq DX (/ (- x_RO x_LU) 1000.0))
(setq DY (/ (- y_RO y_LU) 1000.0))
(setq QM (* DX DY))
(setq TXT (strcat "Blattgröße: " (rtos DX 2 3) " x " (rtos DY 2 3) " = " (rtos QM 2 3) " m²"))
(princ TXT)
(entmod
  (list
  (cons 1 TXT)
  (assoc -1 (entget (car (entsel "Text wählen:"))))
  )
)
(if (> (getvar "acadver") "16.1")
(entmod
  (list
  (cons 1 (strcat "Zeichnung: %<\\AcVar Filename \\f " (chr 34) "%fn7" (chr 34) ">%    Plot: %<\\AcVar PlotDate \\f " (chr 34) "%c" (chr 34) ">% / %<\\AcVar Login \\f " (chr 34) "%c" (chr 34) ">%"))
  (assoc -1 (entget (car (entsel "Linken Text wählen:"))))
  )
)
(entmod
  (list
  (cons 1 (strcat "Zeichnung: "(getvar "dwgprefix")(getvar "dwgname")))
  (assoc -1 (entget (car (entsel "Linken Text wählen:"))))
  )
)
)
(setvar "blipmode" sblip)
(setvar "cmdecho" scmde)
(Princ))

Nach Auswahl von 2 Eckpunkten und 2 Textobjekten wird der Inhalt des 1. Textobjekts mit der Flächenangabe und der des 2. Textobjekts mit Feldern hinterlegt, die den Dateipfad, Die Plotzeit und den Benutzer ausgeben.
Für AutoCAD-Versionen <2006 (die keine Felder unterstützten) war noch eine kleine Überprüfung drin, und wurde nur reiner Text ohne Felder erzeugt.

Und jetzt mein Problem:
In AutoCAD (bis 2009) lief und läuft dieser Code einwandfrei und liefert auch das gewünschte Ergebnis.

Jetzt wollen wir aber zumindest teilweise auf BricsCAD umsteigen und hier läuft dieser Code nicht. Nach Auswahl der Eckpunkte wird die Größe in der Befehlszeile noch korrekt ausgegeben, beim Auswählen des Textes wird dieser aber nicht geändert.
Felder unterstützt BricsCAD in einzeiligen Texten leider (zum erstellen) scheinbar gar nicht. Wenn ich diese Funktion aber im AutoCAD ausführe, werden die Felder auch in BricsCAD richtig angezeigt.

Woran kann das liegen? Hat jemand eine Idee?

Gruß
Stefan

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 07. Aug. 2012 10:24    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 Vino 10 Unities + Antwort hilfreich

Ich hab kein Bricscad, daher nur Vielleicht-Hinweise:

Was Pfad/Dateiname betrifft könntest Du einen
RTEXT - $(getvar, "dwgprefix")$(getvar, "dwgname")
verwenden.

Und statt

Code:
(entmod
  (list
  (cons 1 TXT)
  (assoc -1 (entget (car (entsel "Text wählen:"))))
  )
)

würde ich
Code:
(setq elist (entget (car (entsel "Text wählen:")))
(entmod (subst (cons 1 TXT) (assoc 1 elist) elist))

versuchen.

------------------
Schöne Grüße
Ernst

www.geopaint.at

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

Vino
Mitglied



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

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 07. Aug. 2012 11: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

Hallo Ernst,

vielen Dank für die Tips.
Dein 2. Hinweis war die Lösung für mein Hauptproblem. Damit klappt das Texte editieren jetzt.

Die Sache mit Getvar klappt so auch, aber eben nur als statischer Text. Das hatte ich ja auch für AutoCAD <2006 schon in meiner ersten Funktion.
Die Top-Lösung wäre halt, wenn der Dateiname, Plotdatum und Benutzer als Feld im Text wären, dann wäre das ganze nicht so Fehleranfällig (Verschieben der Datei).
Allerdings befürchte ich, dass das mit BricsCAD nicht geht, da man hier auch manuell in einzeilige Texte keine Felder einbauen kann. Hoffnung hat mir nur gemacht, dass BricsCAD Felder in einzeiligen Texten korrekt anzeigt, wenn sie (mit AutoCAD) schon eingefügt sind.

Ich poste hier nochmal meinen aktuellen Code, vielleicht hat ja jemand Verwendung dafür oder es fällt jemandem eine Lösung für das Feld-Problem ein...
Vielleicht schafft es ja jemand, das Text-Objekt in einen Mtext umzuwandeln und dann Felder einzufügen???

Code:
(defun c: pg ()
(setq sblip (getvar "blipmode"))
(setq scmde (getvar "cmdecho"))
(setvar "blipmode" 0)
(setvar "cmdecho" 0)
(setq LU (getpoint "Links unten: "))
(setq RO (getpoint LU "Rechts oben: "))
(setq x_LU (car LU) y_LU (cadr LU))
(setq x_RO (car RO) y_RO (cadr RO))
(setq DX (/ (- x_RO x_LU) 1000.0))
(setq DY (/ (- y_RO y_LU) 1000.0))
(setq QM (* DX DY))
(setq TXT (strcat "Blattgröße: " (rtos DX 2 3) " x " (rtos DY 2 3) " = " (rtos QM 2 3) " m²"))
(princ TXT)
(setq elist (entget (car (entsel "Text wählen:"))))
(entmod (subst (cons 1 TXT) (assoc 1 elist) elist))
(setq elist (entget (car (entsel "Linken Text wählen:"))))
(if (and (> (getvar "acadver") "16.1") (< (getvar "acadver") "18.0"))
(entmod (subst (cons 1 (strcat "Zeichnung: %<\\AcVar Filename \\f " (chr 34) "%fn7" (chr 34) ">%    Plot: %<\\AcVar PlotDate \\f " (chr 34) "%c" (chr 34) ">% / %<\\AcVar

Login \\f " (chr 34) "%c" (chr 34) ">%")) (assoc 1 elist) elist))
(entmod (subst (cons 1 (strcat "Zeichnung: " (getvar "dwgprefix") (getvar "dwgname"))) (assoc 1 elist) elist))
)
(setvar "blipmode" sblip)
(setvar "cmdecho" scmde)
(Princ))


Dieser Code funktioniert in AutoCAD und BricsCAD. Felder Werden nur in AutoCAD ab R2006 eingefügt, sonst statischer Text. Da wir nur AutoCAD bis 2009 (Acadver=17.2) und BricsCAD 12 (Acadver=18.0) einsetzen ist die Versionswahl etwas vereinfacht... Müsste bei neueren ACAD-Versionen dann angepasst werden.

Gruß
Stefan

[Diese Nachricht wurde von Vino am 07. Aug. 2012 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 07. Aug. 2012 12:21    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 Vino 10 Unities + Antwort hilfreich

Zitat:
(entmod (subst (cons 1 (strcat "Zeichnung: %<\\AcVar Filename \\f " (chr 34) "%fn7" (chr 34) ">%    Plot: %<\\AcVar PlotDate \\f " (chr 34) "%c" (chr 34) ">% / %<\\AcVarLogin \\f " (chr 34) "%c" (chr 34) ">%")) (assoc 1 elist) elist))

was willst den mit der Zeile erreichen?

------------------
Gruss Dirk

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

Vino
Mitglied



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

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 07. Aug. 2012 15:43    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

Die Zeile Macht unter ACAD ab 2006 genau die angesprochenen Felder in den bestehenden Text.

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