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

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

извлечение и замена данных поля (field)

Ответ
Поиск в этой теме
Непрочитано 04.05.2009, 13:36 #1
извлечение и замена данных поля (field)
Composter
 
Отопление и вентиляция
 
Москва
Регистрация: 31.10.2008
Сообщений: 385

(entget(cdr(assoc 360(entget(cdr(assoc 360(entget(cdr(assoc
360(entget(cdr(assoc 360 (entget(car(entsel)))))))))))))))
таким образом можно докопаться до сущности поля.а как как поменять объект? вроде со значением объекта связаны 331 и 330. пытюсь их поменять ничего не выходит.хочу туда подставить значание имени активного листа.и еще вопрос если я нахожусь в пространстве создания блока а поле находится в атрибуте блока, то как к нему можно добраться?
Просмотров: 8099
 
Непрочитано 04.05.2009, 13:43
#2
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Новый код надо сгенерить и в обычное содержимое вставить.
Sleekka вне форума  
 
Автор темы   Непрочитано 04.05.2009, 15:02
#3
Composter

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


а ларчик просто открывался...не догадался я что так просто это делается. но у меня дальше загвоздка я хотел вставить имя текущего листа узнаю его id (vla-get-objectid (vla-get-ActiveLayout (vla-get-activedocument (vlax-get-acad-object)))) получил id вствил в текст, все заработало.но в другом листе id активного листа то другое.и он выставляет 0 id активного листа.можно ли во внутрь поля вставить вышеупомянутое выражение что бы он каждый раз сам вычислял id активного листа?
Composter вне форума  
 
Непрочитано 04.05.2009, 16:44
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,799
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Composter, Можно и объект в поле поменять. См.
LISP.Поля (Field). Удаление, Добавление, Изменение
Цитата:
можно ли во внутрь поля вставить вышеупомянутое выражение что бы он каждый раз сам вычислял id активного листа?
нет. Тебе id нужно для ведомости чертежей? По крайней мере там вставляется таблица с полями или текстом
АВТО Заполнение ведомости рабочих чертежей
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.06.2009, 16:25
#5
Composter

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


а ларчик просто открывался.оказывается в поле нужно было выставить значение системной переменной ctab и тогда поле отображает в любом листе имя листа в котором находится.
Composter вне форума  
 
Непрочитано 26.06.2009, 19:37
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,799
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Composter, Имя и id активного листа немного разные вещи
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.06.2009, 11:09
#7
Composter

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


это я в курсе.я ж в начале написал что хочу вставить в поле имя активного листа.просто я не тем путем пошел ...
Composter вне форума  
 
Непрочитано 17.07.2009, 10:48
#8
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


не знаю, может баян уже, но нашел такое решение:
для двух текстовых примитивов (во второй пишет содержимое первого)

Код:
[Выделить все]
(defun c:ktz_pstfld (/ ename_get t_str ID)
  (vl-load-com)
  (setq ID (vla-get-objectid (vlax-ename->vla-object (car (entsel "\nоткуда брать содержимое")))))
  (setq ename_get (entget (car (entsel "\nкуда писать"))))
  (setq t_str (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa ID) ">%).TextString>%"))


  (setq ename_get (subst (cons 1 t_str) (assoc 1 ename_get) ename_get))
  (entmod ename_get)
  (entupd (cdr (assoc 1 ename_get)))
  (vl-cmdf "_updatefield" (cdr (assoc -1 (ename_get))) "")
);defun
только вот пару вопросов - пишет:
ошибка: неверный тип аргумента: lentityp "%<\\AcObjProp
Object(%<\\_ObjId 2059668368>%).TextString>%"

и не обновляет поле, приходится вручную
kakt00z вне форума  
 
Непрочитано 17.07.2009, 11:23
#9
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


У тебя кавычки в кавычках, открой книгу разберись как поступать в таких случаях.
Sleekka вне форума  
 
Непрочитано 17.07.2009, 16:29
#10
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


никаких кавычек в кавычках ....
просто в строчке
(entupd (cdr (assoc 1 ename_get)))
должен быть минус, а я его забыл, вот так
(entupd (cdr (assoc -1 ename_get)))
ну и там скобки лишние были...

вуаля!
Код:
[Выделить все]
(defun c:ktz_pstfld (/ ename_get t_str ID)
  (vl-load-com)
  (setq	ID (vla-get-objectid
	     (vlax-ename->vla-object
	       (car (entsel "\nоткуда брать содержимое"))
	     )
	   )
  )
  (setq ename_get (entget (car (entsel "\nкуда писать"))))
  (setq	t_str (strcat "%<\\AcObjProp Object(%<\\_ObjId "
		      (itoa ID)
		      ">%).TextString>%"
	      )
  )


  (setq ename_get (subst (cons 1 t_str)
			 (assoc 1 ename_get)
			 ename_get
		  )
  )

  
  (entmod ename_get)
  (entupd (cdr (assoc -1 ename_get)))
  (vl-cmdf "_updatefield" (cdr (assoc -1 ename_get)) "")
  (princ)
);defun
kakt00z вне форума  
 
Непрочитано 24.06.2011, 11:28
#11
Lioon

Инж. ПКО
 
Регистрация: 26.11.2008
Красноярск
Сообщений: 23


Возник вопрос? код отменно работает с Mtext, а как сделать, чтобы он между атрибутами блоков работал? т.е. можно было бы выбрать атрибут1 одного блока и поставить ссылку на атрибут2 второго блока?
Lioon вне форума  
 
Непрочитано 24.06.2011, 12:36
#12
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Вставить поля в значения аттрибутов в ВХОЖДЕНИИ блока (в самом описании блока такое сделать ИХМО не возможно) - то есть в одно вхождение в "рукопашную" устанавливаем значение со ссылками можно как на свои аттрибуты, так и на другого вхождения. Свзяи будут сохраняться при копировании - причем если копировать блок ссылающийся на другой вместе "с исходным" - то образуется новая "независимая" пара (тройка), если без - то используется ссылка исходного (как-бы клон получается).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 24.06.2011, 12:49
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,799
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Как-то так
Код:
[Выделить все]
(defun c:CFLD (/ ename_get t_str ID)
  ;;; Copy field
  (vl-load-com)
  (setq	ID (vla-get-objectid
	     (vlax-ename->vla-object
	       (car (nentsel "\nоткуда брать содержимое"))
	     )
	   )
  )
  (setq ename_get (entget (car (nentsel "\nкуда писать"))))
  (setq	t_str (strcat "%<\\AcObjProp Object(%<\\_ObjId "
		      (itoa ID)
		      ">%).TextString>%"
	      )
  )


  (setq ename_get (subst (cons 1 t_str)
			 (assoc 1 ename_get)
			 ename_get
		  )
  )
  (entmod ename_get)
  (entupd (cdr (assoc -1 ename_get)))
  (command "_updatefield" (cdr (assoc -1 ename_get)) "" "_regenall")
  (princ)
);defun
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 24.06.2011 в 17:37.
VVA вне форума  
 
Непрочитано 24.06.2011, 13:01
#14
Lioon

Инж. ПКО
 
Регистрация: 26.11.2008
Красноярск
Сообщений: 23


Спасибо большое VVA. ты гений! ... Честно :-)
Lioon вне форума  
 
Непрочитано 27.06.2011, 10:40
#15
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Супер! Это то что мне нужно было!!!!
А как сделать так чтобы можно было выбирать в какой атрибут вставлять? А то у меня некоторые атрибуты скрытые?
А как сделать чтобы можно было выбрать несколько блоков для вставки поля?

Последний раз редактировалось Alexeipost, 27.06.2011 в 13:13.
Alexeipost вне форума  
 
Непрочитано 27.06.2011, 16:38
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,799
<phrase 1= Отправить сообщение для VVA с помощью Skype™


попробуй textduplicate http://dwg.ru/dnl/1931
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.06.2011, 07:50
#17
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Нет, Textduplicate, немного не то. В CFLD можно выбрать в какой атрибут вставить поле, а в Textduplicate - нельзя.
Alexeipost вне форума  
 
Непрочитано 17.08.2011, 09:37
#18
Wolkodaw


 
Регистрация: 21.04.2009
Тюмень
Сообщений: 97


Сделал скрытый атрибут блока. Блок закрыл. Вставил поле (уже не в блоке), в котором должно обновляться значение атрибута, но оно не меняется в поле (ни реген, ни сохр).Остается значение по умолчанию. Как-то можно исправить?
Wolkodaw вне форума  
 
Непрочитано 17.08.2011, 10:03
#19
No M.P.

Инженер-конструктор
 
Регистрация: 24.08.2007
Волгоград
Сообщений: 763
<phrase 1=


Попробуй синхронизировать аттрибуты в мэнэджере аттрибутов блоков.
Файл с блоком покажешь?
__________________
Никогда не стоит недооценивать предсказуемость глупости
No M.P. вне форума  
 
Непрочитано 17.08.2011, 10:29
#20
Wolkodaw


 
Регистрация: 21.04.2009
Тюмень
Сообщений: 97


Я нашел,почему не получалось Просто создал заново атрибут и поле.Только поле не копировал в блоке формулу, а сразу объекты-атрибут (первый раз не заметил что атрибут сразу появляется в списке объектов - так работает лучше )



А вот тут не подскажете как сделать обновление поля? В атрибуте значение уже изменено на П-2, а поле не обновилось.
Чертеж2.dwg

Последний раз редактировалось Wolkodaw, 17.08.2011 в 10:50.
Wolkodaw вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > извлечение и замена данных поля (field)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 269 22.07.2019 17:19
Field... вставка поля из лиспа grph AutoCAD 2 16.10.2012 14:18
извлечение данных в AutoCAD 2008 versus1984 AutoCAD 10 27.03.2009 09:33
Извлечение данных в шаблон EXEL. OHUKC Программирование 23 15.09.2008 19:45
структурированный список Holon Программирование 22 11.09.2007 14:09