| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Zahlen umrechnen bzw. korrigieren (795 / mal gelesen)
|
Phometric40 Mitglied Vermesser
Beiträge: 19 Registriert: 12.05.2007 Windows 10 BricsCAD 22
|
erstellt am: 29. Sep. 2023 11:50 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wir haben eine größere Anzahl Zeichnungen, in denen z.B. Schächte usw. mit einer Höhe als TEXT beschriftet sind. (z.B. "SD = 321,25" Da sich das Höhensystem jetzt geändert hat, müssen wir hunderte Werte korrigieren, also z.B. 4cm abziehen (NEU: "SD = 321,21") Fällt jemandem dazu eine LIST Routine o.ä. ein? Danke
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3858 Registriert: 15.10.2003
|
erstellt am: 29. Sep. 2023 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
das ist natürlich gefundenes Fressen für LISP, aber fertiges wird es hier kaum geben. Das müsste man sauber definieren - was suche ich, welche Ausnahmen gibt es, wie geht man mit Wertefehlern um (21,25), wie mit Eingabefehlern (321.25), soll man es protokollieren, soll man es vollautomatisch durchlaufen lassen oder jeweils anzeigen, ..? Wie gesagt - schön zu machen, aber wahrscheinlich(??) nicht fertig. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 29. Sep. 2023 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
Quick and dirty und schon seit längerer Zeit im Gebrauch: Code:
; modiho_prefix.lsp ; Ändern des Wertes von Höhenangaben mit Prefix, Differenz nach Wahl ; erstellt 08/17 Th.Jakob ; Prefix als beliebiger Text bis zum ersten Leerzeichen von hinten ; Punkt oder Komma als Dezimaltrenner erlaubt und wird beibehalten ; ;---------------------------------------------- (princ "Start mit modiho ") ; (defun dtp(wert) ; Parameter: Zahl als Zeichenkette ; Rueckgabe: Zahl als Zeichenkette mit Dezimaltrenner Punkt (vl-string-translate "," "." wert) ) (defun dtk(wert) ; Parameter: Zahl als Zeichenkette ; Rueckgabe: Zahl als Zeichenkette mit Dezimaltrenner Komma (vl-string-translate "." "," wert) )
; Elementliste aus Auswahlsatz bauen ; Parameter: Auswahlsatz ; Rueckgabe: Liste der Elementnamen (defun bau_elemli (asatz / anz i liste) (setq i -1) (repeat (sslength asatz) (setq liste (cons (ssname asatz (setq i (1+ i))) liste)) ) (setq liste liste) ) (defun c:modiho( / differenz Nachkomma t_aws t_li ct ctl alt_txt neu_txt altwert_txt neuwert_txt lpos) ; (princ "MODIHO - Modifizierung von Höhenangaben") (print ) (setvar "cmdecho" 0) (setvar "osmode" 0) (setvar "3Dosmode" 0) (setvar "pdmode" 0) (initget 1) ; keine Leereingaben (setq differenz (getreal "Differenzbetrag: ")) (setq Nachkomma (getint "Anzahl der Nachkommastellen: ")) (print "Texte auswählen ") (if (setq t_aws (ssget '((0 . "TEXT")))) (progn (setq t_li (bau_elemli t_aws)) (foreach ct t_li (setq ctl (entget ct)) ; alten wert holen (setq alt_txt (cdr (assoc 1 ctl))) (setq lpos (+(vl-string-position (ascii " ") alt_txt 0 T) 1)) (setq altwert_pre (substr alt_txt 1 lpos) altwert_txt (substr alt_txt lpos)) (setq dezitrenn "K") (if (vl-string-search "," altwert_txt) (setq altwert_txt (dtp altwert_txt)) (setq dezitrenn "P") ) (setq neuwert_txt (rtos (+ (atof altwert_txt) differenz) 2 Nachkomma)) (if (= dezitrenn "K") (setq neuwert_txt (dtk neuwert_txt))) (setq neu_txt (strcat altwert_pre neuwert_txt)) ; textinhalt setzen auf neuwert_txt (setq ctl (subst (cons 1 neu_txt) (assoc 1 ctl) ctl)) (entmod ctl) (entupd ct) ) ) (print "Keine Texte ausgewaehlt") ) (setvar "cmdecho" scmde) (setvar "osmode" sosmode) (setvar "3Dosmode" s3Dosmode) (setvar "pdmode" spdmode) )
[Diese Nachricht wurde von spider_dd am 29. Sep. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2812 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 29. Sep. 2023 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
Ach ja, das schöne Problem mit dem neuem Höhensystem ... (was lob ich mir meine Datenbanken ) Prinzipiell ist das machbar, wie Peter schon schrieb. Aber man muß hier höllisch aufpassen. Du hast bei Dir Bricscad22 aufgeführt, kann man da auch schon die CivilPoints verwenden? Dann könntest Du evtl. die Punkte dorthin überführen und die Höhenkorrektur durchführen lassen. Sollten das wirklich nicht gruppierte Texte oder Blöcke sein wird das aber schwierig. Dann müßte man schon spezielle Vorgaben treffen, z.B. alle Texte die mit "SO = ", "DK = ", "S1 = " beginnen, damit nicht irgendwelche anderen Texte, z.B. Längenangaben, verändert werden. Etwas einfacher wäre es wenn man spezielle Layer definieren könnte auf denen die zu ändernden Daten liegen. Sollten natürlich in alle Zeichnungen gleich benannt sein. Viel Spaß dabei Grüße, Klaus [edit] Oder man macht es so wie Spider mit Vorauswahl der Texte. Sollten halt nur zu ändernde Texte in der Zeichnung sein bzw. die nicht zu ändernden Layer gefroren / gesperrt. [Diese Nachricht wurde von KlaK am 29. Sep. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 970 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 29. Sep. 2023 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
Zitat: Original erstellt von Peter2: das ist natürlich gefundenes Fressen für LISP
... und wenn man das dann programmiert, dann selbstverständlich so, dass alle gleichartigen Höhenangaben (z.B. ganz simpel durch saubere Layerhaltung, oder besser durch XDATA) identifizierbar sind, und dass die neuen Höhenangaben sich auf eine Bezugshöhe beziehen, die auf geeignete Weise in der DWG gespeichert ist. Dann kann man, falls sowas später nochmals nötig wird, einfach diese Bezugshöhe ändern, und automatisch alle sich darauf beziehenden Höhen ändern lassen. In den kostenfrei erhältlichen ArchTools ist das alles eingebaut. Aber die bereits existierenden Höhentexte müssen immer noch durch ein geeignetes Lisp konvertiert werden. Dafür gibt es keine allgemeingültige Lösung, weil das davon abhängt, wie die Datenhaltung in der DWG aussieht. Sowas muss bei einem Lispler beauftragt werden.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22298 Registriert: 03.06.2002 Alles
|
erstellt am: 29. Sep. 2023 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
Phometric40 Noch die ganzen SETVARs raus und ggf. *TEXT statt TEXT zulassen um es allgemeingültiger zu halten, dann sollte das für diesen Fall und den Hausgebrauch ausreichen. https://ww3.cad.de/kurt/Unities.shtml Beim nächsten mal vielleicht Blöcke oder zumindest Schriftfelder nutzen welche sich auf eine Höhen-Basis beziehen, welche man einfach (zentral) ändern kann!? Dann gäbe es das Problem nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Phometric40 Mitglied Vermesser
Beiträge: 19 Registriert: 12.05.2007 Windows 10 BricsCAD 22
|
erstellt am: 29. Sep. 2023 13:25 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnellen Antworten. @spider_dd: sieht auf dem ersten Blick gut aus. Werde ich einmal an unseren Daten ausprobieren. @KlaK: Ja, das Höhenproblem. Allerdings sind das nur einfache Texte und keine Messpunkte. Die könnte ich im Vermessungsprogramm selbst einfach transformieren. @archtools: Eine Bezugshöhe muss m.E. nicht gespeichert werden. Die werden ja so schnell nicht noch einmal das Höhensystem ändern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 970 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 29. Sep. 2023 22:13 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
Zitat: Original erstellt von Phometric40: @archtools: Eine Bezugshöhe muss m.E. nicht gespeichert werden. Die werden ja so schnell nicht noch einmal das Höhensystem ändern
Wer weiß das schon? Ich kenne Anwender, bei denen wird so ein Bezugswert immer dann geändert, wenn eine DWG von einem Unternehmen zu einem anderen gereicht wird. Häufiger aber ist der Fall, dass ein Unternehmen in seinen DWGs jeweils individuelle Bezugswerte hat. Da ist es immer sinnvoll, einfach per Klick zu erfahren, worauf sich die Werte in einer DWG beziehen. Der Aufwand ist minimal, und man hat dann immer saubere DWGs mit konsistenter Datenhaltung.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VMichl Mitglied
Beiträge: 224 Registriert: 04.01.2001
|
erstellt am: 02. Okt. 2023 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für Phometric40
|