|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
18.09.2007, 17:45 | #1 | |
Сквозная нумерация динамических блоков
Остекляем!!! Алюминим!!!
Москва
Регистрация: 21.02.2005
Сообщений: 3,826
|
||
Просмотров: 88521
|
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
Просто я лиспом не занимался некогда, вот поэтому и прошу помощи.
Для себя вроде алгоритм работы программы вроде сложил 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,835
|
Стоп, так задача какая получается? Юзер меняет длину дин.блока, внутрь блока в атрибуты (к примеру, LEN и NUM):
- LEN -> вбить значение линейного параметра - NUM -> вбить номер позиции:?: Если с первой частью в общем-то трудности никакой, то со второй - проблема. Как определять номер позиции? Допустим, стоит 2 стойки, у одной длина 100, у другой - 101. Какие номера и по какому закону назначать?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
Цитата:
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,835
|
Я попробовал вставить атрибут-поле, привязанное к значению линейного параметра, но не получилось. Может, что не так делал, но значения вообще не показывались - только "по умолчанию". Сейчас попробую накатать вариант (если успею, правда).
Без простановки номеров позиций получилось следующе <...> Фигня получилась из-за глюка када.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
попробую поподробнее, то как это вижу я.
1. Программа вытаскивает из блоков значение длинн, (промежуточный файл али буфер) 2. Сортирует по возрастанию или убыванию, сортировка должна идти совместно с именем блока (он вроде анонимный), для последующей корректной вставки поз. (дублирующие длины наверно можно удалить) 3. Присваивает значение поз. по длине (на дублирующие длины поз. одинаковы) 4. И собственно присваивает атрибуту соответсвующего блока значение поз.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
мотеж это поможет.
Как это вручную происходит 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,835
|
Я только что вернулся, так что сажусь за решение 2-й части. Кстати, мой вопрос сможешь решить? Как сделать внутри блока атрибут-поле, показывающее значение линейного параметра? У меня в ADT2006Rus не получилось.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
Цитата:
у меня, в примере, вставлен атрибут с полем, которое отслеживает длину линии. [ATTACH]1190205108.jpg[/ATTACH]
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Какого ляда тогда у меня 2006-й не обновлял? Я чего и голову-то ломал. Так, ща переделаю...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Да простят меня собеседники, вклинюсь.
Если есть некий элемент, у которого в зависимости от длинны меняется марка, то реализовать это можно в самом динблоке. Длины при этом фиксированные и выбираются в раскрывающемся списке, при этом изменяется и сама форма элемента и разные другие ее параметры типа вес, марка и т.п. Далее: Если мы имеем некоторую позицию на чертеже и ее надо обозначить номером или буквенным описанием, то тогда в дин. блок вставляются атрибуты, изменение данных в которых к изменению номера*U123 не приводят и на подсчет не влияют. Скачайте мой 3D динамический блок трубы в ППУ изоляции ду-159 из DWG.RU Downloads/Чертежи/Библиотека элементов и посмотрите как он сделан. |
||||
|
||||
И Господа! Не смешивайте атрибуты блока со свойсвами изделия представленными в виде данных 3D элемента!
Одно дело мы присваиваем 3D элементу характеристики изделия и совсем другое, когда мы ему присваиваем данные о принадлежности и месторасположении в моделе. |
||||
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
Цитата:
2 - как известно измененный блок через лисп видится как *Unnn, а вдруг вставлено несколько блоков у которых длина одинакова, но имя разное?? что тогда??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Попробуйте
Код:
Отредактировал: убрал дубликаты объявлений функций вне основной.
__________________
Моя библиотека 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,835
|
> Supermax : А ты обращайся не к Name, а к EffectiveName и будет счастие и благолепие.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Не будет. Если динамическим блоком сделать скажем всю серию ФБС, меняя в этом блоке тип ФБС мы тем самым меняем и его сущность, а EffectiveName при этом будет называться "Блоки ФБС" Какие? - можно узнать только прочтя свойства. Или сделать столько блоков, сколько существует видов ФБС.
|
||||