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

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

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

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

Со школы не ладится у меня с программированием. Все предметы щелкал, а на экзамене по информатике (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.
Просмотров: 1973412
 
Непрочитано 22.04.2016, 14:15
#2941
Сет


 
Регистрация: 19.11.2014
Сообщений: 2,435


удалено

Последний раз редактировалось Сет, 22.04.2016 в 14:21.
Сет вне форума  
 
Непрочитано 17.05.2016, 11:38
#2942
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 135


Добрый день!
Подскажите пожалуйста, ответ на такой вопрос.
При переключении между листами, лисп рисующий примитивы прерывает свою работу.
Подскажите, как сделать так чтобы переключение между листами не влияло на его работу, т.е. он продолжал свою работу.
Допустим лисп такой:
Код:
[Выделить все]
 (setq obj (vla-get-PaperSpace actdoc))
(while (/= nil (setq pnt (getpoint "Начертите контур: ")))
					(setq spln1 (vla-AddTorus obj (vlax-3D-point pnt) 0.3 0.3))
					(setq spln1_lst (cons spln1 spln1_lst))
					(setq pnt_msv (cons pnt pnt_msv))
					(setq pnt_lst (append pnt pnt_lst))
)
__________________
слесарь САПР
Fedorino вне форума  
 
Непрочитано 17.05.2016, 16:56
#2943
vik74


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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Redj, попробуй так (Используется реактор)
Этот код сохранить как .lsp?
А как запустить?
vik74 вне форума  
 
Непрочитано 17.05.2016, 17:35
1 | #2944
Кулик Алексей aka kpblc
Moderator

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


http://dwg.ru/pub/9
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2016, 10:42
#2945
vik74


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Я эту статью читал не раз. но в этот раз не получается, вот и спросил.
Что не так я делаю?
Вот команды:
Команда: _appload Numer.lsp успешно загружено.


Команда: ; ошибка: считан неверный символ (восьмеричный): 0

Команда:
Команда: (objectAppended)
; ошибка: no function definition: OBJECTAPPENDED

Команда: (vl-load-com)

Команда: (objectAppended)
; ошибка: no function definition: OBJECTAPPENDED


Сам lisp прикреплен
Вложения
Тип файла: lsp Numer.lsp (11.0 Кб, 34 просмотров)
vik74 вне форума  
 
Непрочитано 18.05.2016, 11:01
1 | #2946
Кулик Алексей aka kpblc
Moderator

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


Не знаю почему, но в файле нарушена кодировка. Должна быть Windows-1251
Вложения
Тип файла: lsp Numer.lsp (6.6 Кб, 29 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2016, 11:29
#2947
vik74


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Не знаю почему, но в файле нарушена кодировка. Должна быть Windows-1251
.
Вот, это уже дельный ответ!!! Если не секрет, как это определил?
Спасибо Алексей!
p.s. код скопирован с форума и вставлен в notepad++, буду разбираться, где напутал
vik74 вне форума  
 
Непрочитано 18.05.2016, 11:51
1 | #2948
Кулик Алексей aka kpblc
Moderator

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


Открыл в VLIDE, а там вместо гарантированно русских символов чертовщина какая-то. Открыл в Notepad++ и там преобразовал в Windows-1251. Все получилось нормально вроде бы )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2016, 12:36
#2949
vik74


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Открыл в VLIDE, а там вместо гарантированно русских символов чертовщина какая-то. Открыл в Notepad++ и там преобразовал в Windows-1251. Все получилось нормально вроде бы )
Все равно не получается запустить.
Код с форума http://forum.dwg.ru/showthread.php?p=814881&#post814881
пост 1655.
vik74 вне форума  
 
Непрочитано 18.05.2016, 12:42
#2950
Кулик Алексей aka kpblc
Moderator

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


Так код-то будет срабатывать только при копировании мультивыноски, насколько я вижу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2016, 12:55
#2951
vik74


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


но как заставить автоматом менять нумерацию?
vik74 вне форума  
 
Непрочитано 03.06.2016, 13:35
#2952
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Товарищи, подскажите пожалуйста!

Заменяю в строке символы /,*? с помощью (vl-string-translate "/,*?"

Как бы в этот список еще кавычку " внедрить? Она ведь синтаксис функции ломает..
Nike вне форума  
 
Непрочитано 03.06.2016, 14:08
1 | #2953
Кулик Алексей aka kpblc
Moderator

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


Попробуй использовать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.06.2016, 16:00
#2954
Inferi


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


Всем привет, может кто подскажет как получить число стрелок мультивыноски?

----- добавлено через ~2 ч. -----
Цитата:
Сообщение от Inferi Посмотреть сообщение
Всем привет, может кто подскажет как получить число стрелок мультивыноски?
вроде разобрался:
Код:
[Выделить все]
(setq mleader (vlax-ename->vla-object (car (entsel)))
      leaderLineIndexes (vla-getLeaderLineIndexes mleader 0)
      indexList (vlax-safearray->list (variant-value leaderLineIndexes))
      quantity (length indexList)
)
Inferi вне форума  
 
Непрочитано 22.06.2016, 13:55
#2955
Neo


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


Подскажите как "по лисповски" правильно применять функцию к списку. например форматирование таблицы я сделал так
Код:
[Выделить все]
 (mapcar	(function (lambda (x)
		    (vla-SetColumnWidth comp_list_tbl (car x) (cadr x))
		    ) ;_ end of lambda
		  ) ;_ end of function
	'((0 20) (1 25) (2 35) (3 110) (4 115) (5 15) (6 15) (7 60))
	) ;_ end of mapcar
Что не нравится: mapcar возвращает список, а мне это не нужно
может лучше это сделать через foreach? или еще как
Neo вне форума  
 
Непрочитано 23.06.2016, 02:46
#2956
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


"По лисповски" или по автолисповски? ИХМО - если не уверен, что написал ты раз и навсегда - лучше используй mapcar с игнорированием результатов - они конечно добавляют работы GC, но эта та мелочь которая вряд-ли будет практически заметна, но зато если понадобится, что-то добавить, что возвращает результат - то не надо будет ломать структуру.
Если совсем по лисповски - то vla-SetColumnWidth - это "обертка" не из его парадигмы (в функциональном варианте она-бы возвращала новый объект таблицы с измененным столбцом - который надо-бы было обрабатывать через "свертку" списка).
з.ы. в данном примере можно рассмотреть вариант (apply 'vla-SetColumnWidth (cons comp_list_tbl x))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 23.06.2016, 18:13
#2957
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Дима_ Посмотреть сообщение
(cons comp_list_tbl x)
действительно ?
gomer вне форума  
 
Непрочитано 03.07.2016, 16:54
#2958
Neo


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


подскажите как выделить только те объекты xref, которые остались после clip.
В чертеж вставлены xref на другие чертежи, и обрезаны clip. Составляю перечень элементов: все блоки текущего чертежа + видимые блоки xref-ов. Ко всем блокам xref-ов добрался, а как выбрать только те, что видно на чертеже?
Neo вне форума  
 
Непрочитано 06.07.2016, 14:55
#2959
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Возник один вопрос. Сейчас собирал программку автоматической настройки среды для отдела.
Уперся в один момент: у нас есть пара программок, которые лежат в автозагрузке "Сервис-приложения-автозагрузка".
Сколько не искал по форуму - было единственное предложение дописывать в acaddoc.lsp, чего делать не хочется (уж проще руками их добавить через окна).
Расковыривая объектную модель, тоже ничего похожего на правду не нашел.
Есть ли, все таки, способ добраться до списка этих приложений через AutoLisp или дело совсем гиблое?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 06.07.2016, 15:25
#2960
Кулик Алексей aka kpblc
Moderator

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


http://adn-cis.org/posledovatelnost-...v-autocad.html
http://adn-cis.org/autocad-autoload-security.html
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум 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