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

Вернуться   Форум 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.
Просмотров: 2055427
 
Старый 31.10.2011, 12:59
#1701
Michael!

инженер
 
Регистрация: 29.01.2009
Тамбов
Сообщений: 63


Спасибо всем!
сделал так:
Код:
[Выделить все]
 (setq obj (vlax-ename->vla-object (entlast)))
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
(setq minb(vlax-safearray->list minpoint))
(setq maxb(vlax-safearray->list maxpoint))
работает
Michael! вне форума  
 
Старый 31.10.2011, 15:19
#1702
gomer

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


Если
Цитата:
Сообщение от Michael! Посмотреть сообщение
он создается копированием
через ActiveX, то первая строка не нужна
gomer вне форума  
 
Старый 10.11.2011, 23:50
#1703
Michael!

инженер
 
Регистрация: 29.01.2009
Тамбов
Сообщений: 63


наверное только я тут вопросы задаю
проблемка сейчас возникла такая:
схраняю в файл dxf некоторое количество примитивов. выбираю рамкой все, а потом на что ненужное снимаю выделение.
Код:
[Выделить все]
 
(command "saveas" "dxf" "objects" "w" pause pause pause "version" ver "16" filename)
(тут version и filename переменные)
но как то неправильно тут, потому прога не ждет пока я закончу с выделениями и нажму enter или правую кнопку, а сразу переходит на шаг вперед, в результате неправильное выполнение команды.
подскажите, как написать чтобы программа ожидала окончания работ по выделению или снятия выделения с примитивов.
спасибо!
Michael! вне форума  
 
Старый 10.11.2011, 23:52
#1704
Кулик Алексей aka kpblc
Moderator

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


(setq ss (ssget))
(command "_.-saveas" "dxf" "_objects" ss "" "version" ver "16" filename)

Наверное, так...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 11.11.2011, 00:03
#1705
Michael!

инженер
 
Регистрация: 29.01.2009
Тамбов
Сообщений: 63


спасибо! то что нужно.
Michael! вне форума  
 
Старый 14.11.2011, 15:42
#1706
Vladimir_Sergeevich

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


Подскажите пожалуйста, можно ли из такого бреда:
Цитата:
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px;
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span
style=\" font-family:'Arial'; font-size:10pt;
color:#000000;\">176,98</span></p></td>"
вытащить число 176,98?
Опыта пока нет, мозг пасует...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Старый 14.11.2011, 15:51
#1707
Кулик Алексей aka kpblc
Moderator

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


Как вариант - преобразовать строку в список по разделите span и вытащить второй элемент.
Пишу с телефона, так что кода не будет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 14.11.2011, 15:54
#1708
Дима_

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


Как html получили? Быть может применить методы "долиспового" распознавания, ведь совсем не факт, что форматирование "там" никогда не изменится.
Там </td> виднеется - я б через таблицы пошел.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Старый 14.11.2011, 16:17
#1709
Кулик Алексей aka kpblc
Moderator

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


Судя по стилю html-кода, он сформирован автоматически чем-нибудь типа MS Word. Или FrontPage. Так что "долисповое" распознавание вряд ли сработает
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 14.11.2011, 16:32
#1710
Дима_

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


Тады тем более - может обратится к "из чего сформирован".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Старый 14.11.2011, 17:43
#1711
Кулик Алексей aka kpblc
Moderator

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


Дима_, да в Word'e просто наколотили текст, а потом страницу сохранили как html... Тоже вариант (с)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 14.11.2011, 17:58
#1712
Дима_

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


Если так - то для чего это сделано (может - чтоб лиспом можно было вытащить - бывают и такие "деятели" встречаются). Разбирать из-за вылавливания пары чисел весь синтаксис HTML автолиспом я бы точно не стал (а не разбирая ВЕСЬ гарантий никаких не будет). Вариантов масса - обратится к первоисточнику (если это действительно Word), WebBrowser.Document.All... выбираем нужную табличку (пусть даже многократновложенную)... нужную ячейку...OuterText(или как он там - суть понятна) - короче вариантов масса.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Старый 14.11.2011, 21:28
#1713
gomer

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


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
Подскажите пожалуйста, можно ли из такого бреда:
Ctrl+A
Ctrl+C
Ctrl+V
Ctrl+S
gomer вне форума  
 
Старый 15.11.2011, 08:36
#1714
Vladimir_Sergeevich

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


Эту таблицу выкидывает программа... для образца мне дали файлик на сотню+ точек, на каждую точку(строку таблицы) 6 значений (полей) мне бы разобраться как из строки вытащить искомый ткст, а там дальше разберусь...
Вложения
Тип файла: rar ведомость.rar (22.9 Кб, 66 просмотров)
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 15.11.2011 в 09:16.
Vladimir_Sergeevich вне форума  
 
Старый 15.11.2011, 10:19
1 | #1715
Дима_

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


Твоя ведомость "на ура" открывается excel'ем - а уж как из него вытщить данные страниц 500 на форуме.
p.s. Offtop: По просьбе из лички
Код:
[Выделить все]
 (vl-load-com)
(defun html-export(path)
  ((lambda (excel)
     (vlax-invoke-method (vlax-get-property excel 'Workbooks) 'Open path)
     ((lambda (ret)
        (vlax-invoke-method excel 'Quit)
        ret)
      (mapcar '(lambda (row) (mapcar 'vlax-variant-value row))
              (vlax-safearray->list
               (vlax-variant-value
                (vlax-get-property
                 (vlax-get-property
                  (vlax-get-property
                   (vlax-get-property excel 'Worksheets) 'Item 1) 'UsedRange) 'Value))))))
   (vlax-create-object "excel.application")))
пример запуска
Код:
[Выделить все]
 ((lambda (path) (if path (html-export path)))
  (getfiled "Выберите файл" "" "html" 0))
Функция не конечная (не для юзера) - никаких проверок на наличие файла и пр - нет (сам делай).
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 15.11.2011 в 11:46.
Дима_ вне форума  
 
Старый 23.11.2011, 00:48
#1716
Michael!

инженер
 
Регистрация: 29.01.2009
Тамбов
Сообщений: 63


доброго времени суток!
образовался такой вопрос: как присвоить значение имеющееся в данный момент в буфере обмена виндовс (например "тест109") переменной в лиспе?
спасибо!
Michael! вне форума  
 
Старый 23.11.2011, 10:17
#1717
VVA

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


>Michael!
Воспользоваться поиском по сочетанию "буфер обмена"
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Старый 23.11.2011, 11:35
#1718
Дима_

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


"Прямого" метода доступа к буферу обмена в автолиспе нет, есть команды для вставки в рисунок содержимого буфера (не обязательно текста) - то есть можно попробывать что-то вроде:
Код:
[Выделить все]
 (defun get-text-clipboard ()
  ((lambda (ent-last)
     (command "_.pasteclip" '(0 0))
     (if (not (equal ent-last (entlast)))
         ((lambda (text)
            (entdel (entlast))
            text)
          (cdr (assoc 1 (entget (entlast)))))))
   (entlast)))
но, метод этот скажем прямо - только если от безисходности, как вариант погуглить (а они 100% были) специальные COM dll'ки для работы с буфером обмена и использовать их через vla, ну или загружать net сборку:
Код:
[Выделить все]
module Clipboard.Clip
  open System.Windows.Forms
  open Autodesk.AutoCAD.DatabaseServices
  open Autodesk.AutoCAD.Runtime
  [<LispFunction("GetTextClipboard")>]
  let Test (x:ResultBuffer) =
      TypedValue(5005,Clipboard.GetText())
это F# - могу скомпилировать только под 2010 (другого сейчас нет - как скомпилировать самому - без труда найдешь в сети) - после загрузки появиться lisp команда (GetTextClipboard) возвращающая текстовое содержимое буфера обмена (или "" - если пусто).
Цитата:
как присвоить значение имеющееся в данный момент в буфере обмена виндовс (например "тест109") переменной в лиспе?
все таки видимо это неизлечимая очень заразная болезнь - почему если нужно какое нибудь значение - его обязательно надо присваивать переменной?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Старый 23.11.2011, 15:45
#1719
VVA

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
после загрузки появиться lisp команда (GetTextClipboard) возвращающая текстовое содержимое буфера обмена (или "" - если пусто)
Можно и без F# До текста в буфере обмена можно добраться с помощь объекта InternetExplorer.Application (хуже) и htmlfile (предпочтительнее)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Старый 23.11.2011, 16:27
#1720
Дима_

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


Цитата:
Сообщение от VVA Посмотреть сообщение
InternetExplorer.Application (хуже) и htmlfile (предпочтительнее)
то VVA - Да сам я этот Net (в разрезе автокада) недолюбливаю, но иногда "приходиться", ежели у Вас есть набор ссылок на "интересные" COM'ы (которые и так предустановленны "на каждом" компьютере) - сбростье мне (можно сюда), а то иной раз не хочется ни к чему "дополнительному" привязываться, да и на лиспе "городить" типа кода из предыдущего поста.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум 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