Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) - Страница 228
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Ответ
Поиск в этой теме
Непрочитано 20.07.2008, 20:12 1 |
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

Со школы не ладится у меня с программированием. Все предметы щелкал, а на экзамене по информатике (Visual foxpro) программку типа суммирования столбцов списал у соседа (это уже в университете).
Не смотря на эте намерен научится писать программы для Автокада на лиспе, скачал книгу Хювенена, несколько примеров создания программ, но после получасового “смотрения” таких книг мое мышление явно притормаживает.
Решил пойти другим путем.
Нашел самый короткий лисп из моей коллекции, и прошу программистов с этого форума пошагово объяснить какой символ что означает. Надеюсь на вашу помощь.


Код:
[Выделить все]
(defun c:make-blocks-explodeable (/ adoc)
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (vlax-for blk_def (vla-get-blocks adoc)
    (if (and (equal (vla-get-isxref blk_def) :vlax-false)
             (equal (vla-get-islayout blk_def) :vlax-false)
             ) ;_ end of and
      (vl-catch-all-apply '(lambda () (vla-put-explodable blk_def :vlax-true)))
      ) ;_ end of if
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
_____________________________________________________________________________________________________________

Прошло много лет и топик теперь представляет из себя площадку для обучения азов программирования для многих начинающих.
Так что начинающие лиспогрызы приветствуются .
__________________
Блог

Последний раз редактировалось Red Nova, 12.07.2017 в 05:43.
Просмотров: 2048786
 
Непрочитано 21.02.2024, 15:27
#4541
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Чтобы пакетный режим обработки реализовать или нужно
просто обработать единичную связку из двух файлов?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2024, 15:33
#4542
posetitel


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


обработать единичную связку из двух файлов.
posetitel вне форума  
 
Непрочитано 21.02.2024, 15:54
#4543
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Вариант переключиться на это время в SDI=0 не подойдёт?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2024, 16:00
#4544
posetitel


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


вряд ли, тут принципиальные проблемы с закрытием файла из которого выполняется лисп закрытия
posetitel вне форума  
 
Непрочитано 21.02.2024, 16:05
#4545
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


с SDI=0 - никаких проблем
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2024, 16:09
#4546
posetitel


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


сейчас проверил, SDI=0 стоит по умолчанию, т.е. не помогло
posetitel вне форума  
 
Непрочитано 21.02.2024, 16:39
#4547
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Сорри, SDI=1 нужно.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2024, 16:41
#4548
posetitel


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


тоже не помогло, попробовал и с 1
posetitel вне форума  
 
Непрочитано 21.02.2024, 16:46
#4549
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Просто открывай новый чертёж. Старый сам закроется.

----- добавлено через 54 сек. -----
Только старый сохраняй предварительно, чтобы Автокад вопросов не задавал.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 21.02.2024, 16:50
#4550
posetitel


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


отличный совет ))
я целый день разбираюсь, как это реализовать средствами лиспа
posetitel вне форума  
 
Непрочитано 21.02.2024, 17:06
#4551
Кулик Алексей aka kpblc
Moderator

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


Я не очень понимаю глубинного смысла этой затеи, но как алгоритм:
- получить и запомнить "где-то снаружи" текущее значение SDI
- Если SDI = 0, то пройтись по всей коллекции документов и позакрывать их
- SDI в 0
- сохранить файл
- в ком.строку послать нечто типа (vl-cmdf "_.close" "open" NewFileName.dwg) или каким-то другим способом попытаться открыть NewFileName.dwg
- восстановить SDI из "где-то снаружи".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.02.2024, 18:07
#4552
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,105


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Это как?
Добавить реактор, который на команду SPDSNET_EXPORTACAD будет создавать файл flag.txt.

Код:
[Выделить все]
 (SetQ *fn* "C:\\temp\\flag.log")

(DeFun f0 (a b / f)
  (SetQ f (Open *fn* "w"))
  (Write-Line (Car b) f)
  (Close f)
)

(DeFun f1 (a b)
  (vl-file-delete *fn*)
)

(vlr-command-reactor nil '((:vlr-commandWillStart . f0)))
(vlr-command-reactor nil '((:vlr-commandEnded . f1)))
(vlr-command-reactor nil '((:vlr-commandCancelled . f1)))
(vlr-command-reactor nil '((:vlr-commandFailed . f1)))

(Eval (f1 0 0))


И одновременно работает какой-нибудь планировщик, например nnCron с таким заданием:

Код:
[Выделить все]
#( SPDSok
WatchFile: "C:\temp\flag.log"
Action:
SEND-KEYS: "{ENTER}"
FILE-DELETE: "C:\temp\flag.log"
)#
SetQ вне форума  
 
Непрочитано 21.02.2024, 20:50
#4553
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от SetQ Посмотреть сообщение
И одновременно работает какой-нибудь планировщик, например nnCron с таким заданием:
имхо, все-таки надо проверять текущее активное модальное окно - а не посылать наугад.
Сергей812 вне форума  
 
Непрочитано 21.02.2024, 23:09
#4554
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,105


Или совсем просто - по F5 nnCron "отправляет с клавиватуры" команду и два раза нажимает Ентер:

Код:
[Выделить все]
#( spds
WatchHotKey: "{0x74}"
Action:
SEND-KEYS: "SPDSNET_EXPORTACAD{ENTER}"
PAUSE: 500
SEND-KEYS: "{ENTER}"
)#
Можно в каком-нибуд AutoHotkey то же самое задать.
SetQ вне форума  
 
Непрочитано 24.03.2024, 10:17
#4555
MironovMA


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


подскажите пожалуйста, а как правильно должен выглядеть лисп, если задача его загрузить три определенные файла *.dvb ?
MironovMA вне форума  
 
Непрочитано 24.03.2024, 13:44
#4556
Кулик Алексей aka kpblc
Moderator

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


По-моему, что-то типа vla-vbaload
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.05.2024, 03:56
#4557
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Добродо времени суток, други. Ответите блудному автору на вопросик?
Имею список наименований объектов. Там есть как блоки (в основном динамические) так и другие объекты (линии, размеры и т.п.)
Что-то типа вот этого:
Код:
[Выделить все]
'(<Entity name: 142f8fbea20> <Entity name: 142f8fbee70> <Entity name: 142f8fbb960>)
Можно ли удалить из списка все что не есть блок?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 05.05.2024, 08:32
#4558
Кулик Алексей aka kpblc
Moderator

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


Можно, а в чем проблема?
(vl-remove-if-not '(lambda(x)(=(cdr(assoc 0 (entget x)))"INSERT")) <Твой список>)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2024, 10:39
#4559
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 110


Нужно проверить цвет ячейки таблицы (например что она красная)

(setq obj (vlax-ename->vla-object (car (entsel))))
(setq clr (vla-GetCellContentColor obj 1 1))

получаю значение ячейки 1,1 в виде
#<VLA-OBJECT IAcadAcCmColor 000001da1a25e950>

что дальше делать с полученным значением clr для его проверки (цвет равен красным)
Sege вне форума  
 
Автор темы   Непрочитано 05.05.2024, 14:55
#4560
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Можно, а в чем проблема?
(vl-remove-if-not '(lambda(x)(=(cdr(assoc 0 (entget x)))"INSERT")) <Твой список>)
Спасибо, маэстро. Проблема во мне
__________________
Блог
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46