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

Вернуться   Форум DWG.RU > Сообщество > Поиск исполнителей > Нужно подкорректировать ЛИСП под конкретные задачи

Нужно подкорректировать ЛИСП под конкретные задачи

Закрытая тема
Поиск в этой теме
Непрочитано 29.12.2019, 22:41 #1
Нужно подкорректировать ЛИСП под конкретные задачи
zloy1653
 
Регистрация: 27.11.2017
Сообщений: 24

Доброго всем вечера. Для знающих тут работы на несколько минут, наверное. Необходимо подкорректировать готовый лисп, сам в этом не разберусь. Нашел на сайте лисп "сортировка блоков по имени", немного почистил его, насколько ума хватило, получил вертикальную расстановку блоков с шагом 800. Во всех моих сортируемых блоках есть атрибут "ПОЗ.". Нужно прикрутить сюда сортировку по атрибуту "ПОЗ.", чтобы нумерация списка блоков строилась в порядке 1, 2, 3, так же и для имен П1, П2, Кр1, Кр2 и т.д. И точку вставки исправить на клик мышкой в пространство модели, а то вставка идет в 0,0,0.
Всем откликнувшимся просьба писать на почту [email protected]

Код:
[Выделить все]
 (defun c:SB(/ adoc *error* selset count_x
dist_x dist_y ins row_count col_count
minp maxp txt_height loc:getname
)

(defun *error* (msg)
(vla-endundomark adoc)
(princ msg)
(princ)
) ;_ end of defun

(defun loc:getname (ent)
(cond
((vlax-property-available-p ent 'effectivename)
(vla-get-effectivename ent)
)
((vlax-property-available-p ent 'name)
(vla-get-name ent)
)
(t "")
) ;_ end of cond
) ;_ end of defun

(vl-load-com)
(vla-startundomark
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
) ;_ end of vla-startundomark
(if
(and
(not (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda () (setq selset (ssget "_:L" '((0 . "INSERT")))))
) ;_ end of vl-catch-all-apply
) ;_ end of vl-catch-all-error-p
) ;_ end of not
selset
(not (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda ()
(setq dist_y 800)
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of vl-catch-all-error-p
) ;_ end of not
dist_y
) ;_ end of and
(progn
(setq col_count 1
row_count 1
) ;_ end of setq
(foreach item
(vl-sort
(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
) ;_ end of mapcar
'(lambda (a b) (< (loc:getname a) (loc:getname b)))
) ;_ end of vl-sort
(vla-put-insertionpoint
item
(vlax-3d-point
(list (if (<= col_count count_x)
(* (1- (setq col_count (1- col_count))) dist_x)
(setq row_count (1- row_count)
col_count 0.
) ;_ end of setq
) ;_ end of if
(* row_count dist_y)
) ;_ end of list
) ;_ end of vlax-3d-point
) ;_ end of vla-put-insertionpoint
(vla-getboundingbox item 'minp 'maxp)
(setq minp (vlax-safearray->list minp))

) ;_ end of foreach
) ;_ end of progn
) ;_ end of if
(vla-endundomark adoc)
(princ)
) ;_ end of defun
----- добавлено через ~56 мин. -----
Пишите ваши варианты, на каких условиях вы готовы взяться за эту задачу.

Последний раз редактировалось Кулик Алексей aka kpblc, 30.12.2019 в 18:38.
Просмотров: 1170
 
Автор темы   Непрочитано 31.12.2019, 19:38
#2
zloy1653


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


Тема закрыта.
zloy1653 вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Сообщество > Поиск исполнителей > Нужно подкорректировать ЛИСП под конкретные задачи

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Почему не работает лисп? Jonas LISP 2 05.03.2014 12:08
Можно ли написать лисп для обозначения проёма? zz212243 LISP 17 29.01.2014 16:01
Нужно начертить чертеж... deluk AutoCAD 6 20.11.2013 13:40
Нужен Лисп !!! Gostushev AutoCAD 14 22.07.2005 15:42