Field. Работа с мультитекстом.
Реклама i
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Field. Работа с мультитекстом.

Field. Работа с мультитекстом.

Ответ
Поиск в этой теме
Непрочитано 11.01.2006, 09:32 #1
Field. Работа с мультитекстом.
serg01
 
Иркутск
Регистрация: 04.07.2005
Сообщений: 213

Народ, подскажите пожалуйста, как подсчитать вхождение определенного текста в мультитексте и вывести это дело по ссылке опять же в мультитекст. Другими словами: есть несколько видов трансформаторов (номиналы), каждый из которых находится в мультитексте. Задача такая: Нужно подсчитать количество каждого вида по совпадению с выбранным мультитекстом.
ЗЫ. Можно организовать такое с помощью таблицы или блоков, но нужно именно с мультитекстом. Версия када 2006.
Просмотров: 4059
 
Непрочитано 11.01.2006, 12:56
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Если без лиспа
Идешь меню Правка->Найти
В строке для поиска пишешь <<вхождение определенного текста>>
В строке заменить на <<!вхождение определенного текста!>>
и жмешь на заменить все. Читаешь сколько замен произведено.
Выбором объектов можно ограничить область поиска/замены
VVA вне форума  
 
Автор темы   Непрочитано 11.01.2006, 13:05
#3
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Объясню поподробнее. У нас все трансформаторы рисуются одним блоком, т.к. рисунок совершенно одинаковый. Разные только подписи к ним. Эти подписи тиражируются по всему чертежу из заранее заполненной таблицы. Только это таблица начерчена палками, а надписи ее каждая в своем мультитексте. Дак вот, чтоб подсчитать в спецификации эти трансформаторы нужно "выдрать" из мультитекста заданное значение (например 100/5) или contents мультитекста, его просуммировать и полученное число каким-то образом через field вывести в мультитекст спецификации. Фу…надеюсь понятно объяснил
А подсчитать через find в данном случае не вариант.
serg01 вне форума  
 
Непрочитано 11.01.2006, 13:45 Привет
#4
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Ну скинь файло с примером, посмотрим.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 12.01.2006, 05:36
#5
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


вот ссылка:
_http://rapidshare.de/files/10832005/bolvanka_.rar.html_
serg01 вне форума  
 
Непрочитано 12.01.2006, 09:30
#6
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Как я понял, нужно определить переменную, значение которой потом будет вставлено в поле спецификации. Лови лиспу. в которй cnt - та самая переменная
Код:
[Выделить все]
(defun C:TxtCnt ( / ass pat n)
  (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
        ass (vla-get-ActiveSelectionSet adoc)
        util (vla-get-utility adoc)
        pat (getstring "\nType Search Text Pattern or <Enter> to Select: ")
        n 0)
  (if (null pat) (progn (vla-getentity util 'str nil)
      (setq pat (strcat "*" (vla-get-TextString str) "*"))))
  (if (/= (vla-get-count ass) 0) (vla-clear ass))
  (vla-SelectOnScreen ass (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 0)) '(0)) 
    (vlax-safearray-fill (vlax-make-safearray vlax-vbvariant '(0 . 0)) (list "*MText")))
  (vlax-for elt ass (if (wcmatch (vla-get-TextString elt) pat) (setq n (1+ n))))
  (alert (strcat (setq cnt (itoa n)) " Items Found"))
);end
Лентяй вне форума  
 
Непрочитано 12.01.2006, 09:36 Привет
#7
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


У меня файл не скачивается. Скачивание архивов, запрещено админом, так что лучше скидывай *.dwg на ветку форума.
Я делал примерно следующее, см. файл ниже
[ATTACH]1137047794.dwg[/ATTACH]
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 12.01.2006, 10:14
#8
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


to DEM
Та ссылка лежит не на этом серваке, а на рапиде. Сравни, что на экране и под ссылкой. Иди по той, что на экране только без знаков _ _.
serg01 вне форума  
 
Автор темы   Непрочитано 12.01.2006, 10:24
#9
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


to Лентяй
В написании лиспа я не силен Эту прогу проверил...работает. А как сделать, чтоб полученное значение записалось в указанное место? Например в ячейку таблицы или в мтекст, чтоб потом через field записать это значение в спецификацию. Если бы работа эта была разовая, можно и в ручную конечно записать, но предполагается таких делать кучу.
ЗЫ. Как реализовать блоками известно, но для меня они не удобны, т.к. при смене заказчиком например номинала трансформатора придется вставлять другой блок. А в моем случае нужно лишь поменять цифру в таблице, а все остальное само поменяется.
serg01 вне форума  
 
Непрочитано 12.01.2006, 10:35 Привет
#10
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


С рапидой знаком, но админ запрещает скачивать файлы с расширением *.rar и *.zip.
Так создай промежуточную таблицу со всеми значениями, а в мульти текст вставляй поля со ссылкой на ячейки этой таблицы.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 12.01.2006, 10:37
#11
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


В таблицу - это мы могим. Не так давно здесь выкладывали прогу по переносу выбранных кусков текста в таблицу. Так что я попробую всунуть это функцию.
Во, держите издание второе, дополненное.
Код:
[Выделить все]
(defun C:TxtCnt ( / ass pat n)
  (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
        ass (vla-get-ActiveSelectionSet adoc)
        util (vla-get-utility adoc)
        pat (getstring "\nType Search Text Pattern or <Enter> to Select: ")
        n 0)
  (if (null pat) (progn (vla-getentity util 'str nil)
      (setq pat (strcat "*" (vla-get-TextString str) "*"))))
  (if (/= (vla-get-count ass) 0) (vla-clear ass))
  (vla-SelectOnScreen ass (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 0)) '(0)) 
    (vlax-safearray-fill (vlax-make-safearray vlax-vbvariant '(0 . 0)) (list "*MText")))
  (vlax-for elt ass (if (wcmatch (vla-get-TextString elt) pat) (setq n (1+ n))))
  (alert (strcat (setq cnt (itoa n)) " Items Found"))
  (if (not (vl-catch-all-error-p (vl-catch-all-apply '(lambda ()
                      (vla-getentity util 'tbl 'pt "\nSelect Table to Place Text In:")))))
      (if (= (vla-get-objectname tbl) "AcDbTable")
        (progn (prompt "\nSelect Cell to Fill In: ")
          (setq HitRes (vla-HitTest tbl (vla-getpoint util) (vlax-3D-Point '(0.0 0.0 1.0)) 'Row 'Column))
          (if (= HitRes :vlax-true)(vla-SetText tbl Row Column cnt)));progn
        (alert "It's Not a Table!")));if
);end
На "табличность" я не проверял, но должно работать. Если что - свистите
Лентяй вне форума  
 
Автор темы   Непрочитано 12.01.2006, 10:43
#12
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


буду признателен
serg01 вне форума  
 
Непрочитано 12.01.2006, 10:50
#13
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Дык я того, уже . См. мое предыдусчее. Успехов
Лентяй вне форума  
 
Автор темы   Непрочитано 12.01.2006, 10:55
#14
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


to Лентяй
О! Ура! Работает! Ну теперь работа попрет!!!
Спасибо удружил! Эх, надо лисп изучать!!!
serg01 вне форума  
 
Непрочитано 12.01.2006, 11:10
#15
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Учиться, учиться и учиться. Как завещал великий Ленин. Как учила Коммунистическая партия. Впрочем, ей это не помогло
Лентяй вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Field. Работа с мультитекстом.