|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
09.06.2008, 10:30 | 10 | 1 | #1 |
LISP. Нормализация блоков текущего файла.
Moderator
LISP, C# (ACAD 200[9,12,13,14])
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,848
|
||
Просмотров: 95446
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
В тех случаях, когда слой, на котором установлен блок отключаешь, а он все равно виден. У нас этим грешат архитекторы или когда чертежи приходят со стороны, как правило с творческих мастерских.
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
А можно добавить возможность применить команду не ко всем блокам, а только к выбранным?
__________________
Блог |
||||
|
||||
пианист Регистрация: 18.02.2008
Питер
Сообщений: 418
|
|
|||
|
||||
Цитата:
Цитата:
__________________
Блог |
||||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Смотрю с точки зрения изготовления подосновы из чужого (архитектурного) чертежа.
Согласен с №4. На загруженном чертеже невозможно проконтролировать результат. Кроме того, инструкцию по кодам придется записать на бумажке и приклеить на стену, так как не каждый день по 5 раз будет применятся. Либо несколько кнопок сделать. Хотя это возможно Надо бы иметь возможность вернуть в исходное, чтобы попробовать другой бит-код |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Red Nova, #4 : такой задачи не ставилось. Но в принципе возможно (правда, придется переписывать практически наполовину )
ButcheR, #6: этот лисп исключает из обработки внешние ссылки. При чем тут "в какой слой (xref) его помещаете и какие свойства при этом задаёте" не очень понятно. Vova, #8: стандартная команда отмены должна вернуть все обратно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 15.04.2005
Сообщений: 243
|
Цитата:
Такую задачу обычно решаем при подготовке подосновы, полученной от архитекторов. То, что для них было важно и они старались выделить, для нас становится второстепенно и должно отображаться тонкими линиями. Было бы не плохо ещё заменять в блоках, если встречаются, ttf шрифты на какой-нибудь стандартный shx, например simplex. Особенно это актуально если внутри блока применяется Mtext и фонт прописан прямо в нём. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Теоретически - возможно. Практически...
1) Практически перенос толщин полилиний внутри блока в 0 проблем не составляет. Завтра только, сегодня уже силенок не хватат. 2) Установка свойств примитивов внутри блока в ByLayer лично я считаю неверным принципиально (см. аттач): слева блок с цветом примитива "ByLayer", справа - "ByBlock". Как разница, ощущается? 3) Замена только стиля (кстати, на какой? На текущий?) тоже проблем в общем-то не составит. Но вот снятие форматирования mtext'ов... Тут надо просто искать гарантированно работающий код. Кстати, как поступать с атрибутами блоков? P.S. Скорость работы такого лиспа будет, скорее всего, на порядок ниже, чем у исходного. P.P.S. Я уже несколько раз убеждался, что под "нормализацией" каждый понимает что-то свое
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|||||
Регистрация: 15.04.2005
Сообщений: 243
|
Цитата:
Цитата:
Для нормализации подосновы, по крайней мере у нас, требуется чтобы она была только фоном и печаталась тонкими линиями. Поскольку у нас печать производится по цвету примитива, простая замента цвета всех елементов блока (и размерных стилей) на цвет ByLayer и замена цвета всех слоёв на необходимый цвет, в принципе, решает эту задачу. Цитата:
Взяты очень давно отсюда: ChStyle StripMtext v2.1 R15+ Copyright Steve Doman [email protected] 8/25/01 Полагаю замена должна производится глобально т.е. и в атрибутах тоже. Цитата:
Вполне вероятно я мог и ошибиться |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Залетный, Вариант осюда. Запроса нет, глобальная ширина полилиний принудительно устанавливается в 0
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 22.09.2008 в 16:44. Причина: орфография |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
По поводу смены текстового стиля есть хорошая функция, опубликованная T.Willey здесь
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 24.09.2009 в 18:18. |
|||
|
||||
Регистрация: 15.04.2005
Сообщений: 243
|
Цитата:
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Залётный,
Цитата:
А про BATTMAN поподробнее.
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 15.04.2005
Сообщений: 243
|
Цитата:
NORMBLOCKS всё переопределя в цвет, для меня, ByLayer. Если в чертёж вставлять блок, то он будет цветом ByLayer. Однако атрибуты блоков уже имеющиеся в чертеже сохраняют свой цвет. Поэтому их требуется синхронизировать, что выполнняется при помощи команды BATTMAN. Просто открывается этот блок в BATTMAN и нажимается кнопка Sync. Возможно ли выполнить такую синхронизацию при помощи LISP и если да, то добавить её к коду NORMBLOCKS. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Так дело в том, что "нормализуются" описания блоков, а не их вхождения. Атрибуты - отдельная головная боль. Пользователь может каждому конкретному атрибуту выставить свой слой, тип, вес и цвет линии, текстовый стиль. И чего и в какой вид приводить?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 15.04.2005
Сообщений: 243
|
Вот вот. Как я понимаю, BATTMAN приводит атрибуты вставленных блоков к тому виду, чтобы они соответствовали "нормализованному" описанию. В случае когда они нормализовались в цвет ByLayer, они сразу принимают цвет слоя, что и требовалось в начале.
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Алексей прав - надо отделять мух от котлет. Нормализация определений блоков одно, вставок (в т.ч. атрибутов) - другое.
При этом надо определяться с понятием "нормализация". Блоки-то разные бывают. Например, другой чертеж вставленный в виде блока скорее всего не надо нормализировать. А вот различные блоки условных обозначений - надо. Особенно если они сделаны черт знает кем и когда. У меня для нормализации используется 16 функций, которые применяются в разных сочетаниях. Что нормализуется: 1. Все примитивы блоков переносятся на слой 0. 2. Большинству примитивов назначается цвет ByBlock. Исключения - когда элементу задан конкртеный цвет, который должен быть постоянным всегда и в любых условиях. 3. Особые сложности с шириной и весом линий. Если задан вес 0, то он переводится в LwDefault - иначе могут быть пробемы с печатью. Если у полилиний не постоянная физическая ширина - она не изменяется. Для полилиний с постоянной физической шириной - вес ByLayer. Если у полилиний уже есть Lw, и он не 0 и не Default - устанавливается ByBlock. Ну и другие варианты есть. 4. Вес линий для текстов и атрибутов LwDefault или зависящий от высоты текста - чтоб "большие" буквы выглядели жирнее, как по ЕСКД. Что касается атрибутов во вставках, их надо приводить к действующему определению стиля. Во вставленных блоках при изменении параметров текстового стиля (наклон, сжатие) вид атрибутов не изменяется. Чтобы их причесать используется специальная функция. |
|||
|
||||
Регистрация: 15.04.2005
Сообщений: 243
|
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Описание блока всегда одно. Вхождений блока может быть сколько угодно, именно вхождения блока имеют такие свойства, как слой, тип, цвет и вес линии, пространство-владелец, габариты и т.п. Только вхождения можно разбивать. Только во вхождениях можно редактировать значения атрибутов.
Но состав блока хранится в описании. Изменение описания блока приводит к изменению вхождений. Выполнение _.refedit - это редактирование описания блока.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
В английской версии BLOCK - это имя команды, которая позволяет создать Block Definition (определение блока). Одновременно block - это термин для какого-то количества разных примитивов, объединенных в одно целое и имеющих имя.
INSERT - имя команды для вставки блока. Одновременно INSERT - это имя примитива вставленного в чертеж блока. Вот эти insert-ы и называют вхождениями или вставками блоков. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Цитата:
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Если надо, то можно и самостоятельно нарисовать Вопрос в количестве и качестве проверок.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Цитата:
Поэтому и хотелось взглянуть квалифицированное решение. У тебя смотрел, но не нашел...
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Код:
Код:
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Код в #28 это делает. Изменяет все в соответствии с текущими установками заданного стиля - в том числе и у всех атрибутов всех блоков с таким стилем.
|
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Цитата:
Извини, не смог поблагодарить сразу... Пригрузили бесплатной халтурой, как только освобожусь, сразу пущу его в освоение.
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Во вхождениях блока можно менять не только значение атрибутов, но и их наименование, при этом в чертеже появляется несколько вхождений одного и того же блока, но наименования атрибутов и их значения разные. Такое состояние копируется как внутри самого файла, так и передается копированием в другие файлы. Это необходимо, когда надо переименовать атрибут с одного языка на другой, не нарушая целостность базового описания. Везде, где в работе программы нужно переписывать в отчетный документ не только значение атрибута, но и его наименование, такое возможно. Значит, и тут могут быть подводные камни.
Командой ATTSYNC все вхождения блока возвращают свои первоначальные значения имен атрибутов, но при этом стирается значение этих атрибутов в каждом вхождении блока и заменяется значением из базовой записи. Если имена атрибутов соответствуют базовому значению имени атрибута, то значение атрибутов в таких блоках при ATTSYNC не нарушается, хотя оно и разное, а если имя атрибута "подкорректировали" то при ATTSYNC значение уйдет в мусорку, причем во всех вхождениях! Вы все знаете, что имена атрибутов пишутся заглавными буквами, но их можно и не заглавными писать, но только через лисп. Если такое сделали с вхождением не поменяв в базовом описании, то может произойти непоправимое (если таких вхождений несколько тысяч). Есть проблема с перестановкой местами имен атрибутов. Чисто в трудоемкости. Поменять что в базовом описании, что во вхождении местами атрибуты можно только переименовав уже имеющиеся и перенеся их значения друг-другу. Если сделать это только во вхождении, или только в базовом описании, то при ATTSYNC .... сами понимаете. Значит надо переставив в базовом описании выбрать все вхождения и там переставить, предварительно проверив, что все вхождения соответствуют базовому описанию. Я сейчас работаю над весьма большой программой по аудиту блоков, там все это будет реализовано. Более того, сначала отчет о существующем положении, а уж за тем корректировка. С заменой свойств примитивов включенных в блок дело еще сложнее. Вы про блоки в блоке еще не обсудили. Наверное я и вышеизложенные моменты учту и добавлю в этот аудитор. |
||||
|
||||
Цитата:
Например, динамические блоки у нас желательно делать расчленяемыми, а обычные - нерасчленяемыми. Запустил для библиотек динамических - поставил режим "Разрешить расчленение"==Да. А для библиотек обычных - "Разрешить расчленение"==Нет. Или, пока создаешь библиотеки обычных блоков, то нужно иметь возможность их разнести, чтобы делать проверки и т.п. А при передаче в пользование программкой задать запрет. И т.п. Да и по умолчанию в Автокаде стоит "разрешить". И у большинства блоков чужих библиотек стоит разрешение. А блоков множество - в каждый залезать очень долго, и пропустить все равно можно. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 05.04.2010 в 09:58. |
|||
|
||||
Круто, но пока что у меня ругается:
Command: (norm-blocks-with-explode 2 nil) ; error: no function definition: NORM-BLOCKS-WITH-EXPLODE |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
А код вообще загружен?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Пардон! Я не то не туда скопировал!
Работает! А можно задавать Byblock не только линиям, но и окружностям, дугам, подписям - вообще всем типам элементов? Ведь в блоках, особенно в чужих, существующих, используются самые разные типы элементов. Последний раз редактировалось АлексЮстасу, 01.04.2010 в 16:37. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Свойства устанавливаются всему составу описания блока.
> #35: да, можно "нормализовать не все подряд". Но у меня на это сейчас времени и сил немного "не хватат". Сопутствующих вопросов многовато возникает...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Опять прошу прощения! Весна, видно, действует, трудно сосредоточиться. Да, цвет, стиль устанавливаются всем типам элементов.
Но веса линий почему-то остаются ByLayer. И когда ставлю 4, и когда 7. И в прежней версии тоже остаются. Например: (norm-blocks-with-explode 4 t) (norm-blocks 4) Последний раз редактировалось АлексЮстасу, 01.04.2010 в 17:31. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Исправил #34
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Что-то в последней версии norm-blocks-with-explode у меня не только веса не меняются с ByLayer на ByBlock, но и типы линий остаются ByLayer, и слои остаются как были. Меняется только разбиваемость. И когда задаю (norm-blocks-with-explode 2 nil), т.е. изменять тип линий всех объектов всех блоков на "ByBlock". И когда задаю (norm-blocks-with-explode 4 nil), ), т.е. изменять веса всех объектов всех блоков на "ByBlock". И когда задаю (norm-blocks-with-explode 7 t), т.е. изменить слой на "0" (1), тип линиии - на ByBlock (2); вес линии - на ByBlock (4). Можно добавть статистику - сколько блоков обработано. Чтобы сразу было понятно, что программа работала, т.к. при малом числе блоков все происходит так быстро, что непонятно - работала вообще или нет. Последний раз редактировалось АлексЮстасу, 05.04.2010 в 03:14. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Нда, что-то у меня вчерась совсем не соображалось...
Попробуй так: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Работает, делает, хотя и статистику не выдает
|
||||
|
||||
Цитата:
См. в лиспе, в его начале "Аргументы вызова", "Примеры вызова" - в первом посте, в посте #43. |
||||
|
||||
Регистрация: 11.10.2010
Сообщений: 980
|
Проблема не в этом. Есть блок с именем "Блок1", у него 2 вхождения - одно на слой "Слой1", с цветом ПоСлою, весом линии 0,50, типом линии Dashed; второе - на слое "Слой123", цвет красный, вес линии ПоСлою, тип линии Continuous. Какие настройки должны получить примитивы описания блока?
__________________
(/= RegDate StartReadDate) |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Я советую создать несколько блоков с разными настройками примитивов, повставлять их на разные слои и потом разбить. И проанализировать результаты.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
zerg_od,
BGBLFIX - Нормализация блоков
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
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
|
Вроде бы исправил. В первом посте - norm-blocks_v2.lsp
На тестирование времени нет
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Говорила мне мама - не занимайся десятком дел на тормознутом компьютере... Исправил
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
_slonik_, Напоминаю, что эта тема развивалась в LISP. Подготовка подосновы
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
А перевод?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер-строитель Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988
|
Есть блоки и программа norm-blocks_v3.lsp с ними работает, а есть примитив "массив". Ситуация типом линии, весом и слоем базового элемента массива такая же, как и с блоком. Если элемент массива не на слое 0, то изменение слоя массива ничего не изменит
Пример в файле |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
crosandr,
BGBLFIX - Нормализация блоков
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
А у меня результат есть
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 13.02.2009
Воронеж
Сообщений: 39
|
Доброго времени суток!
Отличная программа, работает как надо Только вот нашелся чертежик от архитекторов, пытаюсь выполнить нормализацию блоков, а она некорректно обрабатывает, по крайней мере, обрабатывает не так, как другие чертежи. Пишет: "Ассоциативность контура штриховки отменена.(много много раз) Вы действительно хотите сделать это? <Н>" И вот совсем не понятно что я хочу сделать??? И как это исправить? Чертеж прикреплен Autocad 2010 Windows 8 x32 Последний раз редактировалось Soldat_OV, 18.11.2015 в 22:46. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Soldat_OV, О какой проге идет речь?
----- добавлено через ~2 ч. ----- Проверил на программе из #72 - все обработалось
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Soldat_OV, Попробуй командой из #72 , (скриншот в #74)
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Ого. Вызов функции с параметрами из #34 более интуитивен
Почему бы не попробовать такие же ф-ции Алексея из #1
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
инженер-конструктор Регистрация: 26.12.2006
Moscow
Сообщений: 201
|
Товарищи, выручайте. Как отредактировать геометрию сразу нескольких блоков без атрибутов с разными именами? У меня фасад из тысячи панелей, каждая панель- отдельный блок со своим именем, нужно швы между панелями добавить. Надо каждую панель растянуть и добавить несколько линий, взрывать не вариант, редактировать каждый блок отдельно тоже
Последний раз редактировалось Кукурузо_Джон_Горыныч, 06.07.2016 в 20:47. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Импорт палитры блоков при помощи LISP | TwoZero | LISP | 13 | 31.01.2019 17:38 |
Lisp. Расстановка блоков на пересечении линий. | wetr | LISP | 22 | 03.04.2018 10:54 |
AutoCAD 2008 - вставка блоков из файла в файл | Vavan Metallist | AutoCAD | 14 | 25.05.2009 19:37 |
Удаление не используемых блоков из файла | Гузалия | AutoCAD | 3 | 13.12.2007 10:06 |
2008. Глюк с назначением текущего цвета из Lisp? | _Andre_ | LISP | 5 | 25.10.2007 13:50 |