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

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

Попытался сделать автоматическое составление спецификации по

Ответ
Поиск в этой теме
Непрочитано 16.05.2007, 09:18 #1
Попытался сделать автоматическое составление спецификации по
mmmx
 
Москва
Регистрация: 06.07.2006
Сообщений: 42

Попытался сделать автоматическое составление спецификации по чертежу.

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

Проблема для меня только в том, где держать это описание блока.
Я решил этот вопрос с помощью пояснения к блоку (Block.Comments), и на основе этого и сделал программку....

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


Не поможете, как приаттачить текстовые данные к блоку? (с помощью словарей, что ли... Не очень хорошо в этом разбираюсь)

Или может, можно как-то отключить уничтожение комментария блока при его вставке в другой чертеж?


Был бы очень благодарен!
Программка получилась вполне нужная, да вот из-за того, что недоглядел вовремя, бестолковая...
Просмотров: 16505
 
Непрочитано 16.05.2007, 09:23
#2
shnn

Инженер
 
Регистрация: 18.02.2005
Самара
Сообщений: 747


Я думаю Вы ищете атрибуты блока. Создаются командой attdef.
shnn вне форума  
 
Автор темы   Непрочитано 16.05.2007, 09:32
#3
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Я поясню:
Необходимое мне описание должно иметь как минимум, два поля:
"Обозначение" и "Количество". Еще желательно "Наименование".
Количество строк - переменное для каждого блока, смотря сколько позиций он в себя включает.

Например:

Код:
[Выделить все]
"Обозн." "Наим." "Кол."
76786 Шкаф 1шт
34234 Дверь 1шт
98787 Петли 2шт
87687 Полка 3шт
Аттрибуты... То есть создать нужное количество аттрибутов, содержащих, к примеру, по одной строке? А потом поиском их все собрать?... Боюсь, это просто неудобно, да и строки реально длиннее, мне кажется, они не влезут в допустимый размер текста аттрибута...
mmmx вне форума  
 
Непрочитано 16.05.2007, 09:41
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


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

Подсчет "количества" - дело самое простое. Примеры этого всегда входили в Автокад - планчик офиса с компьютерами.

Сложности в ведении базы оборудования и изделий. Основные трудозатраты получаются не в подсчетах, а в формировании документов, написании точных и длинных "формулировок".
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 16.05.2007, 09:49
#5
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


ShaggyDoc, я с вами полностью согласен.
Вилы хотя бы в том, что блок можно разбить!... (Не то, что можно, а даже временами нужно, и это будет происходить с частичной потерей информации). На данный момент я иду на компромисс '"кривость" реализации' / 'легкость реализации', если своими словами.

Количество блоков мне считать не нужно. Мне нужно считывать приаттаченную к ним информацию. В технологии присваивания и хранения этой информации у меня и вопрос. [/quote]
mmmx вне форума  
 
Непрочитано 16.05.2007, 10:05
#6
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


А приаттачивать надо не посредством атрибутов, а в виде расширенных данных, которые можно присоединить к любому примитиву. Причем, в расширенных данных не само описание изделия, а только ссылка на его характеристики (лучше в БД, хотя это могут быть и любые файлы).

Тогда разработка программы заключается в том, как удобнее выбрать из БД нужную позицию - возможно, из тысяч. Как вести эту БД, формировать документ. В какой момент присоединять данные - можно специальными программами в момент рисования изделия примитивами, а можно в любой момент, путем указания любого примитива.

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

Код:
[Выделить все]
(ru-xdata-write-for-ent ename xdata_list app_name)
(ru-xdata-read-for-ent  ename app_name)
(ru-xdata-rem-for-selection selection app_name is_show_msg)
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 16.05.2007, 10:24
#7
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Да, это отличная идея!
Вообще у меня есть мысль в БД хранить описание блока (типа dxf), чтобы отрисовывать его по факту вставки... Но не уверен, что это правильно.

Просто у меня некоторые сложности с этими расширенными данными...
mmmx вне форума  
 
Непрочитано 16.05.2007, 10:42
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Полность согласен с ShaggyDoc. Похожий вариант разрабатывали здесь http://www.autocad.ru/cgi-bin/f1/boa...31596eW&page=1 Почитай, думаю найдешь много для себя полезного. Там данные хранятся в словарях. Сами ф-ции опубликованы, начиная с поста
VVA (2007-01-25 12:24:59) и называются
DictAddToEnameByName
DictGetFromEnameByName
DictRemoveFromEnameByName

Правда значения словарей - текст. Но можно их заменить ф-циями
vlax-ldata-* либо Набор функций для хранения данных в словарях Петра Лоскутова
На работе я обычно примитивы помечаю расширенными данными, чтобы можно было быстро отфильтровать через ssget [типа (ssget "X" ’((0 . "CIRCLE") (-3 ("APP1")("APP2"))))]
Ф-ции добавления Расширенных Данных можешь посмотреть здесь
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=34219yU
_add_txt_dictxd
_get_txt_dictxd
_del_txt_dictxd
VVA вне форума  
 
Непрочитано 16.05.2007, 10:58
#9
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


Если данные хранить в словарях, то они не смогут попасть в текущий чертеж при вставке блока из другого чертежа. Хранить надо либо в расширенных данных, либо в невидимых атрибутах. В атрибутах хорошо тем, что по желанию их можно отобразить и визуально осмотреть план на предмет ошибок (опечаток).
VetalBY вне форума  
 
Автор темы   Непрочитано 16.05.2007, 11:00
#10
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Спасибо за информацию! К сожалению, на лиспе мне делать что-то тяжело. Но я учту все вышесказанное!

Попробую аттачить данные таким способом: http://www.autocad.ru/cgi-bin/f1/board.cgi?t=28538Na

А по-хорошему, потом попытаюсь сделать, как советовал ShaggyDoc.
mmmx вне форума  
 
Непрочитано 16.05.2007, 11:50
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


>VetalBY Если хранителем словаря выступает объект, а не (NAMEDOBJDICT), то данные хранятся в описании объекта следуют всюду за ним .
Сохрани данные в словаре объекта
Код:
[Выделить все]
(vlax-ldata-put (vlax-ename->vla-object(car(entsel "\nВыберите объект"))) "TEST" (getstring t "\nВветите текстовый текст:"))
Скопируй объект в другой чертеж и проверь

Код:
[Выделить все]
(princ (strcat "\nВы ввели текст: " (vlax-ldata-get (vlax-ename->vla-object(car(entsel "\nВыберите объект"))) "TEST")))
VVA вне форума  
 
Непрочитано 16.05.2007, 13:18
#12
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


м-да, работает, это я по незнанию ляпнул , пардон
надо будет разобраться...
VetalBY вне форума  
 
Автор темы   Непрочитано 16.05.2007, 13:42
#13
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Ничего не работает...
Попробовал метод SetXData / GetXData - данные не переносятся при вставке блока с этими данными!

Похоже, выход - только отдельная внешняя БД?
mmmx вне форума  
 
Непрочитано 16.05.2007, 14:00
#14
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от mmmx
Ничего не работает...
Попробовал метод SetXData / GetXData - данные не переносятся при вставке блока с этими данными!

Похоже, выход - только отдельная внешняя БД?
VVA показал пример с ldata. Разные вещи.

Внешняя БД не влияет на способ присоединения дополнительных данных. Когда вообще не было никаких расширенных данных и словарей, приходилось использовать и атрибуты блоков. В версии 10. Но атрибуты - это заведомое ограничение возможностей и жесткая привязка только к блоковой технологии. А это плохо. Ссылка на запись в БД (или полная информация, что гораздо хуже) должна "быть мочь" привязанной к любому примитиву.

На какие-только ухищрения не идут ради кажущейся простоты работы с блоками. Где-то в Download лежит проект вентиляции в 3D - сделан очень неплохо. Но автор каждый элемент воздуховода превращал в блок, да еще с именем, которое соответствовало полному наименованию элемента. "Сизифов труд" - ради того, чтобы потом сосчитать штуки.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 16.05.2007, 14:39
#15
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Вопрос в другом: где мне хранить данные, по которым я должен искать информацию в БД, если они не держатся ни в комментах блока, ни в расширенных данных (XData)? Только привязка к имени блока остается?
mmmx вне форума  
 
Непрочитано 16.05.2007, 14:50
#16
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от mmmx
Вопрос в другом: где мне хранить данные, по которым я должен искать информацию в БД, если они не держатся ни в комментах блока, ни в расширенных данных (XData)? Только привязка к имени блока остается?
У всех держатся, а у тебя не держатся? VVA привел краткий и понятный пример. Вместо "текстового текста" - текст ссылки по собственному разумению.

Давать советы по VBA противоречит уставу моей конфессии.
ShaggyDoc вне форума  
 
Непрочитано 16.05.2007, 15:00
#17
lee


 
Регистрация: 28.02.2004
43
Сообщений: 1,796
<phrase 1=


ADT - Property Set Definitions - Shedule Tables

читаю тему и все более убеждаюсь, что на голый автокад не перейду никогда
lee вне форума  
 
Непрочитано 16.05.2007, 15:05
#18
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


Конечно держаться не будут, так как ты цепляешь данные к ссылке на блок (BlockReference), а не к описанию блока (BlockTableRecord). Понятно, что цеплять к описанию блока нет никакого смысла. Так вот при вставке из ДЦ, ДЦ берет только описание блока, но никак ни его ссылку - в твоем случае из ДЦ брать не имеет смысла. Через драг-дроп должно работать, только блок разбить надо после вставки (блок в блоке - может ты не тот блок проверял).
VetalBY вне форума  
 
Автор темы   Непрочитано 16.05.2007, 18:07
#19
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Цитата:
VetalBY: Конечно держаться не будут, так как ты цепляешь данные к ссылке на блок (BlockReference), а не к описанию блока (BlockTableRecord). Понятно, что цеплять к описанию блока нет никакого смысла. Так вот при вставке из ДЦ, ДЦ берет только описание блока, но никак ни его ссылку - в твоем случае из ДЦ брать не имеет смысла. Через драг-дроп должно работать, только блок разбить надо после вставки (блок в блоке - может ты не тот блок проверял).
А, вот в чем дело... Спасибо, буду пробовать!
mmmx вне форума  
 
Непрочитано 16.05.2007, 18:52
#20
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


>mmmx
Некоторые данные храню в гиперссылке. Думаю, что и в VBA не проблема их туда записать.

На лиспе выглядит так
Код:
[Выделить все]
(DEFUN mip-put-hyperlink ( ENAME URLDescription )(vl-load-com)
 (if (eq (type ENAME) 'ENAME)(setq ENAME (vlax-ename->vla-object ENAME)))
  (vlax-for hyp (vla-get-hyperlinks ENAME)(vla-delete hyp))
  (vla-add (vla-get-hyperlinks ENAME) "about:blank" URLDescription))


;|=============== Команда HYP ================================================
Заносит введенное описание объекта всем выбранным примитивам как гиперссылку
Включение/отключение показа гиперссылок см. команды
_HYPERLINKOPTIONS (ГИПЕРСВОЙСТВА)|;
(defun C:HYP ( / sset hyptxt)(vl-load-com)  
(setq hyptxt (getstring t "\nОписание объекта <выход>: "))
(setq hyptxt (VL-STRING-TRIM " " hyptxt))
(if (and (/= hyptxt "")(setq sset (ssget "_:L")))
 (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset)))) 
   (mip-put-hyperlink item hyptxt)))(princ))
Использовать лисп из VBA можешь через SendCommand.

>ShaggyDoc
Цитата:
Вместо "текстового текста"
Хотел по русски, а вышло масло масляное
VVA вне форума  
 
Автор темы   Непрочитано 17.05.2007, 11:10
#21
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


В общем, когда-то мне уважаемый kpblc помог с доступом к комментарию блока. Технически оказалось проще решить все через AcadBlockReference. А чем это грозит, я тогда не понял... Теперь, чтобы данные держались при вставке блока в другой чертеж (дизайн центром или дропом из файла) мне нужно переделать эту процедуру в соответствии с замечанием VetalBY:
Цитата:
Конечно держаться не будут, так как ты цепляешь данные к ссылке на блок (BlockReference), а не к описанию блока (BlockTableRecord)
А процедура выглядит следующим образом:
Код:
[Выделить все]
Function GetBlockDescription(BlockName As String, Optional NewDescr As String) As String
Dim objBlock As AcadBlock
Set objBlock = ThisDrawing.Blocks.Item(BlockName)

For Each Item In objBlock
      If TypeName(Item) = "IAcadBlockReference2" Then
    GetBlockDescription (Item.Name)
    End If
Next

If NewDescr <> "Null" Then
objBlock.Comments = NewDescr
End If

If NewDescr = "Null" Then ADD_TO_GRID (objBlock.Comments)
Exit Function
      
End Function
Помогите переделать, а? Я уже совсем запутался...
mmmx вне форума  
 
Непрочитано 17.05.2007, 11:42
#22
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


это мы уже все скоро запутаемся. Комментарий как раз таки и цепляется к описанию блока и ДЦ его нормально перетаскивается. Только я никак не пойму, как можно использовать такую информацию для спецификаций? Каждый блок имеет в чертеже только одну вставку (BlockReference или INSERT) что ли?
Мне показалось, что ты не совсем понимаешь, что такое описание блока (BlockDefinition) и его вставка (BlockReference или INSERT). Описание блока оно одно в файле, но ссылок на этот блок может быть несколько в этом же файле. К BlockReference по-моему нет возможности прикрепить комментарий...
Короче нужна более четкая постановка задачи, имхо.
VetalBY вне форума  
 
Непрочитано 17.05.2007, 12:35
#23
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Продвигаю свою идею - хранить данные в гиперссылке как наименее трудоемкую. К сожалению с VBA не работаю, но про гиперссылки на VBA нашел эти примеры
http://discussion.autodesk.com/threa...hreadID=569748
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=34298ea
И храни свою базу в URLDescription каждого вхождения блока в чертеже (INSERT)
VVA вне форума  
 
Непрочитано 17.05.2007, 12:45
#24
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Вот примерчик из helpa как задать URLDescription объетку
Код:
[Выделить все]
Sub Example_URLDescription()
    ' This example creates a Circle object in model space and
    ' adds a new Hyperlink to its Hyperlink collection
    
    Dim Hyperlinks As AcadHyperlinks
    Dim Hyperlink As AcadHyperlink
    Dim circleObj As AcadCircle
    Dim centerPoint(0 To 2) As Double
    Dim radius As Double
    Dim HLList As String
    
    ' Define the Circle object
    centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
    radius = 5#
    
    ' Create the Circle object in model space
    Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)

    ThisDrawing.Application.ZoomAll
    
    ' Get reference to the Circle's Hyperlinks collection
    Set Hyperlinks = circleObj.Hyperlinks
    
    ' Add a new Hyperlink complete with all properties
    Set Hyperlink = Hyperlinks.Add("AutoDesk")
    Hyperlink.URL = "www.autodesk.com"
    Hyperlink.URLDescription = "Autodesk Main Site"
    Hyperlink.URLNamedLocation = "MY_LOCATION"
    
    ' Read and display a list of existing Hyperlinks and
    ' their properties for this object
    For Each Hyperlink In Hyperlinks
        HLList = HLList & "____________________________________" & vbCrLf   ' Separator
        HLList = HLList & "URL: " & Hyperlink.URL & vbCrLf
        HLList = HLList & "URL Description: " & Hyperlink.URLDescription & vbCrLf
        HLList = HLList & "URL Named Location: " & Hyperlink.URLNamedLocation & vbCrLf
    Next
    
    MsgBox "The circle has " & Hyperlinks.count & " Hyperlink: " & vbCrLf & HLList
End Sub
Как взять в примерах выше. Единственный минус, гиперссылка хранится в расширенных данных (16 кБ органичение)
VVA вне форума  
 
Непрочитано 17.05.2007, 13:10
#25
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Гиперссылки для таких целей, в принципе, использовать можно. Но это плохо:

1. Они доступны для ручной правки, а значит, могут быть (и будут) попорчены.
2. Кто-то использует их и по прямому назначению. Только не надо думать, что если вы этим не пользуетесь, так и никто больше не применяет.
3. У гиперссылки есть "база", которая может к ссылке добавляться. Она также доступна и может все испортить.

Гораздо проще раз и навсегда научиться привязывать данные - пригодится много раз. Разумеется, не к определению блока, а к вставке. Одно и то же определение блока при вставке может быть связано с разными записями БД. Иначе - тупик. Сколько типоразмеров и модификаций изделий - столько и определений блока. А если у оборудования изменилось название, ТУ или еще что? Менять во всех определениях блока во всех чертежах, куда их наперетаскивали?

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

Приходилось использовать гиперссылки для БД таким образом:

1. У примитивов были привязанные скрытые ссылки на записи в БД.
2. Для размещения в интернете генерировались тысячи DWF-файлов (план города). При этом перед созданием DWF к примитиву, из расширенных данных, привязывалась гиперссылка.
3. При просмотре DWF в Интернет щелчок по объекту заставлял работать гиперссылку. При этом в браузер выводилась информация об объекте.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 17.05.2007, 14:00
#26
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


VVA, Shaggy Doc: пока с гиперссылками подожду, оставлю этот вариант на крайний случай.
А также: мне не нужно привязать описание к конкретной вставке блока. Поясняю:

Постановка задачи:
Имеются файлы с изображениями: шкафы, монтажные платы для них, различные аппараты, на них устанавливаемые, и всевозможные аксессуары.

Папка с этими файлами открыта в Дизайн Центре. Я вытягиваю нужный мне шкаф, и начинаю его компоновать, устанавливая нужную монтажную плату, на нее, в свою очередь, нужный аппарат, и так далее.

Шкаф состоит из рамы, боковых и верхней панели, рым-болтов. Если на чертеже три шкафа, то соответственно, все эти компоненты шкафа имеются в тройном размере.
Таким образом, спецификация должна быть привязана к описанию блока, а не к его конкретной вставке.


VetalBY, аналогично с Comments, работает и Xdata, ту же функцию нетрудно переделать:

Код:
[Выделить все]
Function GetBlockDescription(BlockName As String, Optional NewDescr As String) As String
Dim objBlock As AcadBlock
Set objBlock = ThisDrawing.Blocks.Item(BlockName)

For Each Item In objBlock
      If TypeName(Item) = "IAcadBlockReference2" Then
    GetBlockDescription (Item.Name)
    End If
Next

Dim datatype(0 To 1) As Integer
datatype(0) = 1001
datatype(1) = 1000

If NewDescr <> "Null" Then
Dim data(0 To 1) As Variant
data(0) = "My"
data(1) = NewDescr
objBlock.SetXData datatype, data
End If

If NewDescr = "Null" Then
Dim datatype2 As Variant
Dim comm As Variant
objBlock.GetXData "My", datatype2, comm

    TXT = comm(1)
    ADD_TO_GRID (TXT)
    Exit Function

End If
      
End Function
НО: ни в том, ни в другом случае прикрепленные данные не сохраняются!
Цитата:
Комментарий как раз таки и цепляется к описанию блока и ДЦ его нормально перетаскивается.
Этого не происходит!!! Видимо, по причине привязки к Reference, а не к описанию блока
mmmx вне форума  
 
Непрочитано 17.05.2007, 15:04
#27
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


Цитата:
Сообщение от mmmx
Таким образом, спецификация должна быть привязана к описанию блока, а не к его конкретной вставке.
Видимо я чего-то не допонимаю....
Цитата:
Сообщение от mmmx
Этого не происходит!!! Видимо, по причине привязки к Reference, а не к описанию блока
Это легко проверить. Вставляем блок в файл, выделяем его и видим, что у него нет свойства "Description", кликаем дважды по блоку и входим в редактор блока (в описание блока) и видим, что там это свойство присутствует.
VetalBY вне форума  
 
Непрочитано 17.05.2007, 15:05
#28
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Такая постановка - перетаскивание из DesignCenter принципиально неверна.

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

Привязка данных к объектам, притаскиваемых откуда-то бессмысленна. Ну, если "конечно, хочется хорошенько помучиться" (как говорил тов. Сухов) - пробуйте. Радикального результата, сопоставимого с затраченными усилиями не будет.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 17.05.2007, 18:22
#29
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Цитата:
Привязка данных к объектам, притаскиваемых откуда-то бессмысленна. Ну, если "конечно, хочется хорошенько помучиться" (как говорил тов. Сухов) - пробуйте. Радикального результата, сопоставимого с затраченными усилиями не будет.
Неужели? То есть автоматическое составление спецификации по сборочному чертежу - это блажь, никому не нужная? А ведь ее многие 2Д и 3Д системы реализуют (я не говорю здесь о подходе к проектированию)
mmmx вне форума  
 
Непрочитано 17.05.2007, 20:22
#30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Ну тогда создай в блоке ПОСТОЯННЫЙ атрибут, или лучше атрибуты и храни там имформацию. Во вхождении блока его не будет, в описании блока - пожалуйста
VVA вне форума  
 
Непрочитано 17.05.2007, 21:37
#31
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от mmmx
Неужели? То есть автоматическое составление спецификации по сборочному чертежу - это блажь, никому не нужная? А ведь ее многие 2Д и 3Д системы реализуют (я не говорю здесь о подходе к проектированию)
Очень нужная. Блажь - строить на основе блоков, да еще "притаскиваемых". Да, можно в атрибутах блока заложить все данные. А потом мучиться с тем, что эти данные устарели и неконтролируемо растаскиваются. И в каждом чертеже надо или переопределять блоки или переписывать их атрибуты.

Системы строятся не так. У них разная идеология в реализациях, но никак не такая.

Например, сведения об изделиях (не только для спецификации, но и например, для расчетов) хранятся в базе данных. Объект создается по данным из базы. В "продвинутых" системах (АДТ, ABS и т.п.) это вообще специальный вид примитивов. В более простых - это стандартные примитивы Автокада, но связанные с базой данных.

Блоки также могут использоваться, но как частный случай примитива. Если щит на плане здания можно изобразить блоком, то трубопроводы, проводники, крепления и тысячи других мелочей - не получится. А именно с ними проблема, а не с подсчтетом, например, количества колес на сборочном чертеже автомобиля.
ShaggyDoc вне форума  
 
Непрочитано 18.05.2007, 20:49
#32
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Цитата:
Сообщение от ShaggyDoc
Блоки также могут использоваться, но как частный случай примитива. Если щит на плане здания можно изобразить блоком, то трубопроводы, проводники, крепления и тысячи других мелочей - не получится. А именно с ними проблема, а не с подсчтетом, например, количества колес на сборочном чертеже автомобиля.
Это точно! Больше всего шансов на автоматические спецификации имеют модели из 3д тел, когда каждая деталь представлена отдельным телом, а не набором отрезков, кружочков и прочего зверинца примитивов. У меня, к примеру, программа находит в модели одинаковые тела и считает их (с учётом вложенности в блоки). Для двухмерки - это совершенно ненадёжно.
Евгений А. вне форума  
 
Автор темы   Непрочитано 21.05.2007, 09:51
#33
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Цитата:
Больше всего шансов на автоматические спецификации имеют модели из 3д тел, когда каждая деталь представлена отдельным телом, а не набором отрезков, кружочков и прочего зверинца примитивов. У меня, к примеру, программа находит в модели одинаковые тела и считает их (с учётом вложенности в блоки). Для двухмерки - это совершенно ненадёжно.
Команда Explode успешно превратит ваше "три дэ" в набор отрезков, кружочков, и т.д. Я не вижу принципиального отличия между автокадовскими 2D и 3D.
Зато у меня уже есть своя база блоков, которые мне достаточно просто обработать (добавить спецификацию или ссылку на запись в БД, и сделать эти блоки неразбиваемыми, чтобы исключить эту опасность).
Вот вобщем-то и весь вопрос.
Перерисовывать все хозяйство автокадовскими 3Д-телами я не стану, с учетом того, что рисовать трехмерку в акаде - это ношение воды в решете.
mmmx вне форума  
 
Непрочитано 21.05.2007, 10:06
#34
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


>mmmx Как начсет постоянного атрибута?
VVA вне форума  
 
Непрочитано 21.05.2007, 11:22
#35
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Цитата:
Сообщение от mmmx
Команда Explode успешно превратит ваше "три дэ" в набор отрезков, кружочков, и т.д.
Коли так рассуждать, то знаю ещё более успешную команда - ERASE !
Цитата:
Я не вижу принципиального отличия между автокадовскими 2D и 3D.
Просто вам достаточно 2д. Я на 3д не толкаю. Но есть другие, которым нужно именно 3д (со временем их всё больше и больше) и во многих сферах стандартных блоков просто не может быть принципиально!
Цитата:
Зато у меня уже есть своя база блоков, которые мне достаточно просто обработать
но если вам дали сторонний проект без вашей базы, то что .... пальчиком будете считать? Или представьте модель металлоконструкции - в ней стандартным блоком можно сделать разве что крепёж, всё остальное - уникольные детали, на которые нельзя сделать стандартные блоки заранее. Поэтому и говорю, что в общем случае у 3д больше всего шансов на программный анализ.
Евгений А. вне форума  
 
Непрочитано 21.05.2007, 11:54
#36
RomaV


 
Регистрация: 21.03.2007
Санкт-Петербург
Сообщений: 2,662


Поностью согласен с Евгением А, 3Д-моделирование более объектно-риентировано. Здесь можно извлекать данные объектов и использовать их в спецификациях не заморачиваясь с блоками которые являются всё-таки уникальными объектами и набор характеристик ограничен. В 3-х мерке руки больше развязаны. На примере ADT все вышеперечисленные ухищрения со спецификациями забавно смотрятся. Хотя в то-же время лёгкость создания спецификаций, накладывает условия создания практически всех элементов конструкции без упрощения, но от этого тоже есть польза - меньше ошибок.
RomaV вне форума  
 
Автор темы   Непрочитано 21.05.2007, 13:44
#37
mmmx


 
Регистрация: 06.07.2006
Москва
Сообщений: 42


Цитата:
VVA: Как начсет постоянного атрибута?
Думаю, мне проще заносить в БД уникальное имя блока, и привязывать к нему любое количество строк описания. Хотя, еще раз говорю, хотелось бы описание хранить прикрепленным непосредственно к блоку...

Цитата:
Евгений А.: но если вам дали сторонний проект без вашей базы, то что ....
Нет, у меня не такая ситуация... Я понял, как лучше объяснить.
Вы на турбо паскале программировали? А почему перешли на дельфи? В чем их отличия? Отличие, в частности - в "визуальности" программирования.

Для меня рабочая цель - сделать спецификацию.
Так и я, могу составлять спецификацию проекта по каталогам, каждый раз выискивая заказной номер всех деталей, по сути, составляющих одни и те же сборки... А могу делать это визуально, просто собирать как конструктор. И сборки заготовить заранее, присвоив им весь список их составляющих.

Для моих целей это вполне осуществимо, поверьте. Велосипеда каждый раз не изобретаем, все детали стандартные.
mmmx вне форума  
 
Непрочитано 30.01.2012, 11:37
#38
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


Подождите обвинять в некрофилии!
Пролог.
С 2007 прошло уже почти 5 лет. Многое изменилось в этом мире в целом и в автокаде в частности. На смену просто блокам (тогда и это была диковинка), пришли динамические блоки (хотя и статические никуда не делись), а также "атрибуты" и "таблица блоков".
Основная часть. Идея.
1. Создание "правильных" блоков (то что может сделать каждый).
Создаем блок и восемь атрибутов в нем. Имена атрибутов могут быть разными - это не принципиально. Важно, чтобы в "таблице блоков" для этих атрибутов записывалась нужная информация.
Первый атрибут это классификация блока ("Оборудование", "Изделия и материалы", "Кабели, провода, шнуры и шины", "итд"). По этому атрибуту блоки будут сортироваться.
Второй - шестой атрибуты это 2-6 столбцы в спецификации ("наименование....", "тип, марка...", "Код оборудования.....", "Завод-изготовитель", "Единица измерения").
Седьмой, восьмой атрибуты это восьмой и девятый столбцы спецификации.
Создали блок, заполнили атрибуты.
2. Программа (вот тут уже не каждый может).
Запускаем программу. Выделяем рамочкой область подсчета. Программа сама определяет блоки и начинает их сравнивать. И считает количество блоков, у которых атрибуты №№2,3,4 и 5 одинаковые. Далее раскладывает блоки по значению первого атрибута - "оборудование" к "оборудованию", "изделия..." к "изделиям....".
3. Финальная часть программы.
Создание таблички в автокаде. Табличка стандартная - спецификация по ГОСТу. Заполнение таблицы делает сама программа. Точку вставки (левый верхний угол) задает пользователь.
4. Улучшение программы.
После того как она будет считать блоки и делать спецификацию в одном файле можно расширить область действия несколькими файлами.

Эпилог.
Прошли те времена когда машина пользовала человека.
Alexeipost вне форума  
 
Непрочитано 08.06.2012, 14:23
#39
Flash51

ГКП
 
Регистрация: 18.01.2009
Подольск
Сообщений: 18
<phrase 1= Отправить сообщение для Flash51 с помощью Skype™


Все бы хорошо, вот только одна загвоздка: если наименование длинное, то при переносе строк в спецификации текст не попадает в следующую строку, а межстрочный интервал не редактируется. Кто-нибудь решил данную задачу?
Flash51 вне форума  
 
Непрочитано 08.06.2012, 14:36
#40
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


ИМХО используйте экспорт в Excel (в шаблон). И потом уже вставляйте табличку в Акад.
Собрать данные из нескольких xls файлов в итоговый несложно.
Boxa вне форума  
 
Непрочитано 08.06.2012, 15:02
#41
Дима_

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


Я решил вот так:
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 192
Размер:	46.3 Кб
ID:	81813  
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 19.06.2012, 11:06
#42
Flash51

ГКП
 
Регистрация: 18.01.2009
Подольск
Сообщений: 18
<phrase 1= Отправить сообщение для Flash51 с помощью Skype™


Сам решил: значение переменной ATTIDE меняем - и редактируем текст.
Flash51 вне форума  
 
Непрочитано 19.06.2012, 11:34
#43
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


у меня автокад 2011 64 пишет неизвестная команда
Alexeipost вне форума  
 
Непрочитано 19.06.2012, 17:01
#44
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от Alexeipost Посмотреть сообщение
Подождите обвинять в некрофилии!
Чистой воды!!!
Старался, старался 5 (пять) лет назад ShaggyDoc в этой и других темах образумить...
Взгляните хотя бы п.33 http://forum.dwg.ru/showthread.php?t=25650
И почувствуйте разницу!
Но всё повторяется заново.
Наберите в Поиске "спецификация оборудования" и посмотрите сколько копий было сломано,
сколько вариантов предложено. А тут опять блок со значащим атрибутом...
Не хочется повторяться...
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 19.06.2012, 20:11
#45
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


в п.33 (да и вся тема) не то что я хочу.
КЖ, КМ, ОВ, ВК - это старое, очень глубоко вспаханное и широко засеянное поле. Мне же хотелось некоторую автоматизацию в среде ОПС и СКС (можно еще и ЭОМ). То что сейчас предлагается Нанософтом или другими прикладными программами под автокад - это не совсем то, что нужно.
з.ы. поискал "спецификация оборудования"
Нашел вот эту тему http://forum.dwg.ru/showthread.php?t=42615 без какого-либо логического завершения. И несколько других не имеющих отношения к автоматизации данного процесса.

з.з.ы. и почему блок со значащим атрибутом плох?

Последний раз редактировалось Alexeipost, 19.06.2012 в 20:16.
Alexeipost вне форума  
 
Непрочитано 19.06.2012, 23:32
#46
Flash51

ГКП
 
Регистрация: 18.01.2009
Подольск
Сообщений: 18
<phrase 1= Отправить сообщение для Flash51 с помощью Skype™


Цитата:
Сообщение от Flash51 Посмотреть сообщение
Сам решил: значение переменной ATTIDE меняем - и редактируем текст.
Прошу прощения, ATTIPE.
Flash51 вне форума  
 
Непрочитано 20.06.2012, 09:16
#47
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Alexeipost
Цитата:
Мне же хотелось некоторую автоматизацию в среде ОПС и СКС (можно еще и ЭОМ). То что сейчас предлагается Нанософтом или другими прикладными программами под автокад - это не совсем то, что нужно.
А что в этих разделах такого особенного и чем не угодил нанософт?

Примерно то что описано в 38 посте приминительно к ОПС есть у меня в зкаде, только без сортировки внутри разделов и без указания точки вставки для таблицы (но это от лени)) ) http://forum.dwg.ru/attachment.php?a...0&d=1268694038

Последний раз редактировалось zamtmn, 20.06.2012 в 09:27.
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Попытался сделать автоматическое составление спецификации по

Размещение рекламы