Тема: Как открыть файлы 14 версии с помощью 2004 без потерь?

Люди помогите. Есть файлы сделанные в 14 версии AutoCad а у меня установлен 2004. Половина надписей и цифр стали знаками вопроса. Как это исправить? Можно как-нибудь открыть файлы 14 версии с помощью 2004 без потерь?

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

...добавь в fonts..шрифт russ.shx

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

А что пишет в текстовом окне при открытии файла?

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

При использовании стандартных шрифтов все должно нормально открываться в версиях по возрастанию. Возможно, в ваших файлах применялись нестандартные шрифты (не UNICODE). Посмотрите, какие в этих файлах текстовые стили. Плюс важно, какая операционная система использовалась для R14.

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

Скинь файл, посмотрю..

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

;;;Эта программа предназначена для перекодировки текстовых объектов Автокада
;;;из кодовой страницы 866 в 1251
;;;
;;;автор: Хрюкин Алексей Николаевич    1998г
;;;
;;;Програма распростаняется свободно
;;;Коммерческое использование без согласия автора запрещено
;;;
;;;ВНИМАНИЕ!!!!!
;;;Программу необходимо запускать ДО начала создания в чертеже любых
;;;текстовых объектов под WINDOWS
;;;
;;;Программа изменяет сразу все объекты чертежа, никаких запросов не выдается
;;;
;;;Запускать программу можно только один раз для каждого чертежа, никаких отметок
;;;в чертеже о работе программы не остается, будте внимательны
;;;
;;;при выполннии программы изменяется текст в следующих объектах:
;;;1. Текст
;;;2. Атрибуты (включая подсказки и имена)
;;;з. Определения атрибутов
;;;4. значения размеров
;;;Аналогичные изменения также вносятся во все определения блоков в чертеже
;;;Шрифты для стилей текста не изменяются, это надо сделать самостоятельно вручную
;;;Программа также не корректирует наименование стилей текста, размеров и т.п.
;;;----------------------------------------
;;;функция обработки ошибок
(defun seterr (s)
  (if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
  )
  (setvar "cmdecho" oce)
  (setq    *error*    oer
    seterr nil
    zam nil
    text1 nil
    oce nil
  )
  (princ)
)
;;;функция замены символа из 866 в 1252
;;;параметр s - код символа
(defun zam (s)
  (cond    ((< s 127) s)
    ((> s 241) s)
    ((= s 127) 167)
    ((= s 128) 192)
    ((= s 129) 193)
    ((= s 130) 194)
    ((= s 131) 195)
    ((= s 132) 196)
    ((= s 133) 197)
    ((= s 134) 198)
    ((= s 135) 199)
    ((= s 136) 200)
    ((= s 137) 201)
    ((= s 138) 202)
    ((= s 139) 203)
    ((= s 140) 204)
    ((= s 141) 205)
    ((= s 142) 206)
    ((= s 143) 207)
    ((= s 144) 208)
    ((= s 145) 209)
    ((= s 146) 210)
    ((= s 147) 211)
    ((= s 148) 212)
    ((= s 149) 213)
    ((= s 150) 214)
    ((= s 151) 215)
    ((= s 152) 216)
    ((= s 153) 217)
    ((= s 154) 218)
    ((= s 155) 219)
    ((= s 156) 220)
    ((= s 157) 221)
    ((= s 158) 222)
    ((= s 159) 223)
    ((= s 160) 224)
    ((= s 161) 225)
    ((= s 162) 226)
    ((= s 163) 227)
    ((= s 164) 228)
    ((= s 165) 229)
    ((= s 166) 230)
    ((= s 167) 231)
    ((= s 168) 232)
    ((= s 169) 233)
    ((= s 170) 234)
    ((= s 171) 235)
    ((= s 172) 236)
    ((= s 173) 237)
    ((= s 174) 238)
    ((= s 175) 239)
    ((= s 224) 240)
    ((= s 225) 241)
    ((= s 226) 242)
    ((= s 227) 243)
    ((= s 228) 244)
    ((= s 229) 245)
    ((= s 230) 246)
    ((= s 231) 247)
    ((= s 232) 248)
    ((= s 233) 249)
    ((= s 234) 250)
    ((= s 235) 251)
    ((= s 236) 252)
    ((= s 237) 253)
    ((= s 238) 254)
    ((= s 239) 255)
    ((= s 240) 168)
    ((= s 241) 184)
    (t s)
  )
)
;;;функция перекодировки текстовой строки
(defun text1 (t1 / s1 l n en ed t2 n1 l1)
  (setq    l1 (strlen t1)
    n1 1
    t2 ""
  )
  (while (<= n1 l1)
    (setq s (zam (ascii (substr t1 n1 1))))
    (setq t2 (strcat t2 (chr s))
      n1 (+ n1 1)
    )
  )
  (setq t2 t2)
)
(apply
  '(lambda (/ en el ed t2 n f)
     (setq oce (getvar "cmdecho"))
     (setvar "cmdecho" 1)
     (setq oer       *error*
       *error* seterr
     )
     (Print "Обработка таблицы блоков...   ")
     (setq ed (tblnext "block" 1))
     (while ed
       (setq en (cdr (assoc -2 ed)))
       (while en
     (setq el (cdr (assoc 0 (setq ee (entget en)))))
     (IF (= el "TEXT")
       (progn
         (setq t2 (text1 (cdr (assoc 1 ee))))
         (setq f (cons 1 t2))
         (setq ee (subst f (assoc 1 ee) ee))
         (entmod ee)
       )
     )
     (IF (= el "DIMENSION")
       (progn
         (setq t2 (cdr (assoc 1 ee)))
         (IF (NOT (or (= t2 "<>") (= t2 " ") (= t2 nil)))
           (progn
         (setq t2 (text1 t2))
         (setq f (cons 1 t2))
         (setq ee (subst f (assoc 1 ee) ee))
         (entmod ee)
           )
         )
       )
     )
     (IF (= el "ATTDEF")
       (progn
         (setq t2 (text1 (cdr (assoc 1 ee))))
         (setq f (cons 1 t2))
         (setq ee (subst f (assoc 1 ee) ee))
         (setq t2 (text1 (cdr (assoc 3 ee))))
         (setq f (cons 3 t2))
         (setq ee (subst f (assoc 3 ee) ee))
         (setq t2 (text1 (cdr (assoc 2 ee))))
         (setq f (cons 2 t2))
         (setq ee (subst f (assoc 2 ee) ee))
         (entmod ee)
       )
     )
     (IF (= el "ATTRIB")
       (progn
         (setq t2 (text1 (cdr (assoc 1 ee))))
         (setq f (cons 1 t2))
         (setq ee (subst f (assoc 1 ee) ee))
         (setq t2 (text1 (cdr (assoc 2 ee))))
         (setq f (cons 2 t2))
         (setq ee (subst f (assoc 2 ee) ee))
         (entmod ee)
       )
     )
     (setq en (entnext en))
       )
       (setq ed (tblnext "block"))
     )
     (Princ "Выполнено")
;;;выбираем весь  текст
     (Print "Обработка текста...   ")
     (setq s1 (ssget "X" '((0 . "TEXT"))))
     (setq l (if s1 (sslength s1) 0))
     (setq n 0)
     (while (< n l)
       (setq en (ssname s1 n))
       (setq ee (entget en))
       (setq t2 (text1 (cdr (assoc 1 ee))))
       (setq f (cons 1 t2))
       (setq ee (subst f (assoc 1 ee) ee))
       (entmod ee)
       (setq n (+ 1 n))
     )
     (Princ "Выполнено")
;;; Выбираем размеры
     (Print "Обработка размеров...   ")
     (setq s1 (ssget "X" '((0 . "DIMENSION"))))
     (setq l (if s1 (sslength s1) 0))
     (setq n 0)
     (while (< n l)
       (setq t2 (cdr (assoc 1 ee)))
       (IF (NOT (or (= t2 "<>") (= t2 " ") (= t2 nil)))
     (progn
       (setq t2 (text1 t2))
       (setq f (cons 1 t2))
       (setq ee (subst f (assoc 1 ee) ee))
       (entmod ee)
     )
       )
       (setq n (+ 1 n))
     )
     (Princ "Выполнено")
;;;     Обрабатываем  атрибуты
     (Print "Обработка атрибутов...   ")
     (setq s1 (ssget "X" '((0 . "INSERT"))))
     (setq l (if s1 (sslength s1) 0))
     (setq n 0)
     (while (< n l)
       (setq en (ssname s1 n))
       (while
     (= (cdr (assoc 0 (setq ee (entget (setq en (entnext en))))))
        "ATTRIB"
     )
      (setq t2 (text1 (cdr (assoc 1 ee))))
      (setq f (cons 1 t2))
      (setq ee (subst f (assoc 1 ee) ee))
      (setq t2 (text1 (cdr (assoc 2 ee))))
      (setq f (cons 2 t2))
      (setq ee (subst f (assoc 2 ee) ee))
      (entmod ee)
       )
       (setq n (+ 1 n))
     )
     (Princ "Выполнено")
;;;     Обрабатываем   определения атрибуты
     (Print "Обработка определений атрибутов...   ")
     (setq s1 (ssget "X" '((0 . "ATTDEF"))))
     (setq l (if s1 (sslength s1) 0))
     (setq n 0)
     (while (< n l)
       (setq en (ssname s1 n))
       (setq ee (entget en))
       (setq t2 (text1 (cdr (assoc 1 ee))))
       (setq f (cons 1 t2))
       (setq ee (subst f (assoc 1 ee) ee))
       (setq t2 (text1 (cdr (assoc 3 ee))))
       (setq f (cons 3 t2))
       (setq ee (subst f (assoc 3 ee) ee))
       (setq t2 (text1 (cdr (assoc 2 ee))))
       (setq f (cons 2 t2))
       (setq ee (subst f (assoc 2 ee) ee))
       (entmod ee)
       (setq n (+ 1 n))
     )
     (Princ "Выполнено")
     (command "REGEN")
     (print
       "Внесены изменения, не запускайте программу для этого чертежа"
     )
     (print
       "Шрифты текстовых стилей переопределите самостоятельно"
     )
     (setvar "cmdecho" oce)
     (setq *error* oer
       seterr nil
       zam nil
       text1 nil
       oce nil
     )
   )
  '()
)

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

> kpblc
Так ты предполагаешь, что в R14 могли быть шрифты в кодировке DOS_866? Так ведь тогда они не прочитались бы, а автор утверждает обратное. В самом R14 есть штатная команда DBTRANS, в свое время я ей пользовался, когда надо было открывать файлы, сделанные в R12 DOS.

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

> Profan
Сам бы не поверил, если бы не увидел пару раз такое!
Кстати, шрифт russ.shx на места английских букв забивает русские или нет? Про какой-то фонт я такую шутку слышал...

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

> kpblc
Я видел russ.shp, там именно так и сделано. Потом я попробовал поработать с этим шрифтом (russ.shx) в 2005 и все оказалось OK.

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

Только сейчас вспомнил. У меня ведь в реестре заменены кодовые страницы на 1251. То-то я удивился, что russ.shx воспринимается нормально. Надо попробовать вернуть кодовые страницы и опять испытать этот шрифт.

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

Все равно в DText все пишется нормально, но в окне MText вместо русских символов отображаются прямоугольники. Однако на экране russ.shx отображается нормально.

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

> Profan
А это уже надо править, кажется, mtextmap.ini. Но там формат данных от версии к версии менялся (насчет 2006 ничего сказать не могу - снес нафиг, не до него)

Re: Как открыть файлы 14 версии с помощью 2004 без потерь?

Какой шрифт используется в этих файлах?