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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нужен макрос для AutoCAD, экспортирующий список деталей в текстовый файл

Нужен макрос для AutoCAD, экспортирующий список деталей в текстовый файл

Ответ
Поиск в этой теме
Непрочитано 23.06.2009, 18:41 #1
Нужен макрос для AutoCAD, экспортирующий список деталей в текстовый файл
technos
 
Регистрация: 22.06.2009
Сообщений: 11

Нужен макрос для AutoCAD, экспортирующий список 2D деталей в текстовый файл.

Нужно экспортировать: габаритные размеры, номер (если указан), толщину (если указана), количество (если указано), название материала (если указано).

Готов оплатить разумную сумму за готовый макрос.
Просмотров: 8107
 
Непрочитано 23.06.2009, 19:40
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


А что есть детали - если блоки с атрибутами (толщина, количество) - то просто изучи шттные возможности автокад. Да и на пример файла неплохо-бы было взглянуть.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 23.06.2009, 19:54
#3
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


В AutoCAD'е нет "деталей". Есть отрезки, дуги, полилинии, блоки, текст и другие простейшие объекты.
Profan вне форума  
 
Непрочитано 23.06.2009, 20:14
#4
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,458


ты файл покажи мы тебе цену в личку напишем.
Sleekka вне форума  
 
Автор темы   Непрочитано 24.06.2009, 10:24
#5
technos


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


Цитата:
Сообщение от Profan Посмотреть сообщение
В AutoCAD'е нет "деталей". Есть отрезки, дуги, полилинии, блоки, текст и другие простейшие объекты.
Да, я понимаю. Имеется ввиду, что есть набор файлов, в которых описаны контура (подразумевается, что это контура деталей). Контура лежат в некотором слое. Нужно вывести список всех наружных контуров (возможно есть внутренние контура - отверстия в деталях) выбранных файлов с атрибутами.

Вопрос атрибутов мне пока окончательно не ясен самому. Атрибуты могут быть указаны, или не указаны, или не все. С габаритами - понятно. Но если на поле чертежа указаны некоторые надписи - толщина, материал, количество, то их тоже нужно вывести. Видимо, эти атрибуты тоже должны лежать каждый в своем слое.

Приложил несколько файлов, в которых указаны атрибуты: номер чертежа (тоже нужно прочитать), номер детали и толщина.

Как я уже говорил - вывод должен быть в текстовый файл, по строке на деталь, разделители - все равно, пусть будет ";".

Макрос должен быть совместим с различными версиями AutoCAD и легко инсталлироваться.
Вложения
Тип файла: zip 4_R.zip (32.3 Кб, 131 просмотров)
technos вне форума  
 
Непрочитано 24.06.2009, 10:41
#6
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,458


Цитата:
Нужно вывести список всех наружных контуров (возможно есть внутренние контура - отверстия в деталях) выбранных файлов с атрибутами.
Это как? список координат чтоли вывести относительно Мировой системы координат или которая там нарисована?
Цитата:
Вопрос атрибутов мне пока окончательно не ясен самому. Атрибуты могут быть указаны, или не указаны, или не все.
Я во всех файлах вижу 3 зеленых числа, их можно идентифицировать по цвету, не обязательно на другой слой, между собой они отличаются тем что первый с "-" второй число а третий число с точкой раскидать их тоже не проблема, что еще нужно?
Sleekka вне форума  
 
Автор темы   Непрочитано 24.06.2009, 11:07
#7
technos


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


Цитата:
Сообщение от Sleekka Посмотреть сообщение
Это как? список координат чтоли вывести относительно Мировой системы координат или которая там нарисована?
Вывести список габаритов "длина;ширина" + другие атрибуты детали, которые указаны.

Цитата:
Сообщение от Sleekka Посмотреть сообщение
Я во всех файлах вижу 3 зеленых числа, их можно идентифицировать по цвету, не обязательно на другой слой, между собой они отличаются тем что первый с "-" второй число а третий число с точкой раскидать их тоже не проблема, что еще нужно?
По цвету - не подходит. Цвет может быть любой. Кроме того, и номер чертежа, и номер детали, и толщина могут быть указаны одинаковым цветом. Как их распознать?
technos вне форума  
 
Непрочитано 24.06.2009, 14:47
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Скажу откровенно - то что у Вас в примере - хренотень полная - пытаться ее как-то авторазпознать и систематизировать - бессмысленное занятие - да и все равно в ручную перепроверять придеться - переделавыйте в блоки пока не поздно, или опишите задачу целиком - более развернуто - Вам здесь подскажут как ее реализовать, возможно и напишут инструмент под Вас.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 24.06.2009, 14:50
#9
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,458


Длина и ширина бывает у прямоугольника. У вас детали произвольной формы. Какую ширину и длину вы там хотите я не понимаю. Можно сделать так:
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 192
Размер:	12.3 Кб
ID:	22794  
Sleekka вне форума  
 
Автор темы   Непрочитано 24.06.2009, 16:14
#10
technos


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
переделавыйте в блоки пока не поздно, или опишите задачу целиком - более развернуто - Вам здесь подскажут как ее реализовать, возможно и напишут инструмент под Вас.
Это не от меня зависит - как представлены контура. Теоретически, хотелось бы получить экспорт контуров в текст, независимо от того, как они представлены.

Если это невозможно и требуется формулировать какие-то требования, например, представлять контура блоками, то это другое дело. Это тоже выход и он годится, если нет других вариантов.

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

Более развернуто задачу описать уже, вроде бы, некуда... :-) Разве что уточню - этот текстовый файл, содержащий список деталей, потом будет обрабатываться другим софтом.

Цитата:
Сообщение от Sleekka
Какую ширину и длину вы там хотите я не понимаю. Можно сделать так
Да, это годится. Как раз именно так и нужно. Приведенные мной детали - это просто частный случай. Как правило, это и будут прямоугольники.
technos вне форума  
 
Непрочитано 24.06.2009, 17:03
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Короче для компьютера, как Вы понимаете, это не какие не детали о просто набор линий, если они будут не по отдельности а сложенны кучей в какой-то файл чертежа - вытащить и разобрать их от туда автоматом, да еще и без ошибок практически не реально, что бы процесс автоматизировать - для начала надо понять что будет в исходных данных и что требуеться в выходных (данных, а не днях недели) - потом уже продумать формат - так что бы и компьютер это понималь - вариантов здесь масса - детали по разным слоям в виде областей, блоки с атрибутами (самый простой формат с точки зрения автоматизации) и прочие - главное сразу учесть что нужно на выходе чтоб потом заново все не переделывать. Что касаемо определение площади через GetBoundingBox (предложенного Slekkой) - то стоит задуматься над тем, что объект может быть и повернут - соответственно и размеры изменяться.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 24.06.2009, 17:30
#12
technos


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
... потом уже продумать формат - так что бы и компьютер это понималь - вариантов здесь масса - детали по разным слоям в виде областей, блоки с атрибутами (самый простой формат с точки зрения автоматизации) и прочие - главное сразу учесть что нужно на выходе чтоб потом заново все не переделывать.
Нет, жесткий формат вводить не хочется. И это не реально. Предполагается, что люди все разные и каждый строит свои чертежи как ему хочется.

Максимум, что можно потребовать, это чтобы контура были замкнутыми и оформлены как блоки. Чтобы дополнительные атрибуты (толщина, номер и пр.) лежали в отдельных слоях. Но порядок и именование этих слоев определять нельзя - они должны быть произвольны.

Т.е. макрос должен разбирать достаточно произвольный файл. На крайний случай, допустимы минимальные требования, как я уже говорил - оформлять контура в виде блоков.

Если это не реализуемо, то вопрос снимается. Если реализуемо, то обсуждаем дальше

Для чего это? Для того, чтобы N * 1000 предприятий в разных уголках планеты могли применить этот макрос для экспорта в текстовый файл. Накладывать жесткие требования на оформление чертежа нельзя - это уж точно будет неприменимо. Тогда лучше вообще отказаться от затеи.

На выходе должен быть такой файл, примерно:

Код:
[Выделить все]
489;123;3;1;Ст3сп
1200;600;3;2;Ст3сп
589;420;3;3;Ст3сп
400;200;3;4;Ст3сп
Где:
1 поле - габаритная длина контура
2 поле - габаритная ширина контура
3 поле - толщина, указанная в одном из слоев
и т.д.

Порядок полей в данном файле не имеет значения.

Цитата:
Сообщение от Дима_ Посмотреть сообщение
Что касаемо определение площади через GetBoundingBox (предложенного Slekkой) - то стоит задуматься над тем, что объект может быть и повернут - соответственно и размеры изменяться.
Этот метод подходит. Предполагается, что контура (которые для нас - детали) именно в данной конкретной задаче ориентированы соответствующим образом.
technos вне форума  
 
Непрочитано 24.06.2009, 19:13
#13
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,458


Цитата:
Т.е. макрос должен разбирать достаточно произвольный файл. На крайний случай, допустимы минимальные требования, как я уже говорил - оформлять контура в виде блоков.
Достаточно произвольный файл разбирать в принципе нельзя, даже для того чтобы один человек понял, чертеж другого существуют некие согласования.
Видимо в оформление в виде блока с атрибутами это единственный более менее вменяемый материал, а вообще металлические деталировки автоматизируются на гораздо более ранней стадии, и уже много софта на эту тему есть - мы тут велосипед изобретаем.
Sleekka вне форума  
 
Автор темы   Непрочитано 24.06.2009, 19:32
#14
technos


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


Хорошо. Я понял. Я еще подумаю, чтоб голову не морочить.
technos вне форума  
 
Непрочитано 25.06.2009, 12:28
#15
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Все я только теперь допер что тебе нужно - по этому и говорю - описывайте задачу более развернуто - все приходиться додумывать. К тебе будут приходить файлы с эскизами деталей, а тебе нужно получить по ним количество материала (как я понимаю без оптимизации раскроя), в чертеже "в вольной форме" могут быть указанны различные параметры типа количества штук, материал, название детали и пр. Тебе все это необходимо сконвертировать в формат csv (поля разделенные ; - так называются). Вобщем алгоритм такой, ищем объект с самой большой площадью, считаем размер прямоугольника для него, далее ищем тексты (далее идет мой личный формат - если надо по другому то скажи) которые начинаються с:
# - количество деталей,
% - толщина,
& - материал,
* - название детали.
Все это безобразие экспортируеться отдельной строчкой в файл c:\detal.csv в виде:
длинна; ширина;#;%;&;*; - если какойто параметр не найден, то он просто пропускается, например 100;200;5;;сальник резиновый;
Если я все правильно понял - вот те программка:
Код:
[Выделить все]
;# - количество, % толщина, & - материал, * - название детали
(vl-load-com)
;возращает список цифр содержащихся цифр в строке
(defun digitextract (str / lstdgt digit char i)
(setq i 1 digit "")
(repeat (strlen str)
(setq char (substr str i 1))
(if 	(and (>= char "0") (<= char "9"))
	(setq digit (strcat digit char))
	(if (or (= char ".") (= char ","))
	(setq digit (strcat digit "."))
	(if (= digit ".") (setq digit "") 
	(if (/= digit "") (setq lstdgt (append lstdgt (list (atof digit))) digit ""))
)));end of if*3
(setq i (1+ i))
);end of repeat
(if (and (/= digit ".") (/= digit "")) (setq lstdgt (append lstdgt (list (atof digit)))))
lstdgt
);end of digitextract

(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist

(defun removespace (txt)
(if (= (substr txt 1 1) " ")
(removespace (substr txt 2))
txt
);end of if
);end of removespace

(defun c:exportcsv ( / tmp ss pt1 pt2 count think material detal)
(setq	ss (mapcar 'vlax-ename->vla-object (sstolist (ssget "_a"))))
(if ss (progn
(setq	tmp (mapcar '(lambda (obj)(if (vlax-property-available-p obj "area") (vla-get-area obj) 0)) ss)
	tmp (vla-getboundingbox (nth (vl-position (apply 'max tmp) tmp) ss) 'pt1 'pt2)
	pt1 (vlax-safearray->list pt1) pt2 (vlax-safearray->list pt2)
	ss (sstolist (ssget "_a"(list (cons 0 "*text"))))
);end of setq
(if ss 
(mapcar '(lambda (txt)
(cond
((=(substr txt 1 1) "#") (setq count (car (digitextract txt))))
((=(substr txt 1 1) "%") (setq think (car (digitextract txt))))
((=(substr txt 1 1) "&") (setq material (substr txt 2)))
((=(substr txt 1 1) "*") (setq detal (substr txt 2)))
(t nil)
);end of cond
);end of lambda 
(mapcar 'removespace (mapcar '(lambda (obj) (cdr (assoc 1 (entget obj)))) ss)))
);end of if
(if 
(writefile "c:\\detal.csv"
(list (strcat 
(rtos (1+ (fix (- (car pt2) (car pt1))))) ";"
(rtos (1+(fix(- (cadr pt2) (cadr pt1))))) ";"
(if count (rtos count) "") ";"
(if think (rtos think) "") ";"
(if material material "") ";"
(if detal detal "") ";"
);end of strcat
) T);end of writefile
"Деталь успешно обработанна"
"Ошибка записи файла"
); end of if
);end of progn
"Не найдено деталей"
);end of if
);end of exportcsv
запускать командой exportcsv - результаты смотреть в файле c:\detal.csv, все предложения по формату или модернизации (например в файле несколько деталей и выбирать что обрабатывать вручную) - пиши сюда, только так чтоб мне с первого раза понятно было.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.06.2009, 12:49
#16
technos


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


Спасибо. Я попробую. Данные нужны как раз для оптимизации гильотинного раскроя. Этот текстовый файл будет импортироваться в программу раскроя.
technos вне форума  
 
Непрочитано 07.07.2009, 00:03
#17
Petrov_2

Инженер проектировщик
 
Регистрация: 10.12.2008
Витебск
Сообщений: 1


Если тема ещё актуальна для автора может ему будет интересно посмотреть следующий макрос
Вложения
Тип файла: zip Param_zag.zip (222.8 Кб, 152 просмотров)
Petrov_2 вне форума  
 
Автор темы   Непрочитано 07.07.2009, 10:19
#18
technos


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


Спасибо! У меня только нет AutoCAD, чтобы протестировать все. Но руки дойдут - найду машину с AutoCAD и проверю.
technos вне форума  
 
Непрочитано 14.10.2015, 11:34
#19
Scar11


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


Цитата:
Сообщение от Sleekka Посмотреть сообщение
Длина и ширина бывает у прямоугольника. У вас детали произвольной формы. Какую ширину и длину вы там хотите я не понимаю. Можно сделать так:
Привет всем , вопросик а не поможете с Простым макросом на Габариты Выделенного объекта . Именно таким же образом .... Длинна и Ширина по самым большим размерам дать прямоугольник (размеры) и показать их , никуда скачивать это не надо .
Просто с работой часто приходиться измерять габариты детали .
Scar11 вне форума  
 
Непрочитано 23.10.2015, 13:28
#20
skkkk


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


Scar11, это несложно вроде бы сделать, если я правильно понял задачу. Но желательно приложить чертежик с указанием в нем что есть и как надо.
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нужен макрос для AutoCAD, экспортирующий список деталей в текстовый файл

Инженерные консультации
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Предложения по расчетным моделям сооружений aldt Расчетные программы 8 06.07.2009 17:53
файл из AutoCAD 2004 сохранить в формат для AutoCAD R14 acad_newbie AutoCAD 12 13.10.2008 13:03
координаты Excel->_line x,y x,y для Acad. нужен макрос на VictorSM Программирование 9 22.01.2006 18:41