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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Быстрое рисование. QUICKDRAW

LISP. Быстрое рисование. QUICKDRAW

Ответ
Поиск в этой теме
Непрочитано 08.06.2009, 11:54 7 |
LISP. Быстрое рисование. QUICKDRAW
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,990

Развитие идеи, изложенной ttt и кода Rory Love, опубликованного Vova, здесь.
Внесены некоторые доработки по предложению Largo_GT, Valery Brelovsky, Yuriy, Disney, и др. участников форума. некоторые доработки под себя опубликовал Yuriy здесь
Принцип работы программы:
Выбираете примитив-образец и рисуете такие-же примитивы с такими же свойствами. Кроме того, при повторе (пробел, клавиша ENTER, или правая кнопка мыши) рисование по примитиву-образцу будет повторяться (повторное указание не требуется).
Короткие имена:
QR - QUICKDRAW с восстановлением свойств
Q - QUICKDRAW
История:
22.07.2009 - Добавлена обработка временных привязок при установке OSNAPCOORD = 2
02.09.2009 - Добавлена обработка linetype scale и SPLINE
10.09.2009 - Добавлена обработка Mtext и Table
09.11.2009 - Восстановление PLINEWID
24.11.2009 - HPDOUBLE in USER DEFINE PATTERN
05.04.2010 - HPSPACE in USER DEFINE PATTERN
07.06.2010 - Add MLINE. Correct GetDynamicBlockPropertyList function
21.05.2010 - Add True Color
23.08.2011 - Add XLINE and RAY
14.10.2015 - Add MLEADER

PS. Начиная с 2011 версии появилась аналогичная команда _ADDSELECTED

Вложения
Тип файла: lsp quickdraw.LSP (21.8 Кб, 553 просмотров)

__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 14.10.2015 в 17:30.
Просмотров: 51140
 
Непрочитано 25.03.2010, 09:05
#61
Mikka


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


lunits =2
Mikka вне форума  
 
Непрочитано 25.03.2010, 13:26
#62
Кулик Алексей aka kpblc
Moderator

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


Тьфу, черт, переклинило меня не lunits, а luprec - точность отображения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.03.2010, 14:13
#63
Mikka


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


luprec = 4
Mikka вне форума  
 
Непрочитано 05.04.2010, 15:55
#64
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,736


Володь можешь пофиксить еще такую штуку:
Опять это касается HATCH -> User Defined.
Теперь не наследуется HPSPACE.
Кочетков Андрей вне форума  
 
Автор темы   Непрочитано 05.04.2010, 20:22
1 | #65
VVA

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


Цитата:
Сообщение от Mikka Посмотреть сообщение
Нашел маленький косячек, масштаб линии меньше 1(например 0,5), заменяется масштабом 1 ...
Я не смог повторить такой косячок. Приложи пример.
Кочетков Андрей, Пофиксил (надеюсь)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.04.2010, 22:04
#66
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,736


Цитата:
Сообщение от VVA Посмотреть сообщение
Пофиксил (надеюсь)
Да, пофиксил ))
Спасибо!
Кочетков Андрей вне форума  
 
Непрочитано 13.05.2010, 22:44
#67
CAHTEXHuK

Инженер по теплоснабжению
 
Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25


Присоединяюсь ко всем восхищенным пользователям этого лиспа ... Спасибо, VVA, чудное творение...
Но тоже хотелось бы предложить сделать работу с текстом по принципу макроса, насколько это возможно...
А можно добавить в код возможность работы с мультилинией... ? я много их использую, было бы просто супер...

А еще у меня есть пара несложных динамических блоков с параметром выравнивания... и при использовании Q выдает такой текст...
ActiveX Server возвратил ошибку: Неверный индекс
акад 2008 русский
Вложения
Тип файла: dwg
DWG 2007
Пара_Блоков.dwg (110.5 Кб, 2126 просмотров)

Последний раз редактировалось CAHTEXHuK, 13.05.2010 в 22:53.
CAHTEXHuK вне форума  
 
Непрочитано 14.05.2010, 11:08
#68
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Ну надо же, какое совпадение! Только вчера как раз обнаружил и решил такую же проблему.
Все дело оказалось вот в этой функции (использовал ее в своей программе):
Код:
[Выделить все]
;;Возвращает список всех свойст динамического блока в виде списка 
;((Имя_свойства Текущее_значение Vla_объект_свойства)...) 
;; obj - Vla-указатель дин блока (vla-object) 
;;Пример 
;;(GetDynamicBlockPropertyList (vlax-ename->vla-object(car(entsel "\nВыбeри дин блок:")))) 
;;(("Видимость" "Канализация" #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15246fe4>) 
;;   ("Угол" 0.115395 #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15240fe4>) ...) 
(defun GetDynamicBlockPropertyList (obj / lstProperties) 
(if (and (vlax-property-available-p obj "IsDynamicBlock") 
          (= (vla-get-IsDynamicBlock obj) :vlax-true) 
          (setq lstProperties (vlax-safearray->list 
                                           (variant-value 
                                            (vla-GetDynamicBlockProperties obj))))) 
  (progn 
   (mapcar '(lambda (x)(list (vla-get-propertyname X) 
                             (variant-value (vla-get-value X)) 
                             x 
                             )) 
           lstProperties))))
Если присутствует только динамический параметр "выравнивание" (как у CAHTEXHuK) или только параметр "базовая точка" (как у меня встретилось), то функция выдает ошибку при попытке преобразовать безопасный массив в список. Я просто "завернул" преобразование в vl-catch-all-apply:
Код:
[Выделить все]
;;Возвращает список всех свойст динамического блока в виде списка 
                    ;((Имя_свойства Текущее_значение Vla_объект_свойства)...) 
;; obj - Vla-указатель дин блока (vla-object) 
;;Пример 
;;(GetDynamicBlockPropertyList (vlax-ename->vla-object(car(entsel "\nВыбeри дин блок:")))) 
;;(("Видимость" "Канализация" #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15246fe4>) 
;;   ("Угол" 0.115395 #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15240fe4>) ...) 
(defun GetDynamicBlockPropertyList (obj / lstProperties)
  (if (and (vlax-property-available-p obj "IsDynamicBlock")
       (= (vla-get-IsDynamicBlock obj) :vlax-true)
       (not    (vl-catch-all-error-p
          (setq    lstProperties
             (vl-catch-all-apply
               (function (lambda ()
                       (vlax-safearray->list
                     (variant-value
                       (vla-GetDynamicBlockProperties obj)
                     ) ;_ end of variant-value
                       ) ;_ end of vlax-safearray->list
                     ) ;_ end of lambda
               ) ;_ end of function
             ) ;_ end of vl-catch-all-apply
          ) ;_ end of setq
        ) ;_ end of vl-catch-all-error-p
       ) ;_ end of not
       lstProperties
      ) ;_ end of and
    (progn
      (mapcar '(lambda (x)
         (list (vla-get-propertyname X)
               (variant-value (vla-get-value X))
               x
         ) ;_ end of list
           ) ;_ end of lambda
          lstProperties
      ) ;_ end of mapcar
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
Do$ вне форума  
 
Непрочитано 15.05.2010, 12:01 Изменения...
#69
CAHTEXHuK

Инженер по теплоснабжению
 
Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25


Спасибо, эти блоки работают как надо... а что насчет мультилиний ? это вообще реально ? или стоит закатать губу ?
CAHTEXHuK вне форума  
 
Автор темы   Непрочитано 17.05.2010, 11:21
#70
VVA

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


Цитата:
Сообщение от CAHTEXHuK Посмотреть сообщение
а что насчет мультилиний ? это вообще реально ?
Реально. См. #1

Цитата:
Сообщение от Do$ Посмотреть сообщение
Ну надо же, какое совпадение! Только вчера как раз обнаружил и решил такую же проблему.
Спасибо за дефектацию. Исправленная версия с проверкой верхнего индекса массива
Код:
[Выделить все]
(defun GetDynamicBlockPropertyList (obj / lstProperties tmp)
;;Возвращает список всех свойст динамического блока в виде списка 
;((Имя_свойства Текущее_значение Vla_объект_свойства)...) 
;; obj - Vla-указатель дин блока (vla-object) 
;;Пример 
;;(GetDynamicBlockPropertyList (vlax-ename->vla-object(car(entsel "\nВыбeри дин блок:")))) 
;;(("Видимость" "Канализация" #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15246fe4>) 
;;   ("Угол" 0.115395 #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 15240fe4>) ...) 
  
(if (and (vlax-property-available-p obj "IsDynamicBlock") 
          (= (vla-get-IsDynamicBlock obj) :vlax-true)
         (setq tmp (vlax-variant-value (vla-GetDynamicBlockProperties obj)))
         (>= (vlax-safearray-get-u-bound tmp 1) 0)
          (setq lstProperties (vlax-safearray->list tmp))
         )
  (progn 
   (mapcar '(lambda (x)(list (vla-get-propertyname X) 
                             (vlax-variant-value (vla-get-value X)) 
                             x 
                             )) 
           lstProperties))))
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 07.06.2010 в 17:06. Причина: Изменения в GetDynamicBlockPropertyList (синие)
VVA вне форума  
 
Непрочитано 17.05.2010, 12:20
#71
CAHTEXHuK

Инженер по теплоснабжению
 
Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25


VVA, спасибо огромное... с мультилинией ваще бесценный лисп...
CAHTEXHuK вне форума  
 
Непрочитано 18.05.2010, 22:24
#72
Djur


 
Регистрация: 07.06.2008
ЗвезДонецк
Сообщений: 131


Низкий поклон!)))
__________________
Любой ПУТЬ прост, если в согласии с Вселенскими законами :) Дукха Самудая Ниродха и Марга
Djur вне форума  
 
Непрочитано 20.05.2010, 12:17
#73
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,736


Я опять со своими штриховками ))
Не наследуется цвет штриховки USER DEFINED.
Прошу подправить )))
Кочетков Андрей вне форума  
 
Автор темы   Непрочитано 20.05.2010, 14:46
#74
VVA

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


Кочетков Андрей, Вышли пример на почту. Что-то я не могу смоделировать ситуацию
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.05.2010, 15:45
#75
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,736


Цитата:
Сообщение от VVA Посмотреть сообщение
Вышли пример на почту
Не смог найти твоей почты.
Поэтому выкладываю сюда файл.
Вложения
Тип файла: dwg
DWG 2007
для VVA - глюки со штриховкой.dwg (122.4 Кб, 2101 просмотров)
Кочетков Андрей вне форума  
 
Автор темы   Непрочитано 21.05.2010, 15:07
1 | #76
VVA

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


Добавил обработку True Color
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.05.2010, 15:36
#77
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,736


Цитата:
Сообщение от VVA Посмотреть сообщение
Добавил
Спасибо!
Кочетков Андрей вне форума  
 
Непрочитано 15.06.2010, 08:40
#78
Mikka


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


Предлагаю в конце программы, там где объявляются команды дописать следующее

Код:
[Выделить все]
(defun C:Й () (QUICKDRAW nil))
(defun C:ЙГШСЛВКФЦ () (QUICKDRAW nil)) 
(defun C:ЙК () (QUICKDRAW t))
Это позволит вызвать команду не зависимо от выбранной раскладки...
Спасибо за вашу программу
Mikka вне форума  
 
Непрочитано 16.06.2010, 17:39
#79
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Пользуюсь ещё первой версией программы. И надо сказать что очень доволен. Добавил комаду в ShortcutMenu и она у меня всегда под рукой, на правой кнопке мыши.
Valery Brelovsky вне форума  
 
Непрочитано 01.09.2010, 16:18
#80
Влад

Инженер-конструктор
 
Регистрация: 30.08.2003
Новосибирск
Сообщений: 76
<phrase 1=


Лисп отличный!!! Постоянно использую. Вопрос к автору. Возможно ли научить этот лисп работать с СПДС объектами?
__________________
Ты можешь выслушать и принять к сведению десятки хороших советов, но действовать будешь САМ
Влад вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Быстрое рисование. QUICKDRAW

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ламерские вопросы по LISP и DCL TheBuTeK LISP 7 03.07.2016 22:15
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
LISP на _purge Малюк LISP 12 23.12.2007 18:15
Библиотека доступа к содержимому растров из LISP - существуе kp+ LISP 6 16.10.2007 21:45
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19