| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Ersatzteilwesen optimieren mit CIDEON Sparify, eine Pressemitteilung
|
Autor
|
Thema: Winkeleinheit ändern (8389 mal gelesen)
|
cadernst Mitglied
Beiträge: 74 Registriert: 23.07.2003 Pentium D 2.66GHz, 3GB RAM, 80GB, XP Pro, AutoCAD Civil 2011
|
erstellt am: 14. Sep. 2009 08:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine DWG-Datei erhalten in der die Drehwinkel der Blöcke in GON eingefügt sein sollen. Mein AutoCAD steht aber auf Altgrad und die Blöcke sind falsch gedreht. Wenn ich nun über Format | Einheiten die Winkeleinheit ändere rechnet AutoCAD freundlicherweise die Einheiten um. Ich möchte aber, dass die Winkeleinheiten nur anders interpretiert werden. Liegt hier ein Fehler in der Zeichnung vor, oder mache ich etwas falsch? Gruß Cadernst Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dig15 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. für Markscheidewesen und Geodäsie
Beiträge: 5833 Registriert: 27.02.2003 DWG TrueView 2014
|
erstellt am: 14. Sep. 2009 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für cadernst
Hallo Cadernst, die Ursache Deines Problemes kann ich nicht so richtig nachvollziehen. ACAD rechnet zwar die Winkel um, dreht aber Blöcke nicht von sich aus. Könnte mir nur vorstellen, dass da eine andere Appli mit im Spiel ist. Seis drum. Zur Lösung: Wenn die Blöcke in Grad statt in Gon sind, müssten sie ja nur um einen bestimmten Wert (Winkel) "weitergedreht" werden. Umrechnung Gon <-> Grad sollte kein Problem darstellen. Mit dem Lisp kannst Du Blöcke in ihrem Basispunkt um einen Relativwinkel drehen. Lisp stammt nicht von mir, sondern hier aus dem Forum. Code: (defun C:INSERT_SCARO (/ AUSWAHL W X INDEX INSERT LISTE OBJEKTDATEN) (if(and(setq AUSWAHL (ssget '((0 . "INSERT")))) (setq W (getreal "\nRelativdrehwinkel : ")) (setq X (getreal "\nSkalierfaktor : ")) ) (progn (setq INDEX -1) (repeat (sslength AUSWAHL) (setq INSERT(ssname AUSWAHL(setq INDEX(1+ INDEX)))) (setq Objektdaten (entget INSERT)) (if(assoc 66 OBJEKTDATEN) (progn (setq LISTE nil) (while (/= (cdr (assoc 0 OBJEKTDATEN)) "SEQEND") (setq OBJEKTDATEN (entget (entnext (cdr (assoc -1 OBJEKTDATEN))))) (if (= (cdr (assoc 0 OBJEKTDATEN)) "ATTRIB") (progn (princ(setq LISTE (cons (list(assoc 40 OBJEKTDATEN) (assoc 50 OBJEKTDATEN) (assoc 41 OBJEKTDATEN) (assoc 51 OBJEKTDATEN) ) LISTE ) ) ) ) ) ) (setq Objektdaten (entget INSERT)) (command "_scale" INSERT "" (cdr(assoc 10 OBJEKTDATEN)) X) (command "_rotate" INSERT "" (cdr(assoc 10 OBJEKTDATEN)) W) (while (/= (cdr (assoc 0 OBJEKTDATEN)) "SEQEND") (setq OBJEKTDATEN (entget (entnext (cdr (assoc -1 OBJEKTDATEN))))) (if (= (cdr (assoc 0 OBJEKTDATEN)) "ATTRIB") (progn (entmod(mapcar '(lambda(x) (cond ((member(car X) '(40 41 50 51)) (assoc (car X) (car LISTE))) ('T X) ) ) OBJEKTDATEN ) ) (setq LISTE (cdr LISTE)) ) ) ) (command "_regen") ) (progn (command "_scale" INSERT "" (cdr(assoc 10 OBJEKTDATEN)) X) (command "_rotate" INSERT "" (cdr(assoc 10 OBJEKTDATEN)) W) ) ) ) ) ) )
------------------ Viele Grüße Lutz Glück Auf! vote für mich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 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: 14. Sep. 2009 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für cadernst
Hi cadernst, wie fügst Du denn die Blöcke in Dein Acad ein? Mit dem normalen Einfüge Befehl? Oder via Lisp oder einer Applikation? Hilfreich wäre auch, wenn Du mal so 'nen Block hier hochlädst... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadernst Mitglied
Beiträge: 74 Registriert: 23.07.2003 Pentium D 2.66GHz, 3GB RAM, 80GB, XP Pro, AutoCAD Civil 2011
|
erstellt am: 15. Sep. 2009 19:51 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Dig15: ACAD rechnet zwar die Winkel um, dreht aber Blöcke nicht von sich aus.
Genau das ist mein Problem. Ich hatte gehofft, das dies automatisch passiert in dem nur die Winkel in einer anderen Einheit interpretiert werden Zitat: Original erstellt von Dig15: Zur Lösung: Wenn die Blöcke in Grad statt in Gon sind, müssten sie ja nur um einen bestimmten Wert (Winkel) "weitergedreht" werden.
Auch hier stimme ich zu. Ich hatte halt nur gehofft, das mir dieser Schritt erspart bleibt. Vielleicht doch noch ein paar Infos zum Hintergrund: Die Daten stammen aus einem GIS und wurden nach DWG exportiert. Aus den GIS-Symbolen (mit Drehwinkel in Gon) wurden Blöcke mit unterschiedlichen Namen. Dem Programm zum Export scheint die Winkeleinheit aber ziemlich egal zu sein. Im GIS zumindest ist die Drehung der Symbole in Ordnung.
Im AutoCAD hingegen habe ich die geschilderten Probleme. Daher war meine Frage ob ich dem AutoCAD vielleicht vor dem öffnen der DWG mitteilen könnte im welcher Winkeleinheit die Daten geladen werden sollen. Ist im Header der DXF/DWG irgendwo die Winkeleinheit hinterlegt? Gruß Cadernst
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 15. Sep. 2009 20:02 <-- editieren / zitieren -->
Hi, im AutoCAD gibt es den Befehl 'einheit'/'_units', hier stellst Du die Einheiten für Deine Zeichnung ein (auch die Winkeleinheit und die 0-Richtung, mit der Du arbeiten willst). Den Rest verstehe ich leider nicht, denn habe ich einen Block, der senkrecht zur waagrechten 0-Richtung (ich gehe jetzt mal von Osten als 0-Richtung aus) eingesetzt ist, dann möchte ich bitte, dass auch bei Umstellung der Winkeleinheiten (egal ob auf Gon, oder auf Radiant, ...) der Block senkrecht zur 0-Richtung bleibt. Aus welchem Grund soll der Block sich weiterdrehen? Würde ja bedeuten, wenn ich in Gon begonnen hätte, den Block mit 100° eingesetzt habe, dann die Winkeleinheit auf Radiant stelle, der Block sich 28.6-fach weiterdreht. Der Unterschied der Einheiten ist nur bei der Erzeugung der Elemente, wenn Du Winkel angibst oder bei der Abfrage von Winkel oder der Abfrage von Geometrieelementen ==> wie hier die Winkel angezeigt werden. - alfred - ------------------ www.hollaus.at |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 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: 16. Sep. 2009 08:45 <-- editieren / zitieren --> Unities abgeben: Nur für cadernst
Hi cadernst, wäre es eine Möglichkeit für Dich im Nachhinein die Drehung für alle Blöcke zu ändern? Offensichtlich sind die ja bereits durch die GIS Schnittstelle eingefügt?! Wenn ja, dann selektiere alle Blöcke die Du drehen willst, starte die Eigenschaftenpalette und ändere einfach den Wert der Drehung für alle selektierten Blöcke: ... ------------------ Ciao, Marc 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: 16. Sep. 2009 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für cadernst
Hallo Cadernst, ich hab mal etwas nachgesehen, intern speichert ACAD den Drehwinkel im Bogenmaß (GC 50), in DXF-Dateien ist er in Grad angegeben. Wenn nun die Datenübergabe über das DXF-Format passiert und die Winkel vom GIS in Gon angegeben werden, werden diese offensichtlich als Grad-Winkel interpretiert. Du musst also für Deine Blöcke den Winkel "umrechnen". Probier hierzu mal folgendes aus (Quick and Dirty): Code:
(defun c:go2gr( / tl anz x ct ctl gonwinkel gradwinkel neuwinkel) (princ "\nzu drehende Blockreferenzen wählen") (setq tl (ssget '((0 . "INSERT")))) (setq anz (sslength tl)) (setq x 0) (while (< x anz) (setq ct (ssname tl x)) (setq ctl (entget ct)) (setq gonwinkel (/ (* (cdr (assoc 50 ctl)) 180 ) pi)) (setq gradwinkel (* (/ gonwinkel 100.) 90.)) (setq neuwinkel (*(/ gradwinkel 180) Pi)) (setq ctl (subst (cons 50 neuwinkel) (assoc 50 ctl) ctl)) (entmod ctl) (entupd ct) (setq x (1+ x)) )
HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |