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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека функций > DwgRuLispLib: Преобразование указателя на примитив в ename

DwgRuLispLib: Преобразование указателя на примитив в ename

Ответ
Поиск в этой теме
Непрочитано 28.11.2007, 08:30 #1
DwgRuLispLib: Преобразование указателя на примитив в ename
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,787

Код:
[Выделить все]
(defun _dwgru-conv-ent-to-ename (ent)
                                ;|
*    Выполняет преобразование переданного указателя в ename-вариант
*    Параметры вызова:
	ent	обрабатываемый указатель. Может быть:
		 ename
		 vla-object
		 строка (воспринимается как хендл примитива)
*    Примеры вызова:
(setq
  entity (vla-addline
        (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
        (vlax-3d-point (setq pt (getpoint)))
        (vlax-3d-point (getpoint pt))
        ) ;_ end of vla-addline
  ) ;_ end of setq
(_dwgru-conv-ent-to-ename entity)	; <Entity name: 7ef5cf68>
|;
  (cond
    ((= (type ent) 'ename) ent)
    ((= (type ent) 'vla-object) (vlax-vla-object->ename ent))
    ((= (type ent) 'str) (handent ent))
    (t nil)
    ) ;_ end of cond
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 28.11.2007 в 09:37.
Просмотров: 17215
 
Непрочитано 27.12.2007, 13:30
#2
VVA

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


> Алексей. В опубликованной сборке #157 2007-12-26[15.12.54] в ф-ции _dwgru-conv-ent-to-ename
в строке ((= (type ent) 'str) (handent str)) допущена описка. Вместо (handent str) надо (handent ent)
Пользуясь случаем внесу еще пару предложений. Предлагаю расширить диапазон _dwgru-conv-ent-to-ename, т.к. "поставщиком" имен примитивов помимо ename, vla-object, handent могут быть еще списки, возвращаемые entget и entsel
Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * _dwgru-conv-ent-to-ename
;;; *
;;; * 27.12.2007 Редакция VVA
;;; * 03/12/2007 Версия 0001. 
;;; ************************************************************************
(defun _dwgru-conv-ent-to-ename (ent / ret)
;;;*    Функция преобразования полученного значения в ename
;;;*    Параметры вызова:
;;;* ent значение, которое надо преобразовать в примитив. Может
;;;*   быть:
;;;*                       -    именем примитива,
;;;*                       -    vla-указателем,
;;;*                       -    строка (воспринимается как хендл примитива),
;;;*                       -    спиком entget,
;;;*                       -    спиком entsel.
;;;*   Если не принадлежит ни одному из указанных типов,
;;;*   возвращается nil
;;;*    Примеры вызова:
;;;(_dwgru-conv-ent-to-ename (entlast))
;;;(_dwgru-conv-ent-to-ename (entget(entlast)))
;;;(_dwgru-conv-ent-to-ename (cdr(assoc 5 (entget(entlast)))))
;;;(_dwgru-conv-ent-to-ename (entsel))
;;;(_dwgru-conv-ent-to-ename (vlax-ename->vla-object (entlast)))
 
  (cond
    ((= (type ent) 'vla-object) (vlax-vla-object->ename ent))
    ((= (type ent) 'ename) ent)
    ((= (type ent) 'str) (handent ent)) ;;;((= (type ent) 'str) (handent str))
((and (= (type ent) 'list)                   ;;;Add VVA 27.12.2007
       (= (type (setq ret (car ent))) 'ename) ;;;Add VVA 27.12.2007
       )                                      ;;;Add VVA 27.12.2007
  ret                                         ;;;Add VVA 27.12.2007
  )                                           ;;;Add VVA 27.12.2007
 ((= (type ent) 'list)(cdr (assoc -1 ent)))   ;;;Add VVA 27.12.2007
    (t nil)
    ) ;_ end of cond
  ) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека функций > DwgRuLispLib: Преобразование указателя на примитив в ename

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

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