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

Вернуться   Форум 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.
Просмотров: 1965735
 
Непрочитано 24.03.2012, 23:04
#1861
Олег (jr.)

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


Цитата:
Сообщение от baaba Посмотреть сообщение
Не подходит, так как запускает в excel файл, в то время как от и так открыт. Есть ещё варианты?
Посмотри еще раз я добавил примеры и немного функций

~'o'~
Вложения
Тип файла: zip XLFIXOLIB.zip (16.1 Кб, 91 просмотров)

Последний раз редактировалось Олег (jr.), 27.03.2012 в 00:29.
Олег (jr.) вне форума  
 
Непрочитано 26.03.2012, 13:56
#1862
Pavel_GP

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


Почему так
Код:
[Выделить все]
 (setq rrr (* (- 48.69 (fix 48.69)) 100.))
  (setq rrrr (fix rrr))
Итог 68, а должно быть 69
при том же 19,29,69,79 превращаются в 18,28,68,78. С остальными все норм. Зависимость через 50.

Последний раз редактировалось Pavel_GP, 26.03.2012 в 14:14.
Pavel_GP вне форума  
 
Непрочитано 26.03.2012, 14:24
#1863
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Почему так
Код:
[Выделить все]
 (setq rrr (* (- 48.69 (fix 48.69)) 100.))
  (setq rrrr (fix rrr))
Итог 68, а должно быть 69
при том же 19,29,69,79 превращаются в 18,28,68,78. С остальными все норм. Зависимость через 50.
Потому что, гладиолус.
(fix rrr) возвращает 68, а не 69 потому что так и должно быть, потому что rrr равно не 69.0
Код:
[Выделить все]
 
$ (setq rrr (* (- 48.69 (fix 48.69)) 100.))
69.0
_$ (- 69.0 rrr)
2.27374e-013 ; т. е. rrr чуть меньше 69.0, а значит (fix rrr) равно 68!!!
_$ (fix 69.0)
69
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 26.03.2012, 14:46
#1864
Pavel_GP

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


спс.
А как же мне выловить эту разницу, и добиться 69. Чтоб эта разница сама высчитывалась. Конечный результат должен быть десятая.
Pavel_GP вне форума  
 
Непрочитано 26.03.2012, 14:46
#1865
Дима_

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


Это прикол округления (и не только округления) чисел с плавающей точкой.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.03.2012, 14:54
#1866
Pavel_GP

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


Написал функцию, вроде робит=)
Код:
[Выделить все]
 (defun d_cel (sek)
    (setq rrr (* (- sek (fix sek)) 100.))
    (setq rrr1 (- rrr (fix rrr)))
    (setq rrr (fix (+ rrr rrr1)))
    )

  (d_cel 48.69)
Pavel_GP вне форума  
 
Непрочитано 26.03.2012, 14:55
#1867
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Это прикол округления (и не только округления) чисел с плавающей точкой.
ИМХО, это больше прикол представления чисел с плавающей точкой.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 26.03.2012, 14:59
#1868
Pavel_GP

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


Советуете числа писать например 100.0 или 100 (без точки). Как правильнее.
Pavel_GP вне форума  
 
Непрочитано 26.03.2012, 21:02
#1869
Кулик Алексей aka kpblc
Moderator

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


По округлению в библиотеке готовых функций было решение.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.04.2012, 11:11
#1870
InFlames


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


Посоветуйте какие команды мне нужны для написания следующего лиспа. Буду пытаться разобраться.

Необходимо выбранные объекты (заштрихованные окружности) расставить по вершинам полилиний. При этом полилиния может быть не одна, а несколько.
Спасибо.
InFlames вне форума  
 
Непрочитано 14.04.2012, 18:52
#1871
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от InFlames Посмотреть сообщение
Посоветуйте какие команды мне нужны для написания следующего лиспа. Буду пытаться разобраться.

Необходимо выбранные объекты (заштрихованные окружности) расставить по вершинам полилиний. При этом полилиния может быть не одна, а несколько.
Спасибо.
InFlames, есть готовое решение Вставка объектов под заданным углом к кривой
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.04.2012, 19:00
#1872
InFlames


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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Спасибо, это я видел. Хорошая программа. Но для меня она немного нагружена лишними функциями. Написав свою программу я убью двух зайцев: найду простое решение для своей задачи и получу опыт в написании программы на лиспе. Только для начала, чтобы не тратить много времени на поиски нужных команд, хотелось бы получить совет о том, какие команды для начала нужны именно в этой задаче.

ДОБАВЛЕНО:
Нашел примеры, в чем-то сам разобрался. Как теперь это можно ускорить?
Если выбирать одну полилинию с двумя вершинами все быстро, но если вершин 100, то процесс виден невооруженным глазом.
Код:
[Выделить все]
(defun C:dots (/ x lst en)
  (setq i -1)
  (setq lst (ssget))
  (while (setq en (ssname lst (setq i (1+ i))))
    (foreach x (getCoord en)
      (command "_CIRCLE"
	       (list (atof (rtos (car x))) (atof (rtos (cadr x))))
	       "0.2"
      )
      (command "_-HATCH" "_p" "_s" "_s" (entlast) "" "")
    )
  )
)

(defun getCoord	(pl / pl)
  (vl-load-com)

  (or (eq 'VLA-OBJECT (type pl))
      (setq pl (vlax-ename->vla-object pl))
  )

  (if (eq "AcDbPolyline" (vla-get-ObjectName pl))
    (vlax-list->2D-point
      (vlax-get pl 'Coordinates)
    )
    nil
  )
)

(defun vlax-list->2D-point (lst)
  (if lst
    (cons (list (car lst) (cadr lst))
	  (vlax-list->2D-point (cddr lst))
    )
  )
)

Последний раз редактировалось InFlames, 15.04.2012 в 01:38.
InFlames вне форума  
 
Непрочитано 03.05.2012, 13:17
#1873
ashas-


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


Здраствуйте. Возник такой вопрос, буду очень благодарен и признателен, если вы поможете мне найти ответ.

Где хранится информация о группах (команда "группа"), и как ее с помощью лиспа можно достать? Объекты, имя группы, пояснение?
ashas- вне форума  
 
Непрочитано 03.05.2012, 13:32
1 | #1874
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от ashas- Посмотреть сообщение
Здраствуйте. Возник такой вопрос, буду очень благодарен и признателен, если вы поможете мне найти ответ.

Где хранится информация о группах (команда "группа"), и как ее с помощью лиспа можно достать? Объекты, имя группы, пояснение?
Почитай эту тему
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 15.07.2012, 22:09
#1875
Никита Ремизов


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


Есть блок атрибутам которого присвоены определенные значения. Хочется написать лисп, который на основании этих значений вставлял бы в определенное место листа другие блоки. Подскажите пожалуйста в каком направлении копать, какие примеры глянуть и т.п.
Никита Ремизов вне форума  
 
Непрочитано 15.07.2012, 22:53
#1876
Кулик Алексей aka kpblc
Moderator

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


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


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


Пожалуйста подскажите как сделать или дайте кусочек кода примерный. Необходимо лиспом прочитать значение атрибута у блока, и на основе этого значения вставить другой блок, для которого прочитанное значение будет названием
Никита Ремизов вне форума  
 
Непрочитано 25.08.2012, 16:21
#1878
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Никита Ремизов,

совет - ищи тему по своему вопросу: забей в поиске присвоить значение атрибуту блока и ищи, а вообще читай справку - когда научишься в ней ориентироваться, то большинство вопросов сами уйдут (тока вот она на английском)
Frigate вне форума  
 
Непрочитано 26.08.2012, 22:58
#1879
Никита Ремизов


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


Спасибо за совет, но вы видимо не прочитали, что мне нужно.

И о какой справке идет речь?
Никита Ремизов вне форума  
 
Непрочитано 26.08.2012, 23:25
#1880
Кулик Алексей aka kpblc
Moderator

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


Никита Ремизов, http://www.google.ru/cse?cx=partner-...tes&gsc.page=1
__________________
Моя библиотека 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