|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Спор сводится к тому, от куда брать данные для специфицирования. Из головы (вооружившись калькулятором), или из модели.
Про голову я ничего не говорил. говорил о возможности обойтись 2d моделью. Всли задании нет 3д планов - строить их самому всеравно что брать данные из головы |
|||
|
||||
Регистрация: 10.06.2009
Сообщений: 5
|
[quote=Alaspher;177001]
У меня похожая задача с подсчетом длин кабелей, да только спецификацию я выполнил в таблице. Одна графа-марка кабеля, другая-метраж. Теперь необходимо посчитать длины кабелей одинаковой марки. Как это можно выполнить? У меня AutoCAD 2008 rus/ |
|||
|
||||
Поднимем старую тему.
Появилась необходимость дополнить данную программу LCAB.lsp Код:
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
Регистрация: 11.10.2010
Сообщений: 5
|
Добрый день. Просьба помочь дундуку в лиспе. Все что тут говорилось о подсчете кабеля подходит больше для слаботочников. Может кто глянет на вложеный файл и поможет сделать подсчет кабеля и труб при такой форме записи как в файле (в красном круге, необходимые параметры выделены красным).
|
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Интересная программа, но очень специфическая.
Подсчет длины кабеля происходит только в том случае, когда нужный кабель и его длинна записана в одном _mtext или _text. А вот для отделов КИП и не только это не совсем подходит. Есть другой способ и как по мне довольно универсальный. Который я не могу довести до ума. Может кто и поможет. 1) Расстановка дин блоков по чертежу. (см. вложение Вариант №1.dwg) 2) Запуск программы http://forum.dwg.ru/showthread.php?t=54936 3) Вывод результата в таблицу AutoCad либо с выбором в Excel Довести до ума не получается. 1) Поиск и сравнение одинаковых атрибутов КАБЕЛЬ. 2) Если значение атрибутов КАБЕЛЬ одинаковые то просуммировать их длинны. 3) Сортировка результата построчно в таблицу. Метод сортировки неплохо бы сделать с выбором. а) По алфавиту, б) По перечню определенных слов вписываемых пользователем. в) Рандом. Если в сортировке попадаются цифры то: КВВГ 4Х1,0 КВВГ 5х1,0 ... КВВГ 37х1,0 4) Выбор вставки этой же таблицы но в Excel (при этом не создавать новый файл .xls а предложить запись в уже существующий .xls) Универсальность заключается в том, что каждый создаст себе нужный ему вид записи кабеля, далее программа отработаем все необходимые действия. |
|||
|
||||
Регистрация: 30.09.2008
Сообщений: 10
|
Мне понравилась програмка для подчета кабелей, но она не подходит под мои условия, она так сказать заточена под определённый вид записи.
А так как ЛИСП для меня абсолютно новый язык и лазение по английскому хелпу в котором не все команды описаны даёт покачто мало результатов. Отсюда бооольшая просьба к тем кто разобрался в принципах работы этой проги НАПИШИТЕ ПЛИЗ коментарии к каждой строчке, это сильно упрастит мне нелегкое дело изучения ЛИСПА. Заранее благодарен |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Eddicordo, В качестве чернового наброска.
Команда - CountCabel Пример см. файл из поста #106.
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
VVA
Считает отменно. Можно подкорректировать несколько пунктов 1) Добавить подсчет в этом блоке не только атрибут КАБЕЛЬ. tagCabel "КАБЕЛЬ" ;_Имя тага марки кабеля tagLength "ДЛИННА_КАБЕЛЯ" ;_Имя тага длины кабеля Но и tagTruba "ТРУБА" ;_Имя тага марки трубы tagLength_tr "ДЛИННА_ТРУБЫ" ;_Имя тага длины трубы Возможно у некоторых для универсальности могут появится еще несколько подсчетов в одном блоке см. вложение Кабель | Длина Труба | Длина Метало рукав | Длина Разное | Длина 2) Сортировку делать по треста (разделам) Каждому атрибуту "КАБЕЛЬ" "Труба" присваивается номер треста (НОМЕР_ТРЕСТА_КАБЕЛЯ) и по тресту формируется таблица. Только мне не удается сделать единый Лукап для всех трестов кабеля и труб. В итоге получилось в данном случае сделать несколько Лукапов НОМЕР_ТРЕСТА_КАБЕЛЯ НОМЕР_ТРЕСТА_ТРУБ НОМЕР_ТРЕСТА_ЧЕГО_УГОДНО Может для программы осуществить единый поиск атрибутов со стандартными названиями трестов к примеру: НОМЕР_ТРЕСТА1 НОМЕР_ТРЕСТА2 НОМЕР_ТРЕСТА3 и т.д. Эти атрибуты с трестами и сортировать во возрастанию. Не знаю как программно написать. Атрибуты с одинаковыми трестами сортировать по алфавиту В дальнейшем к каждому тресту будет присвоено свое Наименование (То что показано в таблице перечня оборудования) типа: Кабель контрольный ГОСТ 1508-78E* 3) При длине кабеля (атрибута Длинна_кабеля) с десятыми 0,5 , запятую не понимает. Если ничего сделать нельзя то можно каким то образом запретить ввод запятой 4) Вывод в Excel в уже созданных .xls файл. Для того что бы можно было в Excel файле в других ячейках прописывать формулы. А ну и чуток переделанный файл lsp прилагаю Запуск CountCabel и CountCabel_tr Пытался сам ответить на свой 1 пункт Да и еще пару моментов. Подскажите какая строка отвечает за запись в Excel и какая переменная хранит в себе конечный результат? Добавил вот такие строки tagtruba "ТРУБА" ;_Имя тага марки трубы tagLength_tr "ДЛИННА_ТРУБЫ" ;_Имя тага длины трубы дописал в сохраненную переменную res теги для трубы (setq res (cabel-count-by-attr BlockName tagCabel tagLength tagtruba tagLength_tr)) Но чет вытягивает все равно только атрибуты с кабелем И запись в Excel насколько я понял (xlsf (mapcar '(lambda (x / y) (if (setq y (assoc x res)) (list (car y) (cdr y)) ) ;_ end of if ) ;_ end of lambda tmp ) ;_ end of mapcar '("Наименование" "Кол.") nil nil filename ) ;_ end of xlsf А именно ) ;_ end of lambda tmp ) ;_ end of mapcar tmp - конечная переменная хранящая данные на вывод в Excel Или я не прав? Последний раз редактировалось Eddicordo, 19.10.2010 в 12:03. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Новая версия.
Пример смотреть в посте #109 Основные принципы 1. Символ "|" зарезервирован и не должен встречаться в значениях атрибутов 2. Ф-ция cabel-count-by-attr подсчитывает значения длин и марок для кабеля в соответствии с переданными именами тагов. На самом деле передав ей имена тагов атрибутов для труб - подсчитает трубы и т.д В команде CountCabel пользователь выбирает набор блоков, а потом к этому набору мы дважды (а можно и трижды для металлорукавов и т.п) применяем функцию countcabel с разными именами тэгов атрибутов. Результат объединяем в один список и его сортируем. Затем выводим в Excell 3. Вывод осуществляется в новый файл Excell, в уже созданный столбцы копируй ручками
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 10.11.2010 в 11:21. Причина: Новая версия |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
VVA
Респект Вроде все работает отлично. Осталось протестировать и воплотить в проект. Далее возможно и чет вылезет. Ну вот результаты тестирования. 1) Присвоил я атрибут "КОД_КАБЕЛЯ" к атрибуту "КАБЕЛЬ" Нужно что бы этот код выводило в таблице 4 столбце. Почти получилось но не могу понять как мне перенести в 4 столбец и убрать подсчет количества. Да и как то съехало в лево Кусок кода. Код:
и сравнил функции (defun xls Они идентичны но во втором случае появился столбец с трестами. Странно наверное не туда смотрю. 2) Можно добавить количество просуммированных длин кабелей и труб и т.д. (Тобиш сколько tagLength было между собой просуммировано). 3) Есть необходимость в блоке указывать Одну марку кабеля и несколько длин этого же кабеля. Так же и с трубами и т.д. (Тобиш Один атрибут tagCabel "КАБЕЛЬ" и несколько tagLength "ДЛИННА_КАБЕЛЯ".) Тоесть появляются следующие атрибуты "ДЛИННА_КАБЕЛЯ1" , "ДЛИННА_КАБЕЛЯ2" и т.д. Которые между собой так же должны просуммироваться. Что то вроде такого Код:
Последний раз редактировалось Eddicordo, 21.10.2010 в 17:21. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Eddicordo
Добрый день, коллега! Пытаюсь решить схожие проблемы. Хотя сейчас больше занимаюсь планом трасс, как основой для получения длин кабеля. http://forum.dwg.ru/showthread.php?p=640116 Сейчас уже подошел к написанию программ для автоматического подсчета кабеля (суммирование по типам). А пока, если надо, считаю по упрощенной схеме: делаю низкоуровневый экспорт данных из блоков кабеля, расположенных в схеме соединений внешних проводок,затем макросом подхватываю эти данные в Excel и там они обрабатываются. Выводится список кабелей, металлорукавов и труб с просуммированными длинами. Но хочется сделать покрасивее и в ЛИСП. И чтобы не ошибаться при вводе марки и жильности кабеля, марки труб и металлорукавов - хочу сделать возможность вводить их, выбирая из списка. Для этого пытаюсь изучать работу с диалоговыми окнами ))) Потому что переменной tagLength окончательно присвоено "ДЛИННА_КАБЕЛЯ2". |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
Frigate, Добрый.
Цитата:
И я бы с удовольствием ее потестил. Но без схем внешних план не сделать. 1) Простановка номер кабеля, 2) Выбор марки кабеля, жильности. 3) Продумать путь кабеля от точки А до точки В. И только после этого можно приступать к плану, вытянув выше указанную информацию с блоков. Создав связь "Внешние соединения" - "План". После чего прочерчивания на плане полилиний и присвоение с выбором им вытянутых с "Внешних соединений" информацию. Ну и на последок связь с обновление на "Внешних соединений" и простановки длин соответствующим блокам. А вообще вы забыли про самую первую "Схему автоматизации" в которой указываются абсолютно все приборы с номерами позиций к ним. Которые между прочим отражаются на плане. От чего и тянется собственно наш кабель. Цитата:
Ну и так же вставкой таблицы перечня оборудования во "Внешние соединения" с указанной сортировкой по трестам. Смотрю без изучения лиспа никуда и минимум месяца на изучение его. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Eddicordo,
без лиспа и правда никуда, я с середины августа изучаю, начал с азов, а углубленно уже изучал при помощи программ участников данного форума и подобных ему форумов. Да, я уже пытыюсь по косточкам разложить программу VVA. Во-первых, алгоритмы, во-вторых сам уровень программирования - то, чему у него мне еще учиться и учиться, как и у многих других участников. Так что программку я переработаю, обязательно. По поводу схем внешних - конечн, они создаются до плана. Просто я их априори считаю созданными. Пока меня занимал вопрос плана трасс. ПОчитай, пожалуйста, мою концепцию. Я немного не так, как ты описал, воплотил подсчет и простановку кабелей - все это есть на 1-ой странице моей темы. Схему автоматизации и схему внешних соединений пока не пытался автоматизировать - тут нужно сначала продумать всю концепцию, учитывая при этом реальные возможности ЛИСПа (не хотел бы еще основательно изучать С++ - я все-таки не программист по профессии, лишь на прикладном уровне). |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Eddicordo, Обновил код в #110
Теперь считает и количество Цитата:
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 10.11.2010 в 11:06. |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
VVA, Вот молодца...
Есть один недочет. При вставке в блоке 1 шт. атрибут КАБЕЛЬ 4 шт атрибута ДЛИННА_КАБЕЛЯ, ДЛИННА_КАБЕЛЯ2, ДЛИННА_КАБЕЛЯ3, ДЛИННА_КАБЕЛЯ4 Если я вписал длинны только в атрибуты ДЛИННА_КАБЕЛЯ, ДЛИННА_КАБЕЛЯ2. Остальные атрибуты с длинами пустые. То подсчет количества длин (Count) в шт. не верное. Посчитает 4 шт. А реально нужно всего 2 шт. поскольку вписано только в двух атрибута длинны. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Обновил #110. Код не проверял, но должен работать. Принцип такой: Если в атрибуте, отвечающем за длину кабеля, длина 0 - то количество не наращивается. Алгоритм ф-ции atof (преобразования текста в число) таков - если текст содержит цифры, то преобразуется в число. Иначе получаем 0. Поэтому значение атрибута может быть пустым, после преобразования в число там все равно будет 0.
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
VVA, Считает отменно.
Идея с несколькими длинами одного кабеля заключается в том что вдин блоке присутствует состояние видимости. Тоесть: 1) Вставка дин блока. 2) Рядом параметр видимости "Кол. Длин" 3) Пользователь выбирает сколько длин будет относится к одной марке кабеля (tagCabel "КАБЕЛЬ") 4) Прописывает в каждом атрибуте длину кабеля. Ну и вот возникает проблема. После указания всех длин кабеля в ходе работы нужно скрыть ненужную длину. Естественно "Тетка" уже не будет очищать проставленную длину, а просто скроет ее параметром видимости. LISP считает все длинны и их количества включая те что невидимые. Можно скорректировать LISP так, что бы подсчет именно длин кабеля, считались только видимые атрибуты. Уточняю ИМЕННО ДЛИНЫ кабеля. Поскольку (tagSort "НОМЕР_ТРЕСТА_КАБЕЛЯ") У меня как раз находятся в невиде. И еще одно. Дописал еще 1 атрибут в блок "Наименование_оборудование" которое нужно вытягивать и вставлять рядом со столбцом "Marka" К примеру по столбцам: "Trest" 1 "Наименование" Кабель контрольный "Marka" КВВГ 4х1,0 "Length" 50 "Count" 2 Пытался переделать LISP но без результатно. Да еще кое какой момент. Если использовать параметр видимости и к примеру я включаю 5 длин одного кабеля, проставляю длины. В процессе работы нужно убрать не последнюю длину, а 3 к примеру. А параметр видимости уберет именно последнюю. Были мысли сделать на каждую длину свой параметр видимости. Вкл. Выкл. Вариант интересный, НО если сделать таких параметров с десяток и в каждой видимости несколько параметров движения то ПК нагружается очень сильно. Может кто знает как решить эту проблему? 30.11.2010 По программе Обнаружил недочеты. Необходимо предусмотреть отлов ошибок. 2 и более атрибутов жестко связанны между собой tagCabel "КАБЕЛЬ" и tagLength "ДЛИННА_КАБЕЛЯ" tagLength "ДЛИННА_КАБЕЛЯ2" tagLength "ДЛИННА_КАБЕЛЯ2" и.т.д. Если длина кабеля не указана, то в список сам кабель с его пустой длиной не попадает. Не проставлена длина это значит либо пустой атрибут либо с буквой "м" (метры). Пока не разобрался как к атрибуту присоединить суфиксы. И можно ли вообще. Можно ли в таком случае выдавать сообщение о том что "Не все длины проставлены" продолжить подсчет и выделять цветом те блоки в которых не вписаны длины. При повторном использовании программы и подсчетах те блоки что были выделены цветом и вписаны длины убирать выделение цветом. Последний раз редактировалось Eddicordo, 30.11.2010 в 12:46. |
|||
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
|
VVA, Добрый день.
Второй день мучаюсь пытаясь дописать в C:CountCabel дополнительный тег: tagNamber "N1" ;_Имя тага позиционное обозначение кабеля / трубы Значение тега tagNamber должно вписываться в таблицу столбец "Поз. обозначение" схема работы аналогичная тегу tagCabel. Но никак не получается (. Саму прогу дописывал господин Frigate, добавил вставку "м" в столбец примечания Можешь помочь? Прикладываю сам блок и lisp не корректно рабочий. countcabel_gotovo_Frigate+.lsp Видимо будет сложно добавить этот тег в чужой код. Если можно просто добавить tagNamber "N1" в написанную прогу выше пост 110. Для вывода этого тега в первый столбец экселя "Poz" Poz Trest Marka Length Count Прикладываю заново рабочий код и чертеж Последний раз редактировалось Eddicordo, 19.09.2019 в 10:12. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно ли сгущение арматуры под колонной при наличии металлич | Aleks ManaeFF | Прочее. Программное обеспечение | 3 | 19.07.2007 12:02 |
Нужно ли показывать с спецификации болты, гвозди, анкеры? | Колян | Прочее. Архитектура и строительство | 9 | 14.09.2006 08:09 |
Дали задачку на плаксисе посчитать | rust-resisting | Прочее. Программное обеспечение | 1 | 25.03.2006 13:42 |
на какие ключи в реестре нужно дать полный доступ | stanislav | AutoCAD | 1 | 19.10.2005 20:40 |
Когда нужно утеплять стены подвала? | Колян | Конструкции зданий и сооружений | 15 | 02.10.2005 00:58 |