| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
22.05.2008, 02:49 | #1 | |
Lisp. Расстановка блоков на пересечении линий.
инженер
Владивосток
Регистрация: 09.08.2006
Сообщений: 1,535
|
||
Просмотров: 10700
|
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Цитата:
Для симметричных блоков пригодится такой трюк: В меню Modify->Objects->Block Description выбрать из списка необходимый блок и в поле описания через пробел записать ширину и высоту блока например для блока "Кронштейн" у тебя будет: 48.0 100.0 Чтобы не пролететь с размерами можно вставить такой блок в масштабе 1:1 и замерить эти размеры Вертикальные линии у тебя на самом деле являются полилиниями - работать не будет Либо взорви их, либо перерисуй на линии Условия правильной работы программы: -Пересекающиеся примитивы должны быть только линиями -Расположение линий только ортогональное -Блок должен быть симметричным относительно точки его вставки В цикле сначала указывается блок (не промахнись), потом горизонтальная линия, потом вертикальная линия и так повторяешь со следующим блоком и тд Выход из цикла - Enter или правая клавиша мыши Можешь изменить код для более общих случаев самостоятельно (например добавить угол наклона осей и тд) Я дальше пас... Код:
~'J'~ |
|||
|
||||
to Fatty, теперь все получилось, но... получается что лисп не ускоряет работу, а замедляет.
Выходит, я должен выбрать блок, затем выбрать горизонтальную линию, затем вертикальную. А нельзя выбирать все линии горизонтальные, затем все вертикальные? Просто очень много работы связано с ручным расставлением данных блоков на пересечении линий. Кстати, линии в разных слоях. P.S.У меня лисп вместо вставки блока разрезает линии под размер блока, но никакой вставки не происходит. Прикрепил картинку
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Вариант нумер два:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Чой-то мне кажется, что я такое уже писал, но за давностью лет не помню. Для простоты не проверяю слой вставляемого блока.
Код:
1. Убедиться, что блок присутствует в чертеже. Если нет - вставить куда-нибудь. 2. Запустить программу. 3. Выбрать линии (можно по одной, можно секрамкой), как указано. 4. Выбрать блок-образец. 5. Стереть блок-образец, если нужно. 6. Поблагодарить меня, любимого, за то, что я есть. Да, извини, что по бусурмански. Это все от лени. Последний раз редактировалось Лентяй, 28.05.2008 в 10:16. |
|||
|
||||
Кулик Алексей aka kpblc, подскажи как заставить лисп вставлять блоки на определенный слой? Можно даже без создания слоя...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Найди строки
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Что-то еррор какой-то
Код:
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 14.10.2008 в 02:22. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Только что специально прогнал на ACAD2006Eng. Все работает.
В файле создан слой 1234 и код (имею в виду измененный участок) принимает вид Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
блиннн. Я себе автокад сломал..
*Добавлено. Семь бед - один резет! Перезагрузка помогла - все заработало. СПАСИБО, Алексей!!!
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 09.04.2009 в 07:37. Причина: орфография |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
:?:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Последнюю команду не понял.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
>kpblc & all
Если будет время, глянь пжл есть, список точек - sp_po блок с именем - mrkb (прямоугольник из полилиний, без атрибутов ) Код:
На списке из 2К точек - 18 мин. Не владею ActiveX Сами мы не местные....
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Ну невладение - это поправимо. А применять-то его можно?
P.S. Два варианта кода Код:
Код:
Заодно можно принудительно отключить регенерацию чертежа перед вставкой, а потом вернуть ее обратно P.S. Еще момент: обычно добавление примитива через entmake / entmakex сразу требует изменения изображения на экране. ActiveX-методы регенерируют чертеж только после выполнения (это если я не ошибаюсь).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Спасибо огромное, Алексей, за быстрое и как всегда красивое решение.
Скорость впечатляет!!! Время выполнения программы на том же тестовом примере порядка 2 (двух) секунд. Пробовал оба варианта - работают, остановился на первом - он для меня более прост для понимания... Была какая-то разница в регенерации, но трудно уловить. Будет еще тестовый пример, гляну.
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Можно найти benchmark (где-то на форуме валялся) и погонять на имеющемся тесте. Хотя бы примерно оценить скорость уже будет можно
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание нового типа линий | Apelsinov | AutoCAD | 915 | 08.07.2022 12:36 |
LISP для подсчета суммы длин линий | Kostinok | LISP | 18 | 26.04.2013 14:56 |
Нужен LISP для разрыва линий в точках пересечений | ilka_t | LISP | 18 | 15.03.2013 16:35 |
Нужен Lisp для работы с типами линий | Gostushev | LISP | 12 | 06.07.2005 14:50 |
Как изменять толщину линий и цвет линий для блоков? | Highmax | AutoCAD | 1 | 08.03.2005 06:56 |