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

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

Проверка наличия расширенных данных у примитива

Ответ
Поиск в этой теме
Непрочитано 09.04.2009, 16:30 #1
Проверка наличия расширенных данных у примитива
молодой человек
 
Регистрация: 14.11.2007
Сообщений: 159

Здравствуйте! Я в программировании делаю только первые шаги и столкнулся со следующей проблемой:
Как проверить есть ли расширенные данные у примитива? Мне это нужно для отлова ошибок. Нашел только команду, которая проверяет,есть ли заданное свойство- vlax-property-available-p, но расширенных данных нет в свойствах (смотрел с помощью функции vlax-dump-object).
Заранее спасибо.
Просмотров: 3033
 
Непрочитано 09.04.2009, 16:42
#2
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Код:
[Выделить все]
(assoc -3 (entget (car (entsel)) '("*")))
если возвратит nil, то расширенных данных нет. Если не nil, то можно будет проанализировать далее, что за данные.

Или тебе надо через ActiveX?
Makswell вне форума  
 
Автор темы   Непрочитано 09.04.2009, 17:02
#3
молодой человек


 
Регистрация: 14.11.2007
Сообщений: 159


Агромное спасибо! То что надо было! Ответ был перед носом, а я его не заметил. Если не трудно, а как через ActiveX?
молодой человек вне форума  
 
Непрочитано 10.04.2009, 09:17
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Я просто увидел, что ты использовал vlax-property-available-p и vlax-dump-object и подумал, что тебе надо имеено через объектную модель. Вот и спросил. Но через ActiveX вряд ли будет лучше.
Я вот так придумал. Изврат, конечно, зато чистый ActiveX

Код:
[Выделить все]
(progn
  (vl-load-com)
  (setq	adoc	   (vla-get-ActiveDocument (vlax-get-acad-object))
	lst	   '()
	res	   nil
  )
  (vla-GetEntity (vla-get-Utility adoc) 'ent 'point "\nВыбери объект: ")
  (vlax-for f_item (vla-get-RegisteredApplications adoc)
    (setq lst (cons (vla-get-Name f_item) lst))
  )
  (foreach item	lst
    (if	(not res)
      (progn
	(vla-GetXData ent item 'XDataType 'XDataValue)
	(if XDataValue
	  (setq res t)
	)
      )
    )
  )
  (setq	adoc nil
	lst nil
	XDataType nil
	XDataValue nil
	ent nil
	point nil
  )
  res
)
Возвращает t, если расширенные данные есть, и nil, если их нет.

Короче, первый способ лучше. Как минимум код короче на порядок

Последний раз редактировалось Makswell, 10.04.2009 в 10:28.
Makswell вне форума  
 
Непрочитано 10.04.2009, 13:53
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Makswell Посмотреть сообщение
Короче, первый способ лучше. Как минимум код короче на порядок
Что-то ты переусложнил. vla-GetXdata позволяет получить сразу все расширенные данные.
Александр Ривилис вне форума  
 
Непрочитано 10.04.2009, 14:19
#6
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Что-то ты переусложнил. vla-GetXdata позволяет получить сразу все расширенные данные.
Не знал. Опытнам путём было выяснено, что можно вместо имени зарегестрированного приложения поставить "". Что ж, буду иметь это ввиду на будущее.
В итоге через ActiveX видимо можно так:
Код:
[Выделить все]
(progn
  (setq res nil
        XDataValue nil
  )
  (vla-GetEntity
    (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object)))
    'ent
    'point
    "\nВыбери объект: "
  )
  (vla-GetXData ent "" 'XDataType 'XDataValue)
  (if XDataValue
    (setq res t)
  )
  (setq	XDataType nil
	XDataValue nil
	ent nil
	point nil
  )
  res
)
Makswell вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проверка наличия расширенных данных у примитива



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение расширенных данных в Delphi remlin Программирование 2 07.07.2008 17:52
аналог ssget или определение наличия примитива в точке sv_ispu Программирование 17 12.01.2006 21:16
Вопрос про внесение расширенных данных в примитив. X28 Программирование 14 23.07.2005 16:30