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

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

Разыскивается LISP

Ответ
Поиск в этой теме
Непрочитано 25.02.2004, 23:29 #1
Разыскивается LISP
Janna
 
Сообщений: n/a

Разыскивается лисп, который может вставлять пробелы между буквами подписей.. Я занимаюсь картографией и очень часто тр-ся растянуть подписи вдоль вытянутых контуров... Приходится стучать space :cry:

Быть может кто-то встречал эдакий лисп...

И нужен еще один: рамкой выделить группу чисел и получить сумму...

Моя благодарность не будет иметь границ (но в пределах разумного)

Bublik_J&mail.ru(где поставить штрудель надеюсь догадаетесь)

Бай
Просмотров: 3351
 
Непрочитано 26.02.2004, 00:30
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


По 1 вопросу - может TEXTFIT из экспрессов подойдет?

по 2 - совсем недавно было http://www.autokad.ru/forum/viewtopic.php?p=4733#4733
vk вне форума  
 
Непрочитано 26.02.2004, 09:42
#3
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Вставлялка пробелов между всеми символами.

Код:
[Выделить все]
(defun TextWider (t1)
(LtoT (TtoL t1 "") " "));TextWider

(defun TtoL (t1 div1 / l1 c1 t2 t3)
(if (not div1)(setq div1 " "))
(setq c1 1 t2 "")
(if (= div1 "")
   (repeat (strlen t1)
      (setq l1 (cons (substr t1 c1 1) l1)
            c1 (1+ c1)))
   (progn
      (repeat (1+ (strlen t1))
         (setq t3 (substr t1 c1 1))
         (if (/= t3 div1)
            (setq t2 (strcat t2 t3))
            (setq l1 (cons t2 l1) t2 ""))
         (setq c1 (1+ c1)))
      (setq l1 (cons t2 l1))))
(reverse l1));TtoL

(defun LtoT (l1 div1 / t1 v1)
(if (not div1)(setq div1 " "))
(if (> (length l1) 1)
   (progn (setq t1 (car l1))
          (foreach v1 (cdr l1)
            (setq t1 (strcat t1 div1 v1))))
   (car l1))
);LtoT
Вызов:
Код:
[Выделить все]
(TextWider "Текстовая строка")
Возвращает:
Код:
[Выделить все]
"Т е к с т о в а я   с т р о к а"
А если нужно вставить N пробелов - повторить вызов функции N раз внутри самой себя.
Pilot вне форума  
 
Непрочитано 26.02.2004, 15:22
#4
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Вот, пользуюсь этой штукой для сложения чисел:
Код:
[Выделить все]
(defun c:addnum (/ ent ct anx an snum slen e ee x ol nl ent2)
(prompt "\nPick numbers to add: ")
(setq ent (ssget))
(setq ct 0 anx 0 an 0)
(setq snum (ssname ent ct))
(setq slen (sslength ent))
(while (<= (1+ ct) slen)
  (setq snum (ssname ent ct))
  (setq e (entget snum))
  (setq ee (cdr (assoc 1 e)))
  (setq x (atof ee))
  (setq anx (+ an x))
  (setq an anx)
  (setq ct (1+ ct))
 )
 (princ "\nTotal = ")
 (princ (rtos anx 2 2))(princ)
)
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 26.02.2004, 22:55
#5
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Цитата:
Я занимаюсь картографией и очень часто тр-ся растянуть подписи вдоль вытянутых контуров...
Вспоминаются обычаи древних DOS-программеров, растягивавших текст таким образом... Ставьте EXPRESS TOOLS и живите в ЧЧШ веке! Где взять? - Смотрите форум!
Perezz!! вне форума  
 
Непрочитано 27.02.2004, 00:34
#6


 
Сообщений: n/a


Спасибо за помошь!!!

2Grinzaid -генильная штука -именно то что я искала... Огромное спасибо!!!

2Pilot - в принципе лисп работает, но практически его использовать не очень удобно... Если бы при выделении слова или фразы лисп вбивал туда пробелы... -было бы не в пример удобнее. Но во всяком случае очень признательна -однозначно лучше чем ничего.. :P

2Perezz!! -уж и не знаю что там приходит Вам на ум :?:
Замечание абсолютно дилетанское. Приходилось ли Вам видеть, к примеру географическую карту России? Посмотрите и убедитесь что команда растянуть (fit) не подходит -т.к. ширина букв не должна изменяться. И напоследок -выбрасывайте всякие EXPRESS-ы, пользуйтесь ToolPac и живите в ЧЧШ веке! Где взять? - Смотрите форум!

Всем еще раз спасибо!!!!
 
 
Непрочитано 27.02.2004, 11:33
#7
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


>Гость
Можно и при выделении текста
Код:
[Выделить все]
(defun C:text-space()
  (vl-load-com)
  (setvar "errno" 0)
  (while
    (and      
      (not
	(setq txt (entsel "\nВыберите текст:"))	
	);not.      
      (equal (getvar "errno") 7)
      );and
    (setvar "errno" 0)
      );while
  (if
    (equal
      (cdr
	(assoc 0
	       (entget (car txt)
		       )
	       )
	)
      "TEXT")
    (progn
     (setq txte (entget
		  (car txt)
		  )
	   )
     (setq tstring (cdr
		     (assoc 1 txte)
		     )
	   tstrcode (vl-string->list tstring)
	   )
     (setq tstcode (mapcar '(lambda(x)
			      (list 32 x)
			      )
			   tstrcode)
	   )
     (setq  tstcode(apply 'append tstcode)
            tstring(vl-list->string tstcode)
	    )
     (entmod (subst
	       (cons 1 tstring)
	       (assoc 1 txte)
	       txte)
	     )
     (entupd (car txt)
	     )
     
     );progn
    (alert "Примитив не является текстом")
    );if
  (princ)
  );defun
Эдуард вне форума  
 
Непрочитано 27.02.2004, 12:36
#8
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


А вот еще один вариант суммирования текста (вроде с защитой )
Код:
[Выделить все]
(defun C:sum-txt()
  (if
    (and
  (setq nabor (ssget '((0 . "text")))
	)
  (setq nampr (vl-remove-if 'listp
		(mapcar 'cadr (ssnamex nabor)
			)
		)
	)
  )
    (progn
      (setq nampr (mapcar '(lambda(x)
			     (cdr(assoc 1 x))
			     )
			     (mapcar 'entget nampr)
			     )
			  )
      (setq nampr (vl-remove-if-not 'distof nampr))
      (apply '+ (mapcar 'distof nampr)
	     )
      )
    )
  )
Эдуард вне форума  
 
Непрочитано 28.02.2004, 22:08
#9
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Janna ->
Цитата:
Замечание абсолютно дилетанское
А, ну да... [sm1619]
Цитата:
Приходилось ли Вам видеть, к примеру географическую карту России?
Давненько эт было, давненько... [sm2306]
Цитата:
Посмотрите и убедитесь что команда растянуть (fit) не подходит -т.к. ширина букв не должна изменяться.
Да, не буду я ничего смотреть - мне карты нафиг не нужны! Лишнюю информацию я могу проще получить - посмотрев рекламу... Засим, если Вы думаете, что прочитав что Вы занимаетесь картами мне и в голову не должна была придти мысль о растягивании символов - то вы слишком большого о себе мнения...

Успехов с пробелами!
[sm2302]
Perezz!! вне форума  
 
Непрочитано 28.02.2004, 23:22
#10
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


И только одна фраза не удостоилась внимания Перца...

Цитата:
Моя благодарность не будет иметь границ (но в пределах разумного)
{Smirnoff} вне форума  
 
Непрочитано 09.03.2004, 07:57
#11
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


>Janna

1. CURVED_T (расстояния между буквами регулируется в долях высоты текста, а не пробелами)
2. SUM (калькулятор для значений текста, в том числе и сложить, конечно)
См. http://geol-dh.narod.ru/kai_stru.html
KAI вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Разыскивается LISP

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

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