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

Вернуться   Форум 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.
Просмотров: 1973864
 
Непрочитано 17.03.2012, 12:59
#1841
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 644
<phrase 1= Отправить сообщение для baaba с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Дима_, лично я вполне допускаю мысль, что приведен намеренно упрощенный пример. Возможно, даже "переупрощенный"
Спасибо за понимание! Вот пример кода:
http://pastebin.com/GvcZWHmK
Там три функции. Одна рисует многострочный текст, другая расставляет текст по списку точек горизонтально, третья - расставляет строки вертикально (я делаю небольшой лиспик для вставки спецификаций из csv, да велосипед, но мне нужно что бы велик был удобен мне). Из первой функции "насквозь", в числе прочих, идёт переменная "th" высота текста. Я думаю в данном случае имеет смысл оформлять её как [bold]внешнюю переменную[/bold], обнуляя её в конце работы программы, или делать "матрёшку" - функция в функции. Но матрёшка мне не очень нравится. Может быть есть какой-то третий путь, я что то упускаю?

Теперь у меня ещё одна проблема, есть лиспик:
http://elpanov.com/index.php?id=42#02

Он у меня прекрасно работает в Автокад 2004 под Windows:
 
(eea-get_xl_sheet (findfile "/home/ivan/work/sdata.xls") "sp1")


И возвращает ошибку в другой системе:
Код:
[Выделить все]
Command: (vl-load-com)
Command: (findfile "/home/ivan/work/sdata.xls")
"Z:\\home\\ivan\\work\\sdata.xls"
Command: (eea-get_xl_sheet (findfile "/home/ivan/work/sdata.xls") "sp1")
; error: bad argument type: VLA-OBJECT nil
Автокад 2000 под Wine.
Что это может быть? Может нехватает каких то библиотек?

И ещё: ищу примерчик DCL диалога, для просмотра названий листов в файле xls, с последующим выбором нужного листа, для подстановки в eea-get_xl_sheet, наверняка есть годный пример.
baaba вне форума  
 
Непрочитано 17.03.2012, 13:44
#1842
gomer

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


Вероятно, ключевое слово Wine. com - виндовая плюшка
насчет dcl так это не проблема. см. #1822
gomer вне форума  
 
Непрочитано 17.03.2012, 19:06
#1843
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от baaba Посмотреть сообщение









Цитата:





Сообщение от Кулик Алексей aka kpblc


Дима_, лично я вполне допускаю мысль, что приведен намеренно упрощенный пример. Возможно, даже "переупрощенный"




Спасибо за понимание! Вот пример кода:
http://pastebin.com/GvcZWHmK
Там три функции. Одна рисует многострочный текст, другая расставляет текст по списку точек горизонтально, третья - расставляет строки вертикально (я делаю небольшой лиспик для вставки спецификаций из csv, да велосипед, но мне нужно что бы велик был удобен мне). Из первой функции "насквозь", в числе прочих, идёт переменная "th" высота текста. Я думаю в данном случае имеет смысл оформлять её как [bold]внешнюю переменную[/bold], обнуляя её в конце работы программы, или делать "матрёшку" - функция в функции. Но матрёшка мне не очень нравится. Может быть есть какой-то третий путь, я что то упускаю?

Теперь у меня ещё одна проблема, есть лиспик:
http://elpanov.com/index.php?id=42#02

Он у меня прекрасно работает в Автокад 2004 под Windows:
Провайдер: Microsoft.Jet.OLEDB.4.0
может не работать с твоей версией Автокада, Widows здесь не причем,
по-крайней мере Windows 7 кушает его охотно вне Автокада
Олег (jr.) вне форума  
 
Непрочитано 17.03.2012, 19:37
#1844
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Провайдер: Microsoft.Jet.OLEDB.4.0
может не работать с твоей версией Автокада
Любому OleDb-провайдеру глубоко наплевать, кто с ним работает. Он "работников" и знать не должен. Ему нужен только правильный запрос.
Ошибки могут быть у клиентов провайдера.

В конкретном случае с функцией eea-get_xl_sheet и AutoCAD не при чем. Евгений совершенно правильно не использует штатные средства AutoCAD, а работает через ADO. Но его функцию надо с умом применять.

В этом кусочке кода
Код:
[Выделить все]
 (list ADOConnect
		     "Open"
		     (strcat "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
			     tbl
			     ";Extended Properties=;Excel 8.0;HDR=No"
		     ) ;_  strcat
		     "admin"
		     ""
		     nil
	       ) 
	     )
Записано Excel 8.0. А теперь, наверное, надо Excel 11.0 или еще какую версию, которая на компьютере есть. Возможно, определять программно.
ShaggyDoc вне форума  
 
Непрочитано 17.03.2012, 19:44
#1845
gomer

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


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Провайдер: Microsoft.Jet.OLEDB.4.0
может не работать с твоей версией Автокада, Widows здесь не причем,
А эксель какой? вышеупомянутая функция с экселями кроме 2003 работать стесняется
gomer вне форума  
 
Непрочитано 17.03.2012, 20:47
#1846
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 644
<phrase 1= Отправить сообщение для baaba с помощью Skype™


Может есть ещё какие-то наработки по вытягиванию данных напрямую из *.xls (желательно независимо от наличия в системе запущенного екселя)?
В принципе есть например такой парсер екселевских файлов:
http://www.wagner.pp.ru/~vitus/software/catdoc/
Вот такое ещё нашёл: http://web2.airmail.net/terrycad/LISP/GetExcel.lsp, но ещё не испробовал.

Последний раз редактировалось baaba, 17.03.2012 в 21:01.
baaba вне форума  
 
Непрочитано 17.03.2012, 21:29
#1847
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813



Посмотри здесь
http://www.theswamp.org/index.php?to...3934#msg463934
Олег (jr.) вне форума  
 
Непрочитано 19.03.2012, 15:34
#1848
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 644
<phrase 1= Отправить сообщение для baaba с помощью Skype™


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Посмотри здесь
Имеется ввиду вот это?
http://www.theswamp.org/index.php?to...3888#msg463888

Не подходит, так как запускает в excel файл, в то время как от и так открыт. Есть ещё варианты?
baaba вне форума  
 
Непрочитано 19.03.2012, 17:03
#1849
VVA

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


Здесь посмотри
Data reading from Microsoft Excel not using Excel.
Attribute Import/Export with Excel
Excel read and write LISP functions
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.03.2012, 20:05
#1850
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Любому OleDb-провайдеру глубоко наплевать, кто с ним работает. Он "работников" и знать не должен. Ему нужен только правильный запрос.
А теперь объсни это 64-битному Автокаду чтобы ему тоже было наплевать как работать
с Microsoft.Jet.OLEDB
Олег (jr.) вне форума  
 
Непрочитано 19.03.2012, 21:28
#1851
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
А теперь объсни это 64-битному Автокаду чтобы ему тоже было наплевать как работать
с Microsoft.Jet.OLEDB
Это забота программистов Autodesk, а не Microsoft
ShaggyDoc вне форума  
 
Непрочитано 20.03.2012, 01:33
#1852
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Имеется ввиду вот это?
http://www.theswamp.org/index.php?to...3888#msg463888

Не подходит, так как запускает в excel файл, в то время как от и так открыт. Есть ещё варианты?
Проверь еще раз я добавил несколько функций
Олег (jr.) вне форума  
 
Непрочитано 20.03.2012, 16:12
#1853
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Здравствуйте.
Подскажите плз команду, чтобы преобразовала число (пример: 0.5 или 4.32) в число 00.5 или 04.32. Необходимо два знака перед точкой.
спс
Pavel_GP вне форума  
 
Непрочитано 20.03.2012, 16:27
1 | #1854
Дима_

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


(defun test (x) (strcat (if (< x 10) "0" "") (rtos x)))
з.ы. с учетом отрицательных (defun test (x) (strcat (if (< x 0) "-" "") (if (< (abs x) 10) "0" "") (rtos (abs x))))
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 20.03.2012 в 16:34.
Дима_ вне форума  
 
Непрочитано 21.03.2012, 18:26
#1855
baaba

архитектор
 
Регистрация: 07.07.2007
Москва
Сообщений: 644
<phrase 1= Отправить сообщение для baaba с помощью Skype™


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Проверь еще раз я добавил несколько функций
Можно точный линк на код?
Вот это?
http://www.theswamp.org/index.php?to...3888#msg463888
У меня результат такой:
Код:
[Выделить все]
; error: Automation Error. Description was not provided.
Command: (load "read_excel")
nil
Код:
[Выделить все]
Command: (load "read_excel")
; error: bad argument type: VLA-OBJECT #<%catch-all-apply-error%>
Код на всякий случай вместе с *.xls во вложениях

А ещё непонятно для чего служат файлы *.cs? Вот например вот такой архивчик:
http://www.theswamp.org/index.php?ac...0;attach=14442
Код:
[Выделить все]
ExcelReader.cs
ExcelWriter.cs
LispFunctions.cs
ExcelLispEnglish.dll
Мне нужна функция GC-XLREAD
Вложения
Тип файла: zip test.zip (5.3 Кб, 49 просмотров)

Последний раз редактировалось baaba, 21.03.2012 в 19:36.
baaba вне форума  
 
Непрочитано 23.03.2012, 15:42
#1856
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Здравствуйте.
См. пример вложение.
Подскажите функцию построение по примеру:
Есть вертикальная линия. Необходимо построить на ней поперечные линии и подписи их. Подписи это координата по У (по возрастанию). Начало координаты м.б. любым не обязательно с "0" и чередование не обязательно через "1".
спс
Миниатюры
Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 57
Размер:	10.3 Кб
ID:	77024  
Pavel_GP вне форума  
 
Непрочитано 23.03.2012, 15:43
#1857
Кулик Алексей aka kpblc
Moderator

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


А как задаются точки и значения текстов?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.03.2012, 15:49
#1858
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А как задаются точки и значения текстов?
1. У начала линии есть координата (х;у) (0. 0.) и конец линии (0. 9.) (пример)
2. Значение текста есть координата по У.
3. Длина поперечной допустим в координатах (-1. 1. ) (1. 1.).......(-1. 8.) (1. 8.)
Pavel_GP вне форума  
 
Непрочитано 23.03.2012, 16:55
#1859
Кулик Алексей aka kpblc
Moderator

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


Имелось в виду - запрашивается у пользователя или вычисляется. Разница незначительная, конечно, но все равно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.03.2012, 17:56
#1860
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Имелось в виду - запрашивается у пользователя или вычисляется. Разница незначительная, конечно, но все равно
вычисляются,
известны координаты начало и конца линии, как таковой линии может не быть и вообще. Линия показывает границу вычерчивания поперечников
Pavel_GP вне форума  
Ответ
Вернуться   Форум 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