| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Chinesische Texte einfügen (1970 mal gelesen)
|
COLB Mitglied Hochbau Techniker
Beiträge: 6 Registriert: 26.03.2015 AutoCAD Inventor
|
erstellt am: 26. Mrz. 2015 09:14 <-- editieren / zitieren --> Unities abgeben:
Hallo lieb Lisp-Programmierer, ich habe folgendes Problem. Ich möchte mit einem Lisp-Programm aus einer Text-Datei o. Excel-Datei chinesische oder rumänische Texte auslesen und sie in Schriftfelder mit Attributen einfügen. Bei deutsche Texten ist das kein Problem und mit Strg-C und Strg-V lässt sich der chinesische Text auch übertragen, nur Lisp will das nicht und bei 500 Zeichnungen wir das irgend wann mal langweilig. Leider ist auch unser Systemhaus bisweilen ratlos und in Foren findet sich unter chinesisch auch nicht viel. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 26. Mrz. 2015 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
Willkommen auf CAD.de man könnte zwar auch jetzt bereits anfangen zu helfen, aber da wären Anzahl Helfer * Anzahl Zeiteinheit völlig unnötig lang mit deinem Problem beschäftigt. Daher - in deinem Sinne - poste eine Quelldatei und eine DWG mit einer "Soll" Darstellung, so werden sich sicher mehr Leute damit beschäftigen und es führt dich eher zum Ziel Das Thema "andere Sprachen" ist nicht ganz neu und nicht immer leicht, daher Dateien als Fakten und los gehts. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
COLB Mitglied Hochbau Techniker
Beiträge: 6 Registriert: 26.03.2015 AutoCAD Inventor
|
erstellt am: 26. Mrz. 2015 09:51 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm danke für die schnelle Antwort, ich lese aus der Text-Datei mit 110118;组件 坠落保护装置 短 短 (setq zeile (read-line ch2)) (setq liste(cons zeile liste)) und schreibe das in eine Liste, aber für den chinesischen Text steht da nur Mist. Beim Auslesen aus der Excel-Datei A B 1 110118 组件 坠落保护装置 短 短 2 (defun zWert(Cells s z / s z Cells Excelzelle) (setq Excelzelle(vlax-variant-value (vlax-get-property Cells "item" s z))) (setq W (vlax-variant-value (vlax-get-property Excelzelle "Value"))) ) steht da nur "???? ????".
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 27. Mrz. 2015 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
Zitat: Original erstellt von COLB: Hallo cadffm danke für die schnelle Antwort, ich lese aus der Text-Datei mit 110118;组件 坠落保护装置 短 短(setq zeile (read-line ch2)) (setq liste(cons zeile liste)) und schreibe das in eine Liste, aber für den chinesischen Text steht da nur Mist. Beim Auslesen aus der Excel-Datei A B 1 110118 组件 坠落保护装置 短 短 2 (defun zWert(Cells s z / s z Cells Excelzelle) (setq Excelzelle(vlax-variant-value (vlax-get-property Cells "item" s z))) (setq W (vlax-variant-value (vlax-get-property Excelzelle "Value"))) ) steht da nur "???? ????".
Logisch, denn die Lisp-Ausgabe interpretiert den mutmaßlichen Unicode-String wohl als ASCII. Die ist ja nicht dazu gedacht, mit chinesischen Zeichen Programme zu schreiben. Relevant ist, was passiert, wenn Du ein MTEXT-Entity damit füllst. MTEXTe verwenden Unicode, und dann erst wird's möglich. Ob da aber eventuell noch passende Fonts gewählt wedrden müssen, weiß ich nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
COLB Mitglied Hochbau Techniker
Beiträge: 6 Registriert: 26.03.2015 AutoCAD Inventor
|
erstellt am: 27. Mrz. 2015 09:30 <-- editieren / zitieren --> Unities abgeben:
Hallo archtools, danke für deine Antwort, das mit dem MTEXT hatte ich auch schon getestet, ich vermute das gleiche wie du auch, das Lisp o. VB alles in ASCII umwandelt. Ich hatte auch schon versucht die Sonderzeichen vor den Text zu setzen den man angezeigt bekommt, wenn man sich den MTEXT mit Eigenschaften anzeigen lässt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 27. Mrz. 2015 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
Zitat: Original erstellt von COLB: Hallo archtools, danke für deine Antwort, das mit dem MTEXT hatte ich auch schon getestet, ich vermute das gleiche wie du auch, das Lisp o. VB alles in ASCII umwandelt.
Nein, nein, sowas hab' ich nie vermutet, und ich weiß auch, dass diese Vermutung falsch ist. Lisp verändert natürlich nicht den String, in dem unicode-codiert die chinesischen Schriftzeichen stecken. Lediglich bei der Ausgabe des Variableninhalts in der Lisp-Konsole wird wohl versucht, den String als ASCII zu interpretieren. Aber selbst das geschieht nicht, denn Du kriegst als Ausgabe ja keine wilden ASCII-Hieroglyphen, sondern die Fragezeichen. Die Konsole - und die AutoCAD Befehlszeile ist auch nur eine Konsole - kann nun mal keinen Unicode darstellen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
COLB Mitglied Hochbau Techniker
Beiträge: 6 Registriert: 26.03.2015 AutoCAD Inventor
|
erstellt am: 27. Mrz. 2015 12:10 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 27. Mrz. 2015 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
|
COLB Mitglied Hochbau Techniker
Beiträge: 6 Registriert: 26.03.2015 AutoCAD Inventor
|
erstellt am: 27. Mrz. 2015 12:33 <-- editieren / zitieren --> Unities abgeben:
Eingelesene Textdatei: 110118;79-90D 499146;组件 坠落保护装置 短 短 110118;79-90D 499146;问询 提升 110123;79-90D 499146;间距保持器 11MM 110118;79-90D 499146;组件 坠落保护装置 短 短 110118;79-90D 499146;问询 提升 Eingelesene Liste in Lisp mit read-line: ("110118;79-90D 499146;问询 æå‡" "110118;79-90D 499146;组件 å è½ä¿æŠ¤è£…ç½® çŸ çŸ" "110123;79-90D 499146;é—´è·ä¿æŒå™¨ 11MM" "110118;79-90D 499146;问询 æå‡" "110118;79-90D 499146;组件 å è½ä¿æŠ¤è£…ç½® çŸ çŸ") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 27. Mrz. 2015 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
Hallo COLB, ich habe vor Jahren mal ein Tool geschrieben, welches eine Übersetzungstabelle aus Excel (russische Texte, also auch Sonderzeichen) in der Zeichnung übersetzt. Das Tool arbeitet wie folgt: Für Excel gibt's ein Makro, welches die Unicode-Nummern ausliest und als eine Liste von Strings in eine Text(Lisp-)Datei schreibt. Für AutoCAD gibt's dann ein Tool, welches diese Datei ausliest und die Unicode-Zeichen in Text-Elemente (nicht mal MText) einträgt. Bedingung ist einzig, das der Textfont Unicode-Zeichen unterstützt. Wenn das als Hinweis zu einem möglichen Weg nicht genügt und du Interesse an der vollständigen Lösung hast, dann melde dich bei mir. Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 27. Mrz. 2015 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
|
COLB Mitglied Hochbau Techniker
Beiträge: 6 Registriert: 26.03.2015 AutoCAD Inventor
|
erstellt am: 30. Mrz. 2015 15:09 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 30. Mrz. 2015 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 31. Mrz. 2015 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für COLB
Hallo COLB, mich hat es jetzt zu sehr interessiert, ob man seitens .Net selbe Probleme hat wie in Lisp. Deshalb habe ich das Thema im Ansatz testweise mit c#.Net umgesetzt. Das Ergebnis ist in einem Video zu sehen, welches unter folgendem Link heruntergeladen werden kann: http://1drv.ms/1bMI9GV Das Tool ist jetzt so konzipiert, dass die Original-Objekte erhalten bleiben. Soll heißen, es werden Kopien der übersetzten Objekte auf dem Layer *_Translate erzeugt. Das Programm übersetzt alles, was in Texten, MTexten, Attributen, Bemaßungen zu ersetzen ist. Blockreferenzen (die Attribute enthalten) werden komplett kopiert, weil ich nicht die Blockdefinitionen um die zusätzlichen Attribute erweitern wollte. Dass das Programm alle Objekte bearbeitet, egal in welcher Verschachtelungstiefe die sich befinden, will ich auch noch erwähnt haben. Da das Programm noch nicht so ausprogrammiert ist, als dass ich das hier als Demo veröffentlichen könnte, biete ich hier keinen Download an. Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |