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

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

Как получить имя динамического блока

Ответ
Поиск в этой теме
Непрочитано 23.06.2012, 04:07 #1
Как получить имя динамического блока
Mozgunov
 
Начинающий проектировщик
 
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443

Почему когда я хочу получить имя динамического блока функцией ниже она выдаёт мне вместо имени *U9465? Спасибо! Причём если блок не изменялся (растягивался) то функция работает корректно.

Код:
[Выделить все]
 (defun c:pe_hmt (/ adoc ent block_name )
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark adoc)
(setq ent (entsel "\nУкажите блок <Выход> : "))
(setq block(vla-item (vla-get-blocks adoc) (cdr (assoc 2 (entget (car ent)))))) ;_ end of setq

(setq block_name (vla-get-name block))
(vla-endundomark adoc)
(alert block_name)

) ;_ end of defun
Просмотров: 4058
 
Непрочитано 23.06.2012, 12:35
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Потому что внесение любы изменений в дин.блок (имею в виду изменение свойств) преобразовывает блок в анонимный. Для получения имени примитива я использую функцию наподобие
Код:
[Выделить все]
 (defun _kpblc-get-ent-name (ent /)
                           ;|
*    Получение свойства name указанного примитива
*    Параметры вызова:
	ent	указатель на обрабатываемый примитив
		допускаются значения
		ename
		vla-object
		string (хендл объекта текущего файла)
|;
  (cond
    ((and (= (type ent) 'str)
          (handent ent)
          ) ;_ end of and
     (_kpblc-get-ent-name ent)
     )
    ((= (type ent) 'str)
     ent
     )
    ((and (setq ent (cond ((= (type ent) 'ename)
                           (vlax-ename->vla-object ent)
                           )
                          ) ;_ end of cond
                ) ;_ end of setq
          (vlax-property-available-p ent 'effectivename)
          ) ;_ end of and
     (vla-get-effectivename ent)
     )
    ((and ent (vlax-property-available-p ent 'name))
     (vla-get-name ent)
     )
    ) ;_ end of cond
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.06.2012, 14:50
#3
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Спасибо! а указатель на обрабатываемый примитив как получить? Получаю так
Код:
[Выделить все]
 (setq ent (entsel "\nУкажите блок <Выход> : "))
не получается (
Mozgunov вне форума  
 
Непрочитано 23.06.2012, 18:37
#4
TararykovDG

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


Код:
[Выделить все]
 
(setq ent (car (entsel "\nУкажите блок <Выход> : ")))
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 23.06.2012, 22:45
#5
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


TararykovDG, Спасибо) Я понял. Я передавал точечную пару вместо имени.
Mozgunov вне форума  
 
Непрочитано 24.06.2012, 08:57
#6
TararykovDG

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


Цитата:
Сообщение от Mozgunov Посмотреть сообщение
Я передавал точечную пару вместо имени.
Если уж быть до конца точным, то entsel возвращает список из двух элементов, а не точечную пару
__________________
cadtools
TararykovDG вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить имя динамического блока



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью lisp получить список всех состояний видимости динамического блока crosandr LISP 4 11.04.2012 22:33
Как вытащить имя полилинии из блока с атрибутами wluk1958 Программирование 13 10.03.2012 03:15
как программно можно определить координату ручки динамического блока? Composter Программирование 4 30.11.2011 19:07
Редактирование вхождения динамического блока из командной строки. Alexey_BH Динамические блоки 2 26.09.2010 13:13