|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как при пересечении двух линий сделать установку нужного блока в месте пересечения
Регистрация: 21.08.2012
Сообщений: 42
|
||
Просмотров: 13565
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Набросал без проверок и пр:
Код:
где pln - ename указатель на полилинию, XXX радиус дуги (если обводить) или имя существующего блока обозначения пересечения (если пересекать). То есть - повесить на кнопки следующие макросы: для пересечения сразу после рисования - (command "_pline" (while (= (getvar "CMDACTIVE") 1) (command "\\")))(over-line (entlast) "имя_блока_пересечения") для огибания - (command "_pline" (while (= (getvar "CMDACTIVE") 1) (command "\\")))(over-line (entlast) 50) где 50 радиус дуги огибания; для "обрисовки" уже существующей - (over-line (car (entsel)) 50)
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 05.10.2012 в 15:16. |
|||
![]() |
|
|||||
Регистрация: 21.08.2012
Сообщений: 42
|
Собственно, так и сделал.
Конкретнее, создал новую команду, в поле "Макрос" прописал Цитата:
Цитата:
Цитата:
Во всех случаях нажатие на кнопку, к которой приартачен макрос, вызывает появление в командной строке Цитата:
|
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
А с кнопкой позабыл замени везде (command "\\") на (command pause)
p/s/ правильно там где "пересечение"
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 03.10.2012 в 22:48. |
|||
![]() |
|
||||||
Регистрация: 21.08.2012
Сообщений: 42
|
Ну к сожалению пока тоже не получается.
Прописывание макросов Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
|||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
так "еёж" (тот самый код который в начале сообщения) загрузить надо (от того что она на dwg.ru опубликованна, Autodesk, пока еще, ее автоматом не находит), как загрузить - в поиск на форуму (в простом варианте - текстовку сохранить в *.lsp (копировать с форума через всплавающею панельку БЕЗ номеров строк) файл и "зататащить" его в окно автокада).
з.ы. Кстати, об автоматической загрузки с форума. Господа! А может сами сделаем? Чтоб зараза, или просто не грамотный, по отношению к другим код, не проникала - попросим модераторов и иных уважаемых добровольцев инспектировать, ну и выделим раздел, надо только по именам стандартизировать.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 04.10.2012 в 09:18. |
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
Да не, уж это я сделал. Создал файл over-line.lsp с содержимым
Цитата:
|
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
А извини пожалуйста, все работает.
Дело в моей косорукости как юзера. Просто я привык полилинии рисовать, в конце нажимая Esc. Правильно команду завершать нажимая Enter. Как только стал нажимать Enter, все стало работать. Ты меня второй раз уже выручаешь. С меня пиво ![]() |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Это старая тема - которую в общем можно обработать, но да ладно.
Offtop: Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
тады код кнопки макроса замени на
((lambda (fn entl) (vl-catch-all-apply 'fn ()) (if (not (equal entl (entlast))) (over-line (entlast) 50))) (lambda () (command "_pline" (while (= (getvar "CMDACTIVE") 1) (command pause)))) (entlast)) остальные соответственно
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
Ясно. Спасибо, я пожалуй оставлю как есть, ибо для меня это уже слишком сложно.
В "оставить как есть" есть свой плюс - если в конце команды нажать Esc то начертится просто полилиния, а если Enter/Пробел то будут организовываться пересечения. Тем самым по этой кнопке можно начертить все что захочется. Еще раз спасибо за труды. |
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
В общем потестил по ходу работы эти кнопки, нашелся небольшой недочетик.
При пересечении полилиний вставляется наложение/пересечение даже с теми линиями, которые находятся на отключенных слоях, при этом если линия на замороженном слое то все нормально. Выглядит это странно, линии как бы нет, а пересечение вставляется. Последний раз редактировалось 128500, 09.10.2012 в 16:55. |
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
Спасибо, работает
![]() И в порядке окончательной наглости - в #18 ты писал что нужно добавить в код чтобы команда срабатывала даже если в конце нажимается Esc а не Enter/Пробел. Куда именно писать не подскажешь? Все таки надо чтобы и на отмену реагировало. |
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
Совсем туго у меня с лиспом. Точнее не соображаю я ничего.
В общем лисп-файл с учетом добавленого в конец #18 получился Код:
Цитата:
Код макрос для кнопки "создание наложения без пересечения" для существующих полилиний Цитата:
Код макроса для кнопки "наложение полилиний с пересечением" незнаю. Ты пишешь "по аналогии". Я попытался конечно написать что-то, но бред выходит. P.S. Правда в лиспе смайлика нету ![]() Последний раз редактировалось Кулик Алексей aka kpblc, 03.10.2014 в 13:54. |
|||
![]() |
|
||||
Регистрация: 21.08.2012
Сообщений: 42
|
есть вопрос еще один - частенько при нажатии кнопки с макросом пишет
Цитата:
Цитата:
Если автокад закрыть и открыть, снова работает. Так же начинает работать если загрузить его вручную еще раз. Не знаешь в чем может быть проблема? И хотя уже чувствую, что я реально напрягаю своими запросами - есть пожелание. Нельзя ли сделать так чтобы все эти фишки с пересечениями и наложениями работали только для линий, которые между собой одного цвета и находятся на одном слое? А то есть небольшая штука, линии разных направлений чертятся рядом, при пересечении их одной линией такой хаос с дугами выходит, и пересечений линий разных цветов тоже не может быть в принципе. В общем, если бы это работало только с линиями одинаковых цветов и одинаковых слоев, вообще было бы замечательно. Последний раз редактировалось 128500, 09.10.2012 в 17:03. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вы уверенны, что проблема в том что Вам не понятно?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Какая именно? В чем выражается "не работает"?
Offtop: Ну почему надо тягать всю информацию...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 12.08.2009
Сообщений: 464
|
Не верно описал проблему. На самом деле блоки расставляются, но они не видны. Их можно выбрать через Быстрый выбор или Выбрать подобные. При этом вставляются в масштабе 1:1, а не в текущем. (показывать объекты во всех аннот. масштабов включено). После добавления любого другого аннот. масштаба они становятся видимыми.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Offtop: Интересно, чего еще не рассказано...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание нового типа линий | Apelsinov | AutoCAD | 915 | 08.07.2022 12:36 |
Разрыв в месте пересечения линий выносок | Zorroko | Конструкции зданий и сооружений | 7 | 20.02.2009 18:42 |