|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Заменить рамки во множестве чертежей
Регистрация: 30.04.2005
Сообщений: 141
|
||
Просмотров: 7669
|
|
||||
Если их очень много, боюсь, компутер зависнет. Или имеется в виду пройтись по всем файлам, то есть открывать по очереди? И сколько их, если не секрет?Хоть один чертеж в качестве примера не помешал бы (дабы не гадать из каких примитивов состоит рамка).
|
||||
![]() |
|
||||
Цитата:
Метод работы такой. Окрываете чертеж, вставляте туда динблок с рамкой в специально созданном слое, делает слой текущим, а все остальные блокируете, чтобы не снести чего нибудь нужное. Добавляете все необходимые атрибуты блока рамки. удаляете старую рамку. Сохраняете чертеж. ВСЕ ![]() P.S. Правда, все равно придется открыть КАЖДЫЙ чертеж и поработать руками.
__________________
«Артиллерия не токмо грохот, но и наука!» Пётр I |
||||
![]() |
|
||||
Регистрация: 30.04.2005
Сообщений: 141
|
Цитата:
файлов около 400. по самым скромным подсчетам. пример во вложении. причем в данном случае рамка даже вполне корректная - в этом случае задача даже проще нужно поменять только фамилии. т.е. имея базу вида гл. инженер - <фамилия> начальник - <фамилия> чертил - <фамилия> и т.д. пройтись по шапке чертежа заменить фамилии. вот только я смотрю шапка таблицы кое где блоком... + рамка в автокаде это же не таблица... найдем если даже обьект надпись "гл. инженер" к примеру - как определить куда писать ? по координатам ? тогда надо проверить что рамка точно везде одинаковая и заменять/указывать если другая. Цитата:
повторюсь, в том же visio на VBA я бы задачу решил - условно говоря нашел ближайшие к краю листа примитивы, потер бы их и вставил бы новую рамку с нужно надписью. как это проделать в автокаде не представляю. последний раз с autolisp сталкивался лет пять назад и то писал не я ) сконвертировать в visio конечно можно, но потеряются все автокадовские примитивы обьекты. что неприемлимо. да и стандарт предприятия все таки автокад ) причем проблема достаточно стандартная... яндекс на фрилансе несколько таких задач показал например - но везде работали руками. Последний раз редактировалось bdfy, 06.04.2010 в 00:31. |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
На чертеже рамка удлиненная. Стандартная имеет другое соотношение сторон. Как собираешся заменять? Чертеж перекомпоновывать? Или, подобрав соотв. формат по длине смириться с тем что при стандартной ширине остается много пустого места?
Я бы сказал, что надо вручную. 400 штук это два дня работы. Программу писать это пол дня минимум + тестинг и доработка. Учитывая что программист-общественник не всегда свободен, за неделю, может, и справитесь. |
|||
![]() |
|
||||
Регистрация: 30.04.2005
Сообщений: 141
|
Цитата:
вариант вручную понятен. для инженера это все таки не вариант. "лучше день потерять...". так что повторюсь это принципиально реализуемо ? может кто назвать ценник пример или хотя бы пример набросать ? VBA ведь теперь поддерживается вроже глядишь разберусь... открыть файл найти примитив и проделать с ним чего нить простейшее сохранить, закрыть файл. думаю по такому примеру уже можно будет подергатся действительно. в автокаде теперь VBA ![]() for each sh in activepage.shapes DEBUG.PRINT sh.cells("pinX") & "-" & sh.cells("pinY") next выдает координаты всех фигур на экран. как это в автокаде ? какие здесь обьекты вместо шейпов ? как их параметры получить ? Последний раз редактировалось bdfy, 06.04.2010 в 11:15. |
|||
![]() |
|
||||
ИТ Логистика Строительство Регистрация: 06.10.2009
Петербург
Сообщений: 24
![]() |
тут на 2 чертежах рамки (штампы) организованы по разному
Приходим к выводу что менять надо просто штампы, а не рамки. на первом - рамка это блок, да еще и с названием "Рамка" Соответственно поменять его на другой блок, подогнав по размерам - это вполнее решаемая задача. Во втором - это набор линий и текста. Теоретическим можно найти координаты текста "СЗПИ" и оттуда уже вычислить координаты "рамки" и ее порезать... (в свое время такой скрипт делал для обработки амерских чертежей - допущений куча, но он работает) но это сложно. А вообще сделать можно все ![]() по языку для написания скрипта с перебором нужен не внутренний VBa а что то другое. Либо VB и СOM либо нет. Тк VBa плохо работает при открытии и просмотре многих файлов |
|||
![]() |
|
||||
Так нужно заменить рамку, штамп или ФИО в штампе?
Заменить штамп или ФИО в первом вложенном чертеже легко - там штамп выполнен в виде блока с именем "РАМКА", а ФИО в виде атрибутов этого блока с соответствующими названиями. То есть с чертежами такого типа все просто - открыл, нашел блок "РАМКА" и заменил значения атрибутов на нужные. Во втором случае нужно придумывать более сложный алгоритм. Например (для ФИО): ищем текст с содержанием "Гл. инженер", затем находим текст напротив него (определяем все тексты, находящиеся правее, находим ближайший из них), меняем ему содержание на нужное, затем находим текст "Нач. службы" и т.д. А как в других чертежах? В любом из них либо как в первом либо как во втором? Или есть еще вариации? |
||||
![]() |
|
||||
Регистрация: 30.04.2005
Сообщений: 141
|
обсудили тут все еще раз - оказывается рамку относительно недавно у нас приняли новую.
так что все таки необходимо выкидывать все что похоже на рамку и вставлять новую. вариаций может быть Ннное количество, но в основном это просто нарисованная (без блока) рамка. Цитата:
покажите плиз пример какой нить с обращением к шейпу, выборкой по параметру какому да я может и сам разберусь. с вба в visio опыт есть немаленький. итого надо искать рамку. чтобы ее затереть. крайние линии определить думаю легко, они крайние на чертеже большой длины. рамку можно выделить по координатам относитльно правого нижнего угла. я не прав ? |
|||
![]() |
|
||||
Еще раз... рамку нужно заменить или штамп? Рамка - это "двадцать мм слева и по пять мм с других сторон вокруг чертежа". Штамп - это таблица, в которой название чертежа, фамилии исполнителей и проверяющих и пр.
|
||||
![]() |
|
||||
ИТ Логистика Строительство Регистрация: 06.10.2009
Петербург
Сообщений: 24
![]() |
Пример доступа к объектам ...
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 |
|||
![]() |
|
||||
Найти, затереть и вставить другой штамп - это более-менее осуществимо. Но надо же еще название чертежа перенести из старого штампа в новый. Там будут еще некоторые неувязочки, если по размерам новый штамп будет отличаться от старого - он может налезать на объекты чертежа или же некоторые линии, которые раньше упирались в штамп, повиснут в воздухе (см.вложение). То есть, потом все равно придется открывать каждый чертеж и править ручками.
|
||||
![]() |
|
||||
Регистрация: 30.04.2005
Сообщений: 141
|
Цитата:
|
|||
![]() |
|
||||
Сложно, муторно, головоломно...
С моей точки зрения, целесообразно сделать по принципу: "По максимуму избавиться от повторяющихся действий и сделать все вручную." То есть, открываем вручную чертеж, запускаем программу, которая просит указать:
Далее вручную правим всплывшие "косяки". И так с каждым чертежом. |
||||
![]() |
|
||||
Регистрация: 30.04.2005
Сообщений: 141
|
еще раз - отказатся от тупой работы это дело принципа ) я бывало и в пять раз больше времени тратил на решение задачи программно. скилы они всегда пригодятся. буду пробовать потиху. жаль конечно что нет готовых решений. может есть пример вставки блока рамки и забивания ее надписи по известным данным хотя бы ?
Do$, а вот с полуавтомата можно начать ) а уже потом пытаться сделать "анализатор схемы" программный. как в автокаде будет выглядеть запрос на выделение обьекта ? |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013
|
Могу дать пример такой программульки - данные штампа хранятся в текстовом файле рядом с чертежом, при вставке блока штампа данные считываются и вставляются в соответствующие атрибуты. Писана на LISP под свои цели. Код безобразный и малограмотный, но рабочий.
Последний раз редактировалось Nike, 07.04.2010 в 12:40. |
|||
![]() |
|
||||
|
||||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какой метод получения чертежей выбрать, работая в 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 |