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

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

Подсчет кабеля при помощи дин. блока с атрибутами

Ответ
Поиск в этой теме
Непрочитано 11.07.2007, 06:13 #1
Подсчет кабеля при помощи дин. блока с атрибутами
serg01
 
Иркутск
Регистрация: 04.07.2005
Сообщений: 213

Народ, помогите пожалуйста сделать следующее:
1) Есть участки трассы от коробки до коробки, выполненные линией или полилинией (их много);
2) Есть обозначение этих участков, выполненные в виде дин. блока с атрибутами.
Можно ли организовать подсчет метража кабеля от коробки до коробки, используя эти атрибуты блока. Т.е. в первый блок заносим метраж сами (он как атрибут блока), а в последующие метраж сам бы заносился (тоже как атрибут) путем указания мышью на предыдущий блок.
Это можно организовать с помощью fields, но тогда будет ”жесткая” связь между конкретным участком линии и конкретным блоком, а нужно сделать без “жесткой” связи.

Всем спасибо!
Просмотров: 18444
 
Непрочитано 11.07.2007, 11:07
#2
Дима_

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


Присоединяюсь к вопросу. Делаю с помощью полей - но очень не удобно, каждый новый кабель надо прописывать.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 12.07.2007, 04:19
#3
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Неужто все вручную считают? Это же ведь удобный способ подсчета! Имхо.
serg01 вне форума  
 
Автор темы   Непрочитано 12.07.2007, 04:39
#4
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Вот решил на примере показать:
В “блок А” мы сами заносим длину линии, которая под ним находится например. Заносится она в атрибут “METRAZ”. Теперь чтоб метраж занесся в атрибут “блока Б” нужно вызвать некую команду, результатом которой должен явиться запрос с указанием блока и его атрибута, из которого должен браться метраж предыдущего участка, следующей линии и снова блока, в который должно занестись уже посчитанное (суммированное) значение (тоже с выбором атрибутов “METRAZ” или “SSILKA”).
Надеюсь понятно рассказал  Самому не побороть мне программирование.
[ATTACH]1184200746.dwg[/ATTACH]
serg01 вне форума  
 
Автор темы   Непрочитано 12.07.2007, 10:23
#5
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Дима_
Дима_
У тебя как с лиспом дела? Я так подозреваю, что лиспина не шипко большая будет
serg01 вне форума  
 
Непрочитано 12.07.2007, 11:11
#6
syntheticman

Проектировщик ПС и пр.
 
Регистрация: 12.07.2007
Москва
Сообщений: 1


Может немного не в тему. Я кабеля черчу в отдельном слое. Где-то здесь нашол лиспик, который подсчитывает длину отрезков. Выделяешь все свои кабеля и вуаля- тебе общая длина.
syntheticman вне форума  
 
Автор темы   Непрочитано 12.07.2007, 11:21
#7
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Это конечно да, но если делать в слоях, то их число перевалит за 400 штук. А в предлагаемом мной варианте все длины будут храниться в обозначении участка. Это удобно тем, что взглянув на блок мы увидим сразу длину линии и много другой инфы. Так же далее информацию из атрибутов можно быстро экспортировать куда угодно, например для сметчиков и т.д. Делать кабельные журналы, на основе этих данных.
serg01 вне форума  
 
Непрочитано 12.07.2007, 13:50
#8
Дима_

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


C лиспом у меня полная ..., вообще языки высокого уровня недолюбливаю, все время на асме писал, но тут блин озадачили акадом, и чувствую рано или поздно придеться на поклон к Крысу идти, ибо много чего автоматизировать хочеться а на динамических блоках и полях далеко не уползешь. А мое принципиальное мнение что все что может сделать компьютер - он и должен делать, так что скоро (в августе) в отпуск на море, если соберусь возьму книжку по лиспу, буду на пляже читать, если конечно жена не скажет что я совсем того.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.07.2007, 14:23
#9
Кулик Алексей aka kpblc
Moderator

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


Ну раз помянули...
Так я не понял, надо просто с блока снять данные атрибутов? И все?
Если да, то тогда давайте нормальное имя блока, нормальные тэги атрибутов, надо ли проходить по внутренностям блоков и внешних ссылок.
Копирование значений атрибутов тоже реализуемо. Задачку пополнее поставьте, а то я ни шиша не понял...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2007, 14:31
#10
Magogi

Инженер
 
Регистрация: 02.07.2007
Волгоград
Сообщений: 83
<phrase 1=


Не знаю, подойдет ли Вам мое решение или нет.
Попробуйте решить все в табличной форме, а значение из динамического блока вытащите с помощью eattext.
Magogi вне форума  
 
Непрочитано 12.07.2007, 15:01
#11
Дима_

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


У меня примерно так, есть дин. блок (квадратики стандартных размеров вся динамика в разной видимости), назывется "стойка"+атрибут "номер" (по сути уникальный), а програмулина должна спросить 2 блока (по номеру атрибута, а лучше выделенные) и выдать в текущию ячейку таблицы длину кабеля под 90 градусов, если не по номеру атриубута делать, то надо учесть что таблица на листе а стойки в модели. Пример в файле только формула в ручную прорисованна, а надо чтоб лиспиком. Ну и второй вопрос как за него тебе пива передать, в Арену боюсь придти не смогу.
[ATTACH]1184238016.dwg[/ATTACH]
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.07.2007, 15:36
#12
Кулик Алексей aka kpblc
Moderator

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


Еще сделать сначала надо...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2007, 15:41
#13
Дима_

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


могу и авансом
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.07.2007, 16:32
#14
Кулик Алексей aka kpblc
Moderator

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


Если я все верно понял: на листе есть таблица, в ней всего 2 столбца. Таблица есть "заранее". В модели проставлены дин.блоки с атрибутом "номер" (имя блока неважно). Находясь в модели, щелкаем на табличке, а потом последовательно пары блоков.
В общем что получилось (прошу гвозди в меня не заколачивать ):
Код:
[Выделить все]
(defun c:filltable	 (/                           *kpblc-activedoc*
             tbl                         loc:entsel
             blk1                        blk2
             _kpblc-is-ent-block         _kpblc-is-ent-block-with-attr
             _kpblc-is-ent-block-with-constant-attr
             _kpblc-block-attr-get-pointer-mask
             att1                        att2
             )

  (defun _kpblc-is-ent-block (ent)
                             ;|
*    Функция проверяет, является ли переданный указатель блоком
*    ent	указатель на проверяемый примитив
|;
    (and (= (vla-get-objectname ent) "AcDbBlockReference")
         (not (vlax-property-available-p ent 'path))
         ) ;_ end of and
    ) ;_ end of defun

  (defun _kpblc-is-ent-block-with-attr (ent)
                                       ;|
*    Функция проверяет, является ли переданный указатель блоком и есть ли в нем
* изменяемые атрибуты
*    ent	указатель на проверяемый примитив
|;
    (and
      (_kpblc-is-ent-block ent)
      (= (vla-get-hasattributes ent) :vlax-true)
      (> (vlax-safearray-get-u-bound
           (vlax-variant-value (vla-getattributes ent))
           1
           ) ;_ end of vlax-safearray-get-u-bound
         -1
         ) ;_ end of >
      ) ;_ end of and
    ) ;_ end of defun

  (defun _kpblc-is-ent-block-with-constant-attr (ent)
                                                ;|
*    Функция проверяет, является ли переданный указатель блоком с постоянными атрибутами
*    Параметры вызова:
*	ent	указатель на вхождение блока
|;
    (and (_kpblc-is-ent-block ent)
         (vlax-method-applicable-p ent 'getconstantattributes)
         (> (vlax-safearray-get-u-bound
              (vlax-variant-value (vla-getconstantattributes ent))
              1
              ) ;_ end of vlax-safearray-get-u-bound
            -1
            ) ;_ end of >
         ) ;_ end of and
    ) ;_ end of defun

  (defun _kpblc-block-attr-get-pointer-mask (blk mask / res)
                                            ;|
*    Получение списка атрибутов блока по маске. Учитываются также постоянные атрибуты.
*    Параметры вызова:
*	blk	указатель на вставку блока
*	mask	строка с маской тэга атрибута
|;
    (if (_kpblc-is-ent-block-with-attr blk)
      (setq res
             (vl-sort
               (vl-remove-if-not
                 '(lambda (x)
                    (wcmatch (strcase (vla-get-tagstring x))
                             (strcase mask)
                             ) ;_ end of wcmatch
                    ) ;_ end of lambda
                 (vlax-safearray->list (vlax-variant-value (vla-getattributes blk)))
                 ) ;_ end of vl-remove-if-not
               '(lambda (a b)
                  (< (strcase (vla-get-tagstring a))
                     (strcase (vla-get-tagstring b))
                     ) ;_ end of <
                  ) ;_ end of lambda
               ) ;_ end of vl-sort
            ) ;_ end of setq
      ) ;_ end of if
    (if (_kpblc-is-ent-block-with-constant-attr blk)
      (setq
        res (append res
                    (vl-sort
                      (vl-remove-if-not
                        '(lambda (x)
                           (wcmatch (strcase (vla-get-tagstring x))
                                    (strcase mask)
                                    ) ;_ end of wcmatch
                           ) ;_ end of lambda
                        (vlax-safearray->list
                          (vlax-variant-value (vla-getconstantattributes blk))
                          ) ;_ end of vlax-safearray->list
                        ) ;_ end of vl-remove-if-not
                      '(lambda (a b)
                         (< (strcase (vla-get-tagstring a))
                            (strcase (vla-get-tagstring b))
                            ) ;_ end of <
                         ) ;_ end of lambda
                      ) ;_ end of vl-sort
                    ) ;_ end of cons
        ) ;_ end of setq
      ) ;_ end of if
    res
    ) ;_ end of defun

  (defun loc:entsel (msg ent-type / res)
    (if
      (and
        (not
          (vl-catch-all-error-p
            (vl-catch-all-apply
              '(lambda ()
                 (setq res (car (entsel (strcat "\n" msg " <Отмена> : "))))
                 ) ;_ end of lambda
              ) ;_ end of vl-catch-all-apply
            ) ;_ end of vl-catch-all-error-p
          ) ;_ end of not
        res
        (wcmatch (strcase (cdr (assoc 0 (entget res)))) (strcase ent-type))
        ) ;_ end of and
       (vlax-ename->vla-object res)
       ) ;_ end of if
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-StartUndoMark
  (command "_.pspace")
  (if (setq tbl (loc:entsel "Таблица вывода результата" "acad_table"))
    (progn
      (command "_.mspace")
      (while (and (setq blk1 (loc:entsel "Блок откуда мерить" "insert"))
                  (= (vla-get-isdynamicblock blk1) :vlax-true)
                  (setq att1 (_kpblc-block-attr-get-pointer-mask blk1 "номер"))
                  (setq blk2 (loc:entsel "Блок докудова мерять" "insert"))
                  (= (vla-get-isdynamicblock blk2) :vlax-true)
                  (setq att2 (_kpblc-block-attr-get-pointer-mask blk2 "номер"))
                  ) ;_ end of and
        (vlax-invoke-method
          tbl
          'insertrows
          (vla-get-rows tbl)
          (vla-getrowheight tbl (1- (vla-get-rows tbl)))
          1
          ) ;_ end of vlax-invoke-method
        (vla-settext
          tbl
          (1- (vla-get-rows tbl))
          0
          (strcat "Длина "
                  (vla-get-textstring (car att1))
                  "-"
                  (vla-get-textstring (car att2))
                  ) ;_ end of strcat
          ) ;_ end of vlax-invoke-method
        (vla-settext
          tbl
          (1- (vla-get-rows tbl))
          1
          (strcat
            "%<\\AcExpr ((abs(%<\\AcObjProp Object(%<\\_ObjId "
            (vl-princ-to-string (vla-get-objectid blk1))
            ">%).InsertionPoint \\f \"%pt1\">%-%<\\AcObjProp Object(%<\\_ObjId "
            (vl-princ-to-string (vla-get-objectid blk2))
            ">%).InsertionPoint \\f \"%pt1\">%)+abs(%<\\AcObjProp Object(%<\\_ObjId "
            (vl-princ-to-string (vla-get-objectid blk1))
            ">%).InsertionPoint \\f \"%pt2\">%-%<\\AcObjProp Object(%<\\_ObjId "
            (vl-princ-to-string (vla-get-objectid blk2))
            ">%).InsertionPoint \\f \"%pt2\">%))/1000) \\f \"%lu2%pr1\">%"
            ) ;_ end of strcat
          ) ;_ end of vlax-invoke-method
        ) ;_ end of while
      ) ;_ end of progn
    ) ;_ end of if
  (command "_.pspace")
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun
Для вызова команда filltable
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2007, 16:50
#15
Дима_

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


Я бы за 51 минуту этого просто не переписал бы. Крыс - это по моему коллектив разработчиков под одним псевдонимом, очень мощно и ОГРОМНОЕ СПАСИБО - ОЧЕНЬ ПОМОГЛО, сколько пива за день можешь выпить?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.07.2007, 17:03
#16
Кулик Алексей aka kpblc
Moderator

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


Ик! Приходи, ик! увидишь ик!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2007, 17:07
#17
Дима_

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


Так куда идти - то напиши, приду с ПИВОМ!!! http://dwg.ru/forum/sm/sm700.gif
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.07.2007, 17:19
#18
Кулик Алексей aka kpblc
Moderator

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


Дык ента... В Арену
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2007, 17:21
#19
Дима_

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


Блин постараюсь конечно, но обещать не могу - по сему до сих пор и не вписывался. Serg01у тоже отдельное спасибо, тему нарисовал нужную.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 13.07.2007, 05:10
#20
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Кулик Алексей aka kpblc
Ух ты сколько всего за одну ночь Все пропустил интересное
Цитата:
В “блок А” мы сами заносим длину линии, которая под ним находится например. Заносится она в атрибут “METRAZ”. Теперь чтоб метраж занесся в атрибут “блока Б” нужно вызвать некую команду, результатом которой должен явиться запрос с указанием блока и его атрибута, из которого должен браться метраж предыдущего участка, следующей линии и снова блока, в который должно занестись уже посчитанное (суммированное) значение (тоже с выбором атрибутов “METRAZ” или “SSILKA”).
Все задачи решили кроме моей Сейчас расскажу
Цитата:
Так я не понял, надо просто с блока снять данные атрибутов? И все?
По сути да, и с блока, и с линии ее длину.
Цитата:
тогда давайте нормальное имя блока
Блок переименовал в uchastok.
Цитата:
нормальные тэги атрибутов
Не совсем понял что это значит :?: Там есть METRAZ и SSILKA
Цитата:
надо ли проходить по внутренностям блоков
Надо, но только по двум: METRAZ или SSILKA
Постараюсь понятнее объяснить:
В “Блок А” (название его uchastok) мы сами заносим длину линии (A). Заносится она в атрибуты “METRAZ” или "SSILKA" (или в тот или в другой).
Теперь нужно вызвать некую команду, результатом которой должен явиться запрос, который бы "просил" указать:
1) блок (например "Блок А" на схеме);
2) его атрибуты "METRAZ" или "SSILKA" на выбор;
3) линию или множество линий (например D);
4) блока и его атрибутов "METRAZ" или "SSILKA" на выбор (на схеме "Блок Б").

В четвертом пункте в атрибуты "METRAZ" или "SSILKA" на выбор должна записаться сумма значений пунктов 2, 3 (длина линии или сумма длин линий).
Фуф, вот такая задача у меня.
[ATTACH]1184289032.dwg[/ATTACH]
serg01 вне форума  
 
Автор темы   Непрочитано 13.07.2007, 05:13
#21
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Совсем забыл, в пункте 3 вместо линий могут быть полилинии!
serg01 вне форума  
 
Непрочитано 13.07.2007, 08:00
#22
ShaggyDoc

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


Я бы посоветовал вообще уйти от идеи использования блоков. Их же делали, чтобы избежать программирования и попытаться решить задачу штатными средствами. Но не получится так все равно. Значит и делать надо принципиально иначе.

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

Значит делать программу надо примерно из таких модулей:

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

Кроме того, можно привязать длину например, к точке, обозначающей подъем. Или вообще к чему угодно.

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

2. Редактор ранее привязанных данных.

3. Сбор данных и вывод в требуемой форме. Например, в виде спецификации или ведомости.

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

PS Количество пива для kpblc в этом варианте должно иметь единицу измерения "цистерна". Но он сделает.
ShaggyDoc вне форума  
 
Непрочитано 13.07.2007, 08:11
#23
fenix

проектировщик-электрик
 
Регистрация: 20.06.2006
Сообщений: 459
<phrase 1=


надеюсь, на форуме хватит электриков для цистерны...
__________________
ужасно интересно всё то, что неизвестно
fenix вне форума  
 
Автор темы   Непрочитано 13.07.2007, 08:40
#24
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


ShaggyDoc
Это идеальный вариант бы был наверное. На форуме такое делать достаточно долго да и нужно же общение. Пояса часовые. разные Работа большая. Мне пока легче применить мои блоки Тем более, что все почти готово...жаль процедуры писать не умею. Да этот вариант подсчета может показаться неудобным, но все же лучше чем совсем ничего.
Цитата:
Причем длину каждой линии предполагаете вводить вручную.
Не совсем так, только первой линии и все. Если будет реализовано как я написал, то и длину первой тоже можно будет забить лиспом.
serg01 вне форума  
 
Автор темы   Непрочитано 16.07.2007, 04:06
#25
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Что то тема встала колом Видимо времени нет у Кулик Алексей aka kpblc
Если вдруг будет, то в 20 посте проблему изложил пояснее
serg01 вне форума  
 
Непрочитано 16.07.2007, 11:56
#26
Дима_

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


Слушай, а что если прямо в блок, "хвостик" в виде кабеля добавить - его-то длинну и без лиспа можно вытянуть. Посмотри на сколько к твоей задачи пременимо.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 16.07.2007, 12:03
#27
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Такие варианты уже думал. Не удобно будет. Сижу еще думаю
serg01 вне форума  
 
Непрочитано 16.07.2007, 12:19
#28
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от serg01
Что то тема встала колом Видимо времени нет у Кулик Алексей aka kpblc
Если вдруг будет, то в 20 посте проблему изложил пояснее
Лично у меня сейчас отсутствуют 2 вещи, необходимые для решения задачи. 1-я - это время. 2-я - понимание, чего же должно делаться. Как только появится хоть что-то, займусь...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.07.2007, 12:49
#29
ShaggyDoc

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


Цитата:
Сообщение от serg01
Что то тема встала колом Видимо времени нет у Кулик Алексей aka kpblc
Если вдруг будет, то в 20 посте проблему изложил пояснее
Изъясните пояснее насчет пива. Особенно по единицам измерения.

А то сначала "на форуме хватит электриков для цистерны", а как до дела, так "надеюсь" или "Мне пока легче применить мои блоки".

Проблема ясна :wink:

Аналогичную задачу только что сделал для торгового оборудования - рисование любого одновременно в 2D и 3D с последующей подготовкой спецификации. Там, конечно, полегче, чем у электрики - подсчет только "штук", но принципиальной разницы нет. Осталось только вывод отчета в любой форме, хотя заказчику (менеджер) надо только в Excel для "манагеровской" сметы.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 17.07.2007, 03:59
#30
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


ShaggyDoc:
Подсчитать количество "штук" и специфицировать сделать можно. Там все стандартными средствами делается. А тут стандартными средствами не обойтись. Нужно выдернуть значение атрибута блока, прибавить к нему длину выбранной линии (или множества линий (полилиний) и положить эту получившуюся сумму в другой блок (атрибут для записи по выбору).
Как еще проще объяснить не знаю

PS
Цитата:
А то сначала "на форуме хватит электриков для цистерны", а как до дела, так "надеюсь" или "Мне пока легче применить мои блоки".
Пиво это хорошо! И рад бы, но уж больно далеко я нахожусь. "Будете у нас на Колыме - милости просим !"
serg01 вне форума  
 
Непрочитано 17.07.2007, 06:44
#31
ShaggyDoc

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


Цитата:
Сообщение от serg01
Нужно выдернуть значение атрибута блока, прибавить к нему длину выбранной линии (или множества линий (полилиний) и положить эту получившуюся сумму в другой блок (атрибут для записи по выбору).
Если хотите серьезной работы - забудьте про блоки. Блок - частный случай. Если "хочется, конечно, как следует помучиться" {(С) т.Сухов} - возитесь с используемой методикой - "выдернуть", "прибавить", "положить в другой". А потом вытягивать стандартными средствами атрибуты, как-то их сортировать и прочее. И окажется, что быстрее было пересчитать вполуручную.

Как думаете, такие идеи не приходили никому в голову с момента появления Автокада? И средства стандартные есть, только они развиваются, и пример демонстрационный есть.

Со спецификациями другие проблемы важнее и сложнее - ведение базы оборудования и оформление выходных документов.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 17.07.2007, 07:00
#32
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


ShaggyDoc
Совершенно согласен, что на этом методе серьезной работы не выйдет. Лишь какие-то разовые и мелкие вещи. Есть еще вариант разбрасывания кабелей по слоям, а потом кабели выдергивать eattext'ом с нужных слоев. Но пугает количество слоев. И еще как потом узнать длину конкретного участка от точки до точки? Эх, все равно в полурукопашную придется.
serg01 вне форума  
 
Автор темы   Непрочитано 17.07.2007, 12:57
#33
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


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

PS Народ, расскажите тогда как вы решаете такую задачу, чем пользуетесь, и как много времени уходит на подсчет?
serg01 вне форума  
 
Непрочитано 17.07.2007, 14:03
#34
Дима_

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


Мне то что Крыс написал, тем и пользуюсь, попробуй ее подправить, расстояние он хорошо считает (у меня правда под 90 градусов, но если надо под углом - то теорему пифагора еще никто не отменял), если блок где первая колонка не нужен - так сотри его целиком нафиг (поиск по слову "Длина") в общем очень удобная штука, а общую сумму табличкой хорошо считать.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 18.07.2007, 05:00
#35
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Дима_:
Под 90 град. считает отлично. Хорошо когда все по прямой, а у меня изгибов всяких и загибов целая тьма. Конечно применю куда-нибудь, не пропадать же труду.
serg01 вне форума  
 
Непрочитано 18.07.2007, 11:38
#36
Дима_

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


У меня, если честно, изгибы (сопряжения) то же есть, но я их приближаю к прямому углу (больше не меньше), если конечно вокруг трубы по спирали провод не мотать. Советую так-же.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 18.07.2007, 11:50
#37
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


А если в помещении кабель по периметру идет да еще с выкрутасами всякими? Жаль, но в моем случае это не применимо
serg01 вне форума  
 
Непрочитано 08.10.2008, 08:38
#38
Volodich

проектировщик-электрик
 
Регистрация: 20.12.2007
Челябинск
Сообщений: 475


Хочу поднять эту тему.
Кто-нибудь встречал программу просто для того чтобы скопировать значения атрибутов из одного динамического блока в другой?
(тремя щелчками: 1. на кнопке вызова программе, 2. На блоке, из которого копируем, 3. на блоке, в который копируем.)
Как усложнение возможен вариант выборного копирования, но для начала хорошо было бы просто копировать все значения.

И еще. Существует ли программа, перемещающая атрибуты в окошке их редактирования?
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Volodich вне форума  
 
Непрочитано 08.10.2008, 08:50
#39
Кулик Алексей aka kpblc
Moderator

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


А то, что тэги должны совпадать, не напрягает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.10.2008, 09:09
#40
Volodich

проектировщик-электрик
 
Регистрация: 20.12.2007
Челябинск
Сообщений: 475


Конечно нет! Хотя я думаю, что это в процессе работы выяснится...
Все равно без совпадающих тегов невозможно двумя щелчками скопировать содержимое атрибутов и вставить куда надо.
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Volodich вне форума  
 
Непрочитано 06.05.2009, 16:04 Подсчет кабеля
#41
ElectroBOG

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
2-я - понимание, чего же должно делаться. Как только появится хоть что-то, займусь...
1) хотелось бы иметь инструмент черчения полилинией (3д полилинией), по завершении начертания прилепляющий к ней атрибуты, которые предлагается ввести: "тип" кабеля; "число "x"сечение" жил кабеля; "число кабелей" (умолчание "1"); "число параллельно проложеных фидеров" (умолчание "1"); "Длина" + 2-3 атрибута дополнительно для маркировки и т.д.
"тип" кабеля, "число "x"сечение" жил кабеля - лучше что бы выбирались из справочника (два столбца данных либо в самом файле, а лучше внешнем *.cvs)
"длина" берется полилинии, в зависимости от единиц чертежа приводится к метрам и к ней прибавляется запрашиваемая величина "подъем" + "опуск" в метрах

как опция:
-инструмент прилепляющий вышеуказанные атрибуты к чему угодно имеющему параметр "Длина", как к одному так и нескольким объектам, выбираемые по _select, _qselect

-инструмент копирования атрибутов (кроме длинны) от одного объекта на другие, выбираемые по _select, _qselect

А далее
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
2. Редактор ранее привязанных данных.

3. Сбор данных и вывод в требуемой форме. Например, в виде спецификации или ведомости.
Мне видится самое сложное это прилепить атрибуты к полилинии, если это вообще возможно.

Если это получится, то я щитаю быдет работать веселей

Последний раз редактировалось ElectroBOG, 06.05.2009 в 21:55.
ElectroBOG вне форума  
 
Непрочитано 07.05.2009, 09:34
#42
ssn

Инженер проектировщик (раздел ТМ - фриланс)
 
Регистрация: 06.12.2003
Геленджик
Сообщений: 1,783
Отправить сообщение для ssn с помощью Skype™


наверно лучше всетаки дейсвтовать через расширенные данные... их можно навесить на полилинию....
тока вот вероятно будет некоторая путаница с назначением этих свойств и копированием их с линии на линию... получите автоматом вместо 3 км кабеля 1х1,5 кабель например 3х5... а отследить это будет сложно (имею ввиду визуально).
хотя можно.. если при назначении данных на полилинии сразу менять ещё их цвет согласно каких то правил... что бы на каждый провод свой цвет. тогда вероятно можно.
ssn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Подсчет кабеля при помощи дин. блока с атрибутами