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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Нужен Лисп !!!

Нужен Лисп !!!

Ответ
Поиск в этой теме
Непрочитано 21.07.2005, 23:23 #1
Нужен Лисп !!!
Gostushev
 
проектирование КМ, КМД
 
Регистрация: 02.05.2005
Сообщений: 25

Коллеги!
В прошлый раз поднял проблему - предложили массу решений, спасибо и если можно помогите и в этот раз.
Задача: требуеся Лисп с помощью которого можно было бы делить обекты в точках пересечения, поясняю на примере : есть прямоугольник(квадрат), его пересекает линия - нужно сделать так, чтобы прямоугольник остался самим собой, а вот линия разбилась на 3 отрезка (в точках пересечения с квадартом). По сути это симбиоз команды "бреак" с "подели". Может есть и стандартное решение просто я его не знаю, но Лисп был бы кстати. Он очень полезен когда рисуешь узлы и часть линий становятся "невидимыми" и какому-то отрезку линии нужно задать другой тип линии. Приходиться делать много промежуточных лишних операций. Жду ответов.
Просмотров: 4417
 
Непрочитано 22.07.2005, 02:16
#2
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Я пользуюсь повторяющейся командой Break в одной точке
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=18378ZV
Vova вне форума  
 
Непрочитано 22.07.2005, 06:08
#3
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Gostushev, ловите прогу. ибо я сегодня добрый. Пользуйтесь ей на здоровье и каждый раз не забывайте благодарить меня за то, что я есть.
Код:
[Выделить все]
(defun C:BRP ( / cm ln ass bps)
 (setvar "CMDECHO" 0)
 (setq cm (getvar "CMDECHO")
       ln (car (entsel "\nSelect braking line: ")));setq
 (redraw ln 3)
 (terpri)
 (prompt "\nSelect line(s) to break: ")
 (ssget)
 (setq ass (vla-get-ActiveSelectionSet (vla-get-activedocument (vlax-get-acad-object))))
 (princ (strcat "\nSelected " (itoa (vla-get-count ass)) " lines"))
 (vlax-for ln1 ass
   (setq bps (vlax-invoke (vlax-ename->vla-object ln) "IntersectWith" ln acExtendNone))
   (while bps
     (setq bp (list (car bps) (cadr bps) (caddr bps)));setq
     (command "BREAK" (vlax-vla-object->ename ln1) bp bp)
     (setq bps (cdddr bps)));while 
 );vlax-for
 (redraw ln 4)
 (setvar "CMDECHO" cm)
 (princ)
);end
Да, на вшивость я ее непроверял, потму как лениво. Но должно работать.
Лентяй вне форума  
 
Непрочитано 22.07.2005, 06:43
#4
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


> Лентяй

Чего-то не работает. Выдает:

Цитата:
Selected 1 lines; error: argument type mismatch: <Entity name: 7e7f7de0>
che вне форума  
 
Непрочитано 22.07.2005, 07:09
#5
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


> Gostushev

Есть ссылка на прогу trimhalf.

http://cadhlp.kulichki.net/old/prog3/trimhalf.zip

Проверил сам. Там еще есть операции с переносом обрезков по слоям.
che вне форума  
 
Непрочитано 22.07.2005, 08:20
#6
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Чего-то не работает. Выдает:

Цитата:
Selected 1 lines; error: argument type mismatch: <Entity name: 7e7f7de0>
Ачепятка. После "IntersectWith" должно быть ln1.
Код:
[Выделить все]
(defun C:BRP ( / cm ln ass bps)
 (setvar "CMDECHO" 0)
 (setq cm (getvar "CMDECHO")
       ln (car (entsel "\nSelect braking line: ")));setq
 (redraw ln 3)
 (terpri)
 (prompt "\nSelect line(s) to break: ")
 (ssget)
 (setq ass (vla-get-ActiveSelectionSet (vla-get-activedocument (vlax-get-acad-object))))
 (princ (strcat "\nSelected " (itoa (vla-get-count ass)) " lines"))
 (vlax-for ln1 ass
   (setq bps (vlax-invoke (vlax-ename->vla-object ln) "IntersectWith" ln1 acExtendNone))
   (while bps
     (setq bp (list (car bps) (cadr bps) (caddr bps)));setq
     (command "BREAK" (vlax-vla-object->ename ln1) bp bp)
     (setq bps (cdddr bps)));while 
 );vlax-for
 (redraw ln 4)
 (setvar "CMDECHO" cm)
 (princ)
);end
Лентяй вне форума  
 
Непрочитано 22.07.2005, 09:00
#7
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


> Лентяй

Теперь работает. Все же нет возможности для обрезки одного объекта несколькими как в trimhalf.
che вне форума  
 
Непрочитано 22.07.2005, 10:11
#8
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Все же нет возможности для обрезки одного объекта несколькими как в trimhalf.
Задача была разрезать один объект на части посредством другого ОДНОГО объекта. Она решена. Резать один объект объект несколькими другими - совсем из другой оперы.
Лентяй вне форума  
 
Непрочитано 22.07.2005, 10:33
#9
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Привет.
Когда-то писал похожую функцию

http://dwg.ru/forum/viewtopic.php?p=8970#8970
Эдуард вне форума  
 
Непрочитано 22.07.2005, 12:46
#10
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Есть несколько более свежая версия программы Trimhalf, о которой упомянул che
Лежит по адресу http://vkle.bazarov.net/trimhalf.zip (исправлены мелкие неточности, до описания наверно никогда не дойдут руки )
vk вне форума  
 
Автор темы   Непрочитано 22.07.2005, 13:38
#11
Gostushev

проектирование КМ, КМД
 
Регистрация: 02.05.2005
Сообщений: 25


Всем спасибо, особенно Лентяю!
Как и в прошлый раз помогли решить проблему. Буду тестировать. Подкину еще как-нибудь проблем :-)
Gostushev вне форума  
 
Непрочитано 22.07.2005, 14:23
#12
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


A eще можно попробовать "хитрый блок" под которым линия ня разрывается, но скрывается
Vova вне форума  
 
Непрочитано 22.07.2005, 14:46
#13
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


> Vova

А с этого места поподробней можно? Буквально сегодня коллега ВК-шник интересовался.
che вне форума  
 
Непрочитано 22.07.2005, 14:55
#14
Кулик Алексей aka kpblc
Moderator

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


Опережу-ка я Vovy: http://dwg.ru/forum/viewtopic.php?t=...er=asc&start=0
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.07.2005, 15:42
#15
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


> Vova, kpblc

Спасибо. Раньше не пользовался wipeout, следовал инструкции, вроде все получилось, но нужно еще разбираться. Ну, по крайней мере ВК-шник в восторге.
che вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Нужен Лисп !!!

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

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