Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Maßtext auslesen, nochmals

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
Autor Thema:   Maßtext auslesen, nochmals (1517 mal gelesen)
WeNe
Mitglied
Maschinenbautechniker


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

Beiträge: 10
Registriert: 08.02.2005

erstellt am: 09. Feb. 2005 15:19    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 Alle zusammen,

nachdem mir heute morgen so gut geholfen wurde, wage ich eine weitere Frage:
Wenn ich den Maßtext auslese bekomme ich immer den genauen Wert.
Die Einstellungen der Genauigkeit werden übergangen.
Im Forum ist davon die Rede diese Einstellungen im Bemaßungsstil bzw. in EED´s zu finden ist. Bemaßungsstil ist ja klar aber der Begriff EED ist mir fremd.
Vieleicht kann mir das jemand erklären oder hat einen Lösungsansatz.
Der Hintergrund ist das ich in ein folgendes Rechenprogramm den Wert, wie er in der Zeichnung steht, weiterverwenden will.

vielen Dank
Werner

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: 982
Registriert: 27.11.2003

Win10Pro
ACAD 2018
C3D 2018
ET

erstellt am: 09. Feb. 2005 17:25    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 WeNe 10 Unities + Antwort hilfreich

Hallo Werner,

EED (oder auch XDaten) sind Extended Entity Data
AutoCAD Hilfe sagt dazu (unter Entwicklerdoc, DXF-Referenz, Entities, Dimension):

  XDaten, die zur Anwendungs-ID "ACAD" gehören, folgen einem   
  Bemaßungselement, wenn Bemaßungsüberschreibungen auf dieses
  Element angewendet wurden. Siehe Überschreibungen von
  Bemaßungsstilen.

und dort:

Überschreibungen von Bemaßungsstilen können auf Bemaßungs-, Führungs- und Toleranzelemente angewendet werden. Die Überschreibungen werden in den einzelnen Elementen als XDaten gespeichert. Die Steuerzeichenketten der 1002-Gruppe enthalten die überschriebenen Bemaßungsvariablen-Gruppencodes und die zugehörigen Werte. Im folgenden Beispiel werden die XDaten eines Bemaßungselements aufgeführt, bei dem die Variablen DIMTOL und DIMCLRE überschrieben wurden.

(setq diment (car (entsel)))          ; Bemaßungselement auswählen
(setq elst (entget diment '("ACAD"))) ; Elementdefinitionsliste abrufen
(assoc -3 elst)                      ; Nur XDaten extrahieren 
Dieser Code gibt folgendes zurück:

(-3 ("ACAD"                      Anfang des ACAD-APPID-Abschnitts der XDaten
  (1000 . "DSTYLE") (1002 . "{") Anfang des DIMSTYLE-Unterabschnitts
  (1070 . 177) (1070 . 3)        DIMCLRE (Code 177) Überschreibung + Wert (3)
  (1070 . 71) (1070 . 1)        DIMTOL (Code 71) Überschreibung + Wert (1)
  (1002 . "}") ))                Ende des Unterabschnitts DIMSTYLE und des Abschnitts ACAD


Die Dich betreffenden Variablen wären dann wahrscheinlich DIMDEC (GC 271) und DIMADEC (GC 179)

Vielleicht hilft Dir dass ja etwas weiter.

Vile Grüße
spider

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: 2457
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: 10. Feb. 2005 10:33    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 WeNe 10 Unities + Antwort hilfreich

Hi,
mal 'n anderer Ansatz...
Bemaßungen werden in Acad als anonyme Blöcke verwaltet ("*D...").
Diesen Block kriege ich zu fassen und guck mir an, welcher Text denn dort in der Block-Definition steht:
Code:

(defun DT:GET-BEMTXT-FROM-DIMBLOCK (OBJ / RETVAL TAB-DAT)
  (if OBJ
    (if (wcmatch (strcase (cdr (assoc 0 (setq OBJ (entget OBJ)))))
                "*DIMENSION"
        )
      (if (setq TAB-DAT (tblsearch "BLOCK" (cdr (assoc 2 OBJ))))
        (if (setq TAB-DAT (entget (cdr (assoc -2 TAB-DAT))))
          (progn
            (while (not (eq (cdr (assoc 0 TAB-DAT)) "MTEXT"))
              (setq TAB-DAT (entget (entnext (cdr (assoc -1 TAB-DAT)))))
            )
            (setq RETVAL (cdr (assoc 1 TAB-DAT)))
          )
        )
      )
    )
  )
  RETVAL
)

Dieses Vorgehen bringt natürlich andere Probleme mit sich.
z.B. stehen dort ab IMHO R2004 noch Textformatierungsanweisungen.
Bei einem unveränderten Maß kommt bei mir nach der Anweisung:
(DT:GET-BEMTXT-FROM-DIMBLOCK (car (entsel)))
als Ergebnis: "\\A1;10.75"
heraus.
Wenn Du also meine Funktion zum Ermitteln der in der Bemaßung stehenden Texte verwendest, mußt Du noch eine Funktion schreiben, die Dir die eigentliche Zahl aus dem Text herauslöst.
So in etwa:

Code:

(if (setq TXT (DT:GET-BEMTXT-FROM-DIMBLOCK (car (entsel))))
  (setq TXT (LOESE-ZAHLENWERT-AUS-TEXT TXT))
)

Ist aber i.d.R. kein Problem, hängt aber auch damit zusammen was Ihr so mit den Bemaßungen macht. Bei mir reicht es z.B. den resultierenden Text nur um die eventuell vorkommenden Zeichenketten
"\\A0;" "\\A1;" "\\A2;" zu erleichtern.

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

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

WeNe
Mitglied
Maschinenbautechniker


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

Beiträge: 10
Registriert: 08.02.2005

erstellt am: 10. Feb. 2005 10:38    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 Spider,
das habe ich verstanden.

jetzt taucht aber die Frage auf, wie ermittle ich die Genauigkeitswerte des Bemaßungsstils. Die Variablen "Dimdec" und "Dimadec" beziehen sich doch nur auf den aktuellen Bemaßungsstil.
Mit (tblsearch "dimstyle" "Stilname") bekomme ich ja die werte des Bemaßungsstiles (unter GC 271 wohl die Dezimalstellen der Linearbemaßung), der GC 179 für die Winkelbemaßung taucht aber nicht auf.
Wo ist also die Anzahl der Dezimalstellen der Winkelbemaßung hinterlegt?

Vielen Dank
Werner

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: 982
Registriert: 27.11.2003

Win10Pro
ACAD 2018
C3D 2018
ET

erstellt am: 10. Feb. 2005 11:10    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 WeNe 10 Unities + Antwort hilfreich

Haloo Werner,

auch hier hift wieder die Hilfe.
Die sagt zu
Systemvariablen  DIMADEC

Typ: Ganzzahl
Gespeichert in: Zeichnung
Ausgangswert: 0

Steuert die Anzahl der angezeigten Genauigkeitsstellen bei Winkelbemaßungen.


-1 Die Winkelbemaßung wird mit der durch die DIMDEC-Einstellung festgelegten Dezimalstellenzahl angezeigt.

0-8 Die Winkelbemaßung wird mit der durch die DIMADEC-Einstellung festgelegten Dezimalstellenzahl angezeigt.


Wenn DIMADEC im Stil nicht auftaucht, hat's den Standartwert, d.h. 0
und somit die Winkelbemaßung keine Dezimalstellen (denke ich mal)

Gruss
spider

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: 2457
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: 10. Feb. 2005 11: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 Nur für WeNe 10 Unities + Antwort hilfreich

Hi WeNe,
bei meiner Lösung entfällt der ganze Analyse Kram bzgl. der Nachkommastellen, denn der MText im anonymen Block ist auf jeden Fall richtig, sei es ob die Dezimalstellen durch den Bemstil oder durch individuelle Zuweisung getätigt wurde... (es sei denn irgendein Idiot schreibt da Müll rein...)

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

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

WeNe
Mitglied
Maschinenbautechniker


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

Beiträge: 10
Registriert: 08.02.2005

erstellt am: 10. Feb. 2005 12:32    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 Spider,

Wenn ich in einem aktuellen Bemaßungsstil (z. B. AM_DIN) eine Anzahl Nachkommastellen bei der Winkelbemaßung eingestellt habe (z. B. 1)ist DIMADEC=1.
Dann wechsle ich den Bemassungsstil (z. B. ISO-25), mit der Anzahl Nachkommastellen 2, ist DIMADEC=2.
Bei dem Auslesen der Eigenschaften des Bemaßungsstile mit (tblsearch "DIMSTYLE" "AM_DIN") erscheint aber kein Eintrag mit GC 179.
Auch beim Vergleichen der Anzeige des selben Stil mit geänderten Nachkommastellen kann ich keinen Unterschied feststellen.

Hallo Marc,
deinen Beitrag hatte ich erst später gesehen, die Lösung gefällt mir aber sehr gut (nur nebenbei, was bedeutet IMHOIn my humble oppinion (Meiner Meinung nach) ).

Viele Grüße
Werner


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

otterloh
Mitglied



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

Beiträge: 183
Registriert: 27.06.2001

AutoCAD 2008, 2010
Vista, Win7

erstellt am: 10. Feb. 2005 12:53    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 WeNe 10 Unities + Antwort hilfreich

Hallo Wener,
(defun c:EBEM (/ el en mas)
(setq el (entget (car (entsel))))(princ "\nHAUPT-LISTE\n")(princ el)
(setq qw el)
;-----------------------------------------------------------------------------
(if (= "DIMENSION" (cdr (assoc 0 el)))
  (progn
  (setq el (tblsearch "BLOCK" (cdr (assoc 2 el))))
  (setq en (cdr (assoc -2 el)))
  (while en
    (setq el (entget en)) (princ "\nUNTER-LISTE\n")(princ el)
    (if (= "MTEXT" (cdr (assoc 0 el)))
    (progn
      (setq mas (cdr (assoc 1 el)))
      (setq pmt (cdr (assoc 11 el)))
      (setq pmtx (car pmt) pmty (cadr pmt) )
      (setq pmt (/ pmty pmtx) pmt (angtos (atan pmt)) )
    )
    )
    (if (= "ENDE" (cdr (assoc 0 el)))
    (setq en nil)
    (setq en (entnext en))
    )
  )
  (princ "\nMass-Text ") (princ mas)
  (setq mass (substr mas 5)) (princ "\nMass-Text Linear      ") (princ mass)
  (setq mass (substr mas 6)) (princ "\nMass-Text Radius      ") (princ mass)
  (setq mass (substr mas 12))(princ "\nMass-Text Durchmesser ") (princ mass)
  (princ "\nText-Winkel ") (princ pmt)
  )
)
(princ)
)

------------------
Gruß Werner
http://www.konstruktionsbuero-meyer.de

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: 982
Registriert: 27.11.2003

Win10Pro
ACAD 2018
C3D 2018
ET

erstellt am: 10. Feb. 2005 13: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 Nur für WeNe 10 Unities + Antwort hilfreich

Zitat:

der GC 179 für die Winkelbemaßung taucht aber nicht auf.

[/B]


Du hast recht, keine Ahnung wo der steckt.
Wenn die Bemaßung geändert wurde, steht er in den EED drin; wenn nicht?? 

Wenn der Bemstil aktuelle gesetzt wird, wird aber die Variable DIMADEC auf den entsprechenden Wert gesetzt, irgendwo muss er also sein. Behelfslösung wäre Bemstil aktuell setzen mit (getvar "DIMADEC") Wert abfragen.
Das wird aber nun immer komplizierter, da ist Marcs Lösung mit Sicherheit einfacher.

Gruß
spider

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)2019 CAD.de | Impressum | Datenschutz