|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 08.12.2018
Сообщений: 164
|
Для Deutschland.
В приведенном файле-блоке используется полилиния, а не отрезок (LINE). Вот заготовка для однократной замены отрезка блоком. Скопировать текст в буфер, вставить в командную строку и нажать Enter. Блок уже должен быть в текущем файле. Код:
|
|||
|
||||
Регистрация: 31.03.2019
Сообщений: 13
|
Блок в текущем файле. Скопировал, вставил в командную строку, далее меня просят выбрать отрезок, выбираю. Ничего не происходит. Несколько раз пробовал. Что я делаю не так
|
|||
|
||||
Регистрация: 08.12.2018
Сообщений: 164
|
В моей заготовке пока подразумевается объект, у которого есть свойства "длина" ("Length") и "угол поворота"("angle"). У полилинии таких свойств нет. С другой стороны, если применить программу к отрезку, то он заменяется блоком и повторно применять программу к нему бесполезно. К тому же автор темы постоянно упоминает понятие "отрезок". Я написал именно заготовку программы Если она устроит автора темы, то её можно будет довести до финала.
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,049
|
|
|||
|
||||
Регистрация: 31.03.2019
Сообщений: 13
|
Цитата:
----- добавлено через ~6 мин. ----- И раз разговор зашёл про полилинии - в схеме намешано всё подряд, где встречаются как отрезки, так и полилинии, которые и нужно заменить на один блок. |
|||
|
||||
Регистрация: 08.12.2018
Сообщений: 164
|
Тогда попробуй начерти ОТРЕЗОК (LINE) и примени к нему программу. Скопируй сюда протокол выполнения по F2.
Сделай то же самое с твоим объектом и тоже скопируй сюда протокол. Не помешал бы и оригинальный файл (или его фрагмент). Но если страна нахождения - Германия, то я пас. |
|||
|
||||
Регистрация: 31.03.2019
Сообщений: 13
|
Цитата:
Выполняется регенерация модели. Утилиты меню AutoCAD загружены. Команда: Команда: Команда: <Сетка откл> Команда: Команда: Команда: _insert Точка вставки или [Базовая точка/Масштаб/Поворот]: Введите значения атрибутов SN: Идентификатор: Команда: Команда: Команда: _line Первая точка: Следующая точка или [оТменить]: Следующая точка или [оТменить]: Команда: (progn (_> (setvar "ATTDIA" 0) (_> (setvar "ATTREQ" 1) (_> (setq otr (car (entsel "\nВыберите отрезок: "))) (_> (setq votr (vlax-ename->vla-object otr)) (_> (setq tvs (cdr (assoc 10 (entget otr)))) (_> (setq dlina (vlax-get-property votr 'Length)) (_> (setq ugol (/ (* 180(vlax-get-property votr 'angle)) pi)) (_> (entdel otr) (_> (vl-cmdf "_-INSERT" "l0" "X" dlina "Y" "1" "Z" "1" "_R" ugol tvs "" "") (_> (setvar "ATTDIA" 1) (_> (setvar "ATTREQ" 0) (_> ) Выберите отрезок: ; ошибка: no function definition: VLAX-ENAME->VLA-OBJECT Открывается файл формата AutoCAD 2013. Выполняется регенерация модели. Утилиты меню AutoCAD загружены. Команда: Файл Autodesk DWG. Это файл формата TrustedDWG, сохраненный в приложении Autodesk или в приложении, лицензированном корпорацией Autodesk. Команда: Команда: (progn (_> (setvar "ATTDIA" 0) (_> (setvar "ATTREQ" 1) (_> (setq otr (car (entsel "\nВыберите отрезок: "))) (_> (setq votr (vlax-ename->vla-object otr)) (_> (setq tvs (cdr (assoc 10 (entget otr)))) (_> (setq dlina (vlax-get-property votr 'Length)) (_> (setq ugol (/ (* 180(vlax-get-property votr 'angle)) pi)) (_> (entdel otr) (_> (vl-cmdf "_-INSERT" "l0" "X" dlina "Y" "1" "Z" "1" "_R" ugol tvs "" "") (_> (setvar "ATTDIA" 1) (_> (setvar "ATTREQ" 0) (_> ) Выберите отрезок: ; ошибка: no function definition: VLAX-ENAME->VLA-OBJECT |
|||
|
||||
Регистрация: 08.12.2018
Сообщений: 164
|
Как-то я привык уже, что в AutoCAD 2013 и в следующих версиях загрузка функций VLisp (vl-load-com) происходит автоматически. Возможно, это у меня так происходит.
Частная задача: замена отрезка блоком l0. Код:
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,049
|
Если в образце красным кружком обозначен примитив, к которому применяется программа - то ТС может применять программу хоть до посинения: там полилиния) А так какая то пассивная позиция у ТС - хочет сэкономить много человекочасов, но при этом лениться даже корректные входные условия выдать сразу: почти половина линейных примитивов в образце - полилинии.
|
|||
|
||||
Регистрация: 08.12.2018
Сообщений: 164
|
Ну, до посинения он не буде доходить, программа выдаст сообщение, что объект не отрезок. Я специально не стал вводить в программу расчленение полилинии (а вдруг там нужна именно полилиния). Однако, будь то полилиния или отрезок - этот объект все равно должен удалиться и на его месте должен оказаться блок. А что там в блоке (а там полилиния) - это не нашего ума дело. Автор темы может самостоятельно расчленить попавшиеся полилинии до отрезков.
Непонятно также назначение атрибутов. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,049
|
Цитата:
так задавал уже: но ТС видит только то, что ему нужно, похоже) |
|||
|
||||
Регистрация: 08.12.2018
Сообщений: 164
|
Что это вы постоянно упоминаете какого-то ТС? Нет здесь никакого ТС. Я общаюсь с автором темы Deutschland и жду от него реакции. Если вы решили подменить собой автора темы, то вам и карты в руки. Дорабатывайте программу по своему разумению. А еще лучше - пошлите автора темы в раздел "Поиск исполнителей".
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,049
|
Цитата:
Offtop: А указывать, что другим делать - будете на своем форуме, если хватит способностей раскрутить его до уровня dwg.ru, чтобы там появились люди |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
ИМХО, ветка уже давно переросла раздел Autocad, т.к. штатными средствами автоматизировать работу у ТС не получится и нужно писать соответствующую программу. Самому или привлекая помощь, а т.к. с программированием у автора судя по всему не очень, то....
это не самый плохой совет. ЗЫ. А полилинии или линии особой разницы нет, _explode все уравняет =) Последний раз редактировалось Boxa, 04.04.2019 в 10:57. |
|||
|
|||||
Регистрация: 31.03.2019
Сообщений: 13
|
Цитата:
Цитата:
Цитата:
----- добавлено через ~9 мин. ----- Цитата:
1. На данный момент вставляется блок, который я загружал сюда последним. Можно ли заменить вставляемый блок, на динамический (тот, который я скидывал в тему ещё ранее)? 2. Реально ли написать такой код, чтобы применять его не разово? Выделить все отрезки на схеме и сразу всё заменить на данный блок. Последний раз редактировалось Deutschland, 04.04.2019 в 12:05. |
||||
|
||||
Boxa, да я блок и не менял. у него проблема с точкой вставки. упорядочил) а вообще за такие дин. блоки железной линейкой по рукам самое то)
Цитата:
Цитата:
2. выделять нужно отрезки 3. лисп заменяет выбранные отрезки на дин. блок i0. удобнее будет с точкой вставки на конце линии (в блоке кстати полилиния непонятно нафик) и углом поворота относительно точки вставки. |
||||
|
||||
Регистрация: 31.03.2019
Сообщений: 13
|
Цитата:
Из протокола: Команда: LINE_DBLOCK ; ошибка: no function definition: VLAX-GET-ACAD-OBJECT Добавил в начале лиспа: Код:
Последний раз редактировалось Deutschland, 04.04.2019 в 21:03. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как изменить цвет выбранных примитивов? Замена цвета объектов в autocad (с помощью autolisp). | Halfback | LISP | 8 | 24.12.2018 20:52 |
Как изменить свойства примитивов в блоках стандартных размерных стрелок | philja | AutoCAD | 6 | 05.02.2016 01:22 |
AutoCAD MEP 2014: Откуда возникли непонятные блоки и стили в новом блоке? | Новичёк | Вертикальные решения на базе AutoCAD | 7 | 14.12.2015 11:09 |
Различие функции поиск и замена (команда _find) последних версий AutoCad | WeMaN | AutoCAD | 18 | 30.05.2013 13:40 |