Excel+vba и подсчет спецификации металлопроката - Страница 2
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Excel+vba и подсчет спецификации металлопроката

Excel+vba и подсчет спецификации металлопроката

Ответ
Поиск в этой теме
Непрочитано 04.07.2010, 21:34 2 |
Excel+vba и подсчет спецификации металлопроката
Mikka
 
Регистрация: 05.08.2008
Сообщений: 155

Моя новая программа Спецификация металлопроката, позволяет быстро составить спецификацию в excel
Очень интересна ваша оценка, и предложения по программе...
Выложена здесь
http://dwg.ru/dnl/8311

п.с. Обнаружил глюк, если программ не грузит шаблон ВР, нужно изменить ее расширение с xlt на xls
П.П.С Выложил открытую версию без пароля, пользуйтесь

Выложил видео "Работа в программе".
(видео снято в бесплатной версии UVScreenCamera по этому имеет формат exe)


Прикрепил новую пробную версию, где можно изменять некоторые текстовые формулировки...
просьба протестировать....
Итак:
В файле sm.ini находится раздел [spc]...
(файл автоматически создается в каталоге с программой, если нажать кнопку "применть" в диалоге настроек...)
Код:
[Выделить все]
[spc]
PrfItog=Итого:
PrfItogAll=Всего профиля:
StillItogAll=Всего масса металла:
inSteelM=В том числе по маркам или наименованиям:


14.07.2010
Выложил новую версию программы и новый макрос для очистки форматирования

Последний раз редактировалось Mikka, 31.10.2010 в 09:25.
Просмотров: 30256
 
Непрочитано 09.07.2010, 09:50
#21
Fedor_FA


 
Регистрация: 12.03.2010
Сообщений: 2


Отличная штука! Спасибо большое!
Есть только вопрос:можно ли сортировывать столбец "наименование профиля" и наименование групп конструкций ? Или это делать уже после формирования таблицы в ручную?
Как то привычно когда СМ начинается с двутавров, потом швеллера и т.д., а в здесь первым может появиться и уголок гнутый равнополочный и т.д.
Тоже касается и размера профиля - по ГОСТ надо располагать их по возрастанию , а здесь не всегда так получается...
Fedor_FA вне форума  
 
Автор темы   Непрочитано 09.07.2010, 11:04
#22
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Цитата:
Есть только вопрос:можно ли сортировывать столбец "наименование профиля" и наименование групп конструкций ? Или это делать уже после формирования таблицы в ручную?
Я старался, но вышло то, что вышло...
Дальнейшие изменения потребуют существенной переработки программы...
Цитата:
Тоже касается и размера профиля - по ГОСТ надо располагать их по возрастанию , а здесь не всегда так получается...
Да действительно, сейчас попробую исправить...
Mikka вне форума  
 
Непрочитано 09.07.2010, 14:14
#23
Fedor_FA


 
Регистрация: 12.03.2010
Сообщений: 2


Хорошо, будем ждать обновления
Fedor_FA вне форума  
 
Автор темы   Непрочитано 14.07.2010, 11:42
#24
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Цитата:
Тоже касается и размера профиля - по ГОСТ надо располагать их по возрастанию , а здесь не всегда так получается...
Доброго дня уважаемые, долго мучился с этой проблемой, нашел причину, а как исправить не знаю.
Причина в следующем:
Программа при составлении спецификации сортирует профиля по именам, сравнивания их названия... Так вот по результатам сравнения двух строк, например "10" и "4" - последняя оказывается больше...
Mikka вне форума  
 
Непрочитано 14.07.2010, 13:08
#25
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Mikka Посмотреть сообщение
Доброго дня уважаемые, долго мучился с этой проблемой, нашел причину, а как исправить не знаю.
Причина в следующем:
Программа при составлении спецификации сортирует профиля по именам, сравнивания их названия... Так вот по результатам сравнения двух строк, например "10" и "4" - последняя оказывается больше...
У тебя, видимо, просто сравниваются две строковые переменные? Тогда "10" < "4", сравниваются первые символы в строке. Если имя профиля состоит только из числовых символов, либо всегда на них начинается ("10М", "20К" и т.д.) , тогда можно использовать, к примеру, вместо
if A> B then...
выражение
if val(A)>val(B) then ...
Если же имена могут содержать другие символы в начале строки ("-10", "N12"), то вместо операции сравнения напиши пользовательскую функцию..
Код:
[Выделить все]
if Comparison (A, B) then...
****
Private Function Comparison(A As String, B As String) As Boolean
'....
'****код по своему алгоритму сравнения A и B
'....
If ... Then Comparison = falce Else Comparison = True
End Function
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 14.07.2010, 13:26
#26
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Боюсь что тут не все так просто...
Например:
Пластины
2,4,6
Швеллеры
10П, 12П, 14У...
Уголки
L25x3, L50x5...
Трубы
D180x4...
Трубы квадратные и прямоугольные
100х100х5, 50х50х4, 100x50x5, 100x80x5...
...
А еще сам пользователь может забивать сортаменты...

...
Есть у меня идея проще, но она может сильно замедлить работу программы...
Сортировать профиля по их номерам в сортаменте, есть 2 варианта реализации:
1) для этого нужно воспользоваться поиском по сортаменту (лучше всего подходит поиск делением списка пополам...)
+ не заметно для пользователя
- может замедлить сборку спецификации (на сколько не скажу... на разных компьютерах по разному)

2) добавить еще один столбец с формулой, в которой будет записан номер профиля по сортаменту
+ можно обойтись без поиска, т.е. будет работать быстрее
- лишний столбец в спецификации

Последний раз редактировалось Mikka, 14.07.2010 в 13:36.
Mikka вне форума  
 
Непрочитано 14.07.2010, 13:57
#27
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Mikka Посмотреть сообщение
Боюсь что тут не все так просто...
Например:
Пластины
2,4,6
Швеллеры
10П, 12П, 14У...
Уголки
L25x3, L50x5...
Трубы
D180x4...
Трубы квадратные и прямоугольные
100х100х5, 50х50х4, 100x50x5, 100x80x5...
...
А еще сам пользователь может забивать сортаменты...
Я и говорю, что надо функцию для сравнения написать.. Для имеющихся сортаментов можно все случаи предусмотреть, передавая в функцию вместе с номерами профиля тип сортамента. Конечно, довольно-таки громоздкая она получится.

Хотя, честно говоря, код твой не смотрел, как у тебя реализовано.. Может, и не подойдет такой способ.
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 14.07.2010, 14:16
#28
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


В том то и дело что пользователь может ввести свое имя сортамента...
Вариант твой может подойти, но честно говоря он не на все случаи жизни...
Сейчас делаю 1 вариант, примерно через час, если все получится, скажу на сколько замедлилась работа на примере спецификации в 1500 элементов на моей машине...
Mikka вне форума  
 
Непрочитано 14.07.2010, 14:19
#29
SergeyAB


 
Сообщений: n/a


То что 20У и 20Б1 выбираются из одного поля - это как то...странно.

Вот делал когда то...пользуюсь до сих пор, все решено внутри "Cad" пакета, без экселя...и сразу соответствует оформлению по ГОСТ...

http://ifolder.ru/18533876 - создание спецификации отправочной марки(единичная спецификация).

http://ifolder.ru/18533905 - создание спецификации металлопроката по проекту (сводная техническая спецификация стали).


P/S - скорость воспроизведения регулируется ползунами внизу окна ролика.
 
 
Непрочитано 14.07.2010, 14:22
#30
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


SergeyAB, а прямо сюда кто-то мешает приложить?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.07.2010, 14:32
#31
SergeyAB


 
Сообщений: n/a


А разве кто-то помогает?
или это противоречит правилам? Если да - другое дело.
 
 
Непрочитано 14.07.2010, 14:37
#32
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Правилам это не противоречит. Но вот Меня просят "перезалить" предоставленную документацию / серию / ГОСТ в Dоwnlоad или приложить к посту. Почему? - смотрел?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.07.2010, 15:29
#33
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Так, походу с поиском я опять я ошибся, все упирается в туже процедуру сравнения ... придется метод перебора пользовать...

Выложил новую версию программы и новый макрос для очистки форматирования, см. первый пост темы...

з.ы. сделал по первому варианту, на моей машине, со спецификацией на ~1500 элементов особого замедления не заметно...
процессор: amd Athlon 64 x2 dual core 4600+ (ему примерно 2 года)
озу: 1гб
Операционка: win_xp pro sp3

Последний раз редактировалось Mikka, 14.07.2010 в 16:27.
Mikka вне форума  
 
Непрочитано 14.07.2010, 16:27
#34
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Mikka Посмотреть сообщение
Так, походу с поиском я опять я ошибся, все упирается в туже процедуру сравнения ... придется метод перебора пользовать...
А почему? Известен тип сортамента сортируемых элементов, к примеру: "Трубы стальные электросварные прямошовные"; есть номера, или "имена" элементов (к примеру, "Ø17x1,2" и "Ø20x1"). Данные по каждому сортаменту хранятся на отдельно живущем скрытом листе. Программно выцепляем лист, и в столбце "B" с номерами элементов ищем ячейки со значениями "Ø17x1,2" и "Ø20x1". Если находим, то получаем от них номер строки: 37 и 54. Соответственно, сравниваем их...
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 14.07.2010, 16:35
#35
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Цитата:
Сообщение от AlexV Посмотреть сообщение
А почему? Известен тип сортамента сортируемых элементов, к примеру: "Трубы стальные электросварные прямошовные"; есть номера, или "имена"
Вопрос упирается в "неправильную" или "не подходящую" процедуру сравнения... Те же грабли, что и с сортировкой... (посмотри в википедии http://ru.wikipedia.org/wiki/Двоичный_поиск
А вот метод перебора дает нужные результаты, тем более, что применяется на конечном этапе обработки исходных данных, когда вместо 1500 элементов в массиве хранится скажем 50 -80...
Mikka вне форума  
 
Непрочитано 14.07.2010, 17:03
#36
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Mikka Посмотреть сообщение
Вопрос упирается в "неправильную" или "не подходящую" процедуру сравнения... Те же грабли, что и с сортировкой... (посмотри в википедии http://ru.wikipedia.org/wiki/Двоичный_поиск
А вот метод перебора дает нужные результаты, тем более, что применяется на конечном этапе обработки исходных данных, когда вместо 1500 элементов в массиве хранится скажем 50 -80...
А какая проблема сравнить номера строк - 2 целых числа? Найти ячейку с нужным значением в определенном диапазоне - не проблема, выцепить номер ее строки, - тоже.. Их и сравнивать..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 14.07.2010, 21:43
#37
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Цитата:
А какая проблема сравнить номера строк - 2 целых числа? Найти ячейку с нужным значением в определенном диапазоне - не проблема, выцепить номер ее строки, - тоже.. Их и сравнивать..
Я так и сделал, просто вместо бинарного поиска, про который я писал раньше, я использовал поиск методом перебора...
Их отличие в том, что бинарный поиск позволяет найти значение за n^1/2 сравнений, а метод перебора за n сравнений, где n - число элементов массива(диапазона), в котором проводится поиск... (кол-во сравнений, я привел для самого худшего случая)

Бинарный поиск работает только в правильно отсортированном массиве...
Но в том то и загвоздка, что в сортаменте профиля отсортированы не по названиям, а например по диаметру или высоте(ширине) профиля...
А мы ищем имя профиля в сортаменте...

Цитата:
Вот делал когда то...пользуюсь до сих пор, все решено внутри "Cad" пакета, без экселя...и сразу соответствует оформлению по ГОСТ...

http://ifolder.ru/18533876 - создание спецификации отправочной марки(единичная спецификация).

http://ifolder.ru/18533905 - создание спецификации металлопроката по проекту (сводная техническая спецификация стали).
Offtop: К сожалению не могу оценить ваши программы, т.к. я делаю только КМ, да и в Архикаде никогда не работал...
Терпения досмотреть до конца ролики не хватило... Впечатление составилось только одно, слишком много движений, и возни...

Последний раз редактировалось Mikka, 14.07.2010 в 23:19.
Mikka вне форума  
 
Непрочитано 15.07.2010, 20:12
#38
Jull

проектировщик
 
Регистрация: 09.10.2005
Новокузнецк
Сообщений: 127
<phrase 1=


Mikka выручай, программой твоей воспользовался, но возникла проблема, незнаю как решить.
Во-первых при формировании спецификации пишет, что в строке такой-то неверно указано наименование стали.
Во-вторых, не все позиции из таблицы автозамены видны в таблице исходные данные.

Просьба помочь, потому что реально перебивать времени нет. Понадеялся на твою прогу((

файл прилагаю
Вложения
Тип файла: rar Спецификация_my.rar (319.9 Кб, 359 просмотров)
Jull вне форума  
 
Автор темы   Непрочитано 16.07.2010, 07:57
#39
Mikka


 
Регистрация: 05.08.2008
Сообщений: 155


Все правильно пишет, учитесь работать с excel, там вверху над колонками есть такие "+", это кнопка, нажимаешь на нее и скрытые столбцы раскрываются...
У вас не полностью была заполнена колонка с гостами на сталь...
Такое бывает, нужно просто растянуть формулу на все остальные ячейки, после добавления новой строки...
В справке все описано...

Почитайте справку по работе с программой, вы не до конца поняли принцип работы, а я если что объясню по подробней...

з.ы. прилагаю видео, где я показал, как исправить вашу ошибку...
Вложения
Тип файла: rar Спецификация_my.rar (314.0 Кб, 398 просмотров)
Тип файла: rar Исправляем ошибки.rar (314.7 Кб, 255 просмотров)

Последний раз редактировалось Mikka, 16.07.2010 в 08:02.
Mikka вне форума  
 
Непрочитано 16.07.2010, 09:01
#40
Jull

проектировщик
 
Регистрация: 09.10.2005
Новокузнецк
Сообщений: 127
<phrase 1=


Mikka, спасибо огромное.

А вот на второй вопрос еще ответьте:

Цитата:
Во-вторых, не все позиции из таблицы автозамены видны в таблице исходные данные.
то есть у меня в таблице списка автозаменты забиты после СФ1_t8 еще СФ2, Л1 и так далее, но вот в таблице исходных данных в выпадающем списке их нет. (
Jull вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Excel+vba и подсчет спецификации металлопроката

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спецификация дверей в AutoCAD Architecture acyxou Вертикальные решения на базе AutoCAD 18 12.11.2013 08:42
Обязательна ли групповая спецификация плит перекрытия? constr85 Конструкции зданий и сооружений 2 21.06.2013 10:41
Задание шарниров в расчетной схеме SCAD для башен из металлопроката combo19 SCAD 4 29.03.2010 16:04
Площадь окрашенных поверхностей металлопроката Владимир М Металлические конструкции 10 24.07.2007 17:16