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

Вернуться   Форум 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.
Просмотров: 2048500
 
Непрочитано 19.03.2015, 13:31
#2521
mkung


 
Регистрация: 05.09.2007
RUSSIA
Сообщений: 166


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну что-то типа этого
Это имеете в виду?

(command "_insert" "Vyn" po 1 1 0 bl_name V)
"_insert" – стандартная команда Автокад вставки блока;
"Vyn" – имя вставляемого блока;
(Если папка, в которой находится блок не прописана вспомогательных путях Автокад,
в качестве имя нужно указать полный путь к файлу “D:\MyLisp\Vyn.dwg”)
рo – базовая точка вставки блока;
1 – масштабный коэффициент по оси X;
1 – масштабный коэффициент по оси Y;
0 – угол поворота блока в радианах;
bl_name – значение верхнего атрибута;
V – значение нижнего атрибута;

Вот только вместо установки атрибутов при данном варианте вылазит окно редактирования атрибутов.
mkung вне форума  
 
Непрочитано 19.03.2015, 13:57
#2522
Vladimir_Sergeevich

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


может поможет _-insert?
хотя у меня окно вылетает только при вставке с палитры, а с инсерта в текстовом режиме. может какие то настройки системы влияют?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 19.03.2015, 14:07
#2523
Кулик Алексей aka kpblc
Moderator

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


attreq в 0 - и используй командные методы
Или entmake / entmakex / ActiveX, ему фиолетово на эти переменные
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.03.2015, 14:56
#2524
Сергей812


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


Цитата:
Сообщение от mkung Посмотреть сообщение
Это имеете в виду?
Вот только вместо установки атрибутов при данном варианте вылазит окно редактирования атрибутов.
Ну, например, вот так

Код:
[Выделить все]
 (defun c:InsertMyBlock( / acad_object active_document model_space bl_Vs po atr1 atr2)
(vl-load-com)
; Получаем доступ к пространству модели
(setq acad_object (vlax-get-acad-object))                   
(setq active_document (vla-get-activedocument acad_object)) 
(setq model_space (vla-get-modelspace active_document)) 
;Вставляем блок с пустыми атрибутами
(setq po (getpoint "Точка вставки блока:"))
(setq bl_Vs (vla-insertblock model_space (vlax-3d-point po) "324532" 1.0 1.0 1.0 0))
; Получаем атрибуты вставленного блока
(setq atr1 (car(vlax-safearray->list(vlax-variant-value(vla-getattributes bl_Vs)))))     
(setq atr2 (car(cdr(vlax-safearray->list(vlax-variant-value(vla-getattributes bl_Vs))))))
;Изменяем значение атрибутов
(vlax-put-property atr1 'TextString "Value1")
(vlax-put-property atr2 'TextString "Value2")
)
где: "324532" - имя вставляемого блока с двумя атрибутами (к примеру)
"Value1" и "Value2" - значения атрибутов
Сергей812 вне форума  
 
Непрочитано 19.03.2015, 15:17
#2525
mkung


 
Регистрация: 05.09.2007
RUSSIA
Сообщений: 166


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
attreq в 0 - и используй командные методы
Или entmake / entmakex / ActiveX, ему фиолетово на эти переменные
Спасибо, но за окна отвечает ATTDIA (помогло).

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну, например, вот так

Код:
[Выделить все]
 (defun c:InsertMyBlock( / acad_object active_document model_space bl_Vs po atr1 atr2)
(vl-load-com)
; Получаем доступ к пространству модели
(setq acad_object (vlax-get-acad-object))                   
(setq active_document (vla-get-activedocument acad_object)) 
(setq model_space (vla-get-modelspace active_document)) 
;Вставляем блок с пустыми атрибутами
(setq po (getpoint "Точка вставки блока:"))
(setq bl_Vs (vla-insertblock model_space (vlax-3d-point po) "324532" 1.0 1.0 1.0 0))
; Получаем атрибуты вставленного блока
(setq atr1 (car(vlax-safearray->list(vlax-variant-value(vla-getattributes bl_Vs)))))     
(setq atr2 (car(cdr(vlax-safearray->list(vlax-variant-value(vla-getattributes bl_Vs))))))
;Изменяем значение атрибутов
(vlax-put-property atr1 'TextString "Value1")
(vlax-put-property atr2 'TextString "Value2")
)
где: "324532" - имя вставляемого блока с двумя атрибутами (к примеру)
"Value1" и "Value2" - значения атрибутов
Спасибо. Уже сделал командными методами, но этот вариант мне о-о-чень интересен!
mkung вне форума  
 
Непрочитано 19.03.2015, 15:31
#2526
Кулик Алексей aka kpblc
Moderator

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


mkung, attdia - за окно, а attreq - за запрос значений атрибутов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.03.2015, 07:25
#2527
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Вопрос к спецам по лиспу, как думаете...интересно просто в плане реализации (возможно/невозможно):

есть параметрический объект СПДС Графикса...арматурный стержень...фактически - отрезок, обладающий доп свойствами. Хотелось бы его удлинять и обрезать, но понятно что стандартные команды Автокада этого не делают. Возможно ли решить проблему с помощью лиспа?
Растягивание же работает...

Последний раз редактировалось Konstruktiv54, 20.03.2015 в 07:39.
Konstruktiv54 вне форума  
 
Непрочитано 20.03.2015, 10:20
1 | #2528
Сергей812


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


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
параметрический объект СПДС Графикса
это прокси объект, скорее всего. Lisp с ними не работает
Сергей812 вне форума  
 
Непрочитано 20.03.2015, 10:34
1 | #2529
Кулик Алексей aka kpblc
Moderator

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


Если СПДС GraphiCS установлена и загружена, то этот объект перестает быть прокси. Некоторые его свойства можно будет менять (ну или по крайней мере пытаться). Правда, для этого понадобится читать массу документации
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.03.2015, 10:41
#2530
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если СПДС GraphiCS установлена и загружена, то этот объект перестает быть прокси
Всегда думал-что загрузка приложения-источника прокси (енеблара) помогает получить доступ к свойствам прокси-объектов, а не преобразует их в примитивы автокада..
Сергей812 вне форума  
 
Непрочитано 20.03.2015, 10:47
#2531
Кулик Алексей aka kpblc
Moderator

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


Не преобразовывает, это точно. Но "закрытые" свойства становятся доступными )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.03.2015, 17:36
#2532
Vladimir_Sergeevich

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


Подскажите пожалуйста, как проще добраться до точки центра и радиуса дугового сегмента полилинии lwpolyline: через dxf (есть там свойство 42 bulge и что он показывает я не очень понял) или activX (к чему я больше склоняюсь)?
Для activeX скорее всего надо копать в сторону vlax-curve-getSecondDeriv. только вот есть ли вторая производная у круга? что то я слабоват в математике стал...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 20.03.2015 в 18:11.
Vladimir_Sergeevich вне форума  
 
Непрочитано 20.03.2015, 20:01
1 | #2533
skkkk


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


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
...есть там свойство 42 bulge и что он показывает я не очень понял...
О том, что такое bulge, неплохо написано здесь, например.
Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
...как проще добраться до точки центра и радиуса дугового сегмента полилинии...
Лисп. Полилиния
skkkk вне форума  
 
Непрочитано 22.03.2015, 17:08
#2534
Alexll


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


Научите как из AutoLisp работать с базой данных.
Сам не программист, в AutoLisp то же новичок. Хотел написать программку облегчающую жизнь, данные сбрасывал в текстовый файл. Но очень уж неудобно работать с текстовым файл.
Просмотрел команды AutoLispa и не увидел в нем специальных команд для работы с базами данных. Подскажите с какими базами проще работать SQL, Excel? И если можно то ссылки или примеры. Спасибо.
Alexll вне форума  
 
Непрочитано 22.03.2015, 17:28
#2535
Сергей812


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


Вы польстили Excel - он не разу БД не был)

А в целом-какая задача, в каком виде вводятся данные и выводятся. Кстати, текстовой документ с регулярной структурой можно легко импортировать в тот же эксель. И вы хоть что-то написали, или все закончилось на уровне хотелок?)
Сергей812 вне форума  
 
Непрочитано 22.03.2015, 17:44
#2536
Alexll


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


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

Так что в целом задача засунуть проект в базу данных, что бы данные измененные в одном месте, менялись во всем проекте....
Alexll вне форума  
 
Непрочитано 22.03.2015, 17:47
#2537
Сергей812


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


хм.. а поля чем не угодили?)
Сергей812 вне форума  
 
Непрочитано 22.03.2015, 17:51
#2538
Alexll


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


Какие поля? наверно я просто об этом ничего не знаю...
Alexll вне форума  
 
Непрочитано 22.03.2015, 17:55
#2539
Сергей812


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


В костроке autocad наберите _field.

----- добавлено через ~8 мин. -----
Если нужно оформление одинаковое оформление - то подшивка и настроенные листы, например. Если нужно сразу во многих местах чертежа иметь одинаковые значения - то дублирующиеся значения в виде полей, ссылающихся на то же пользовательское свойство чертежа. Не надо считать-что только лисп и программирование в целом является панацеей от всего.
Сергей812 вне форума  
 
Непрочитано 22.03.2015, 18:08
#2540
Alexll


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


Да, штука хорошая. То же только недавно узнал. В нашей конторе никто ничем подобным не пользуется, поэтому спросить не у кого.
Но и "поля" я могу только использовать когда исходное значение в таблице. А вот когда значение написано отдельной текстовой строкой делать "ссылку" на эту строку у меня так и не получилось.
Может посоветуете литературу какую по автокаду? А то чувствую у меня много пробелов.
Alexll вне форума  
Ответ
Вернуться   Форум 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