Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос переноса текста из Word в AutoCAD - помогите усовершенствовать.

Макрос переноса текста из Word в AutoCAD - помогите усовершенствовать.

Ответ
Поиск в этой теме
Непрочитано 16.05.2015, 10:08 #1
Макрос переноса текста из Word в AutoCAD - помогите усовершенствовать.
MrBrown
 
ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 359

Здравствуйте!
На просторах интернета нашел подходящий макрос для переноса текста из вордовского документа в МТЕКСТ автокада .
Код:
[Выделить все]
 ;;; Перенос текста из Вордовского документа (с расширением .doc) в автокад в форме МТЕКСТ
;;; http://cad.ru/ru/forum/?PAGE_NAME=read&FID=22&TID=1892&PAGEN_1=4
;;; Запускается командой OUTWORD
(vl-load-com)
(defun ba-string-subst (chars_new chars_old string / new_string)
(setq new_string (vl-string-subst chars_new chars_old string))
(while (not (equal new_string string))
(setq string new_string new_string (vl-string-subst chars_new chars_old string))
);_ end while
new_string
);_ end defun 

(defun mSpace (/ doc)
  (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  (if (= 1 (getvar "TILEMODE"))
    (vla-get-ModelSpace doc)
    (vla-get-PaperSpace doc)
  )
)
(defun openWord (fname flg / Documents myDoc mySelect myTxt insPt txtW)
  (setq Documents (vlax-get-property *msw* 'Documents))
  (setq myDoc (vlax-invoke-method Documents 'Open fname))
  (setq myCon (vlax-get-property myDoc 'Content))
  (setq myTxt (vlax-get-property myCon 'Text))
(setq myTxt (ba-string-subst "\\P" "\r" myTxt))
  (if (setq insPt (getpoint "\nУкажите точку вставки текста [Выход]:"))
    (if (setq txtW (getreal "\nВведите ширину текста [Выход]"))
      (vla-AddMText (mSpace) (vlax-3d-point insPt) txtW myTxt)
    ) ;_ end if
  ) ;_ end if
  (vlax-invoke-method myDoc 'Close)
  (if(= flg 1)
    (progn
      (vlax-invoke-method *msw* 'Quit)
      (setq *msw* nil)
    )
  )
)
(defun c:outWord (/ fname)
  (if(setq fname(getfiled "Выбор файла" "" "doc" 0))
    (if(not(setq *msw* (vlax-get-object "Word.Application")))
      (if(setq *msw* (vlax-create-object "Word.Application"))
   (openWord fname 1)
   (princ "\nWord недоступен!")
      )
      (openWord fname 0)
    );;;(if(not(setq msw
    (princ "\nНе выбран файл!")
  );;;(if(setq fname
  (princ)
)

Да вот проблема: он (макрос) вытаскивает инфу лишь из расширения .doc, а .docx не видит.
Замена расширения с .doc на .docx в строчке
Код:
[Выделить все]
 (if(setq fname(getfiled "Выбор файла" "" "doc" 0))
позволяет решить проблему, но тоже однобоко.
Помогите усовершенствовать макрос, подскажите, как записать в этой строке открытие файлов обоих расширений.
Спасибо.
p.s. подбросьте ссылочку-другую, если кто знает более продвинутые варианты переноса информации в автокад из Word, Excel.

Последний раз редактировалось MrBrown, 18.05.2015 в 09:10.
Просмотров: 4799
 
Непрочитано 16.05.2015, 13:05
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,829


Код:
[Выделить все]
 (getfiled "Выбор файла" "" "doc;docx" 0)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.05.2015, 22:13
#3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,093


Цитата:
Сообщение от MrBrown Посмотреть сообщение
Здравствуйте!
На просторах интернета (http://cad.ru/ru/forum/?PAGE_NAME=re...1892&PAGEN_1=4) нашел подходящий макрос для переноса текста из вордовского документа в МТЕКСТ автокада (#70 - #71).
Битая ссылка Поправьте, пожалуйста, или выложите сюда.
kp+ вне форума  
 
Автор темы   Непрочитано 18.05.2015, 08:20
#4
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 359


kp+, Да, почему-то уже битая...
Поправил в вопросе.
Кулик Алексей aka kpblc, не работает.
Почитал про нолик в самом конце строчки, исправил на "4". Теперь работает.
Всем спасибо.
___
Упс... Работает, но нужно выбирать расширение файлов. А как сделать, чтобы одновременно показывались и doc, и docx ?
И как увеличить диалоговое окно выбора файлов? А лучше, чтобы можно было менять его размеры, протягивая за края.
Хотя это уже из серии комфорта. Но ведь на то и макросы, чтобы работать комфортнее
___
Offtop: Как здесь, на форуме, свернуть код макроса, чтобы он открывался по нажатию на плюсик? А то сам вопрос занимает много места.
___
Уже не надо, сам нашел

Последний раз редактировалось MrBrown, 18.05.2015 в 09:10.
MrBrown вне форума  
 
Непрочитано 18.05.2015, 12:03
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,829


(getfiled "Выбор файла" "" "doc*" 4)
Цитата:
Сообщение от MrBrown Посмотреть сообщение
И как увеличить диалоговое окно выбора файлов? А лучше, чтобы можно было менять его размеры, протягивая за края.
Вариантов 3:
1. Написать свое окно на .NET / arx / VBA
2. Использовать конструкцию типа
Код:
[Выделить все]
(acet-ui-getfile "Select file" "" "doc*" "" 2)
3. Использовать Shell.Application (за подробностями в MSDN)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.05.2015, 12:28
#6
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 359


Кулик Алексей aka kpblc, моя благодарность - тебе в карму. Спасибо.
MrBrown вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос переноса текста из Word в AutoCAD - помогите усовершенствовать.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по word. Как ускорить процесс выделения измененного текста в рамку с выноской? alldmc Прочее. Программное обеспечение 6 26.03.2014 14:11
Программное создание размерных стилей Кулик Алексей aka kpblc Программирование 89 08.04.2013 12:59
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
Word AutoCAD C# ceZam Программирование 29 07.07.2010 18:45