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

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

Как из блока програмно вычленить текст

Ответ
Поиск в этой теме
Непрочитано 16.02.2004, 15:41 #1
Как из блока програмно вычленить текст
Flint
 
С-Петербург
Регистрация: 02.10.2003
Сообщений: 38

Есть блок в котором присутсвует несколько строк текста
как програмно можно его вычленить и поменять?
Просмотров: 4174
 
Непрочитано 17.02.2004, 00:33
#2
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Есть на моей страничке универсальный ТЕКCТ ЭДИТОР порядковый но. 1
http://hpme.pacifier.com/~nemi с его помощью можно менять техт (атрибуты или просто техт) внутри блока. Также можно воспользоватся kоммандой REFEDIT она и на простых блоках работает
Startrek вне форума  
 
Автор темы   Непрочитано 17.02.2004, 09:36
#3
Flint


 
Регистрация: 02.10.2003
С-Петербург
Сообщений: 38


Я уже нашел что вычленить можно через nentsel, но теперь мне надо его менять, причем програмно без каких быто-нибыло диалогов! И мне кажется это можно сделать через entmake или entmode ! Если у кого есть наработки по этому вопросу поделитесь пжлста
Flint вне форума  
 
Непрочитано 17.02.2004, 10:48
#4
{Smirnoff}

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


Примерно так:
Код:
[Выделить все]
.............................
(setq new_dxf (subst (cons 1 new_text) (assoc 1 old_dxf) old_dxf))
(entmod new_dxf)
.............................
{Smirnoff} вне форума  
 
Непрочитано 17.02.2004, 11:01
#5
Arkady

AutoCad Development and Support
 
Регистрация: 21.08.2003
Israel
Сообщений: 183
Отправить сообщение для Arkady с помощью Skype™


Код:
[Выделить все]
(defun dxf (code elist / ret) 
    (cond 
      ( (= (type elist) 'LIST) (setq ret (cdr (assoc code elist))) ) 
      ( (= (type elist) 'ENAME) (setq ret (cdr (assoc code (entget elist)))) ) 
      (T (setq ret nil)) 
    ) 
    ret 
  ) 

   (defun putdxf (code value elist / ret) 
    (cond 
      ( (= (type elist) 'LIST)  (setq ret elist)) 
      ( (= (type elist) 'ENAME) (setq ret (entget elist))) 
      (T (setq ret nil)) 
    ) 
    (if ret (progn 
      (if (assoc code ret) 
          (setq ret (subst (cons code value) (assoc code ret) ret)) 
          (setq ret (append ret (list (cons code value)))) 
      ) 
    )) 
    ret 
  ) 

(defun c:ct( / etxt ebl)
    (setq ent (nentsel "\nPick Object :"))
    (if (not ent)(exit))
    (setq etxt (car ent))
    (if (> (length ent) 2)   ;; проверка - блок ли это
      (setq ebl (car (last ent)))  ;; если блок - находим ссылку на блок

      )
    (princ "\nSelected ")(princ (dxf 0 etxt))
    (if ebl (progn
	      (princ "\nFrom Block :") (princ (dxf 2 ebl))
	      ))
    (setq newstr (getstring T "\nEnter New Text :")) ;; - ноая строка
    (if (/= newstr "")
      (progn
	(setq en (putdxf 1 newstr etxt)) ;; - менем содержимое строки
	(entmod en)
	(if ebl (progn ;; если блок - обновляем содержимое блока
	    (entmod (entget ebl))
	    (entupd ebl)
	  ))
	))
    (princ)
  )
Если поменяли содержиое блока - изменения касаются всех копий этого блока в чертеже (REGEN - для перерисовки всех блоков)
Arkady вне форума  
 
Автор темы   Непрочитано 17.02.2004, 11:03
#6
Flint


 
Регистрация: 02.10.2003
С-Петербург
Сообщений: 38


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

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

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