Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Abfrage Einheitenkonvertierung bzw EinfEinheiten von Block

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
  
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 (1080 mal gelesen)
cadking
Mitglied
CAD-Zeichendiensleistung


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

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 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 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
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Dez. 2016 14:05    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 cadking 10 Unities + Antwort hilfreich

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


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

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 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 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
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Dez. 2016 15:06    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 cadking 10 Unities + Antwort hilfreich

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


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

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 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 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
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Dez. 2016 23: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 cadking 10 Unities + Antwort hilfreich

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

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