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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Подставление знака + к однострочным положительным текстам на чертеже

Подставление знака + к однострочным положительным текстам на чертеже

Ответ
Поиск в этой теме
Непрочитано 24.09.2010, 10:42 #1
Подставление знака + к однострочным положительным текстам на чертеже
Сергей160484
 
Регистрация: 24.09.2010
Сообщений: 6

Существует куча однострочных цифр на чертеже (положительных и отрицательных) на определенном слое. Необходимо выделить все их окном и в положительных цифрах подставить знак + без пробела (например было 5.00,нужно +5.00), а если число со знаком минус, то оставить его без изменения. Помогите можалуйста написать код!!! Заранее спасибо!!!
Просмотров: 5830
 
Непрочитано 24.09.2010, 11:01
#2
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Сергей160484, цифры на чертеже представлены только в виде примитивов типа text и mtext, или же надо учитывать и атрибуты блоков и размерные выноски и мультивыноски и т. д.?
TararykovDG вне форума  
 
Непрочитано 24.09.2010, 11:10 Regex
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Сергей160484 Посмотреть сообщение
Помогите можалуйста написать код!!!
Почитайте про регулярные выражения.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 24.09.2010, 12:07
#4
Сергей160484


 
Регистрация: 24.09.2010
Сообщений: 6


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Сергей160484, цифры на чертеже представлены только в виде примитивов типа text и mtext, или же надо учитывать и атрибуты блоков и размерные выноски и мультивыноски и т. д.?
только text!!!
Сергей160484 вне форума  
 
Непрочитано 24.09.2010, 12:17
#5
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,925
<phrase 1=


Команда _DSTP_ANNOPRESUF из набора ToolPAC
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 24.09.2010, 12:48
#6
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Сергей160484, попробуй так, но подстваит "+" только для текста и только если он начинается с цифры, т.е.
"4" - "+4'
"aaa 6 bbb7 ..." - отставит без изменения
"8aaa" - "+8aaa"

Код:
[Выделить все]
(defun Add-Plus-To-Text( / nbr item ed)
  (vl-load-com)
  (if (setq nbr (ssget "_X" (list (cons 0 "TEXT"))))
    (foreach item (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr)))
      (setq ed (entget item))
      (if (wcmatch (cdr (assoc 1 ed)) "#*")
    (progn
      (setq ed (subst (cons 1 (strcat "+" (cdr (assoc 1 ed)))) (assoc 1 ed) ed))
      (entmod ed)
    )
      )
    )
  )
); End Add-Plus-To-Text
если надо по другому, то уточни, что именно менят, а что нет
TararykovDG вне форума  
 
Автор темы   Непрочитано 24.09.2010, 13:19
#7
Сергей160484


 
Регистрация: 24.09.2010
Сообщений: 6


TararykovDG, спасибо, все работает!!! А можно сделать возможность, чтобы программа выводила запрос на выбор цифр для которых нужно подставиь знак + либо окном, либо по-отдельности???
Сергей160484 вне форума  
 
Непрочитано 24.09.2010, 13:36
#8
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Сергей160484, пробуй

Код:
[Выделить все]
(defun Add-Plus-To-Text( / type_select nbr item ed)
  (vl-load-com)
  (if (not (vl-catch-all-error-p
	     (progn
	       (initget "0 1")
	       (setq type_select (vl-catch-all-apply 'getkword (list "\nЗадайте способ выбора объектов <Все> [0 - Все/1 - Рамкой]: "))
		     )
	     )
	   )
      )
    (progn
      (cond
	((= type_select "0") (setq nbr (ssget "_X" (list (cons 0 "TEXT")))))
	((= type_select "1") (setq nbr (ssget (list (cons 0 "TEXT")))))
	(t (setq nbr (ssget "_X" (list (cons 0 "TEXT")))))
      )
      (if nbr
        (foreach item (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr)))
          (setq ed (entget item))
          (if (wcmatch (cdr (assoc 1 ed)) "#*")
	    (progn
	      (setq ed (subst (cons 1 (strcat "+" (cdr (assoc 1 ed)))) (assoc 1 ed) ed))
	      (entmod ed)
	    )
          )
        )
      )
    )
  )
); End Add-Plus-To-Text
TararykovDG вне форума  
 
Автор темы   Непрочитано 24.09.2010, 14:03
#9
Сергей160484


 
Регистрация: 24.09.2010
Сообщений: 6


TararykovDG, спасибо огромнейшее!!! Именно то, что нужно!!! Все прекрасно работает!!!!
Сергей160484 вне форума  
 
Непрочитано 24.09.2010, 15:08
#10
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Сергей160484, давно писал "калькулятор" там была опция проставлять знак "+"
[IMG]http://s006.***********/i213/1009/1c/94f2a1bc7808.jpg[/IMG]
Вложения
Тип файла: rar Geo_Calk_09.rar (2.4 Кб, 217 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 02.06.2011, 09:54
#11
99fr


 
Регистрация: 19.03.2010
Сообщений: 22


Disney
Попробовал вашу программку но что то не работает.

Команда: (LOAD
"C:/DOCUME~1/7B5C~1/LOCALS~1/Temp/Rar$DR15.1250/Geo_Calk_09.VLX") Вызова
команды: geo_calknil
Команда: geo_calknil
Неизвестная команда "GEO_CALKNIL". Для вызова справки нажмите F1.

В чем может быть причина и как устранить.
Автокад 2009.
Благодарю.
99fr вне форума  
 
Непрочитано 02.06.2011, 12:38
#12
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


99fr, имя команды Geo_calk
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 14.06.2011, 16:56
#13
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


для добавления суффиксов и префиксов к текстам и атрибутам я использую это
Код HTML:
http://dwg.ru/dnl/?id=1929&page=0
, а чтобы выделить только положительные цифры команда _fillter и в строке значения текста забить вот это "#*" (без кавычек)
Composter вне форума  
 
Непрочитано 17.06.2011, 16:50
#14
99fr


 
Регистрация: 19.03.2010
Сообщений: 22


Disney,


Спасибо.
99fr вне форума  
 
Непрочитано 23.06.2011, 09:00
#15
99fr


 
Регистрация: 19.03.2010
Сообщений: 22


Disney
Здравствуйте.
При умножении, делении и суммировании все работает как нужно, но при вычитании пред числом появляется знак минус.
Т.е. имея числа 101,50 и 201,50 при вычитании из них 1,50 получаем -100,00 и -200,00)
Подскажите пожалуйста, как избежать появления знака минус в этом случае?
Спасибо.
99fr вне форума  
 
Непрочитано 23.06.2011, 12:12
#16
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от 99fr Посмотреть сообщение
При умножении, делении и суммировании все работает как нужно, но при вычитании пред числом появляется знак минус.
Т.е. имея числа 101,50 и 201,50 при вычитании из них 1,50 получаем -100,00 и -200,00)
там написано число-набор, где число в твоём случаи 1.50, а набор это тексты 101.50 и 201.50.
Поэтому для того чтобы из набора вычесть число, выбираем число+набор, а в качестве числа вводим -1.50.
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 26.06.2011, 13:23
#17
99fr


 
Регистрация: 19.03.2010
Сообщений: 22


Цитата:
Сообщение от Disney Посмотреть сообщение
Поэтому для того чтобы из набора вычесть число, выбираем число+набор, а в качестве числа вводим -1.50.

Здорово, Все перепробовал, а до такой комбинации не додумался. Все сработало.
Спасибо.
99fr вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Подставление знака + к однострочным положительным текстам на чертеже