Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание спецификации автоматически (Дубль2)
Диалог специалистов АВОК > ФАЙЛОТЕКА СПЕЦИАЛИСТА > Программы, расчеты
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
kpblc
Значится так smile.gif
Я говорил о том, что в dcl-овском списке сделать множественный выбор проблематично, а не о невозможности создания списка как такового. Хотя Alaspher сделал так
> #301: Примерный вид окна, как я его вижу (навскидку, без контроля и проверок, и уж тем более без обработки), сделанный в VB - см.картинку.
Возможно (да, скорее всего, так и будет), понадобится более расширенный вариант выбора И/ИЛИ
---
Добавлено: А что там с именами блоков не так?
Azarko aka VVA
Здрасьте, это VVA. Правда под этим ником кто-то уже есть, поэтому Azarko aka VVA.
Не особо читая ветку с самого начала ( это про списки блоков, слоев, типов линий, стилей и пр.)
Есть замечательная функция Michael'a Puckett'a
Код
;;;============================================
;;;Written By Michael Puckett.
;;;Список элементов символьных таблиц АвтоКАДа
;;; - s- имя таблицы
;;;Пример - список всех слоев - (setq all_layers (tablelist "LAYER"))
;;;(setq all_layers (tablelist "LAYER"))
;;;
;;;AutoLisp should return something like this :
;;;Start Coding Here
(defun tablelist (s / d r)
  (while (setq d (tblnext s (null d)))
    (setq r (cons (cdr (assoc 2 d)) r))
  )                ;while
)                ;defun

Соответвсвенно
Код
;Список блоков
(acad_strlsort(tablelist "BLOCK"))
;Список солев без слоев вн. ссылок
(acad_strlsort(vl-remove-if-not 'snvalid (tablelist "layer")))
;Список типов линий без типов линий вн. ссылок
(acad_strlsort(vl-remove-if-not 'snvalid (tablelist "LTYPE")))
kpblc
Привет smile.gif Хотя я и понимаю, что мне пора затыкаться, тем не менее мелкий вопрос: а как будут обрабатываться динамические блоки? Просто проверить сейчас нет никакой возможности - дите железку оккупировало sad.gif
Supermax
О-О-О! Ну наконец-то!
Kpblc, я думаю, что тот чел, который озаботится чего-то включить, не должен за один заход включать все, что ему в голову взбредет. Или набор имен блоков, но один только слой, или одно имя, но несколько слоев. Так проще фильтровать, а то прийдется к каждому имени блока, или типу примитива присваивать список слоев. Кучеряво однако.

VVA, я тут уже высказался по поводу дублирования свойства "Длинна" атрибутом "Длинна" ты выскажись на эту тему пожалуйста. Вот и по позиционированию и нумерации тоже свое мнение озвуч. Мое мнение - надо иметь оба атрибута.
Как у тебя со свойствами дин. блоков - любов, или не?
Azarko aka VVA
Для блока из той темы, откуда ушел supermax
Цитата
_$ (acad_strlsort(tablelist "BLOCK"))
("*U2" "*U3" "*U4" "*U5" "*U6" "*U7" "Stoyka")
Supermax
VVA, а вот с типом примитивов что-то не ку. А так вообще да, попроще кодец-та, попроще.
Azarko aka VVA
>supermax
Цитата
VVA, я тут уже высказался по поводу дублирования свойства "Длинна" атрибутом "Длинна" ты выскажись на эту тему пожалуйста

Мой пост из темы на dwg.ru
Цитата
Кстати, я согласен с Supermax в том, что для считывания длины незачем свойство Distanse переносить в атрибут Dlina. Из лиспа оно отлично читается и заносится (можно и "подравнять" блоки)

Но уточню: если это (свойства "Длинна" атрибутом "Длинна") не продиктовано иными соображениями.

Цитата
Вот и по позиционированию и нумерации тоже свое мнение озвуч.

Ну так это, напо позиционировать и нумеровать. (читать тему сначала времени нет)

Цитата
Как у тебя со свойствами дин. блоков

Могем причесывать (равнять), могем не равнять. Пока ждал регистрации я тебе письмо черканул. Посмотри
kpblc
Во, а c точки зрения пользователя - там один динамический блок. Соответственно имя должно быть одно. Или нет?
Azarko aka VVA
Цитата(Supermax @ 24.9.2007, 13:56) [snapback]169072[/snapback]
VVA, а вот с типом примитивов что-то не ку. А так вообще да, попроще кодец-та, попроще.

Этот код возвращает список символьных таблиц Автокада (см. help по tblnext)
По типам примитива - это надо лезть в описание блока (тут надо как у Алексея)

Цитата
Во, а c точки зрения пользователя - там один динамический блок. Соответственно имя должно быть одно. Или нет?

Я исходил из поста supermax № 298
Цитата
*Unnn - оставь
kpblc
Вот интересно, кто-нибудь сможет определить "навскидку", что вот этот дин.блок - *U123, а воон тот - *U62145 :?
Supermax
Я могу, у меня спец. кнопень есть. Давишь и видишь имя (и не только). А так можно сделать кнопень "Все *Unnn". Ну как дин. блоки включать, однако? Выключать могем, а включать только через "Включить все"? Не крутовато однако?
Azarko aka VVA
Цитата(kpblc @ 24.9.2007, 14:59) [snapback]169095[/snapback]
Вот интересно, кто-нибудь сможет определить "навскидку", что вот этот дин.блок - *U123, а воон тот - *U62145 :?

Только создатель (в смысле всего, а не чертежа или блока)
Список блоков
Код
(acad_strlsort(vl-remove-if '(lambda(x)(=(substr x 1 2)"*U"))(tablelist "BLOCK")))
Supermax
Ой всего навалилось! Даже вечерами колготят!
Так, если имя блока *Unn, то надо считывать его оригинальное имя и склеивать с *Unnn. Типа "*U123 - Кирпич кандовый, безразмерный" и в таком виде считывая до первого пробела учитывать.
Так как на счет выбора группы имен и одного для них имени слоя, или группы слоев и одного имени блока или типа примитива? Есть тут логика или нет?
kpblc
>#312:
Код
(defun dynblockon (name on / adoc)
                 ;|
*     Включает или выключает видимость дин.блоков.
*    Параметры вызова:
    name    эффективное имя блока. nil -> обрабатывать все
    on    включать (t) или выключать (nil) видимость
|;
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    );_ end of vla-startundomark
  (if (not name)
    (setq name "*")
    );_ end of if
  (vlax-for blk_def (vla-get-blocks adoc)
    (vlax-for ent blk_def
      (if (and (vlax-property-available-p ent 'isdynamicblock)
               (vlax-property-available-p ent 'effectivename)
               (equal (vla-get-isdynamicblock ent) :vlax-true)
               (wcmatch (strcase (vla-get-effectivename ent)) (strcase name))
               );_ end of and
        (vla-put-visible
          ent
          (if on
            :vlax-true
            :vlax-false
            );_ end of if
          );_ end of vla-put-visible
        );_ end of if
      );_ end of vlax-for
    );_ end of vlax-for
  (vla-regen adoc acallviewports)
  (vla-endundomark adoc)
  (princ)
  );_ end of defun
Supermax
A-a-a! Cлюшай, дарагой, Твой макрос (1-й) все чудесно выключает, а все дин блоки включать совсем не надо. Вот простой пример: (можно сказать свежий, пресвежий) сделал я теплотрассу, а мне захотелось посмотреть где лежат трубы такой-то длинны, или где стоят краны со штоком такой-то длинны. Я ткнул в ближайший такой кран и увидел его *Unnn, выключил все, а затем включил только с эти именем. Бац, и я вижу только эти краны или трубы. Конечно тут я лукавлю немного. Я с начала очень долго буду ползать по модели искать хоть одну трубу с интересующей меня длинной, но если я включу трубы по оригинальному имени, то включаться все трубы всех длин, а это мне как-то никчему.
Особо отмечу то, что дин. блоки будут даже такие, в которых ничего не меняется, просто свойствами прописаны часть параметров изделия, например наименование, марка бетона и сайт производителя. Атрибуты естественно есть, но вот марку поменял и бац - *Unnn уже другой.
Я тут между делом блок ФБС делаю 3D динамический со всей номенклатурой по ГОСТу. Вот наставил я этих блоков, а заказчик у меня спрашивает, а где ты вот такие-то применил? А я ему - тык и все видно. Блок-то имеет одно оригинальное имя и отличаются ФБС-ки 12-е от 9-ых или 24-ых только *Unnn.
kpblc
Ну блин. Я пока код писал ты успел пост вбить. Вот второй вариант:
Код
(defun dynblockon2 (name on / adoc)
                  ;|
*     Включает или выключает видимость дин.блоков.
*    Параметры вызова:
    name    указатель на вхождение блока. nil -> обрабатывать все
    on    включать (t) или выключать (nil) видимость
*    Примеры вызова:
(dynblockon2 nil t)    ; показать все дин.блоки
(dynblockon2 (car(entsel)) nil); скрыть блоки, аналогичные указанному
(dynblockon2 (car(entsel)) t); показать блоки, аналогичные указанному
|;
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    );_ end of vla-startundomark
  (setq name
         (cond
           ((= (type name) 'ename) (cdr (assoc 2 (entget name))))
           ((= (type name) 'str) name)
           ((= (type name) 'vla-object) (vla-get-name name))
           (t nil)
           );_ end of cond
        );_ end of setq
  (vlax-for blk_def (vla-get-blocks adoc)
    (vlax-for ent blk_def
      (if (and (vlax-property-available-p ent 'isdynamicblock)
               (vlax-property-available-p ent 'effectivename)
               (equal (vla-get-isdynamicblock ent) :vlax-true)
               (if name
                 (equal (vla-get-name ent) name)
                 t
                 );_ end of if
               );_ end of and
        (vla-put-visible
          ent
          (if on
            :vlax-true
            :vlax-false
            );_ end of if
          );_ end of vla-put-visible
        );_ end of if
      );_ end of vlax-for
    );_ end of vlax-for
  (vla-regen adoc acallviewports)
  (vla-endundomark adoc)
  (princ)
  );_ end of defun
Supermax
Добавлю, самое лучшее, это соединять оригинальное имя с техническим. Тут и понятно все, и легко отделить.
Боюсь я господа, что это уже будет не макрос по включению\выключению деталей, а система анализа и управления свойствами видимости.
Да, надо делать на имена блоков два окна.
Первое - выбор блока (с участием Ctrl и Shift)
Второе - вспомогательное окно возможно появляющееся по нажатию доп. кнопки в котором в одной половине список блоков, но без возможности множественного выбора, а во второй половине - перечень свойсв указанного блока. Атрибуты в каждом блоке разные (номера, позиции) поэтому их не показываем, хотя и можно с указанием типа *VARIES*.

Особенно я заценил твой юмор в плане

Цитата
(dynblockon2 (car(entsel)) t); показать блоки, аналогичные указанному


Это как же мне его указать, если они все выключены?
kpblc
А кто сказал, что "все"? Ты мог сначала отключить видимость какой-то области (например, "выключить невыделенное"), а потом понадобилось показать все вхождения блоков, аналогичные тыркнутому в невыключенной области. Так что тут не юмор, а жестокая правда жизни wink.gif
Supermax
Так, "Выключить избранное" это уже пятая кнопка. Ее мы еще не обсуждали. Хотя если написать окна, то они и для "выключить избранное" сгодятся. Убиваем, так сказать, двух зайцев.
Окно с демонстрацией свойсв и атрибутов блока делаем? И атрибуты точно надо, или ну их?

А по поводу "правды жизни" скажу: Я скопировал трубу, второй вариант вытянул и размножил. Получилось два типа блоков. запустил "(dynblockon2 (car(entsel)) nil); скрыть блоки, аналогичные указанному", ткнул в размноженную и у меня осталась на экране одна труба. Я сказал "ГУД" в сысле хорошо, работает и перешел к тестированию третьей команды. Посмотрел на нее, потом на экран, потом опять на нее, потом опять на экран и стал ржать.
kpblc
Не очень понял вопрос. Имеется в виду для аналога быстрого выбора для выключения? Да бог его знает. Если это делать, окно разрастись может до невероятных размеров и работать с ним будет достаточно трудно. Я не прав?
Supermax
Kpblc, я гений! Не надо делать окно со свойствами! Надо просто продублировать окно с именами блоков, и тыкая в него выбирать объект в модели (включать select). При открытом окне Properties в нем будут видны свойства указанного блока. Читай хоть до рези в глазах. Дешево и сердито.
kpblc
Ага, то есть:
а) открыть окно свойств, если оно закрыто (какая системная переменная за это отвечает - навскидку не помню). Дополнительный минус: окно свойств может быть Docked, что может вызывать дополнительные трудности. Чтобы его положение или состояние поменять, надо использовать немодальные диалоги, что сделать на dcl невозможно в принципе.
б) создать временный набор, и передавать (sssetfirst ss ss) в ком.строку (для варианта .NET или VBA-окна), с предварительным снятием выбора;
в) в случае выхода из функции восстановить пользовательский выбор (правда, вопрос - надо ли);
г) выбранный в окне объект (блок) может лежать не в текущем пространстве, а, например, быть вложенным в другой блок или внешнюю ссылку (кстати, коды последние никак это не отслеживают). Ну или в самом элементарном случае - находиться в другом листе. Следовательно, окно свойств на него распространяться не будет;
Я горю желанием не остудить твой творческий пыл, а просто рассмотреть максимум возможных вариантов. И предупредить их появление.
Supermax
а) - Ну с первым это просто Command: _properties и усе, так сказать.
г) - С блоками входящими внутрь других блоков - а не надо лезть в Blocks, надо в ModelSpace. Там только верхушки айзбергов торчат.
а) - Не понимаю, о каком положении и состоянии ты печешся?
в) - ясен пень, не надо!
Какого, что-то включать там, где нас нет? Вот если ты сумеешь выключать элементы в редакторе блоков так, чтобы они при этом обратно не включались, то это будет надо. Но что-то я сильно сомневаюсь в этом, поскольку там в сам редактор забита функция "обнуления" этой фишки.

Все. Я пошел домой. Завтра продолжим.
(а как не охота уходить!)

P.S. Твой макрос выключает даже динамические свойства в редакторе, правда они потом опять включенными оказываются как и элементы.
kpblc
Поскольку я не умею отследить, "внутри блока" или "не внутри блока" выполняется редактирование, могу только посоветовать попробовать выполнить
Код
(vla-update (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-effectivename (car (entsel "\nтолько что редактировавшийся блок : ")))))

На бОльшее у меня фантазии не хватат sad.gif Может, VVA поможет?
Supermax
Новый день - новые бзики.
Во первых, мы должны работать только с элементами на включенных слоях. Это закон. Если слой выключили, это означает, что там выключать уже ничего не надо и наоборот, то есть включать там ничего не надо. Даже если мы там чего-то включим, мы этого все равно не увидим. От сюда вывод, что выбранные элементы на включенных слоях находящиеся в состоянии "выкл" должны быть включены абсолютно во всех включенных слоях. Если чел. не хочет включать элементы на каком-то слое, он должен этот слой выключить. Таким образом мы используем существующий сервис послойного разбития модели и его инструментарий для локализации наших действий.
kpblc
Я б оставил... Слои слишком глобальная штука для этой задачи. ИМХО, конечно.
Supermax
Что оставил?

Добавлю. Если происходит выбор того, что надо включить, то в списке должны быть не все блоки, а только те, которые выключены и находятся на включенных слоях. Если делать выбор того, что надо выключить, то наоборот, показывать надо только включенные блоки и элементы.
kpblc
Оставил выключение видимости с фильтрацией по слоям. Например, "выключить видимость элементов типа line и lightweightpolyline, лежащих на слоях 0, АР-стены и ОВ-трубы-оси".
Supermax
Представляешь, купил Демиса Русоса лицензионный диск, с книжкой и весь со стороны записи по кругу исписанный его именем, а он зараза, установил мне 2-ой дисковод (хотя в компе только один) и проигрываться при этом не хочет. Как ни пытаюсь, а снести этот мнимый дисковод не получается.

Так эти слои выключены или включены? Если они выключены, то какого там ковыряться?
kpblc
Ну вот, как всегда. Обрабатывать то, исключать се... Сформировать списки элементов с различными критериями никогда не поздно.
Supermax
Вот блин! Сказали в 13-00 привезут назад, я как последний поц быстренько все сделал, а они гады меня взяли и там бросили. Пришлось своим ходом обратно на работу переться.
Для того, чтобы я взялся писать окна, мне надо понять что на них ставить. Я до сих пор этого до конца не понимаю. Ну к примеру первое окно это выбор "блоки" или "типы примитивов" или "слои" или "выбрать все". Выбрали. Нажали к примеру блоки - выпало разбитое на две части окно, в левой половине имена блоков, а в правой имена включенных слоев. Под обеими половинками кнопки "выбрать все". Чтобы снимать выбор достаточно клацнйть без контрола или шифта любую позицию. Далее ОК/Cancel. Нажали ОК - в какой форме должны быть предствлены результаты выбора? Несколько слоев и несколько блоков. Я к примеру создаю три переменных, две из которых всегда равны nil. Та, что не nil, содержит в себе список из двух списков, первый - список слоев, второй - список имен блоков. Годится?
Supermax
Вот изучайте.
Блок ФБС динамический
Файл изменен.
Опять немного починил (дырку залатал в графике)
Supermax
Всем привет! Панели пока обождут, не до них, хотя запал не потух.
Kpblc, и VVA, а не вкурсе ли вы случайно, как сделать так, чтобы формула определяла длинну линии? Вставить формулу в текст или атрибут могем, а как ее подвязать на динамические свойства не знаем. Мне надо передать результат в Linear Stretch. Обратный процесс ясен вполне.
Мне надо, чтобы геометрические размеры объекта определялись расчетом.
Supermax
Еще один каверзный вопрос. Как Dimension выключить точки. Вот я выключил все линии, а там, где они примыкают к объекту остались точки. Мне надо оставить только текст, а эти точки я не заказывал. Я где-то встречал, но не помню где.
kpblc
> #334 : Если формула (точнее, длина или любой иной параметр объекта) зависит от другого объекта acad'a, прописывай объектный реактор. Подробнее - в книге Н.Н.Полещука по разработке и адаптации.
> #335 : Отключай слой Defpoints.
Supermax
А я уже подумал, что что-то случилось. Вчера целый день меня тишиной пытали.
Да, про AutoLisp базару нет. С ним хоть на Марс, хоть на Луну. А вот без него...
Defpoints не помогает.
Как тогда в объект встроить лисп программу? Чтобы каждый раз, как этот объект обрабатывается она запускалась.
Вот я формулу из текста (в смысле на сером фоне цифирки) через буфер, в значение Linear Stretch вставил, оно там засветилось вполне адекватно, только когда нажимаю Enter - сбрасывает зараза. Может Лиспом ее туда заколотить? Через Лисп и атрибуты с пробелами катят, так может и тут покатит?
Вт бы этот объектный реактор в сам объект встроить...
Supermax
И вот зараза, точек от размеров почему-то не 4 а 3. Левой со стороны размера всегда нет (или это только у меня?).
Supermax
Kpblc, вот в свойствах элемента много значений требуют данные в виде строки, а если я дам вместо строки лисп выражение, результатом обработки которого будет строка? Как думаешь сработает?
Azarko aka VVA
Цитата
а как ее подвязать на динамические свойства не знаем

С параметрами блока нужно быть поосторожнее.
Прочитай пост №8 http://dwg.ru/forum/viewtopic.php?t=15815
Я думаю, единственный выход - объектный реактор, или команда, которая перебирает блоки и что-то там в зависимости от чего-то меняет.
По поводу объетных реакторов из личного опыта:
Реактор повешен на текст, переведен в постоянный режим. При втавке этого чертежа в другой как блок, независимо от того, подгружен реактор или нет, при закрытии чертежа Автокад вываливается с ошибкой. Избавился так: реактор временный, при каждом открытии чертежа активизируется.
Трабл наблюдался в 2004, 2006 каде. 2007, 2008 не пробывал.
kpblc
Цитата(Supermax @ 27.9.2007, 11:37) [snapback]170065[/snapback]
Kpblc, вот в свойствах элемента много значений требуют данные в виде строки, а если я дам вместо строки лисп выражение, результатом обработки которого будет строка? Как думаешь сработает?

Теоретически должно (только texteval проверь). Практически - я бы проводил модификацию программно.
Supermax
А я научился вставлять формулы с сылкой на объекты и прочими данными в Text override Dimensions-ам. Причем ф формулу вставлена ссылка на тот Dimension в котором эта формула стоит в Text override и в этой формуле участвует значение другого Dimension. Если кому интересно, могу поделится.

Если сработает (пока не могу проверить) это будет революция. Например объект, в котором никогда нельзя включить ручки. Лисп с начала делает свое черное дело (гасит ручки) а затем выдает под занавес строку с нужным текстом.
kpblc
Вообще-то мог бы и сам сделать smile.gif
Код
(defun test (/ adoc attr_number attr_pos _kpblc-conv-vla-to-list)

  (defun _kpblc-conv-vla-to-list (value / res)
                            ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (vlax-safearray->list value)
         );_ end of if
       )
      (t value)
      );_ end of cond
    );_ end of defun

  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (if
    (and
      (not
        (vl-catch-all-error-p
          (vl-catch-all-apply
            '(lambda ()
               (setq attr_number (car (nentsel "\nАтрибут номера <Отмена> : ")))
               );_ end of lambda
            );_ end of vl-catch-all-apply
          );_ end of vl-catch-all-error-p
        );_ end of not
      attr_number
      (setq attr_number (vlax-ename->vla-object attr_number))
      (wcmatch (strcase (vla-get-objectname attr_number)) "*ATTR*")
      (not
        (vl-catch-all-error-p
          (vl-catch-all-apply
            '(lambda ()
               (setq attr_pos (car (nentsel "\nАтрибут позиции <Отмена> : ")))
               );_ end of lambda
            );_ end of vl-catch-all-apply
          );_ end of vl-catch-all-error-p
        );_ end of not
      attr_pos
      (setq attr_pos (vlax-ename->vla-object attr_pos))
      (wcmatch (strcase (vla-get-objectname attr_pos)) "*ATTR*")
      (not (equal attr_pos attr_number))
      (/= (strcase (vla-get-tagstring attr_number))
          (strcase (vla-get-tagstring attr_pos))
          );_ end of /=
      (equal (vla-objectidtoobject adoc (vla-get-ownerid attr_pos))
             (vla-objectidtoobject adoc (vla-get-ownerid attr_number))
             );_ end of equal
      );_ end of and
     (progn
       (foreach item
                (vl-remove-if-not
                  '(lambda (x / lst)
                     (setq lst (_kpblc-conv-vla-to-list (vla-getattributes x)))
                     (and (member (strcase (vla-get-tagstring attr_number))
                                  lst
                                  );_ end of member
                          (member (strcase (vla-get-tagstring attr_pos))
                                  lst
                                  );_ end of member
                          );_ end of and
                     );_ end of lambda
                  (mapcar
                    'vlax-ename->vla-object
                    (vl-remove-if
                      'listp
                      (mapcar 'cadr (ssnamex (ssget '((0 . "INSERT") (66 . 1)))))
                      );_ end of vl-remove-if
                    );_ end of mapcar
                  );_ end of vl-remove-if-not
    ;| Ну а здесь уже проставление чего надо и куда надо - сам, батенька, сам :)|;
        );_ end of foreach
       );_ end of progn
     );_ end of if
  );_ end of defun

P.S. Ну вот, пока отвечал, пост уже снесен.. Ну что, код отправлять туда же, куда и #343 ушел?
Supermax
Е кы лы мы ны! Сейчас поправлю VVA сказал, что ничего не понял, вот я его и снес, а то не удобно как-то.
Работа навалилась. Но я не здаюсь! Я и сегодня немного пошлангую.
kpblc
Пока ты не начал "шланговать" (подозреваю, что имеется в виду "прикидываться шлангом". Не пытайся - не получится wink.gif). Перед дополнением кода подумай - почему я не стал прописывать заполнение атрибутов? С технической стороны этот вопрос не сложен.
Я знаю, я скотина wink.gif
Supermax
Поправляю ТЗ, и возник спорный вопрос. Вот есть план микрорайона с проложенной теплотрассой. Надо выделить объекты для позиционирования и нумерации. А нужен ли выбор секущей рамкой? Вообще, может ли в принципе быть такая ситуация, когда в модели есть несколько груп элементов (с атрибутами есс-но) где одни надо маркировать и нумеровать, а другие либо не надо, либо они должны быть отмаркированы по новой с нуля? Что-то я никак не могу себе представить такой случай.
kpblc
Ни фига не понял. "Маркировать" надо для чего? Для составления спецухи, так? Значит эта нумерация должна быть сквозной. Или все не так?
---
Добавлено: во, ща чего нашел:
Цитата
Название программы EasySpec
Версия: 2.0.0.29 04.09.2006
Официальный сайт: http://orbita.perm.ru/?page=spec
Демо: http://orbita.perm.ru/download-main.php?id=13 (2,2 Мб)
Краткое описание: Программа предназначена для создания спецификаций на основе базы данных по оборудованию и материалам. Полностью исключается и сводится к нулю рутинная работа по вводу текста, автоматически формируется титульный лист для любой организации из списка занесенных в программу.

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

Программа формирует титульный лист в формате A4, таблицу спецификации - в двух форматах А3 и А4.

Автоматически заполняется штамп и титульный лист в зависимости от выбранного из справочника конкретного Исполнителя работ.
Включает два справочника: по заказчикам и подрядчикам.

Имеется возможность :
глубокого редактирования и форматирования всех исходных шаблонов.
быстрого ввода готового текста в панель управления из списка заранее подготовленных в редакторе списка.
быстрого ввода информации из базы данных нажатием клавиш цифровой клавиатуры.
быстрого поиска по базе данных с сортировкой базы данных по алфавиту и по номеру записи.

База данных имеет функцию автоматического измерения ширины полей в документах и саморасширяющиеся поля, позволяющие заполнять базу данных в точном соответствии с выбранным форматом листа, видом шрифта и шириной полей (граф) в документах.
Не качал и не проверял.
Supermax
Kpblc, ты вообще сегодня спать ложился? Что-то ты очень рано сегодня.
Нумерация - сквозная, но упорядоченная, то есть с начала нумеруются детали одного типа, затем другого и т.д.
Позиционирование (маркировка) производится тоже упорядоченно. С начала группируются детали по эффектив нейму, потом по *Unnn и маркируются. Грубо говоря с начала в кучу собираются все трубы (атрибут "категория материала"), а потом из этой кучи выбирается первое эффективное имя и все *Unnn ему принадлежащие маркируются и нумеруются. Затем следующее имя и т.д.
Ща ТЗ доделаю и выложу.

Добавлено:
Если учесть тот факт, что атрибут в блоке может быть видимым и заключенныи в кружочек или квадратик, то и на монтажке это дело - самое оно.
Supermax
А эту прогу я оказывается уже устанавливал. Там ручками надо штампик заполнять. Ничего она не делает акромя выпуску бумажек.

Да, пишу ТЗ и прога получается явно не на 3000р.

Сейчас, VVA проснется и я узнаю, надо ли мне расписывать последовательность этапов обработки массива или не надо.
Supermax
Вот:
Краткое описание: Программа предназначена для создания спецификаций
Цитата
на основе базы данных по оборудованию и материалам.


А где собственно и чем (это я о ручках) эту базу создавать? И они ЭТО продают за деньги!
kpblc
Цитата(Supermax @ 28.9.2007, 8:41) [snapback]170434[/snapback]
Kpblc, ты вообще сегодня спать ложился? Что-то ты очень рано сегодня.
Нумерация - сквозная, но упорядоченная, то есть с начала нумеруются детали одного типа, затем другого и т.д.
Позиционирование (маркировка) производится тоже упорядоченно. С начала группируются детали по эффектив нейму, потом по *Unnn и маркируются. Грубо говоря с начала в кучу собираются все трубы (атрибут "категория материала"), а потом из этой кучи выбирается первое эффективное имя и все *Unnn ему принадлежащие маркируются и нумеруются. Затем следующее имя и т.д.
Ща ТЗ доделаю и выложу.

Добавлено:
Если учесть тот факт, что атрибут в блоке может быть видимым и заключенныи в кружочек или квадратик, то и на монтажке это дело - самое оно.

Ложился, спал аж 4 часа. Работы просто много - TDMS никак не сдается smile.gif
Я бы сортировку делал по другому принципу (см.аттач, там dvb-файл, сделан на ACAD2007)
P.S. Жалко, что ToolTip нельзя сделать многострочным, красивше получилось бы...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.