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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Заменить рамки во множестве чертежей

Заменить рамки во множестве чертежей

Ответ
Поиск в этой теме
Непрочитано 05.04.2010, 17:36 #1
Заменить рамки во множестве чертежей
bdfy
 
Регистрация: 30.04.2005
Сообщений: 141

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

в визио я бы с этой задачей пожалуй что справился бы, но с автокадом знаком поверхностно, программировать в нем никогда не пробовал. Как эта задача может решатся ? Как ее сформулировать если заказать на $ ? Может сталкивался уже кто нибудь с таким и есть готовое решение ?
Просмотров: 7669
 
Непрочитано 05.04.2010, 20:17
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от bdfy Посмотреть сообщение
- все файлы открыть
Если их очень много, боюсь, компутер зависнет. Или имеется в виду пройтись по всем файлам, то есть открывать по очереди? И сколько их, если не секрет?
Цитата:
Сообщение от bdfy Посмотреть сообщение
- рамки из них выкинуть (ее можно вычислить в принципе как крайний элемент в схеме)
Хоть один чертеж в качестве примера не помешал бы (дабы не гадать из каких примитивов состоит рамка).
Do$ вне форума  
 
Непрочитано 05.04.2010, 23:15
#3
T-Yoke

Артиллерист - вертолётчик. Дипломированный инженер-механик. Technologist
 
Регистрация: 29.11.2004
Где-то около Москвы
Сообщений: 16,832
Отправить сообщение для T-Yoke с помощью Skype™


Цитата:
Сообщение от bdfy Посмотреть сообщение
Есть большое количество документов в автокадовском формате. различных часто нестандартных (длинных) форматов. принципиально-монтажные схемы релейной защиты.
Оформлены давно, с тех пор поменялись стандарты оформления и главное персонал сменился. Все чертежи необходимо "пересмотреть", фактически это сводится к чему:
- все файлы открыть
- рамки из них выкинуть (ее можно вычислить в принципе как крайний элемент в схеме)
- вставить новые рамки
- сохранить и в перспективе распечатать.
все чертежи полностью выполнены в пространстве модели, т.е. вьюпортами и пр никто никогда не пользовался.

в визио я бы с этой задачей пожалуй что справился бы, но с автокадом знаком поверхностно, программировать в нем никогда не пробовал. Как эта задача может решатся ? Как ее сформулировать если заказать на $ ? Может сталкивался уже кто нибудь с таким и есть готовое решение ?
Как вариант, использовать рамку как динамический блок(где-то здесь попадалась такая) с полями для заполнения.
Метод работы такой.
Окрываете чертеж,
вставляте туда динблок с рамкой в специально созданном слое,
делает слой текущим, а все остальные блокируете, чтобы не снести чего нибудь нужное.
Добавляете все необходимые атрибуты блока рамки.
удаляете старую рамку.
Сохраняете чертеж. ВСЕ
P.S. Правда, все равно придется открыть КАЖДЫЙ чертеж и поработать руками.
__________________
«Артиллерия не токмо грохот, но и наука!» Пётр I
T-Yoke вне форума  
 
Автор темы   Непрочитано 06.04.2010, 00:22
#4
bdfy


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


Цитата:
Если их очень много, боюсь, компутер зависнет. Или имеется в виду пройтись по всем файлам, то есть открывать по очереди? И сколько их, если не секрет?
любая программная обработка предполагает последовательную обработку файлов конечно же ) открыл - обработал - закрыл.
файлов около 400. по самым скромным подсчетам.
пример во вложении. причем в данном случае рамка даже вполне корректная - в этом случае задача даже проще
нужно поменять только фамилии.
т.е. имея базу вида
гл. инженер - <фамилия>
начальник - <фамилия>
чертил - <фамилия>
и т.д. пройтись по шапке чертежа заменить фамилии. вот только я смотрю шапка таблицы кое где блоком...
+ рамка в автокаде это же не таблица... найдем если даже обьект надпись "гл. инженер" к примеру - как определить куда писать ? по координатам ? тогда надо проверить что рамка точно везде одинаковая и заменять/указывать если другая.
Цитата:
P.S. Правда, все равно придется открыть КАЖДЫЙ чертеж и поработать руками.
как сделать руками то понятно ) но руки ж блин отвалятся учитывая что компы быстродействием большим не отличаются. поэтому и ищу программное решение.
повторюсь, в том же visio на VBA я бы задачу решил - условно говоря нашел ближайшие к краю листа примитивы, потер бы их и вставил бы новую рамку с нужно надписью. как это проделать в автокаде не представляю. последний раз с autolisp сталкивался лет пять назад и то писал не я ) сконвертировать в visio конечно можно, но потеряются все автокадовские примитивы обьекты. что неприемлимо. да и стандарт предприятия все таки автокад )
причем проблема достаточно стандартная... яндекс на фрилансе несколько таких задач показал например - но везде работали руками.
Вложения
Тип файла: dwg
DWG 2004
Уручье_ЛЭП35кВ.dwg (115.9 Кб, 1197 просмотров)
Тип файла: dwg
DWG 2004
Podlesnaya_30_фидер_220.dwg (108.8 Кб, 1177 просмотров)

Последний раз редактировалось bdfy, 06.04.2010 в 00:31.
bdfy вне форума  
 
Непрочитано 06.04.2010, 06:39
#5
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от bdfy Посмотреть сообщение
различных часто нестандартных (длинных) форматов.
Цитата:
Сообщение от bdfy Посмотреть сообщение
- вставить новые рамки
На чертеже рамка удлиненная. Стандартная имеет другое соотношение сторон. Как собираешся заменять? Чертеж перекомпоновывать? Или, подобрав соотв. формат по длине смириться с тем что при стандартной ширине остается много пустого места?
Я бы сказал, что надо вручную. 400 штук это два дня работы. Программу писать это пол дня минимум + тестинг и доработка. Учитывая что программист-общественник не всегда свободен, за неделю, может, и справитесь.
Vova вне форума  
 
Автор темы   Непрочитано 06.04.2010, 09:52
#6
bdfy


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


Цитата:
На чертеже рамка удлиненная. Стандартная имеет другое соотношение сторон. Как собираешся заменять?
для автокада нет шаблонов динамических рамок ? тогда как вариант менять только штамп. или рисовать рамку программно. рамка не такой сложный элемент.

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

действительно. в автокаде теперь VBA открыть файл понятно как, закрыть сохранить тоже. вопрос как к фигурами в автокаде обращатся ? допустим простейший код на VBA в visio
for each sh in activepage.shapes
DEBUG.PRINT sh.cells("pinX") & "-" & sh.cells("pinY")
next

выдает координаты всех фигур на экран. как это в автокаде ? какие здесь обьекты вместо шейпов ? как их параметры получить ?

Последний раз редактировалось bdfy, 06.04.2010 в 11:15.
bdfy вне форума  
 
Непрочитано 06.04.2010, 12:33
#7
dvim

ИТ Логистика Строительство
 
Регистрация: 06.10.2009
Петербург
Сообщений: 24
<phrase 1=


тут на 2 чертежах рамки (штампы) организованы по разному
Приходим к выводу что менять надо просто штампы, а не рамки.

на первом - рамка это блок, да еще и с названием "Рамка" Соответственно поменять его на другой блок, подогнав по размерам - это вполнее решаемая задача.

Во втором - это набор линий и текста.
Теоретическим можно найти координаты текста "СЗПИ" и оттуда уже вычислить координаты "рамки" и ее порезать... (в свое время такой скрипт делал для обработки амерских чертежей - допущений куча, но он работает)
но это сложно.

А вообще сделать можно все ) при большом желании.

по языку для написания скрипта с перебором нужен не внутренний VBa а что то другое. Либо VB и СOM либо нет. Тк VBa плохо работает при открытии и просмотре многих файлов
dvim вне форума  
 
Непрочитано 06.04.2010, 13:00
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Так нужно заменить рамку, штамп или ФИО в штампе?
Заменить штамп или ФИО в первом вложенном чертеже легко - там штамп выполнен в виде блока с именем "РАМКА", а ФИО в виде атрибутов этого блока с соответствующими названиями. То есть с чертежами такого типа все просто - открыл, нашел блок "РАМКА" и заменил значения атрибутов на нужные.
Во втором случае нужно придумывать более сложный алгоритм. Например (для ФИО): ищем текст с содержанием "Гл. инженер", затем находим текст напротив него (определяем все тексты, находящиеся правее, находим ближайший из них), меняем ему содержание на нужное, затем находим текст "Нач. службы" и т.д.
А как в других чертежах? В любом из них либо как в первом либо как во втором? Или есть еще вариации?
Do$ вне форума  
 
Автор темы   Непрочитано 06.04.2010, 13:26
#9
bdfy


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


обсудили тут все еще раз - оказывается рамку относительно недавно у нас приняли новую.
так что все таки необходимо выкидывать все что похоже на рамку и вставлять новую. вариаций может быть Ннное количество, но в основном это просто нарисованная (без блока) рамка.
Цитата:
Тк VBa плохо работает при открытии и просмотре многих файлов
в чем проблема ? команда dir в вба работает отлично. если получается открыть один файл получится и тыщу.
покажите плиз пример какой нить с обращением к шейпу, выборкой по параметру какому да я может и сам разберусь. с вба в visio опыт есть немаленький.

итого надо искать рамку. чтобы ее затереть.
крайние линии определить думаю легко, они крайние на чертеже большой длины. рамку можно выделить по координатам относитльно правого нижнего угла. я не прав ?
bdfy вне форума  
 
Непрочитано 06.04.2010, 15:55
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Еще раз... рамку нужно заменить или штамп? Рамка - это "двадцать мм слева и по пять мм с других сторон вокруг чертежа". Штамп - это таблица, в которой название чертежа, фамилии исполнителей и проверяющих и пр.
Do$ вне форума  
 
Автор темы   Непрочитано 06.04.2010, 16:02
#11
bdfy


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


понял. потерялся я в терминологии. штамп надо заменить.
просто я привык рамку со штампом рассматривать как один элемент )
bdfy вне форума  
 
Непрочитано 06.04.2010, 16:11
#12
dvim

ИТ Логистика Строительство
 
Регистрация: 06.10.2009
Петербург
Сообщений: 24
<phrase 1=


Пример доступа к объектам ...


ThisDrawing.Utility.Prompt ("Выберете")
Set sss = ThisDrawing.SelectionSets.Add("s" + DateTime.Time$)
sss.SelectOnScreen
For k = 0 To sss.Count - 1
cvet = sss.Item(k).color
lay = sss.Item(k).Layer
If sss.Item(k).ObjectName = "AcDbText" Then
point = sss.Item(k).TextAlignmentPoint 'где текст
txt = sss.Item(k).TextString 'координата
End If

If sss.Item(k).ObjectName = "AcDbLine" Then
Set e = sss.Item(k)
point = sss.Item(k).StartPoint 'линия начало
point2 = sss.Item(k).EndPoint 'лин конец
End If
Next k

End Sub
dvim вне форума  
 
Непрочитано 06.04.2010, 16:35
#13
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от bdfy Посмотреть сообщение
итого надо искать рамку. чтобы ее затереть. крайние линии определить думаю легко, они крайние на чертеже большой длины. рамку можно выделить по координатам относитльно правого нижнего угла. я не прав ?
Найти, затереть и вставить другой штамп - это более-менее осуществимо. Но надо же еще название чертежа перенести из старого штампа в новый. Там будут еще некоторые неувязочки, если по размерам новый штамп будет отличаться от старого - он может налезать на объекты чертежа или же некоторые линии, которые раньше упирались в штамп, повиснут в воздухе (см.вложение). То есть, потом все равно придется открывать каждый чертеж и править ручками.
Вложения
Тип файла: dwg
DWG 2004
Podlesnaya_30_фидер_220[1].dwg (81.0 Кб, 1192 просмотров)
Do$ вне форума  
 
Автор темы   Непрочитано 06.04.2010, 18:59
#14
bdfy


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


Цитата:
если по размерам новый штамп будет отличаться от старого - он может налезать на объекты чертежа или же некоторые линии, которые раньше упирались в штамп, повиснут в воздухе (см.вложение).
а если затирать рамку и штамп полностью, потом считать границы чертежа и сообразно им выставлять рамку ?
bdfy вне форума  
 
Непрочитано 07.04.2010, 11:27
#15
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Сложно, муторно, головоломно...
С моей точки зрения, целесообразно сделать по принципу: "По максимуму избавиться от повторяющихся действий и сделать все вручную."
То есть, открываем вручную чертеж, запускаем программу, которая просит указать:
  • рамку
  • основную надпись
  • название раздела проекта
  • название чертежа
  • и т.п.
Затем программа удаляет указанное и вставляет динамический блок в виде рамки с заполненной основной надписью (на основе указанный данных). Точка вставки и динамические параметры, определяющие размер рамки, берутся по существующей рамке. Программа завершает свою работу.
Далее вручную правим всплывшие "косяки".
И так с каждым чертежом.
Do$ вне форума  
 
Непрочитано 07.04.2010, 11:31
#16
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013


Пока программу будете сочинять можно 400 раз всё заменить
Nike вне форума  
 
Непрочитано 07.04.2010, 11:35
#17
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Да кто его знает, что там за цели! Может быть у них основная надпись по два раза в неделю меняется
Do$ вне форума  
 
Автор темы   Непрочитано 07.04.2010, 12:15
#18
bdfy


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


еще раз - отказатся от тупой работы это дело принципа ) я бывало и в пять раз больше времени тратил на решение задачи программно. скилы они всегда пригодятся. буду пробовать потиху. жаль конечно что нет готовых решений. может есть пример вставки блока рамки и забивания ее надписи по известным данным хотя бы ?
Do$,
а вот с полуавтомата можно начать ) а уже потом пытаться сделать "анализатор схемы" программный. как в автокаде будет выглядеть запрос на выделение обьекта ?
bdfy вне форума  
 
Непрочитано 07.04.2010, 12:34
#19
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013


Цитата:
Сообщение от bdfy Посмотреть сообщение
может есть пример вставки блока рамки и забивания ее надписи по известным данным хотя бы ?
Могу дать пример такой программульки - данные штампа хранятся в текстовом файле рядом с чертежом, при вставке блока штампа данные считываются и вставляются в соответствующие атрибуты. Писана на LISP под свои цели. Код безобразный и малограмотный, но рабочий.

Последний раз редактировалось Nike, 07.04.2010 в 12:40.
Nike вне форума  
 
Непрочитано 07.04.2010, 13:40
#20
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от bdfy Посмотреть сообщение
как в автокаде будет выглядеть запрос на выделение обьекта ?
В AutoLisp,VisualLisp - функции entsel, nentsel, ssget. Но, насколько я понял, писать планируется на VBA - с ним я не знаком.
Do$ вне форума  
 
Автор темы   Непрочитано 07.04.2010, 13:54
#21
bdfy


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


да, примеры на лисп мне помогут мало ( - новый язык учить в мои планы не входит
bdfy вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Заменить рамки во множестве чертежей



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой метод получения чертежей выбрать, работая в Tekla Structures ? pdimav Tekla 15 12.01.2018 09:12
Стандарты оформления чертежей (бумага) Sleekka AutoCAD 23 01.12.2011 14:00
Слетает ширина рамки атрибута. Что делаю неправильно? пончеГ AutoCAD 2 03.07.2009 11:06
Рамки А4...А1 и СПЕЦИФИКАЦИЯ по данным файлов Autodesk Inventor Бриг Прочее ПО от Autodesk 19 03.06.2009 10:38