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

Вернуться   Форум 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.
Просмотров: 2048830
 
Непрочитано 29.09.2016, 09:47
#3041
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 431


Код:
[Выделить все]
(defun c:RBmleader ()
  (setvar "cmdecho" 0)
  (vl-cmdf "_-layer" "_make" "-Vynoska" "")
  (if (= (type
	   (vl-catch-all-apply
	     (function
	       (lambda ()
		 (command "_mleader" pause pause "")
	       ) ;_ end of lambda
	     ) ;_ end of function
	   ) ;_ end of vl-catch-all-apply
	 ) ;_ end of type
	 'list
      ) ;_ end of =
    (princ)
    (princ)
  ) ;_ end of if
  (vl-cmdf "_layerp")
  (vl-cmdf "_pselect" "_l" "" "_mleadercontentedit")
  (setvar "cmdecho" 1)
  (princ)
) ;_ end of defun
Ламерский код построения мультивыноски с заданным слоем. Моим потребностям удовлетворяет.
RNB вне форума  
 
Непрочитано 29.09.2016, 13:49
#3042
Кулик Алексей aka kpblc
Moderator

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


Опять забыл про обработку ошибок и метки начала/конца отмены...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.09.2016, 14:37
#3043
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 431


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Опять забыл про обработку ошибок и метки начала/конца отмены...
Каюсь, никак руки не доходят доделать по-человечески
RNB вне форума  
 
Автор темы   Непрочитано 30.09.2016, 16:44
#3044
Red Nova

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


Использую этот код для выбора динамических блоков с определенным именем. Есть простой метод вернуть их количество?
Red Nova вне форума  
 
Непрочитано 30.09.2016, 17:04
#3045
Nike

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


http://forum.dwg.ru/showthread.php?t=17333
Nike вне форума  
 
Непрочитано 30.09.2016, 17:04
#3046
Сергей812


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


getblockselection по сути ssget с фильтром, а что возвращает ssget? - набор она возвращает)
Сергей812 вне форума  
 
Автор темы   Непрочитано 02.10.2016, 18:32
#3047
Red Nova

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


Nike, спасибо, хоть и не совсем ответ на мой вопрос, но пригодится на будущее ։)

______________________________________________________________________________

Помогите плиз код осилить. Никак не могу соединить эти два списка нужным образом.
Требуется провести сравнение между списками. Ищем совпадение по первому элементу подсписков. При нахождении проводим вычитание между соответствующими вторыми элементами.
Возвращаем результирующий список.

Пример списков:
(setq lstA '(("1" "57") ("2" "69") ("3" "89") ("4" "95") ("5" "89") ("6" "82") ("B" "49")))
(setq lstB '(("1" "53") ("3" "42") ("B" "22")))

Ожидаемый результат:
'(("1" "4") ("2" "69") ("3" "47") ("4" "95") ("5" "89") ("6" "82") ("B" "27")

Пока что мое нерабочее издевательство над кодом выглядит так:
*гнилыми помидорами не кидаться

Код:
[Выделить все]
 
(defun c:SubstractEC ( / lstA lstB lst lstn x sum floor)
  (setq lstA '(("1" "57") ("2" "69") ("3" "89")))
  (setq lstB '(("1" "53") ("3" "22")))
  (setq x 0)
  (setq floor (car (car lstA)))
  (setq sum (distof (cadr (car lstA))))
  (setq lst '())
  (foreach n lstB
    (if (= (car n) floor)
        (setq sum (- sum (distof (cadr n)))
	      lstn (append (list (car n)) (list (rtos sum 2 0)))
	      lst (append lst (list lstn))

	      x (+ 1 x)
	      floor (car (nth x lstA))
	      sum (distof (cadr (nth x lstA)))
	      )
        (setq x (+ 1 x)
	      floor (car (nth x lstA))
	      sum (distof (cadr (nth x lstA)))
	   )
     )
  )
  (princ lst)
  (princ)
)
Добавил.

Вот, нашел такой вариант.
Код:
[Выделить все]
 (defun SEC ( a b / c )
        (if a
            (if (setq c (assoc (caar a) b))
                (cons (cons (caar a) (list (rtos (- (distof (cadar a)) (distof (cadr c))) 2 0))) (SEC (cdr a) b))
                (cons (car a) (SEC (cdr a) b))
            )
        )
    )

Последний раз редактировалось Red Nova, 02.10.2016 в 21:01.
Red Nova вне форума  
 
Непрочитано 03.10.2016, 12:27
#3048
George_D


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


Добрый день, подскажите, пожалуйста, какой командой lisp можно удалить строку из таблицы или как создавать таблицу сразу без первой строки , предназначенной для имени таблицы.

Код:
[Выделить все]
  (defun c:Example_AddTable()
    ;; This example adds a table in model space
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    (setq pt (vlax-3d-point 0 0 0))

    (setq modelSpace (vla-get-ModelSpace doc))
    (setq MyTable (vla-Addtable modelSpace pt 5 5 10 30))
    (vla-ZoomExtents acadObj)
)
----- добавлено через ~26 мин. -----
Разобрался:

Код:
[Выделить все]
 (vla-Deleterows MyTable 0 1)
George_D вне форума  
 
Непрочитано 03.10.2016, 12:55
#3049
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от George_D Посмотреть сообщение
как создавать таблицу сразу без первой строки , предназначенной для имени таблицы.
Создать стиль, в котором отсутствует заголовок таблицы. Кажется, так.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.10.2016, 16:32
#3050
fah


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


Доброго времени суток! Друзья! Такой вопрос, есть ли тут человек, который владеет Лиспом на профессиональном уровне? Срочно нужна помощь в написании скрипта для автокада. Программа почти дописана, остались некоторые тонкие моменты. Если вкратце, то суть в том, что нужно вытащить блоки с их атрибутами в формате vla , чтоб их можно было тем самым перенести в Excel, на данный момент это получается сделать так, что выделяются все блоки и выносится информации о каждом. Но нужно, чтоб блок можно было выбирать рамкой. Буду благодарен за помощь.
fah вне форума  
 
Непрочитано 06.10.2016, 16:45
#3051
Сергей812


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


Цитата:
Сообщение от fah Посмотреть сообщение
блоки с их атрибутами в формате vla
что это за чудесный формат?

Цитата:
Сообщение от fah Посмотреть сообщение
Программа почти дописана
И где она? Если вызывает трудности извлечение атрибутов выделенных блоков, то чем же занимается почти написанная программа тогда?
Сергей812 вне форума  
 
Непрочитано 06.10.2016, 16:58
#3052
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от fah Посмотреть сообщение
суть в том, что нужно вытащить блоки с их атрибутами
Самое простое - применить команды _ATTOUT и _ATTIN
Цитата:
Сообщение от fah Посмотреть сообщение
блок можно было выбирать рамкой
Ну там это делается...
Забрать файлик в EXCEL поманипулировать и отдать назад... без программирования.
Метод описан и продемонстрирован не раз!
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 06.10.2016, 17:01
#3053
fah


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


Требуют именно написать скрипт для автоматизированного перемещения информации о блоке с атрибутами в эксель...(
Я всё время работал в автокаде, но никак не с программированием...
fah вне форума  
 
Непрочитано 06.10.2016, 17:16
#3054
Кулик Алексей aka kpblc
Moderator

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


fah, слабо верится, что на работе требуют написать скрипт. Больше похоже на учебную задачу. На работе обычно пофигу, как ты решил проблему - главное, решил.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.10.2016, 17:33
#3055
Сергей812


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


Да и собственно
Цитата:
Сообщение от fah Посмотреть сообщение
на данный момент это получается сделать так, что выделяются все блоки и выносится информации о каждом. Но нужно, чтоб блок можно было выбирать рамкой
в чем загвоздка то? Получили набор блоков и обрабатываете его - это уже все готово, судя по посту. А как формируете набор блоков - это уже вопрос интерфейса пользователя.
Сергей812 вне форума  
 
Непрочитано 06.10.2016, 17:37
#3056
fah


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
fah, слабо верится, что на работе требуют написать скрипт. Больше похоже на учебную задачу. На работе обычно пофигу, как ты решил проблему - главное, решил.
Нет. Смотрите, задача конкретная. Я работаю в сфере пищевой промышленности, где проектируются конкретные агрегаты. Суть в том, что в каждом проекте создаются спецификации, которые потом вручную забиваются в эксель. Скрин подобной таблицы прикладываю, такую перенести из автокада в эксель обычным способом нереально.
Миниатюры
Нажмите на изображение для увеличения
Название: скрин.jpg
Просмотров: 31
Размер:	399.4 Кб
ID:	177331  
fah вне форума  
 
Непрочитано 06.10.2016, 17:42
#3057
fah


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Да и собственно

в чем загвоздка то? Получили набор блоков и обрабатываете его - это уже все готово, судя по посту. А как формируете набор блоков - это уже вопрос интерфейса пользователя.
Проблема в том, что я не знаю, Каким образом сделать этот выбор блока выделением рамкой. Нашёл функцию ssget, вроде она почти по теме, но довести до конца не удаётся.
да и информация в эксель пока не выводится, эту проблему пытается решить другой сотрудник, моя же задача сделать выбор конкретного блока.
fah вне форума  
 
Непрочитано 06.10.2016, 17:46
#3058
Сергей812


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


Цитата:
Сообщение от fah Посмотреть сообщение
Каким образом сделать этот выбор блока выделением рамкой. Нашёл функцию ssget, вроде она почти по теме, но довести до конца не удаётся.
так выкладывайте свой кусок кода - что не получается)

----- добавлено через ~2 мин. -----
Offtop:
Цитата:
Сообщение от fah Посмотреть сообщение
эту проблему пытается решить другой сотрудник,
ждем новых участников форума с вопросами вывода в эксель)
Сергей812 вне форума  
 
Непрочитано 06.10.2016, 17:54
#3059
fah


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


Собственно вот код:

p.s. выложил картинкой, потому что не удалил комментарии. Пусть лучше всё будет видно.
Миниатюры
Нажмите на изображение для увеличения
Название: код.jpg
Просмотров: 36
Размер:	212.5 Кб
ID:	177336  
fah вне форума  
 
Непрочитано 06.10.2016, 18:05
#3060
Сергей812


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


1. типичная задача сбора данных для спецификации - извлечение данных чего не используете то?
2. думал, что выбор осуществляете ssget с ключем X и фильтром на вставки блоков. У вас свой подход)
Сергей812 вне форума  
Ответ
Вернуться   Форум 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