|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
18.09.2007, 17:45 | #1 | |
Сквозная нумерация динамических блоков
Остекляем!!! Алюминим!!!
Москва
Регистрация: 21.02.2005
Сообщений: 3,824
|
||
Просмотров: 88198
|
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Просто я лиспом не занимался некогда, вот поэтому и прошу помощи.
Для себя вроде алгоритм работы программы вроде сложил 1. Расстановка стоек(дин. блоков) 2. Регенерировать чертеж. 3. Запуск функции обсчета длин и количества стоек, с соответвующим привязками к блокам. 4. Нумерация поз. стоек. 5. Обратная вставка в атрибут поз. соответвующего блока ps команда _attout из ЕТ [ATTACH]1190184972.jpg[/ATTACH] выкидывает тхт файл с значением атрибутов дин.блоков, Код:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Стоп, так задача какая получается? Юзер меняет длину дин.блока, внутрь блока в атрибуты (к примеру, LEN и NUM):
- LEN -> вбить значение линейного параметра - NUM -> вбить номер позиции:?: Если с первой частью в общем-то трудности никакой, то со второй - проблема. Как определять номер позиции? Допустим, стоит 2 стойки, у одной длина 100, у другой - 101. Какие номера и по какому закону назначать?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
1 пункт - LEN -> вбить значение линейного параметра отпадает сам. ( в чертеже можно посмотреть реализацию данного пункта) а вот программка должная сама вставлять номер поз. в зависимости от полученной длины (зависимость можно по возрастанию или убыванию длины) то бишь LEN 1000 - 5шт, прогамма NUM - 1 LEN 1454 - 5шт, прогамма NUM - 2 LEN 2111 - 5шт, прогамма NUM - 3 LEN 5252 - 5шт, прогамма NUM - 4 LEN 2222 - 5шт, прогамма NUM - 5 LEN 5555 - 5шт, прогамма NUM - 6 где LEN вычисляется через поле в зависимости от длины стойки. ps а в примере я что-то не так пояснил???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Я попробовал вставить атрибут-поле, привязанное к значению линейного параметра, но не получилось. Может, что не так делал, но значения вообще не показывались - только "по умолчанию". Сейчас попробую накатать вариант (если успею, правда).
Без простановки номеров позиций получилось следующе <...> Фигня получилась из-за глюка када.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
попробую поподробнее, то как это вижу я.
1. Программа вытаскивает из блоков значение длинн, (промежуточный файл али буфер) 2. Сортирует по возрастанию или убыванию, сортировка должна идти совместно с именем блока (он вроде анонимный), для последующей корректной вставки поз. (дублирующие длины наверно можно удалить) 3. Присваивает значение поз. по длине (на дублирующие длины поз. одинаковы) 4. И собственно присваивает атрибуту соответсвующего блока значение поз.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
мотеж это поможет.
Как это вручную происходит 1. Создан дин.блок с 2 атрибутами: а) - DLINA вычисляет длину стойки через поле; б) - POZ указатель позиции 2. Вставка блоков и удлинение соотвественно. 3. Визульная сортировка по значению длин. 4. Выписка значений длин на бумажку и простановка напротив позиции, одинаковым длинам присваивается одинаковый номер позиции. 5. Присваивание атрибуту POZ блока с соответсвующей длиной значения указанного в бумажке. 6. Присваивание атрибуту POZ блока с соответсвующей длиной значения указанного в бумажке. 7. Присваивание атрибуту POZ блока с соответсвующей длиной значения указанного в бумажке. 8. 9. 10. . . . . . N. Вот хотелось бы начиная с 3 пункта автоматизировать.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Я только что вернулся, так что сажусь за решение 2-й части. Кстати, мой вопрос сможешь решить? Как сделать внутри блока атрибут-поле, показывающее значение линейного параметра? У меня в ADT2006Rus не получилось.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
у меня, в примере, вставлен атрибут с полем, которое отслеживает длину линии. [ATTACH]1190205108.jpg[/ATTACH]
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Какого ляда тогда у меня 2006-й не обновлял? Я чего и голову-то ломал. Так, ща переделаю...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Да простят меня собеседники, вклинюсь.
Если есть некий элемент, у которого в зависимости от длинны меняется марка, то реализовать это можно в самом динблоке. Длины при этом фиксированные и выбираются в раскрывающемся списке, при этом изменяется и сама форма элемента и разные другие ее параметры типа вес, марка и т.п. Далее: Если мы имеем некоторую позицию на чертеже и ее надо обозначить номером или буквенным описанием, то тогда в дин. блок вставляются атрибуты, изменение данных в которых к изменению номера*U123 не приводят и на подсчет не влияют. Скачайте мой 3D динамический блок трубы в ППУ изоляции ду-159 из DWG.RU Downloads/Чертежи/Библиотека элементов и посмотрите как он сделан. |
||||
|
||||
И Господа! Не смешивайте атрибуты блока со свойсвами изделия представленными в виде данных 3D элемента!
Одно дело мы присваиваем 3D элементу характеристики изделия и совсем другое, когда мы ему присваиваем данные о принадлежности и месторасположении в моделе. |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
2 - как известно измененный блок через лисп видится как *Unnn, а вдруг вставлено несколько блоков у которых длина одинакова, но имя разное?? что тогда??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Попробуйте
Код:
Отредактировал: убрал дубликаты объявлений функций вне основной.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Да хоть и то и другое.
Можно выноску зеркалить легким поглаживанием по ручке, можно и вес и марку и еще черте-что менять. Один дин. блок может заменить все типы изделий в линейке! Вот глянь и дальше поговорим. [ATTACH]1190208436.dwg[/ATTACH] |
||||
|
||||
Про разные имена и одинаковую длинну.
Есть в каде одна дырка, которую я успешно залатал. Это, когда вставляешь инсертом дин. блок, он по началу имеет скажем так "техническое" имя такое же как и то, которым вы его окрестили. Стоит только его параметры пошевелить, как он становится *Unnn. Если при этом его параметры вернуть к исходному значению он так и останется *Unnn. Вот если в этот момент опять вставить этот же блок, получается ситуация, когда в модели два одинаковых блока, но с разными именами. Я написал маленький макрос, который синхронизирует имя вставленного блока и делает его *Unnn, причем, если в модели уже есть такой U, то номер станет его. Номер этого U всегда будет привязан к состоянию его свойств (вот состояние атрибутов блока на U не влияют). Если накопировать кучу блоков, пошевелить всем параметры, а потом вернуть, у всех будет один и тот же U номер. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
> Supermax : А ты обращайся не к Name, а к EffectiveName и будет счастие и благолепие.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Не будет. Если динамическим блоком сделать скажем всю серию ФБС, меняя в этом блоке тип ФБС мы тем самым меняем и его сущность, а EffectiveName при этом будет называться "Блоки ФБС" Какие? - можно узнать только прочтя свойства. Или сделать столько блоков, сколько существует видов ФБС.
|
||||
|
||||
В первом выложенном файле не нашел атрибута для позиции. Добавил в блок артибут POZ. Ну и соответственно лисп
Код:
1. Добавлены пропущенные ф-ции 2. Добавлен выбор объектов 3. Предварительно обновляются поля блоков *** ИЗМЕНЕНО 21.09.2007 1. Добавлена регенерация, суффикс, префикс [ATTACH]1190211834.dwg[/ATTACH] |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Ага, а GetDynamicProperties сделано для красоты? Мой код проанализируй построчно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Гениально Kpblc!
С начала мы все элементы сделанные дин. блоками и имеющие атрибут для номера прочесываем и маркируем редактируя значение этого атрибута. Затем пишем малюсенькую прогу, которая ставит выноски, а значение в них слизывает из значения атрибута того элемента к которому выноска ставиться. ГЕНИАЛЬНО! |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
2 Supermax идею насчет привязки позиции к длине элемента, я понял. Получается
длина L1 - позиция N1 длина L2 - позиция N2 длина L3 - позиция N3 . . . длина Ln - позиция Nn плюс - понятно как! минус - скажем при градации длин 1мм от 100 до 8000 позиций будет мммммммм вообщем много будет, если на чертеже всего 10-15 типоразмеров и длины весьма отличаются будет что-то так 1586 - поз.1586 2222 - поз. 2222 250 - поз. 250 ... както не катит :?
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Объясню для чего мне это надо.
Монтажную схему стоек (ригелей) сейчас приходится делать вручную, проставлять позиции, считать длины, заносить в таблицу. Отсюда велика вероятность ошибки, что неправильно замаркируешь или длину укажешь, или в таблице значения перепутаешь. Приходится долго нудно и кропотливо проверять. А проект как всегда нужен вчера. Поэтому большое спасибо тем кто откликнулся. [sm140] Думаю полученная в итоге программа пригодится не только мне.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Нет, градации длин должны округляться самим пользователем. Хочешь 1мм а хочешь 10мм, а хочешь и 50мм. С начала задать размер округления, а затем маркируешь. Тоько маркировка начинается всегда с 1, а вот первая длинна может быть какая угодно, но естественно самая маленькая из выбранных для маркировки элементов. К цифре надо и текстик автоматически добавлять. Типа буквочек или целых слов типа "Стойка-1". Текстик этот надо тоже пользователю давать для определения.
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Я ж в комментах написал, как пользоваться.
Код:
> Supermax : Не очень догнал, чего, получилось?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Я хоть и не видел как работает твой макрос по причине его временной нетрудоспособности, но чисто интуитивно предположил, что ты длины читаешь, сортируешь, нумеруешь и атрибуты блокам правишь.
Может ты чего не так задумал? И где скажи ты определил функцию get-all-atts? Она в нескольких местах встречается и кад ее хочет! Ты понимаешь, КАД ЕЕ ХОЧЕТ!!! |
||||
|
||||
Что касаемо ригелей, то длинну там вручную ставить нельзя! Это изделие штатное и на заказ его делают только если ОЧЕНЬ припечет.
Поэтому смотрите мой DWG и не длинну тогда надо считывать, а марку изделия. Собственно Kpblc ты не отвлекайся, длинну делай, длинну. Марку потом вставишь. Мне в данный момент длинна важнее. Считываешь длинну, делишь ее на число, что тебе юзер дал как округление, полученное значение округляешь до целого и полученное значение после умножения на число пользователя, заносишь как настоящее значение длинны этого элемента. Я бы так делал. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Цитата:
Ну что, мне видео сделать, как работает? Я ж проверяю перед опубликованием, а если не проверяю, то предупреждаю об этом.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Ну е калы мыны!
Взял ТВОЙ DWG, где вставлены POZ. Переписал твой первый макрос в файл .lsp Загрузил Вставил в коммандную строку (try-to-renum "dlina" "pos") нажал ентер Объвел блоки нажал ентер - Какие были свойства и длины такие и остались. |
||||
|
||||
Ладно, поменял я длинну, опять запустил и все осталось как есть.
Обнулил атрибуты - не помогло. Вернуло те номера, что с самого начала сделала. Один раз отмаркировало насмерть! Меняй длинну, не меняй теперь уже ничего по новой не отмаркируешь. Это я изгалясь от скуки. Вставь очистку памяти от старых значений. |
||||
|
||||
Будь добр, возьми мою трубу и откатай на ней макрос.
Не хочет он пробелы видеть в длинне "... L=" без пробела берет. Русский шрифт ему не нравится. А как без него? (try-to-renum "... L=" "ПОЗИЦИЯ_ПО_СХЕМЕ") надо чтобы взял!! |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Без учета #46
Специально только что проверил, нашел один баг / фичу, пофиксил. Суть в том, что не выполнялось преобразование в числовое значение для сортировки. Теперь выполняется, если это возможно. Дополнительно внес в локальные переменные объявления 2 функций. Код:
[ATTACH]1190225934.dwg[/ATTACH] Примеры вызова: (try-to-renum "name" "pos") (try-to-renum "dlina" "pos") --- Добавлено: какая труба? Откуда ее взять-то? Выкладывай.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Ура-а-а-а! Я трубу починил и все заработало даже с русским шрифтом.
Пробел пришлось ликвидировать, атрибуты снести и поновой вставить, там еще один комплект висел непонятно где. Только полной видимостью и нашел. Так, не расслабляться! Округление человеческое давай и добавочку к номеру. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Прошу прощения что позновато влезаю, но есть и вариант сделать это без лиспа - с помощью контрольной суммы, минус в том, что вхождения блоков не будут упорядоченны по номеру относительно длинны, а вероятность колиизии определяеться размерностью (должно быть достаточно большое простое число относительно количества вхождений) - объяснение муторое получилось - смотри пример если подойдет то пожалуйста.
[ATTACH]1190228400.dwg[/ATTACH]
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
> Supermax : Бгы... Ессно, работать не будет. Потому что у меня идет обращение к атрибутам блока, а не к значениям динамических свойств. Отсюда мораль - еще раз внимательно перечитывать тему
Лично мне сейчас переделывать лисп в ломак по полной программе. Потому что следом захочется ставить позиции на основе не одного свойства, а нескольких, да еще и в порядке указания, да еще и с возможностью фильтрации по атрибутам... Не, народ, я на такое не согласный.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Дорогой наш Кулик Алексей aka kpblc работает!!!!!!!!!!!!!!!!!!!!!
я из первого поста запустил РАБОТАЕТ именно так как надо Смотри прилагаемый чертеж [ATTACH]1190266169.dwg[/ATTACH] Порядок моих действий 1 - расстановка стоек 2 - Regenall 3 - Ввод команды Код:
4 - и собственно на обсчет
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Сначала чутка оффтопа:
Я сейчас не работает, я сейчас сидит дома и слегка болеет и с трудом соображает. Теперь серьезно: вариант будет корректно работать, пока длина стоек не будет составлять, к примеру, такую последовательность: 150 200 2000 78 - вот тогда нумерация позиций корректно проставлена не будет. В последнем варианте я попробовал уйти от этого. Вроде даже получилось.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
2 вариант тоже работает, я как-то разницы не заметил.
Цитата:
Цитата:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Для примеру: выбрать 4 стойки, в первой длина 700, во второй - 78, в третьей - 470, в последней - 5600. Какова должна быть последовательность позиций и какова она будет (при первом варианте)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
Если можно то добавь фунцию выбора, а то не всегда нужно проставлять на всем чертеже
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
|
||||
|
||||
Короче, тема сдулась. Если при написании макросов будет такой подход, мол дескать под конкретные квадратики с кружечками, да и то только если заказчик постоянно теребит, то жалко, жалко ваш труд господа.
А за деньги готовы макрос до ума довести? Могу дать 3000р. За больше и сам могу написать. |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
Цитата:
По моему вопросу все правильно и корректно работает. Остались небольшие косметические доработки. Вот освобожусь потестю и выдам последние пожелания. 2 Supermax ох и вредный ты мужик :evil:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Цитата:
Цитата:
|
||||
|
||||
В титрах пишет правильно, а атрибуты на ваших квадратиках не правит. Про мои трубы пока молчу, я там и двумя атрибутами пожертвовал, и свойство как у вас сделал (оно у меня было ... L=).
Про ТЗ, собственно мне тоже надо, чтобы мои трубы хавал (пардон за выражение). Kpblc правильный подход дал, только не доделал чуток. (функция "признак А" "размер округления" "название свойства длинны" "название атрибута для установки округленной длинны" "название атрибута для номера") это если с длинами, если с именами, то (функция "признак Б" "название свойства с именем или маркой" "название атрибута для номера") признаки для отличия одного режима работы от другого. Можно конечно и слить, но очень длинно получится тогда третий признак - все выше перечисленные исходные данные. Можно, и даже нужно не строчечное а диалоговое заполнение данных. [ATTACH]1190298174.dwg[/ATTACH] |
||||
|
||||
И чего это я вредный? Сижу, тестю ваши квадратики, свои любимые трубы уродую английскими буквами, трачу свое драгоценное время (знал бы мой заказчик чем я занимаюсь вместо его заказа), а меня зачисляют в команду рогатой нечисти. Лучше бы сделали ваши стойки в 3D со всеми полезными данными о них. Я бы вам помог их задинамичить, вот это была бы работа. Зрение свое тратишь на всякое баловство.
Извиняйся давай! А то я обижусь. :cry: |
||||
|
||||
И еще про округление длин.
Вот у меня монтажка, сделанная динблоками. Округлять всегда надо в плюс максимум 50мм. Поясню: Трубу всегда можно немного подрезать. Даже очень много можно, вместе с изоляцией. Заказывать трубы надо всегда в плюс иначе будет не хорошо. Стыки изолировать можно только до определенной длинны, если не хватает длинны приходится по месту вставлять метровые отрезки (это разрешенный минимум). И вот представьте, последний стык и не хватает пол метра (набежало). Что делать? нужен кусок трубы 1м. а его нет. и купите на Мосфлоулайн 1 метр, попробуйте. Вы его до-о-лго будете ждать. Ради одного метра там, да и не только, париться не будут. Запас всегда нужен, но если у вас останется после монтажа две трубы по 12 метров - вам их выдадут вместо зарплаты. Да и то не за один месяц, а за несколько. Резюме - округление надо закладывать либо +/-, либо только +. |
||||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2Supermax
Надоело твое нытье. Бери книжку в руки и дорабатывай под себя код открытый выложили наши ГОРЯЧО ЛЮБИМЫЕ ПРОГРАММИСТЫ!!! СПАСИБО!!! 2Дима_ Прикольное решение, только неподсилу моим мозгам: 1) раскажи плз что такое trunc в филдах (первый раз узрел). 2) я с математикой не очень в ладах, поэтому без кратких пояснений несколько лет буду допирать. Заранее благодарен. ЗЫ: kpblc & VVA еще раз огромное спасибо!!! |
|||
|
||||
>Supermax №72
Цитата:
У тебя атрибут имеет тэг POS, у меня POZ Найди этот кусок в программе Код:
Глядишь, и квадратики начнут правится |
||||
|
||||
Kpblc может подтвердить, если я сяду калупать эти коды, я их так уделаю, что у тебя не три, тридцать три вопроса возникнут, но работать они будут как часы по всем параметрам и на любых файлах.
Если я тут свои коды не кладу, так это только потому, что меня опередил Kpblc. Он меня сюда затащил. VVA. Я и POZ и POS пробовал, что я не понимаю. Надо договориться сразу POZ, так POZ. |
||||
|
||||
Сижу в 2008-ом.
выдает Command: (c:NDB) Select objects: Specify opposite corner: 3 found Select objects: _.UPDATEFIELD Select objects: 1 found Select objects: 1 found, 2 total Select objects: 1 found, 3 total Select objects: 0 field(s) found. 0 field(s) updated. Command: Позиция Длинна 1 - 0.0 и усе. Дальше не хочет. Я трубы в Stoyka переименовал и POZ и DLINA вставил - пока не хочет зараза. |
||||
|
||||
Так, установлен следующий факт, если в атрибутах "DLINA" вручную прописать длины, то он эти длины посчитает и атрибут "POZ" промаркирует. Это у меня в трубах. Из свойства "Distance" значение в атрибут "DLINA" не переходит.
|
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Вообщем еще 2 пожелания осталось
1 - ввести команду _regen перед началом работы основной программы. 2 - Добавить возможность вставки префикса и суффикса в позицию. В остальном программы вполне рабочие. ps Kpblc а может ввести указание пользователем тега атрибутов длины и позиции, чтоб мышкой тнул и в атрибут (типа 1 - укажите аттрибут длины, 2 - укажите атрибут позиции)???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Вот тут возник у меня один вопросик.
Нумерация что только у стоек, или еще есть элементы с номерами? Если есть еще елементы, то что, у них имя блока тоже Stoyka? Вот я взял и подредактировал bname. (= (strcase name)(strcase name)) извините за наглость и лень круто все менять. Теперь у меня сквозняком все блоки нумеруются, а не только StoyK-и. Если бы нумерация была "Ст-1", "Ст-2" и т.д. я бы понял, что другие элементы к этим "Ст-" не относятся, а так, голые цифры - непонятно, что дальше делать будете. Или у тех элементов не кружочки, а ромбики, квадратики и т.д.? Или у вас на чертеже кроме стоек нет ничего? P.S. Sleekka а ты кроме как читать чего-нибудь умеешь? |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Значит так, попытаюсь разобраться:
Прежде всего, №81 : если атрибуту назначить поле, которое будет брать длину с объекта, то ничего проставлять руками не надо. zenon все отлично показал, даже у меня получилось разобраться. Учитывая, что у Supermax 2007 или 2008, ситуация упрощается - лично у меня не удалость в 2006 взять значения прямо с динамического свойства (хотя и не отрицаю такую возможность). А так... Сделать атрибут невидимым, в него поле и(или) формулу и всех делов. Забирай > №72 : Я ж говорил... А сейчас я задаю достаточно каверзный вопрос: что делать, если в блоке атрибут1, свойство1 и свойство2 одинаковы, но разница в свойстве34? А что делать, если в выбранном блоке отсутствует атрибут, куда вставлять позицию? А что делать... Для конкретных труб выполнить задачу "взять длину, тип материала, диаметр; длину округлить с шагом 100 вверх и проставить позицию в атрибут с тэгом PositionForSpecification" вполне выполнима. Но это тоже будет конкретное решение конкретной задачи. > #82 : ну у меня регенерация после выполнения происходит (правда, только после успешного). Префикс и суффикс можно и тут сделать, можно и воспользоваться готовыми решениями (варианты выкладывались и здесь, и на autocad.ru - найти только надо). > PS: можно, но явно не сегодня. Завтра, и то, если VVA не опередит
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
2Slekka ну в кратце так - контрольная сумма - функция которая дает уникальное число определенной разрядности к набору данных - в основном служит для проверки, в моем случае используется остаток длинны от 23 (делим длинну на 23 остаток и есть контрольная сумма) - то есть варианты могут быть от 0 до 22, почему 23 - это простое число (делится только на себя и единицу) соответственно вероятность совпадения равна 1/23. То есть моя функция на 23, 46, 460 - выдаст одно и тоже число - 0 - это и есть коллизия. Чтобы уменьшить вероятность коллизии надо взять большее простое число, но и разброс будет больше - число следует подбирать по прикидкам кокое количество групп может максимально использоваься. Про trunc - это округление до целого в меньшую сторону - делим на 23 округляем в меньшую, умножаем на 23 - разница и есть остаток. В общем как-то так. Если непонятно спрашивай. :wink:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Взято из хелпа 2006:
sin(угол) Синус угла cos(угол) Косинус угла tang(угол) Тангенс угла asin(вещ) Арксинус числа. Аргумент должен лежать в пределах от –1 до 1 acos(вещ) Арккосинус числа. Аргумент должен лежать в пределах от –1 до 1 atan(вещ) Арктангенс числа ln(вещ) Натуральный логарифм числа log(вещ) Десятичный логарифм числа exp(вещ) Натуральная экспонента числа exp10(вещ) Десятичная экспонента числа sqr(вещ) Квадрат числа sqrt(вещ) Квадратный корень числа (неотрицательного) abs(вещ) Абсолютная величина числа round(вещ) Число, округленное до ближайшего целого trunc(вещ) Целая часть числа r2d(угол) Преобразование угла из радиан в градусы. Например, r2d(pi) преобразует pi радиан в 180 градусов d2r(угол) Преобразование угла из градусов в радианы. Например, d2r(180) преобразует угол 180 градусов в радианы и возвращает значение, равное константе pi pi Константа «пи» Вообще в акаде много интересного, но никак не могу придумать импорт данных в параметры, сам Крыс сказал что дело гиблое, а тут как говорится возразить нечего.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Мало ли что крыс сказал, я не бог. По слухам (но не помню где мелькнуло), вроде были попытки сделать полностью программное создание дин.блока на лиспе, но результата истории я не знаю - не следил. Очевидно, что надо расковыривать динамический блок , созданный самостоятельно (и словари и РД, с ним связанные). Меня на это не хватило
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Да не, TelepatApplication наконец хоть как-то заработал, но коннектится только на общедоступные адреса, к пользователям - ну ни в какую, хоть тресни Connection timeout, User have a rest или еще чем-то таким же непотребным матерится.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Дело в том, что я первый раз слышу, что автокад, без дополнительных программ, знает функции: Код:
|
||||
|
||||
Цитата:
Видимо, я не верно вас понял - вы имели в виду, именно автокадовскую справку, с командами автокада.. Т.е. вы дали список функций, для акадовского калькулятора. А я их искал, хотя был уверен, что их нет, в лисп редакторе... |
||||
|
||||
Цитата:
>Supermax Вот твой файл, с которым работает лисп из поста 21 [ATTACH]1190363101.dwg[/ATTACH] |
||||
|
||||
В 12:45 по Москве обновил пост 21 (устранена одна ошибочка)
Цитата:
Код:
|
||||
|
||||
VVA, Мой файл в 72 посте. Да и то, только верхняя его часть. А это, так, ваше в моей интерпритации. Мне оно без надобности.
Дублировать длинну в свойствах длинной в атрибутах считаю ошибкой. Надо округлять и редактировать свойсво. Блоки дернуться и подравняются. Заодно и *Unnn тоже подравняются. Нахлесты и недостача станут видны, это тоже плюс. VVA, я с тобою не прощаюсь, а всем остальным машу ручкой. Это последнее мое сообщение в этой теме. Можете не язвить, из "Избранное" я эту тему уже снес. |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
2 VVA небольшой вопрос? а что там за гиперссылка вываливается?? когда к блоку подводишь курсор?????
[ATTACH]1190382191.jpg[/ATTACH]
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
РАБОТАЕТ СУПЕР!
Большое спасибо от всех фасадчиков, будем запускать в оборот. ps а коды изи поста 21 и 98 чем нить отличаются???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
>zenon 100
Это номер позиции, помимо атрибута заносится в hyperlink. Если раздражает, найди строчку Код:
Цитата:
Кстати, я согласен с Supermax в том, что для считывания длины незачем свойство Distanse переносить в атрибут Dlina. Из лиспа оно отлично читается и заносится (можно и "подравнять" блоки) В теперешнем виде стойки с длиннами 370,567 и 370,1 будут иметь разные номера позиций Последний раз редактировалось VVA, 19.09.2015 в 06:59. Причина: орфография |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Просто мне нужен аттрибут длины для внесения в таблицу, есть программка которая все переносит в табличку.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
В принципе разницы никакой - забирать данные из атрибута или динамического свойства.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Цитата:
[ATTACH]1190625606.gif[/ATTACH]Каждый раз переписывать код, или дополнительно вводить обрабоку длины, ну так мы дойдем до полноценной программы расчета фасадов. :roll: Притом никогда не знаешь какое удлинение будет.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Хм. А что мешает "по схеме" делать "как в жизни", особенно если фасады не гнутохитрые? Про зимние сады и крыши специально не заикаюсь - там в 70% случаях только 3Д и спасет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Ну сначало вроде оси раскидываю а уж по ним все остальное.
Делать привязку "по жизни", нет уж увольте. У нас каждый призводитель норовит свои правила установить в обработке, вот и приходится вы..кручиваться.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Инженер-электрик Регистрация: 16.01.2007
Москва
Сообщений: 19
|
Попробовал нумерацию. Все понравилось, все хорошо. Есть одна маленькая просьба... Нельзя ли подправить код чтобы нумерация шла не только на 1 блок, например с именем prof1. А нумеровались все выделенные блоки с именами prof1, prof2.... profn. Т.е. чтобы выделеным блокам prof1...profn, имеющим одинаковую длину присваивались разные позиции?
PS ну точно придется браться за изучение лиспа)) |
|||
|
||||
Регистрация: 29.07.2008
Сообщений: 55
|
Здоровапомогите разобраться, из какого хоста взять код проги, автокадовский файл с блоками, и так как не силён в лиспе -пошаговую инструкцию по применению проги....очень помогло бы в работе...а то часто приходится маркировать прямоугольные блоки.....заранее СПАСИБО
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Сам-то понял чего сказал?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 29.07.2008
Сообщений: 55
|
ты не мог бы конечный код проги скинуть......автокадовский файл с блоком стойки, к которому она применяется....
как LISP файл подгружать я знаю.... а вот как её потом в автокаде на блоке применить????.... в командной строке прописывал -не получается..... |
|||
|
||||
Варианты лиспа и файлы находятся в постах #21, #47.
Что делать с лиспом смотри в моей подписи.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Цитата:
Нашел еще лисп и файл в #97 и #98
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Очень нужная тема!
А можно сделать тоже самое, но уже отталкиваться от 2х свойств? У меня динамический блок - панель. Размеры меняются динамически, а позицию я присваиваю вручную. Типа А1, А2... На небольшой объект доходит до 200 типов Кроме того можно и сбиться, а потом искать где ввел 2 одинаковых имени для разных размеров. Контролирую наличие с помощью _dataextraction. Отличия моего блока: - определяющие размеры "длина" и "ширина" - свойства д.блока - шаг изменения 1 мм. (закреплено в свойствах д.блока) - нет атрибутов "длина" "ширина"(свойства д.блоков извлекаются также хорошо, как и читаются лиспом) - маркировка блоков м.б. А1,А2... B1, B2...где буква означает цвет панели, а цифра - уникальное сочетание длины и ширины. Блок прилагается.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
Мне так думается, что штриховка не ассоциативная, нет???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,824
|
ассоциативность задается при создании штриховки
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 06.08.2008 в 03:39. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
wetr, это относилось к удаленному посту OHUKC'a, как я понимаю?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Кулик Алексей aka kpblc, это относится к посту №130
Цитата:
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
wetr,
Особо не проверял. Файл для примера в #122 Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 08.08.2008 в 12:07. Причина: Новая редакция |
||||
|
||||
VVA, очередное мега СПАСИБО
Работает как надо, даже с разными блоками (именами). Думаю эту наработку - блок и лисп - нужно взять многим фасадчикам на вооружение! Offtop: ЗЫ Как расшифровывается "mip" ?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
wetr, mip - МинскИнжПроект
Имена обрабатываемых блоков можно задавать здесь Код:
(setq bname "*") ;_Все имена (setq bname "B*");_С именами, начинающимися на B (setq bname "B#*");_С именами, начинающимися на B и следующей цифрой
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 07.08.2008 в 12:21. |
||||
|
||||
VVA, а можно сделать, чтобы программа запоминала последний введенный суффикс и префикс?
Смотрю в к.строку: Введите префикс или Пробел - нет <A>: кажется нажму пробел - будет А по умолчанию - а получается, что вообще нет никакого префикса.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
wetr, Обновил код в #134
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 07.05.2009
Астрахань
Сообщений: 103
|
Цитата:
__________________
Debes, ergo potes |
|||
|
||||
Crane, лисп завязан на определенный блок с конкретными названиями свойств. Выложи свой блок сюда, если ничего не получается
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Регистрация: 07.05.2009
Астрахань
Сообщений: 103
|
Подскажите пожалуйста в каком посте взять работающий лисп-файл, как в нем указать нужный дин.блок и его свойства - для маркировки элементов по длинам. Как лисп подгружать в акад вроде ясно, а вызывать его с комстроки? Мой блок это стержень с изменяемой длиной. Будут два варианта горизонтальный и вертикальный.
Очень нужно, помогите плиз.
__________________
Debes, ergo potes Последний раз редактировалось Crane, 23.12.2009 в 13:36. |
|||
|
||||
Регистрация: 31.05.2010
Сообщений: 37
|
Здравствуйте.
Проектирую ОПС, необходимо промаркировать извещатели (сквозная нумерация) по всему проекту. Пользуюсь программами для маркировки, но при этом, если где-нибудь в середине проекта один извещатель удаляется, то нужно перенумеровывать все остальные заново. Есть ли возможность пронумеровать их так, чтобы при удалении одного элемента, вся остальная цепочка перестраивалась автоматически? Пример.dwg |
|||
|
||||
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Чтобы "поподробнее" - вам сначала следует озвучить язык, на котором пишете код.
Если на .Net, то (ежели мне не изменяет память) "поймать" удаление примитива можно подписавшись на событие ObjectErased объекта Database. Однако я не думаю, что стоит это делать, поскольку событие будет генерироваться при удалении каждого примитива (насколько я помню). Если вы выбрали и удалили сразу несколько примитивов, к примеру у вас 10 000 вхождений блоков и вы удаляете номера с 5 по 15, то после удаления каждого примитива будет выполняться перенумерация. Сами должны понимать, что это будет не самый быстрый процесс. Лучше создать спец. команду, которую можно было бы вызвать принудительно, после удаления примитивов. Эта команда должна выбирать нужные вам вхождения блоков и выполнять корректировку нумерации - так будет быстрее (имхо). Если пишете на Lisp - тут я не подскажу, однако юзать реакторы в данном вопросе всё так же не советую. Пример возни с указанным мною событием: Код:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 14.09.2010 в 14:40. |
||||
|
||||
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Регистрация: 31.05.2010
Сообщений: 37
|
Да. Я просто понял, что такое мне не по зубам. Казалось, что проблема может решиться при помощи использования Полей, или связывания атрибутов блоков с таблицей, в которой можно было бы редактировать значения атрибутов. А на уровне программирования не осилить с моим уровнем знаний.
Спасибо за потраченное время.. |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Доброго дня.
Нумерация блоков штучка интересная. А можно сделать "Нумерация атрибутов в блоках из внешнего файла Excel или txt". 1) Имеются множества блоков с атрибутом "Позиция". 2) Имеется готовый файл Excel с позициями оборудования в котором пронумерован первый столбец А Ячейка А1 = 1 Ячейка А2 = 2 Ячейка А3 = 2а Ячейка А4 = 3 Ячейка А5 = 3а Ячейка А6 = 3б Ячейка А7 = 4 и т.д. При запуске LISP: 3) Запрос на выбор EXCEL файла (Запоминание этого Excel файла). 4) Запрос выбора позиции (princ "\nВведите номер позиции") 5) Ввод вручную позиции (к примеру "2а") 6) Lisp сверяет введенную позицию "2а" с выбранным EXCEL файлом и столбом А 7) Если находит "2а" то запрос выбрать дин. блоки с атрибутом "Позиция" и вставить ячейку А3 (см. пункт 2 "Ячейка А3 = 2а"). 8) После вставки позиции в атрибут, подсветить атрибут цветом. 9) Если не находит "2а" то повтор. (princ "\nДанной позиции не существует") (princ "\nВведите номер позиции") 10) При повторном запуске lisp сохранять предыдущий вод позиции. 10) И самое необходимое. Ради чего это все надо. При изменении позиций в ячейках этого же Excel файле (к примеру "2а" я заменил на "2б"), во всех дин блокам атрибуты с "2а" поменялись на "2б". |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
VoVoRoNaLe
На примитивном уровне то что надо. Но примитивный уровень для использования одноразовый. Но суть конечно почти то что надо. Исходя с команды AttOut: 1) Сохраняет только указанные конкретные блоки BLOCKNAME *U166. Как быть если нужно добавить или удалить блоки с атрибутами к предыдущему списку в txt? 2) Вытягивает все атрибуты и лишнюю информацию в txt. Как убрать лишнюю информацию, а оставить только атрибут "Позиция" для вывода в txt? 3) Сохраняет порядок записи txt в зависимости от последовательности указаний блоков. Как отсортировать по алфавиту? 4) Если выделить несколько блоков одинаковых один в один. Создаст две разных записи. Хотя позиция может быть одинаковая. Как свести все записи с одинаковыми атрибутами в одно? С командой AttIn вопросов практически нет. Ну разве что как при пересчете подсветить все измененные атрибуты? Идея то какова всего этого. Имеется спецификация в которой каждому оборудованию присваивается позиция. "Температура" ее позиция "1" "Гильза для температуры" ее позиция "1а" "Давление" ее позиция "2" "Перепад давления" ее позиция "3" и.д. Эти позиции проставляются на чертеже. Причем на чертеже может быть как одна позиция "2" так и десять позиций "2". Позиции имею жесткую сортировку 1а, 1б, 2, 3, 4а, 4б, 4в, 5 и т.д. И во время проектирования могут добавляться (удалятся) новые блоки с атрибут "Позиция" которые должны встать между поз. 2 и 3. Тобиш все остальные поз. после 3 смещаются на единицу. Типа 1а, 1б, 2, 3, 4, 5а, 5б, 5в, 6. Последний раз редактировалось Eddicordo, 27.10.2010 в 17:28. |
|||
|
||||
Регистрация: 25.09.2008
Новосибирск
Сообщений: 218
|
Если обрабатывать в Excel, то большинство вопросов легко решаются:
1) скопировать вновь извлеченные и добавить к предыдущему списку; 2) удалить лишние столбцы в Excel; 3) сортировка в Excel; 4) у одинаковых блоков одинаковое имя, использовать атрибут, содержащий поле с именем блока, по имени сортировать в Excel. Если блок динамический, то использовать атрибуты со значениями параметров блока, по ним и сортировать.
__________________
www.saa-blogs.blogspot.com |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Да тут не суть важно где хранится сам список позиций. В Excel в txt, хоть сам AutoCad в табличной форме хранит позиции, либо другая внешняя программа.
Главное что бы: 1) Хранился список позиций. 2) Редактирование этого списка (добавить, удалить). 3) Сортировка списка по увеличению цифр. 4) Скрещение одинаковых атрибутов в одну. 5) Расстановка позиций со списка в разные блоки чертежа и чертежей. 6) При изменении списка позиций обновление всех блоков в одном и нескольких чертежах. 7) Подсвечивание внесенных атрибутов в список и измененных атрибутов в блоках. Это касается не только позиций. А также можно будет использовать для расстановки номеров кабеля. Короче говоря каждый найдет для себя применение. Раньше использовал вот эту программу. http://dwg.ru/dnl/101 Но она мало эффективная. При количестве (ячеек) позиций более 50 шт. начинает очень сильно тормозить. Не работает с атрибутами. Нет возможности добавить новую позицию (ячейку) по сортировке. Приходилось новую позицию создавать в самом низу. Короче не прижилась эта программка. Для использования обычного пользователя очень заумная, тяжелая для использования. Есть MyExpress.lsp кому интересно могу выложить поковыряться Последний раз редактировалось Eddicordo, 28.10.2010 в 11:19. |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Можно продемонстрировать на примере поэтапно.
Какой ход всего процесса. Возьмем примеры: 1) Проект в разработке. Вы уже пронумеровали все позиции по всем чертежам. Во время работы к Вам приходят технологи с изменениями которые влекут за собой изменения в позициях. Вам необходимо пронумеровать абсолютно все позиции заново. Нумеруете в ручную изменяя атрибуты? 2) Проект готовый. Заказчик захотел внести изменения которые опять же влекут за собой изменения позиций и вам же опять необходимо пронумеровать все позиции. Нумеруете в ручную изменяя атрибуты? |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Что все вбивают позиции вручную? И при изменения обновляют так же в ручную?
Или может кто то поделится дельным советом как проставлять удобно позиции и при изменениях, добавлении, удалении в одном месте обновлять их хоть каким то образом. Сюда же можно отнести и Номера кабелям. Одни и те же номера на 5-20 чертежах. И при смещении или замене номеров кабеля обновление согласно какого то списка. В одном месте поменял позицию, номер кабеля. Обновил чертежи и получил результат и сокращение времени на пару дней. |
|||
|
||||
И так позаимствовав у Wetr его блоки решил пронумеровать кассеты на фасаде расставив использовал код от VVA в посте №134.
Всё бы хорошо но по подаются одинаковые блоки но с разной номерацией . Файл с блоками прикладываю. |
||||
|
||||
Выкладываю спецификацию (в самом файле помечены желтым цветом повторяющиеся нумерации).
Кстати возможно ли в коде добавить ещё одну операцию например есть 2-ва размера 744мм и 745мм -либо округлял или уменьшал. Прошу в помощи в правке кода. Код:
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Файла что-то не вижу... Или имеется в виду файл в #157?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Это по всем динамическим свойствам или по одному?
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Цитата:
Скорее всего по всем динамическим свойствам (если можно покажите 2-х вариантах нужно про бывать). |
||||
|
||||
VVA
Спасибо Большое работает по маркировке как нужно. Вопрос что то не пойму про округление (возможно что то не так делаю-но там всё прописано какое значение ввести но увы не хочет округлять). Или мы друг друга не понимаем, лучше выложу файл . В файле (для наглядности 4-блока) у 1-го изменил высоту на 0.5мм у 2-го ширину 0.5мм - в итоге нужно округлить значения в кратное значение больше или меньше. |
||||
|
||||
Округление запрашивает кратность округления.
Если на запрос "Округление (5 - кратно 5; 0.5 - кратно 0.5) или 0 - нет <НЕТ>:" ввести 1 - число 850 округлиться до 850 - число 851 округлиться до 851 - число 853 округлиться до 853 5 - число 850 округлиться до 850 - число 851 округлиться до 850 - число 853 округлиться до 855 0.5 - число 850.2 округлиться до 850 - число 850.3 округлиться до 850.5 - число 850.7 округлиться до 850.5 В твоем случае введи 5
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
VVA замечательная программа
Лисп не знаю, но в этих строках так и должно быть? (setq dp2 (round dp1 *ROUND*)) и dp2 (round dp1 *ROUND*) или надо (setq dp2 (round dp2 *ROUND*)) и dp2 (round dp2 *ROUND*). Просто жизненно необходимо сделать сортировку при назначении позиции, сначала пройтись по dynProp1, затем по dynProp2, а то получается при анализе какая то каша. Программа очень очень нужная, пожалуйста добавьте эту возможность. |
|||
|
||||
Цитата:
Я исправил #163 Это изменение решает проблему? Если нет, то нужно ТЗ поподробнее и пример ввиде dwg файла
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Сортировку сделал. Поправил еще один баг. См. #163
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Спасибо. Опробовал на двух разных динамических блоках. Всё получилось. Тестировал на AutoCAD 2012 32bit. Забивал в dynProp1 и dynProp2 разные свойства, нумерация чётко шла в зависимости от принятых свойств с сортировкой сначала по dynProp1, затем по dynProp2. Буду тестировать на более крупных объектах, через две недели отпишусь. Ещё раз спасибо.
Последний раз редактировалось Alex_80, 25.11.2011 в 13:27. |
|||
|
||||
Регистрация: 27.05.2010
Москва
Сообщений: 11
|
Спасибо, очень полезный макрос. Тестировал на AutoCAD 2012 32bit rus.
Единственное что не получилось, это пробел в префиксе и суффиксе, (т.е. ставишь пробел, в префиксе он опять спрашивает и так по кругу) И нумерация с любой позиции весьма полезна. |
|||
|
||||
Просто пробел означает очистку префикса и суффикса.
Цитата:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Спасибо за труд. Возникли вопросы.
Почему при: «Округление (5 - кратно 5; 0.5 - кратно 0.5) или 0 - нет <НЕТ>: 0», десятичные значения все равно округляются до целых? В общем, я то же не понял принцип округления. На мой взгляд «Кратность» полезная штука, её нужно оставить, только при нуле пусть не работает, и добавить «Округление», как количество знаков после запятой. |
|||
|
||||
Alex_80,
Цитата:
Она и не работала. Это было из-за DIMZIN А это для чего? я же ни куда не вывожу размеры? Добавил в #163 печать даты сборки. Чтобы было понятно, что говорим про одну и ту же версию кода Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Блоки могут быть любыми. Главное программе указать, какие динамические свойства считывать и в какой атрибут записывать. Настройки см. выделенное красным в #163. Либо используй блок из примера #168
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
vporsh, Файл покажи
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 06.09.2009
Сообщений: 24
|
программа не спрашивает какие динамические свойства считывать и в какой атрибут записывать
спрашивает суф., преф., с какого начинать нумерацию, выделить объекты как настроить ? в лиспе дилетант строчки. выделенные красным скопировал с заменой в программу на место похожих
__________________
я Конструктор - вот Чертеж ACAD 2011 eng 32 |
|||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Там лисп знать не надо, спасибо VVA. Настройки выделены красным для того, чтоб мы знали, где нужно подправить исходные данные, ничего копировать не надо, каждая строка настройки закомментирована, ошибиться не реально. Есть ещё шаблон имен обрабатываемых блоков, смотри пост #136.
|
|||
|
||||
Регистрация: 06.09.2009
Сообщений: 24
|
Можно написать так?
(vl-load-com) (setq bname "*") ;_Имя блока (setq dynProp1 "*") ;_Имя динамического свойства1 (setq dynProp2 "*") ;_Имя динамического свойства1 (setq attTo "NAME") ;_Имя аттрибута куда вбивать (or (numberp *STARTPOZ*)(setq *STARTPOZ* 1)) ;;; Стартовая нумерация или в setq dynProp1 надо вписать ручками например "LI" главное, чтобы это L1 была в блоке и т.д. Файл вложить не получается с компа
__________________
я Конструктор - вот Чертеж ACAD 2011 eng 32 |
|||
|
||||
Выложи на файлообменник и дай здесь ссылку. можешь на avral.ru
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 06.09.2009
Сообщений: 24
|
__________________
я Конструктор - вот Чертеж ACAD 2011 eng 32 |
|||
|
||||
vporsh,
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 09.12.2011 в 15:18. |
||||
|
||||
Это картинка из #163. Посмотри там
***Добавлено*** Изменил немного масштаб изображение
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 06.09.2009
Сообщений: 24
|
Да спасибо огромное, теперь все видно хорошо
Все работает, програмуля радует.Спасибо Я так понимаю - для того чтобы перестроить програмку нада перегрузить акад например нумерация блоков, начинающихся с буквы S потом перегружаем акад и нумеруем все блоки, начинающиеся на букву К, преварительно подредактировав ndb.lsp и т.д. эх, хорошо-бы чтобы спрашивала не только суф, преф, округл, но и какие блоки и все остальное или можно как-то обновлять энтот .lsp, не выходя из акада?
__________________
я Конструктор - вот Чертеж ACAD 2011 eng 32 |
|||
|
||||
_APPLOAD подумаю
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Вырисовывается второй вариант.
Сделать для всех настраиваемых данных (имена динамических свойств; суффикс; префикс; округление; выбор блоков по имени или маске; мышкой или _all; номер позиции) ввод с клавиатуры. После этого можно будет создать в acade панель с кнопками, имеющие различные наборы настраиваемых данных для разных блоков. Таким образом не усложняя кода, добьёмся универсальности. Как идея? |
|||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Привет всем!
VVA так можно задавать параметры или могут возникнуть ошибки? (setq bname ( GETSTRING "\n_Имя блока:" )) (setq dynProp1 ( GETSTRING "\n_Имя динамического свойства1:" )) (setq dynProp2 ( GETSTRING "\n_Имя динамического свойства2:" )) Вот макрос кнопки для блока Кассета: ^C^C_NDB;Кассета;Ширина(B);Высота(H);Кассета-; ;;1;_all;; Настройка через макрос кнопки. Вроде все работает. ;;;=====01.12.2012 Исправил на: (setq bname ( GETSTRING T "\nИмя блока:" )) (setq dynProp1 ( GETSTRING T "\nИмя динамического свойства 1:")) (setq dynProp2 ( GETSTRING T "\nИмя динамического свойства 2:")) Имена динамических свойств блока сделал одним словом. ^C^C_NDB;Кассета;Ширина;Высота;Кассета-; ;;1;_all;; Последний раз редактировалось Alex_80, 01.02.2012 в 07:46. |
|||
|
||||
Alex_80, Можно. Если использовать макрос, то название дин. свойств лучше задавать одним словом (без пробелов и желательно прочих спецсимволов вроде #^ и т.п.)
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
А если заменить строку (getstring "\nБла-бла-бла") на (getstring t "\nБла-бла-бла") - то и пробелы можно будет использовать
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Передать имена свойств с пробелами для запроса из макроса все равно будет проблематично. Нужно будет использовать что-то типа strcat, chr
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
А перевод?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Замени
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Не то.
Выберите блок [Имя]: - выбирается только один блок, ручной ввод теперь не воспринимается. Я имел ввиду это: Выберите блок [Имя]: - а) здесь выбираем ЛК один или несколько блоков и затем блоки с этими именами будут попадать в набор. б) если не был сделан выбор ЛК, а был ввод с клавиатуры имени (маска имен), то программа продолжает работать как раньше. |
|||
|
||||
Alex_80, Что такое опции знаешь?
Имя - это опция, на запрос щелкни ПКМ, будет как раньше Судя по запросу Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
|
|||
|
||||
Alex_80, мне нужно видеть весь код (опубликуй или дай ссылку на пост), т.к.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Пробуй
Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ПГС Регистрация: 24.11.2011
Сообщений: 31
|
Спасибо работает. Вот такие макросы на команды получились:
1) ^C^C_NDB;И;VP1;;ТИП;ДЛИНА;КП-; ;;1;_all;; - это для блока VP1, свойства: ТИП, ДЛИНА. Срабатывает одним нажатием. 2)^C^C_NDB;\\\;ТИП;ДЛИНА;КП-; ;;1;_all;; - это для пользовательского выбора блоков, свойства: ТИП, ДЛИНА. Выбор задал "\\\", т.е. до трех блоков. Нужно выбрать два - выбираем два блока и третий выбор любой другой объект. Как сделать красивее еще не додумался. Еще раз спасибо, тестирую дальше. 31.07.12 Самый удобный макрос для команды. Делаем для каждого блока свой макрос: ^C^C_NDB;И;VP1;;ТИП;ДЛИНА;КП-; ;;1;\;; Последний раз редактировалось Alex_80, 31.07.2012 в 14:20. |
|||
|
||||
Регистрация: 02.08.2012
Сообщений: 1
|
Огромное спасибо все работает!!! Использую пример кассета.rar из 122 поста и такой макрос (^C^C_NDB;И;Кассета_v.1.6.;;Высота(H) кассеты;Ширина(B) кассеты;К; ;;1;_all ; ) . Для полного счастья нехватает только одного, чтобы уже пронумированые касеты вставить в эксель как спецификацию используя длину кассеты, ширину и маркировку, читал тему по подсчету динамических блоков, там есть похожие примеры, но со своими познаниями я немогу их привезать к данному примеру.
|
|||
|
||||
Alex1740, Здесь программирование не нужно. Есть стандартная команда _dataextraction
Где можно применить "Извлечение данных"(_.dataextraction)?
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 379
|
|
|||
|
||||
Регистрация: 27.11.2017
Сообщений: 24
|
Добрый день всем! Помогите, пожалуйста, разобраться, как в предложенном лиспе сделать нумерацию в обратном порядке, не понимаю, куда здесь нужно смотреть? Есть 2 параметра D - диаметр и L - длина, нужно сортировку сделать по 2-м свойствам, диаметр от большего к меньшему, учитывая длины, от большей к меньшей. Или в этом лиспе так не получится?
Последний раз редактировалось zloy1653, 27.12.2019 в 11:07. Причина: Сообщение можно удалить |
|||
|
||||
Регистрация: 23.01.2019
Сообщений: 128
|
Добавьте пожалуйста выбор позиции "Имя аттрибута куда вбивать" ,а то так для разных блоков с разными именами атрибутов придется делать разные лиспы.
2) Третью позицию по которой проводить сортировку через значение атрибута. решение тут https://forum.dwg.ru/showpost.php?p=...postcount=3924 Последний раз редактировалось DMSskop, 24.09.2020 в 09:56. |
|||