| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Abfrage Einheitenkonvertierung bzw EinfEinheiten von Block (1081 / mal gelesen)
|
cadking Mitglied CAD-Zeichendiensleistung
Beiträge: 238 Registriert: 26.10.2004 Intel Quadcore i7,W7-64bit, Quadro FX 3800 MEP/ACA2018; MEP/ACA2018; MEP/ACA2021; MEP/ACA2021
|
erstellt am: 15. Dez. 2016 13:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe eine Zeichnung in der Einheit METER. In dieser Zeichnung ist ein Block mit der Einheit [mm] 230 mal vorhanden. Diesen Block möchte ich in einer durch einen anderen Block mit der Einheit [m] ersetzen. (command "._insert" "alterBlock[mm]=C:\\neurBlock[m].dwg"(command)) Dabei wird neurBlock[m] um 0.001 skaliert. Ich möchte aber den neurBlock[m] beim Ersetzen nicht skalieren, oder den neurBlock[m] wieder auf den gleichen Wert zurücksetzen, den vorher der alterBlock[mm] hatte. Gibt es einen assoc für Einheitenkonvertierung bzw EinfEinheiten von Blöcken? Eine Abfrage mit Liste für den alterBlock[mm] ergibt: X-Skalierfaktor: 2.000 EinfEinheiten: Millimeter Einheitenkonvertierung: 0.001 Die Abfrage der Entity-Liste für den alterBlock[mm] ergibt: (41 . 0.002) (42 . 0.002) (43 . 0.002) Gruß Stefan ------------------ Danke Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Dez. 2016 14:05 <-- editieren / zitieren --> Unities abgeben: Nur für cadking
Den Skalierfaktor nachträglich ändern, dann sind die Blockreferenzen 1000x zu klein. a) Die Einheit eines Blockes wird im BLOCK_RECORD zum Block gespeichert. b) Die Maßstabsabhängige Einheitenskalierung kann man ausschalten indem man INSUNITS auf 0 stellt(=keine Einheit) und INSUNITSDEFTARGET entsprechend. Beide Variablen kannst du in der Hilfe nachlesen. Kümmere dich also vor und nach dem Einfügevorgang um diese Variablen. PS: Dein Problem zeigt aber im Grunde andere defizite auf, denn wenn bei dir keinen Größenunterschied zwischen Meter und Millimeter geben soll, dann ist das merkwürdig
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadking Mitglied CAD-Zeichendiensleistung
Beiträge: 238 Registriert: 26.10.2004 Intel Quadcore i7,W7-64bit, Quadro FX 3800 MEP/ACA2018; MEP/ACA2018; MEP/ACA2021; MEP/ACA2021
|
erstellt am: 15. Dez. 2016 14:37 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, Den Skalierfaktor nachträglich ändern, dann sind die Blockreferenzen 1000x zu klein. a) Die Einheit eines Blockes wird im BLOCK_RECORD zum Block gespeichert. kann man die Einheit im BLOCK_RECORD auslesen? Die Systemvariablen INSUNITS und INSUNITSDEFTARGET sind mir bekannt, führen aber bei jeder Einstellung dazu dass der neue Block um 0.001 skaliert wird. Lediglich die Blockeinheit des neuen Blocks ist unterschiedlich. Ich möchte erreichen das der alterBlock[mm] welcher den Skalierfator 2.0 hat durch den neurBlock[m] mit ebenfalls dem Skalierfator 2.0 ersetzt wird. ------------------ Danke Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Dez. 2016 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für cadking
Blöcke kannst du in Lisp praktisch vollständig manipulieren, also Werte auslesen und auch ändern. (Parametrik und dynamische Parameter aussen vor, also nur "Standardblöcke) Mit dem Blocknamen kommst du über tblobjname zum BLOCK darin ist der Verweis auf den Block_Record DXF (setq BR (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" "1mm")))))) (entmod(subst'(70 . 4)(assoc 70 BR)BR)) VL (vla-put-Units (vla-item (vla-get-Blocks(vla-get-activeDocument(vlax-get-acad-Object))) "1mm") 4) ist ja kurz vor Weihnachten ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadking Mitglied CAD-Zeichendiensleistung
Beiträge: 238 Registriert: 26.10.2004 Intel Quadcore i7,W7-64bit, Quadro FX 3800 MEP/ACA2018; MEP/ACA2018; MEP/ACA2021; MEP/ACA2021
|
erstellt am: 15. Dez. 2016 22:17 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, vielen Dank, dass war der Hinweis den ich benötigt habe. Lisp (setq BR (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" "BLOCKNAME")))))); BLOCKNAME ersetzen durch Name des Blocks (entmod(subst'(70 . 6)(assoc 70 BR)BR)); (70 . 6) setzt Blockeinheit auf Meter, (70 . 4) setzt Blockeinheit auf Millimeter Visual Lisp (vla-put-Units (vla-item (vla-get-Blocks(vla-get-activeDocument(vlax-get-acad-Object))) "BLOCKNAME") 4); BLOCKNAME ersetzen durch Name des Blocks ------------------ Danke Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Dez. 2016 23:10 <-- editieren / zitieren --> Unities abgeben: Nur für cadking
Aber dennoch sind die Einheiten in der 1m Datei, oder in deiner Zieldatei falsch eingestellt, denn zum Spaß sind die ja nicht vorhanden. Wenn Blöcke(oder DWGs) keiner Einheit zugeordnet werden können, dann ist es sinnvoll 'keine Einheit' zu verwenden, ansonsten die richtige Einheit. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |