| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | akademiekompakt: eXs live erleben – CAE-System für vernetzte Elektrotechnik, Pneumatik und Mechatronik |
| | |
 | WS LANDCAD Anwendertreffen 2026, eine Veranstaltung am 16.09.2026
|
|
Autor
|
Thema: Text drehen (322 / mal gelesen)
|
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 18. Mai. 2026 09:12 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Habe ein Problem mit Text in einer CAD Zeichnung. Habe 3d Messpunkte (normale Punkte im Raum) mit Text versehen aber der Text ist in XY Achse kann man den Text eventuel zum beispiel in XZ drehen und der basispunkt gleich bleibt, und wenn möglich alle texte in einmal. Danke im Voraus Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
   
 Beiträge: 1175 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 18. Mai. 2026 15:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Hallo Didi, Annahme: Du hast normal in "Draufsicht" (x-y-Eben) gezeichnet und blickts nun "von vorn" (x-z-Ebene) auf deinen Plan. Sind Deine Texte einfache Texte oder Attribute an einem Block? Bei einfachen Texten probiere mal folgendes: Stelle das BKS auf "Ansicht" Markiere einen Text und kopiere folgende Zeilen in die Befehlszeile: Code:
(setq ci (entget (ssname (ssget)0))) (setq altpos (cdr (assoc 10 ci))) (setq neupos (list (car altpos) (caddr altpos) (* -1 (cadr altpos)))) (setq ci (subst (cons 210 '(0.0 -1.0 0.0)) (assoc 210 ci) ci)) (setq ci (subst (cons 10 neupos) (assoc 10 ci) ci)) (entmod ci)
Entspricht das Ergebnis dem Gewünschten? Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 18. Mai. 2026 16:16 <-- editieren / zitieren --> Unities abgeben:         
Danke für die Hilfe es ist ein normaler Text aber es funktioniert nicht richtig den ich habe gesehen in die falsche achse sozusagen 90° zu der ebene. und könnte man das auch mit mehreren texten auf einmal machen? vieleicht gibt es dennoch eine Lösung [Diese Nachricht wurde von Didist am 18. Mai. 2026 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
   
 Beiträge: 1175 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 19. Mai. 2026 07:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Hallo Didi, dann musst Du mal bitte genau beschreiben, wie Deine Ansicht ist, in der Du den Text haben willst. Bei meinen Zeilen funktioniert dies mit Ansicht von vorn, also x nach rechts, y nach hinten, z nach oben. Stelle dazu am besten eine Datei oder zumindest ein paar aussagefähige Screenshots hier ein. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
   
 Beiträge: 1098 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 19. Mai. 2026 11:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Zitat: Original erstellt von Didist: Guten Morgen Habe ein Problem mit Text in einer CAD Zeichnung. Habe 3d Messpunkte (normale Punkte im Raum) mit Text versehen aber der Text ist in XY Achse kann man den Text eventuel zum beispiel in XZ drehen und der basispunkt gleich bleibt, und wenn möglich alle texte in einmal.Danke im Voraus Didi
Wenn ich Dich richtig verstehe, willst Du den Text in ein senkrecht zum aktuellen BKS stehendes BKS "drehen", also um die XY-Achse? Dun weist damit dem Entity ein neues Objektkoordinatensystem zu, der sich im DXF Gruppencode 210 versteckt. Das kannst Du mit folgenden Lisp-Funktionen machen: (setq en (car (entsel))) (setq pt (cdr (assoc 10 (entget en)))) (setq ppt (trans pt 0 '(0 -1 0))) (ssmodent en 210 0 '(0 -1 0)) (ssmodent en 10 ppt) Hier die Funktion SSMODENT und die dazu gehörende Hilfsfunktion: Code:
;; SSMODENT ändert für das Entity <ENAME> den DXF-Wert <DXF> auf den neuen Wert <VALUE> ;; Beispiel: DXF Gruppen code 8 steht für Layer. Mit (ssmodent en 8 "NeuerLayer") wird der Layer des Entities <en> auf "Neuerlayer" geändert. der neue Layer muss vorher nicht vorhanden sein.(defun ssmodent (ename dxf val) (entmod (at-subst (cons dxf val) (entget ename) ) ) ) ;;; ersetzt in einer ASSOC-Liste den ;;; (assoc (car ntok) lst) Ausdruck durch den ntok Ausdruck, fügt ihn neu dazu, falls nicht vorhanden: (defun at-subst (ntok lst / temp) (cond ((not lst) (list ntok) ; lst existiert nicht ) ((not (assoc (car ntok) lst)) (reverse (cons ntok (reverse lst))) ; assoc existiert noch nicht, hinten dran ) ( 'T (subst ntok (assoc (car ntok) lst) lst) ; assoc existiert schon, ersetzen ) ) )
[Diese Nachricht wurde von archtools am 19. Mai. 2026 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 22. Mai. 2026 08:13 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Danke für eure Hilfe Im Anhang eine Datei BKS Ausgerichtet in dem der Text und die Punkte stehen sollte und die Position sollte sich nicht ändern. Die punktansicht und Text sind im Welt BKS. Wie kann ich das realisieren? Mit dem CODEbin ich nicht zu recht gekommen habe eineDatei erstellt und über appload geladen. Bitte helft mir weiter Gruß Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
   
 Beiträge: 1175 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 22. Mai. 2026 09:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Hallo Didi, anbei mal eine kleine Lisp-Routine. Quick and dirty, ohne Fehlerbehandlung, wenicg flexibel und genau nur für Dein aktuelles Problem gemacht. Ich hoffe Du hast Interesse und schaust dir mal an, was das Ding macht. Hilfen und Infos zu AutoLisp findes Du im Netz jede Menge. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 22. Mai. 2026 10:15 <-- editieren / zitieren --> Unities abgeben:         
Danke der Ansatz ist der richtige aber er funktioniert nur in der X-Achse, oder habe ich es falssch angewant. denn der Traum wäre Text und Punt un einem benutzerdefinerten BKS immer 90 Grad zum Welt Bks. Ist das machbar? Gruß Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
   
 Beiträge: 1098 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 22. Mai. 2026 12:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Zitat: Original erstellt von Didist: Danke der Ansatz ist der richtige aber er funktioniert nur in der X-Achse, oder habe ich es falssch angewant. denn der Traum wäre Text und Punt un einem benutzerdefinerten BKS immer 90 Grad zum Welt Bks.Ist das machbar? Gruß Didi
Du solltest Dich minimal mit Lisp befassen, denn mein Code mit der Änderung des "Hochzugsvektors" des Objektkoordinatensystems (im DXF Gruppencode 210) weist bereits in die richtige Richtung. Du musst für eine fertige Lösung nur zusätzlich noch eine eventuelle Drehung des Textes mit berücksichtigen und den Hochzugsvektor mit Drehen. Zum Ausprobieren und Annähern kannst Du probeweise ja mal ein BKS am Einfügepunkt des Textes errichten, das die Ausrichtung des neuen Objektkorrdinatensystems hat. Und dann kannst Du einfach ein Textelement darin erzeugen, und dann den Gruppencode 210 auslesen: (cdr (assoc 210 (entget (car (entsel))))) Genau diesem Gruppencode kannst Du mit meiner Funktion SSMODENT dann den Hochzugsvektor dem gewünschten Text zuweisen: (setq en (car (entsel))) (ssmodent en 210 <Hochzugsvektor> ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 22. Mai. 2026 14:34 <-- editieren / zitieren --> Unities abgeben:         
Danke Wau, du wirfst mit Begriffen um dich, ich bin ein normaler ACAD Anwender und habe mit programmieren nichts am hut. Aber werde mien mögliches tun, darf ich mich dennoch melden sollte ich nicht weiter kommen? Ist das drehen mit den Punkten auch möglich? Gruß Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
   
 Beiträge: 1098 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 22. Mai. 2026 14:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Zitat: Original erstellt von Didist: Danke Wau, du wirfst mit Begriffen um dich, ich bin ein normaler ACAD Anwender und habe mit programmieren nichts am hut. Aber werde mien mögliches tun, darf ich mich dennoch melden sollte ich nicht weiter kommen? Ist das drehen mit den Punkten auch möglich?Gruß Didi
Sorry, hab' das verwechselt und dachte, wir sind im Lisp Forum. Aber vielleicht wäre das ein passender Anlass für Dich, Dich mal näher damit zu befassen. Immerhin hast Du in AutoCAD und BricsCAD jeweils eine komplette Lisp-Entwicklungsumgebung mit gekauft. Mit welchen Punkten? Meinst Du Funktionen? SSMODENT ist meine Variante der eierlegenden Wollmilchsau. Damit kannst Du so ziemlich alles an Objekteigenschaften auf allereinfachste Weise ändern. Du willst beispielsweise alle Referenzen von Block "AlterBlock" durch den Block "NeuerBlock" ersetzen, und dabei sollen Block-BKS, Rotation, Skalierung, Layer, Farbe, Linientyp, und sogar XDATA der jeweiligen Blockreferenz erhalten bleiben? Weil sich der Name der Blockreferenz hinter dem DXF Gruppencode 2 eines Inserts verbirgt, geht das dann so: (foreach en (ss->list (ssget "X" '((0 . "INSERT")(2 . "AlterBlock")))) (ssmodent en 2 "NeuerBlock")) Und Du kannst damit auf die gleiche Weise beispielsweise die Farbe ändern, oder die Rotation, oder was auch immer. Und natürlich kannst Du das in einen einfach aufzurufenden Befehl packen. Und natürlich darfst Du Dich melden, falls Du Dich ernsthaft in Lisp einarbeiten willst. Nur: fertige Lösungen biete ich hier normalerweise nicht an, denn davon leben Leute. Der beste Einstieg in Lisp ist hgier zu finden: https://www.autolisp.info/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 22. Mai. 2026 15:33 <-- editieren / zitieren --> Unities abgeben:         
Ja, ich verstehe auch, dass damit Leute leben, aber ich dachte, dass AutoCAD schon so etwas bietet. Es müsste einen Standard-Befehl für 3D-Messpunkte geben. Ich werde nicht der einzige Mensch sein, der 3D-Messpunkte verwendet. Ich meine die Punkte in der DXF-Zeichnung, die als Kreuz dargestellt sind. Diese geben die Koordinaten im Raum an, die ich benötige, um Vorder- und Seitenansichten zu erstellen. Vielleicht kannst du mir eine Variante nennen, in der sich die Punkte in der Ansicht ausrichten, denn sonst gibt es nur Striche und ich habe keine Orientierung, wo Text oder ein Punkt umgeht. Gruß Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
   
 Beiträge: 1098 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 22. Mai. 2026 15:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Didist
Zitat: Original erstellt von Didist: Vielleicht kannst du mir eine Variante nennen, in der sich die Punkte in der Ansicht ausrichten, denn sonst gibt es nur Striche und ich habe keine Orientierung, wo Text oder ein Punkt umgeht.
Das müsste ich programmieren, aber ich bin nun im Ruhestand. Du kannst das mit dem, was ich Dir mitgegeben habe, eigentlich schon lösen. Was DXF Gruppencodes sind, hat nichts mit Lisp oder Programmierung zu tun, sondern mit den Interna von AutoCAD, die auch ein fortgeschrittener Anwender kennen sollte. Wie gesagt: nur Hilfe zur Selbsthilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didist Mitglied xxxxxxxx
 
 Beiträge: 128 Registriert: 17.06.2001 Intel(R) Xeon(R) CPU E5-1620 v2 40Gb Ram Nvidia Quadro P4000 Win 10 AIS 2025
|
erstellt am: 22. Mai. 2026 16:13 <-- editieren / zitieren --> Unities abgeben:         
|