|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Есть еще один способ, в некоторых случаях очень удобный:
сделать из вырезаемого фрагмента блок (быстро - скопировать в буфер и вставить как блок), вырисовать поверх обрезаемый контур, и обрезать блок xclip. Плюсы + работает с любыми объектами (это огромный плюс) + все делается быстро и просто и в модели. Минусы - неэкономично к ресурсам, т.к. помимо вырезаемого в чертеже болтается еще куча объектов, - при желании поменять что-то в фрагменте придется лезть в блок, - контур не может сожержать дуги (т.е. круг, овал и т.п. - отдыхают)
__________________
apel.fas |
|||
![]() |
|
||||
конструктор Регистрация: 28.08.2003
Мос. область
Сообщений: 119
|
Господа двугушники! Не поленюсь выложить вторично лисп, а то Вам лень копаться в поиске.
(defun C:frag (/) (SETQ sna (GETVAR "osmode")) (setq cmd (getvar "cmdecho")) (setq la (getvar "Clayer")) (setq co (getvar "cecolor")) (setvar "osmode" 0) (setvar "clayer" "0") (setvar "cmdecho" 1) (setvar "cecolor" "1") (setq pt1 (getpoint "\n Рамка выбора - слева вверх направо>> Первая точка: " ) ) (command "rectang" pt1 pause) (Setq na (entlast)) (COMMAND "line" "@" pt1 "") (setq SS (entget (entlast))) (setq pt2 (cdr (assoc 10 SS))) (setq pt3 (list (car pt1) (cadr pt2))) (setq pt4 (list (car pt2) (cadr pt1))) (entdel (entlast)) (setq pt5 (list (- (car pt1) 1) (- (cadr pt1) 1))) (setq pt6 (list (+ (car pt2) 1) (+ (cadr pt2) 1))) (setq pt7 (list (- (car pt3) 1) (+ (cadr pt3) 1))) (setq pt8 (list (+ (car pt4) 1) (- (cadr pt4) 1))) (command "trim" na "") (command "F" pt5 pt7 "" "F" pt7 pt6 "" "F" pt6 pt8 "" "F" pt8 pt5 "") (Command "") (setq ss1 (ssget "w" pt1 pt2)) (command "copybase" pt1 ss1 "") (command "undo" 2) (entdel na) (setq pt4 (getpoint "\n Место вставки фрагмента\n")) (command "pasteclip" pt4) (SETVAR "osmode" sna) (setvar "cmdecho" cmd) (setvar "Clayer" la) (setvar "Cecolor" co) (princ) ) Как видите, в нем используется не extrim, а простой trim, но вставка производится через буфер. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Хотя лично мне эта тема и не особо близка, позволю себе немного покритиковать последний лисп.
1. Не учитывается вариант локализации. 2. Все переменные глобальные - это чем-то объясняется? 3. Нет обработки ошибок. 4. Визуально не контролируется "куда" вставляется обрезанный фрагмент 5. Функция _trim с опцией _fence иногда некорректно обрабатывает полилинии, пересекающие границу (обрезка выполняется только 1 раз, независимо от количества пересечений). 6. Если границу "визуально" пересекают блоки или примитивы, лежащие не в текущей системе координат или имеющие высоту, отличную от elevation, обрезка может быть выполнена некорректно. 7. Не отслеживается состояние слоя "0" - он может быть выключен, заблокирован, заморожен... 8. Не отслеживается вариант отказа пользователя от продолжения работы в момент выбора pt1 или выполнения _rectang. Если писать лисп, учитывающий все эти нюансы, его длина явно будет раз этак в 5-6 больше представленной ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Помошник архитектора Регистрация: 16.01.2007
СНГ
Сообщений: 6
|
Apelsinov
Цитата:
"Замечательная вещь" viewport в модельном пространстве не может принимать произвольную форму, а xclip работает только с блоками или внешними чертежами причем в качестве ссылки не получается взять текущий же чертеж. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Если бы эта тема обсуждалась в эпоху Автокад-10, цены бы ей не было... |
|||
![]() |
|
||||
Цитата:
Сечас уже кажется есть версия 5.5 для Автокада.
__________________
«Артиллерия не токмо грохот, но и наука!» Пётр I |
||||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Вот тут и есть кое-что по этой теме.
Добавлено: Тут появилась новая программка от Дениса Флюстикова "Фрагмент чертежа по прямоуг. или кругл. границе". Самый простой способ из всех, что я видел. Работает безотказно. Может как выбрать существующий контур фрагмента (произвольной формы), так и отрисовать новый круг, прямоугольник или ломаную полилинию. Ссылки иногда слетают, поэтому расположу текст последней, проверенной мною версии программы здесь: Код:
Последний раз редактировалось skkkk, 29.11.2009 в 16:35. |
|||
![]() |