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

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

Как посмотреть xdata для описания блока?

Ответ
Поиск в этой теме
Непрочитано 10.03.2009, 11:28 #1
Как посмотреть xdata для описания блока?
zamtmn
 
КИПиА
 
Tyumen
Регистрация: 21.03.2005
Сообщений: 1,352

Для примитивов пользовался DSTP_OBJXDATA из TOOLPAC. Понадобились смотреть хдата для описаний блоков, тут помоему без лиспа никак(((.
Просмотров: 3494
 
Непрочитано 10.03.2009, 13:18
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


zamtmn, В Express Tools есть команда XDLIST для просмотра и XDATA для правки
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.03.2009, 13:38
#3
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


через XDLIST как и DSTP_OBJXDATA не получить доступ к описанию блока.

edit: Наверно неправильно выразился описание=определение
zamtmn вне форума  
 
Непрочитано 10.03.2009, 16:01
#4
Sleekka

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


ну да без лиспа никак - а ты ж вроде дружишь с ним?
Sleekka вне форума  
 
Автор темы   Непрочитано 10.03.2009, 16:24
#5
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


нет, не дружу
zamtmn вне форума  
 
Непрочитано 10.03.2009, 16:29
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


zamtmn, Может я чего-то не понимаю, но запускаешь _BEDIT и в редакторе блока с помощью того же XDLIST смотришь расширенные данные.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.03.2009, 16:36
#7
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


нет, так я посмотрю xdata примитивов входящих в блок. а нужно самого описания блока
zamtmn вне форума  
 
Непрочитано 12.03.2009, 00:49
#8
Кулик Алексей aka kpblc
Moderator

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


Наверное, "на посмотреть" как-то так:
Код:
[Выделить все]
(defun get-xdata-by-block-definition (ent app-name / res)
                                     ;|
ent	указатель на вхождение блока
app-name	приложение, для которого надо смотреть xdata. nil -> ""

(get-xdata-by-block-definition (car(entsel)) nil)
|;
  (if (and (setq ent (cond
                       ((= (type ent) 'vla-object) ent)
                       ((= (type ent) 'ename) (vlax-ename->vla-object ent))
                       ) ;_ end of cond
                 ) ;_ end of setq
           (wcmatch (strcase (vla-get-objectname ent)) "*BLOCK*")
           ) ;_ end of and
    (setq res ((lambda (/ xtype xdata)
                 (vla-getxdata
                   (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
                             (cond
                               ((and (vlax-property-available-p ent 'isdynamicblock)
                                     (equal (vla-get-isdynamicblock ent) :vlax-true)
                                     ) ;_ end of and
                                (vla-get-effectivename ent)
                                )
                               (t (vla-get-name ent))
                               ) ;_ end of cond
                             ) ;_ end of vla-item
                   (cond (app-name)
                         (t "")
                         ) ;_ end of cond
                   'xtype
                   'xdata
                   ) ;_ end of vla-getxdata
                 (if (and xtype
                          xdata
                          (>= (vlax-safearray-get-u-bound xtype 1) 0)
                          (>= (vlax-safearray-get-u-bound xdata 1) 0)
                          ) ;_ end of and
                   (mapcar (function (lambda (a b)
                                       (cons a (vlax-variant-value b))
                                       ) ;_ end of lambda
                                     ) ;_ end of function
                           (vlax-safearray->list xtype)
                           (vlax-safearray->list xdata)
                           ) ;_ end of mapcar
                   ) ;_ end of if
                 ) ;_ end of lambda
               )
          ) ;_ end of setq
    ) ;_ end of if
  res
  ) ;_ end of defun
---
Слегка исправил код. Изменения выделены красным
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 12.03.2009 в 01:30.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.03.2009, 01:07
#9
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


нет, не видит
на блок с моими xdata в определении:
>>Command: (get-xdata-by-block-definition (car(entsel)) DSTP_XDATA)
>>Select object: nil
>>Command:

на блок без моих данных:
>>Command: (get-xdata-by-block-definition (car(entsel)) DSTP_XDATA)
>>Select object: ((1001 . #<variant 8 ACAD>) (1000 . #<variant 8 DesignCenter
>>Data>) (1002 . #<variant 8 {>) (1070 . #<variant 2 1>) (1070 . #<variant 2 4>)
>>(1002 . #<variant 8 }>) (1001 . #<variant 8 AcDbDynamicBlockGUID>) (1000 .
>>#<variant 8 {EBE1C508-037D-4DEF-ADD6-429EF025AFB5}>) (1001 . #<variant 8
>>AcDbBlockRepETag>) (1070 . #<variant 2 1>) (1071 . #<variant 3 2>))
zamtmn вне форума  
 
Непрочитано 12.03.2009, 01:13
#10
Кулик Алексей aka kpblc
Moderator

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


Чего??
Код:
[Выделить все]
(get-xdata-by-block-definition (car(entsel "\nУкажите вхождение блока, для которого надо смотреть xdata : ")) nil)
В результате получишь список (если он, конечно, есть) xdata, относящихся именно к описанию блока. А вывод его в текстовый экран я не делал.
---
Добавлено: DSTP_XDATA - енто хто? И чему равно на момент вызова?
P.S. Код я не гонял особо, т.к. я xdata практически не работал, предпочитая vlax-ldata-* функции как более простые и удобные. И не имеющие ограничений расширенных данных.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.03.2009, 01:21
#11
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>А вывод его в текстовый экран я не делал.
понял. спасибо
>Добавлено: DSTP_XDATA - енто хто?
имя приложения. забыл кавычки
zamtmn вне форума  
 
Непрочитано 12.03.2009, 01:31
#12
Кулик Алексей aka kpblc
Moderator

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


Я там код немного поменял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как посмотреть xdata для описания блока?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
бетонирование в зимних условиях тен Технология и организация строительства 107 21.12.2013 13:59
SCAD Office 11.1 Новые возможности EUDGEN SCAD 632 20.02.2013 17:13
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35
Электромагнитная пушка T-Yoke Машиностроение 112 06.08.2008 18:48
Как учесть осадку опор(фундаментов) для металлического карка Vad.ivanich Металлические конструкции 9 05.04.2007 08:37