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

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

LISP. Создание растра.

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

Доброго всем. Для вставки растров в документ есть прекрасная функция vla-addraster. Передаем необходимые параметры, и получаем результат.
Все это хорошо, до тех пор, пока не сталкиваемся с попыткой повторной вставки растра, уже однажды "подключенного" к документу: в таком случае вставляется растр с именем IOA-и-дальше-цифры.
Как я поступал:
Сначала получаем ссылки на те растры, которые были когда-то подключены к документу:
Код:
[Выделить все]
(setq dict (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 350)) (dictsearch (namedobjdict) "acad_image_dict"))))
Допустим, есть 2 записи - первая для отключенного растра, вторая - для вставленного. Надо вставить растр именно первой записи.
Вопрос - как это сделать? Через entmakex пробовал, но там вопрос с подрезкой - как ее задавать, по каким правилам и т.д. А без нее растр не создается. Через ActiveX? Вообще не сообразить никак.
Собственно вопрос - как можно вставить растр, который был уже вставлен, но отключен?

Ну или как минимум - как лиспом узнать количество пикселей в растре (по вертикали и горизонтали)?

---

Сорри, отбой. Все намного проще, как оказалось - я просто недочитал DXF Reference.
Может, есть и вариант попроще, но меня пока хватило только на это
Код:
[Выделить все]
(setq img (car
            (mapcar 'cdr
                    (vl-remove-if-not '(lambda (x) (= (car x) 350)) (dictsearch (namedobjdict) "acad_image_dict"))
                    ) ;_ end of mapcar
            ) ;_ end of car
      ) ;_ end of setq
(entmakex
  (list '(0 . "IMAGE")
        '(100 . "AcDbEntity")
        '(100 . "AcDbRasterImage")
        '(90 . 0)
        '(10 100. 100. 0.)
        '(11 1. 0. 0.)
        '(12 0. 1. 0.)
        (cons 13 (cdr (assoc 10 (entget img))))
        (cons 340 (cdr (assoc -1 (entget img))))
        '(70 . 15)
        '(280 . 0)
        (cons 360 (cdr (cadr (vl-remove-if-not '(lambda (x) (= (car x) 330)) (entget img)))))
        '(71 . 1)
        '(14 -0.5 -0.5)
        (cons 14 (mapcar '(lambda (x) (- x 0.5)) (cdr (assoc 10 (entget img)))))
        ) ;_ end of list
  )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 11.10.2011 в 22:34.
Просмотров: 1901
 
Непрочитано 12.10.2011, 09:54
#2
VVA

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


Алексей, уточни термин отключен.
Это п.1 или п.2 ?

PS Так же отбой.
Миниатюры
Нажмите на изображение для увеличения
Название: img.png
Просмотров: 93
Размер:	8.3 Кб
ID:	67649  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Создание растра.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP создание списка из text 4ertegn1k LISP 10 09.03.2011 15:32
LISP Создание осевой линии для 3Dsolids nem LISP 7 19.10.2010 12:42
Создание небольшой игры на языке LISP TwoZero LISP 9 10.06.2010 18:08
Создание спецификаций на Lisp DILev AutoCAD 6 27.01.2009 17:53
Создание "прозрачного" растра TIF-формата - спасит Elena Ivanova AutoCAD 20 02.03.2007 06:21