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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп, выделяющий отверстия диаметром 8мм

Нужен лисп, выделяющий отверстия диаметром 8мм

Ответ
Поиск в этой теме
Непрочитано 08.02.2011, 12:01 #1
Нужен лисп, выделяющий отверстия диаметром 8мм
voverrr
 
гастарбайтер понаехал
 
Маскво
Регистрация: 07.12.2009
Сообщений: 272

И грустно и стыдно, но приходится признаться, что лиспу обучиться у меня ну никак не получается. Уж и книжками обложился, и уроков накачал, и сайты лиспописателей перешерстил - ни в какую. Даже простой квадратик нарисовать программно не получается. Не сказать чтобы я совсем тупой: на дельфи худо-бедно для себя делаю какие-то приложения. А вот тут...

Помощи прошу у знающих. Нужен лисп, чтобы в массе выбранных объектов он определял бы окружности, и те из них, которые %%C8 - на них бы ставил крестик диагональный. В качестве крестика лучше бы взять вот такой динамический блок. Чертёж потом образмериваю БРАЗМЕР и концы отрезков этого крестика, будучи в блоке - не образмериваются. Что, собственно, и нужно.

Это у нас на работе условные обозначения.
Крестик - отверстие Д8.
Квадратик - отверстие сквозное.
Крестик+квадратик - сквозное Д8.

Вложения
Тип файла: rar блок для крестика-квадратика.rar (20.3 Кб, 47 просмотров)

Просмотров: 2288
 
Непрочитано 08.02.2011, 15:11
#2
Дима_

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


Код:
[Выделить все]
 (vl-load-com)
(defun test (name size)
  (if (tblsearch "block" name)
      ((lambda (doc model ss)
         (if ss 
             (progn
              (vla-startundomark doc)
              (princ (strcat "Обработанно "
                             (rtos(length (mapcar '(lambda (ent)
                                                     (vla-insertblock model
                                                                      (vlax-3d-point (cdr (assoc 10 (entget ent))))
                                                                      name 1 1 1 0))
                                                  (vl-remove-if
                                                   'listp
                                                   (mapcar 'cadr (ssnamex ss)))))) " окружностей."))
              (vla-endundomark doc))
             (princ "Не выбрано подходящих окружностей")))
       (vla-get-activedocument(vlax-get-acad-object))
       (vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object)))
       (ssget (list (cons 0 "CIRCLE") (cons 40 (/ size 2.0)))))
      (princ (strcat "Не найден блок " name".")))
  (princ))
пример запуска:
Код:
[Выделить все]
(test "крестик-квадратик" 8)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 08.02.2011, 16:55
#3
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 272


позориться - так до конца.
прикинь? Не работает. Догадываюсь, что просто запустить его я не смог.
писал:
(test)
(test "крестик-квадратик" 8)
test ("крестик-квадратик" 8)
("крестик-квадратик")

и так, и сяк.
ни один из этих вариантов не запускает.

читал

похоже, одним коньяком я не отделаюсь...
voverrr вне форума  
 
Непрочитано 08.02.2011, 18:45
#4
gomer

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


Жуткое ТЗ и не лучший код от Дима_, поддавшегося на провокацию... На самом деле, нужно полностью отверстие с осевыми выполнять в виде блока, лучше динамического... Печально
gomer вне форума  
 
Автор темы   Непрочитано 08.02.2011, 18:54
#5
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 272


ну уж прямо такое жуткое...

всё ж просто.

1. выделить объекты
2. если в выделенных есть окружность Д8, то в центр её поставить блок с крестиком.

дин.блок окружности нецелесообразно, мне кажется, потому как окружности-то в чертеже уже есть, нужно только их обозначить и образмерить.
да. и крестик-то должен быть не по осевым, а такой, диагональный, типа андреевского креста))

"лучшесть кода " оценить, к сожалению не смог, потому как не пойму как запусить. Прошлый же Димин код - самое то, что нужно было
http://forum.dwg.ru/showthread.php?t=62035

Последний раз редактировалось voverrr, 08.02.2011 в 19:02.
voverrr вне форума  
 
Непрочитано 08.02.2011, 19:43
#6
gomer

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


Цитата:
Сообщение от voverrr Посмотреть сообщение
ну уж прямо такое жуткое...
жуткое, потому что не кружочки надо было рисовать, а отверстия... раз уж такое произошло попробуйте вставить блок с нужным именем в ваш чертеж и программа заработает и почаще в кс заглядывайте...
gomer вне форума  
 
Непрочитано 08.02.2011, 21:54
#7
Дима_

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


Цитата:
Сообщение от voverrr Посмотреть сообщение
(test "крестик-квадратик" 8)
сохрани код в test.lsp, "затащи" файл в активное окно автокада с открытым файлом примера+ нарисуй там окружности d8мм(радиус=4), введи вышеобозначанную команду - если без результата - нажми F2, скопируй "лог" и выложи сюда.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 09.02.2011, 13:50
#8
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 272


во пишет чо:
Код:
[Выделить все]
Команда:
Команда: (LOAD "C:/Documents and Settings/хуев хер/Рабочий стол/test.lsp") ; 
ошибка: неверно сформированный список на входе

Команда:
Команда:
Команда: _appload test.lsp успешно загружено.


Команда: ; ошибка: неверно сформированный список на входе

Команда:
Команда: (test "крестик-квадратик" 8)
; ошибка: no function definition: TEST
хоть перетаскиваешь этот лисп в автокад, хоть открываешь через сервис->приложения

Последний раз редактировалось voverrr, 09.02.2011 в 13:59.
voverrr вне форума  
 
Непрочитано 09.02.2011, 15:26
#9
Дима_

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


не целиком сохранен код - попробуй через всплывающие меню
Миниатюры
Нажмите на изображение для увеличения
Название: меню.jpg
Просмотров: 62
Размер:	85.7 Кб
ID:	53404  
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 09.02.2011, 15:50
#10
Makson


 
Регистрация: 24.04.2008
Сообщений: 1,132


У меня все работает...действительно проблемы с загрузкой файла.

Последний раз редактировалось Makson, 09.02.2011 в 16:22.
Makson вне форума  
 
Автор темы   Непрочитано 09.02.2011, 16:56
#11
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 272


gomer
отверстия - ты имеешь в виду - 3д-тело? Не... У меня ж чертёж плоский, следовательно в нём не цилиндры(стенки отверстия), а именно окружности.

По качеству написания кода - нет разницы, если он...

Дима_
...работает как надо! Видимо и правда, не все символы скопировал, когда выделял. Вчера-то я через всплывающее меню пробовал копировать, но при вставке в блокнот весь стройный порядок рушился и мне подумалось, что оно всё сломалось.

Сделаю-ка я на этот лисп кнопку имени тебя! Каждый раз когда буду расставлять крестики - буду тебя добрым словом вспоминать))
voverrr вне форума  
 
Непрочитано 09.02.2011, 19:31
#12
gomer

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


Цитата:
Сообщение от voverrr Посмотреть сообщение
отверстия - ты имеешь в виду - 3д-тело?
см. #4
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп, выделяющий отверстия диаметром 8мм



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен лисп, поднимающий отрезок на заданную высоту ВоваН LISP 4 07.07.2010 14:28
Нужен маленький лисп - для текста maksimys LISP 2 28.11.2007 08:51
Нужен лисп (пронизыватель лайаутов) dextron3 LISP 91 25.07.2007 07:37
Очень нужен лисп (из EXEL в ACAD) REDS LISP 22 12.07.2007 01:52
Нужен лисп (детектор прямоугольников) dextron3 LISP 3 25.06.2007 09:42