Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Text aus Block filtern

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 aus Block filtern (406 mal gelesen)
m.schuster
Mitglied
Konstrukteur / Admin

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

Beiträge: 8
Registriert: 08.05.2006

erstellt am: 31. Jan. 2008 10:26    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 auf der Suche nach einer Funktion die alle Text und Attributstexte in Blöcken kopiert. Die Kopierten Text sollen dann außerhalb vom Block sein und einen separaten Layer erhalten. Folgen Funktion könnte man als Basis nutzen:

(defun C:attrtotxt_noexp( / as i e el bn nl l1 l2)
  (if (setq as (ssget))
    (progn
      (setq i 0)
      (while (setq e (ssname as i))
        (setq el (entget e))
        (if (/= (assoc 66 el) nil)
          (progn
            (setq bn e)
            (while (/= (cdr (assoc 0 (setq el (entget e)))) "SEQEND")
              (if (and (= (cdr (assoc 0 el)) "ATTRIB")
                      (/= (logand (cdr (assoc 70 el)) 1) 1)
                  )
                (progn
                  (setq nl (cdr el))
                  (setq nl (subst '(0 . "TEXT") (assoc 0 nl) nl))
                  (setq l1 (cdr (member (assoc 2 nl) nl)))
                  (setq l2 (reverse (cdr (member (assoc 2 nl) (reverse nl)))))
                  (setq nl (append l2 l1))
                  (setq l1 (cdr (member (assoc 70 nl) nl)))
                  (setq l2 (reverse (cdr (member (assoc 70 nl) (reverse nl)))))
                  (setq nl (append l2 l1))
                  (setq nl (subst (cons 73 (cdr (assoc 74 nl))) (assoc 74 nl) nl))
                  (entmake nl)
                  (setq el (subst '(1 . "") (assoc 2 el) el))
                  (entmod el)
                )
              )
              (setq e (entnext e))
            )
          )
        )
        (entupd bn)
        (setq i (1+ i))
      )
      (command "._REGEN")
    )
  )
  'DANKE
)

Was hier noch fehlt ist, dass der Text in den Attributen nicht erhalten bleibt und das die normalen Texte nicht mitkopiert werden. Hintergrund der Funktion ist: Alle Text auf zwei unterschiedliche Layer zu erhalten um Zeichnungen schneller in verschiedene Sprachen übersetzen zu können.

Leider reichen meine Lisp Kenntnisse hierfür nicht mehr aus. Ich hoffe somit dass mir hier jemand helfen kann. Danke!

Gruß, Martin

------------------
Mechanical 2000i, SW2006, WINXP

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 31. Jan. 2008 10:28    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 m.schuster 10 Unities + Antwort hilfreich

lass einfach das (entmod el) weg, so werden die Attribute unverändert gelassen.

Texte aus Blockdefinitionen den Referenzen zuordnen (besonders bei mehrfach verschachtelten , transformierten)ist aber noch was komplizierter und ist auch nicht mit nem 10-Zeiler getan.

Wie darf ich "Leider reichen meine Lisp Kenntnisse hierfür nicht mehr aus" interpretieren?


Ach ja, zu "ich bin auf der Suche nach einer Funktion die alle Text und Attributstexte in Blöcken kopiert..." fällt mir noch ein : Google ist ne prima Suchmaschine... oder suchst du jemanden, der das für dich programmiert? SCNR.


------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

m.schuster
Mitglied
Konstrukteur / Admin

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

Beiträge: 8
Registriert: 08.05.2006

erstellt am: 31. Jan. 2008 10:46    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:

lass einfach das (entmod el) weg, so werden die Attribute unverändert gelassen.

Danke! Und schon bin ich einen Schritt weiter 

Zitat:

Texte aus Blockdefinitionen den Referenzen zuordnen (besonders bei mehrfach verschachtelten , transformierten)ist aber noch was komplizierter und ist auch nicht mit nem 10-Zeiler getan.


Verschachtelte Blöcke müssten nicht berücksichtigt werden. Was meinst du mit Referenzen zuordnen? der statische Text müsste doch einfacher gehen zu vervielfältigen.

Zitat:

Wie darf ich "Leider reichen meine Lisp Kenntnisse hierfür nicht mehr aus" interpretieren?


Bei irgendwelchen Schleifen sind leider meine Kenntnisse zu Ende 

Zitat:

Ach ja, zu "ich bin auf der Suche nach einer Funktion die alle Text und Attributstexte in Blöcken kopiert..." fällt mir noch ein : Google ist ne prima Suchmaschine... oder suchst du jemanden, der das für dich programmiert? SCNR.

Was meinst du wo ich den Code herab? Google natürlich.

------------------
Mechanical 2000i, SW2006, WINXP

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 31. Jan. 2008 11:13    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 m.schuster 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von m.schuster:
Hintergrund der Funktion ist: Alle Text auf zwei unterschiedliche Layer zu erhalten um Zeichnungen schneller in verschiedene Sprachen übersetzen zu können.


Servus!

ich würde die Texte nicht duplizieren.
Bau dir eine Datei mit den Texten in den verschiedenen Sprachen zeilenweise.
Dann die Datei einlesen und nur die 1er Gruppencodes in den Blockdefinitionen (bei den Texten) und den Attributen tauschen.
Vorteil: Du hast keine doppelte Datenhaltung und kannst die Datei auch beliebig erweitern (zeilenweise mit zusätzlichen Texten, spaltenweise mit zusätzlichen Sprachen).

.... nur mal so als Anregung.

Ciao Georg

------------------
http://www.xx-tausend.info

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 31. Jan. 2008 11:17    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 m.schuster 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von gmk:

Servus!

ich würde die Texte nicht duplizieren.
Bau dir eine Datei mit den Texten in den verschiedenen Sprachen zeilenweise.
Dann die Datei einlesen und nur die 1er Gruppencodes in den Blockdefinitionen (bei den Texten) und den Attributen tauschen.
Vorteil: Du hast keine doppelte Datenhaltung und kannst die Datei auch beliebig erweitern (zeilenweise mit zusätzlichen Texten, spaltenweise mit zusätzlichen Sprachen).

.... nur mal so als Anregung.

Ciao Georg



Würd ich auch so machen ..aber ich würde da ein WinINI-ähnliches Format vorziehen

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

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)

erstellt am: 31. Jan. 2008 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 Nur für m.schuster 10 Unities + Antwort hilfreich

Yep, Win.INI artiges Format ODER aber in Listenform in externe Datei schreiben.
Vorteil: Man kann dann die Datei über einen simplen Lisp-Befehl > (load ...) wieder einfach und vor allem schnell, zur sofortigen Verwendung importieren...

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

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

m.schuster
Mitglied
Konstrukteur / Admin

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

Beiträge: 8
Registriert: 08.05.2006

erstellt am: 31. Jan. 2008 11: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

Danke schon mal für die schnelle Mithilfe. 

Die Idee hatte ich auch schon. Ich habe sie aber dann wieder fallen gelassen, weil ich am Original eigentlich nichts verändern will. Dann müsste ich ja alle Text wieder zurück tauschen und ob das immer funktioniert, bin ich mir nicht ganz sicher.

------------------
Mechanical 2000i, SW2006, WINXP

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 31. Jan. 2008 11:34    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 m.schuster 10 Unities + Antwort hilfreich

ne, der Originaltext kann ja in XDATA gepackt werden, den das Übersetzungstool dann jeweils auswertet.
Und wenn du die Texte duplizierts, machst du ja auch was am Original.. und da mußt du dann alles nochmal von Hand übersetzen .. deshalb noch mal genau überlegen, wo ihr wie hinwollt.

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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