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

Вернуться   Форум 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.
Просмотров: 2055086
 
Старый 06.02.2023, 10:46
1 | #4341
Сергей812


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


_CP - это захватывает объекты, находящиеся внутри полигона полностью и частично (т.е. пересекающие его).
_WP - только те объекты, которые полностью внутри полигона.

экспериментируйте - что даст приемлемую погрешность выбора.

Последний раз редактировалось Сергей812, 06.02.2023 в 10:52.
Сергей812 вне форума  
 
Старый 06.02.2023, 10:49
#4342
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 110


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Чисто теоретически можно высчитать несколько десятков точек (так сказать, аппроксимировать окружность полигоном) и выбирать уже не через _W, а через _CP (кажется, так)
да, поначалу думал с помощью -ConvTo2d из PL-tools получить вместо круга полилинию и уже использовать "_CP"
но все-же проще оказалось просто получить координаты 2-х точек диагоналей "квадрата описывающий круг" и использовать "_W"
Sege вне форума  
 
Старый 06.02.2023, 10:53
#4343
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
_CP - это захватывает объекты, находящиеся внутри полигона полностью и частично (т.е. пересекающие его).
_WP - только те объекты, которые полностью внутри полигона.

экспериментируйте - что даст приемлемую погрешность выбора.

----- добавлено через ~2 мин. -----
в случае прямоугольного окна и _CP больше риск "подцепить" примитивы из углов вне окружности.
Ага, спасибо. Сто лет уже не пользовался подобными опциями.
---
Правда, надо помнить, что при таких методах выбора надо, чтобы вся область была на экране.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 06.02.2023, 11:17
#4344
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 141


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Правда, надо помнить, что при таких методах выбора надо, чтобы вся область была на экране.
Только не для последних версий AutoCAD
lenivec вне форума  
 
Старый 06.02.2023, 11:26
#4345
Кулик Алексей aka kpblc
Moderator

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


Не уверен, если честно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 06.02.2023, 12:14
#4346
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,813


очень зря) _cp точно.
__________________
K Lisp
koMon вне форума  
 
Старый 07.02.2023, 16:08
#4347
Konstr_pgs


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


Как тексту поменять выравнивание, подскажите пожалуйста. Есть часть кода:
Код:
[Выделить все]
 ":column {label=\" Параметры текста\";" 
":row {"
":text {label= \" Слой: \"; width=20;}"
":popup_list {key=\"b1\"; is_enabled=true; label=\"\"; list=\"\"; width=30;}"
 "}"
":row {"
":text {label= \" Стиль текста: \"; width=20;}"
":popup_list {key=\"b2\"; is_enabled=true; label=\"\"; list=\"\"; width=30;}"
"}"
":edit_box {label= \" Высота текста: \"; key=\"b3\"; value=\"\"; edit_width=28; edit_limit=60;}"
":edit_box {label= \" Сжатие: \"; key=\"b4\"; value=\"\"; edit_width=28; edit_limit=60;}"
Текст с такими параметрами имеет выравнивание "середина влево"(ml), как это исправить на "середина по центру" (mc)?
Здесь нет ml (Middleleft)? Или нужен какой-то цифровой код?
Konstr_pgs вне форума  
 
Старый 07.02.2023, 16:18
1 | #4348
Кулик Алексей aka kpblc
Moderator

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


dcl как dcl. В чем трудность пока не понимаю.
https://www.google.com/search?q=autolisp+dcl+alignment
https://www.cadtutor.net/forum/topic...gnment-column/
https://www.afralisp.net/archive/lispa/lisp49a.htm
Ну и так далее.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 07.02.2023, 16:46
#4349
Konstr_pgs


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В чем трудность пока не понимаю
В какой строке "сидит" это выравнивание в данном коде?
Konstr_pgs вне форума  
 
Старый 07.02.2023, 16:51
1 | #4350
Кулик Алексей aka kpblc
Moderator

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


alignment где ж еще. По ссылкам проходил? Смотрел что там предлагается?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 07.02.2023, 20:01
#4351
Konstr_pgs


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


здесь alignment=centered (середина влево)
Код:
[Выделить все]
  "}"
              "spacer_1;"
              "ok_cancel;"
           "}"                                                                                 

        "Error_Nachzn: dialog"
            "{label = \"Ошибка типа\";"
               "spacer;"
               ":text_part {label=\"Ошибка: В поле <Нач. значение> введите числовое значение\"; key=\"c1\"; alignment=centered;}"
               "spacer;"
               "ok_button;"
            "}"
а как записать середина по центру?
Konstr_pgs вне форума  
 
Старый 07.02.2023, 20:21
1 | #4352
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,813


никак. нужно имхо строить многоуровневые кластеры.
__________________
K Lisp
koMon вне форума  
 
Старый 07.02.2023, 20:44
1 | #4353
Кулик Алексей aka kpblc
Moderator

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


https://www.cadtutor.net/forum/topic...alignment-dcl/ ?
Offtop: Я сейчас не занимаюсь dcl, и прилично все позабыл.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 07.02.2023, 21:11
#4354
Konstr_pgs


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


Цитата:
Сообщение от koMon Посмотреть сообщение
никак. нужно имхо строить многоуровневые кластеры
Всё так сложно???
Konstr_pgs вне форума  
 
Старый 07.02.2023, 21:41
#4355
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,813


не то чтобы сложно, но как-то очень не современно(
__________________
K Lisp
koMon вне форума  
 
Старый 14.02.2023, 11:20
#4356
Shox


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


Здравствуйте.
Не могу разобраться, почему при сохранении чертежа например в C:\Folder\Чертеж.dwg
и выполнении команды "vl-directory-files" я вижу список файлов и папок в Моих документах, но если я повторно открываю этот чертеж, команда выдает список файлов и папок в C:\Folder\ как мне было нужно.
тоже самое с "findfile"

И еще вопрос. Как правильно объяснить автолиспу, что последующий код нужно выполнять только после того, как отработал скрипт на питоне "(command "_.shell" "python convert.py")". Я Сделал это через создание вспомогательного файла в директории с проектом, но что то мне подсказывает это не самый лучший вариант)
Shox вне форума  
 
Старый 15.02.2023, 09:33 Помощь с кодом
#4357
bloodassasinv


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


Добрый день, пробую изучать лисп. Хочу создать программу которая будет копировать объекты в буфер обмена с базовой точкой 0 0 0. Как не тыкаюсь-получаю ошибки(как минимум в 6 строке, дальше отладку не делал), в общем доступе найти решение не получилось, прошу помочь.
Код:
[Выделить все]
(defun c:copyto0 (/ ss obj newdoc objname objlist cmd)
  (setq ss (ssget))
  (if ss
    (progn
      (setq newdoc (vla-get-activedocument (vlax-get-acad-object)))
      (setq obj (vlax-invoke-method newdoc 'CopyObjects ss newdoc))
      (vlax-invoke-method newdoc 'SetVariable "UCSNAME" "0,0,0")
      (setq obj (vlax-invoke-method obj 'Explode))
      (setq objlist '())
      (foreach o obj
        (setq objname (vla-get-objectname o))
        (setq objlist (cons (strcat "\"" objname "\"") objlist))
      )
      (setq cmd (strcat "_copyclip " (apply 'strcat (reverse objlist))))
      (vlax-release-object newdoc)
      (vlax-release-object obj)
      (vl-cmd cmd)
      (princ "Selected objects copied to clipboard with 0,0,0 UCS.")
    )
    (princ "No objects selected.")
  )
  (princ)
)
Вложения
Тип файла: lsp copy000.lsp (818 байт, 7 просмотров)

Последний раз редактировалось bloodassasinv, 15.02.2023 в 09:38. Причина: добавил код в текстовом виде
bloodassasinv вне форума  
 
Старый 15.02.2023, 10:07
#4358
Shox


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


Цитата:
Сообщение от bloodassasinv Посмотреть сообщение
Хочу создать программу которая будет копировать объекты в буфер обмена с базовой точкой 0 0 0.
Если только это
Код:
[Выделить все]
 
(defun c:copyto0 (/ ss )
  (setq ss (ssget))
  (command "_.copybase" '(0.0 0.0 0.0) ss "")
)
Shox вне форума  
 
Старый 15.02.2023, 10:15
#4359
bloodassasinv


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


Цитата:
Сообщение от Shox Посмотреть сообщение
Если только это
Код:
[Выделить все]
 
(defun c:copyto0 (/ ss )
  (setq ss (ssget))
  (command "_.copybase" '(0.0 0.0 0.0) ss "")
)
Супер, спасибо! Сравниваю ваш код со своим.. куда-то я совсем не туда полез
bloodassasinv вне форума  
 
Старый 15.02.2023, 11:25
#4360
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,813


Цитата:
Сообщение от Shox Посмотреть сообщение
в C:\Folder\ как мне было нужно
(vl-directory-files "c:\\folder")
__________________
K Lisp
koMon вне форума  
Ответ
Вернуться   Форум 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