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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Автозаполнение ведомости рабочих чертежей

Автозаполнение ведомости рабочих чертежей

Ответ
Поиск в этой теме
Непрочитано 29.10.2007, 09:15 2 | #1
Автозаполнение ведомости рабочих чертежей
wetr
 
инженер
 
Владивосток
Регистрация: 09.08.2006
Сообщений: 1,535

Те кто видел КОМПАС меня поймут: хочу чтобы ведомость рабочих четрежей заполнялась автоматически. Пользую поля - ссылки на объекты. В моем случае ссылаюсь на блок(рамка) с аттрибутами "№листа" и "наименование листа". Вроде бы все отлично. Убивает трудоемкость создания данной таблицы. Т.е. как я делаю(может не правильно?):
создаем мтекст-вставить поле-объект-выбрать- а дальше проблемка - рамка то находится в лайоутах. А перелистывать лайоуты в режиме выбора нельзя... Приходится сначала открывать лайоут, затем копировать текст вида
"%<\AcObjProp Object(%<\_ObjId 2130566400>%).TextString>%"
в отдельный файл, затем вставлять в нужное мне поле. Есть другие варианты узнать ObjID? Или другие варианты создать эту таблицу?
И еще: в каких случаях меняется этот ID? А то я боюсь теперь эти блоки редактировать - все собьется нафиг
*******************************************************************************************************************
...Прошел год
VVA сделал отличную программу по созданию Ведомости рабочих чертежей (Компас отдыхает)

ВОЗМОЖНОСТИ:
- Ведомость создается в виде таблицы с полями.
- Обязательно использование блока с атрибутами "ЛИСТ" и "НАИМЕНОВАНИЕ.ЧЕРТЕЖА".
- Таблицы вставляется в слое _Таблица. Если слоя нет - он создается. Настройки слоя можно поменять в ЛИСПе
- Таблицы вставляются в Стиле таблиц "Ведомость чертежей" оформленной по ГОСТу. Настройки стиля см. в ЛИСПе
- Запускать командой VRC в командной строке или сделать себе кнопку


ОСОБЕННОСТИ:
- В таблице и блоке используется шрифт "MIPGOST.SHX". Скачать можно здесь. Не нравится? Открывай код и меняй под себя.
- В блок-рамке используется многострочный атрибут, который работает только в AutoCAD 2008 и старше.
Если у вас более ранняя версия - программа будет работать, но атрибут будет однострочный.
- При заполнении многострочного атрибута "НАИМЕНОВАНИЕ.ЛИСТА" не используйте ENTER. Текст перескочит на новую строку сам.(Это актуально если лисп вставляет поля. Варианты лиспа VRCTS и VRCTN отрабатывают без проблем)

ПРО БЛОК:
- Рамка пестрит полями - название проекта заполнять на титульном листе, в рамке обновится
- ШИФР проекта заполнять на титульном листе
- Формат листа - ссылка на lookup внутри блока, обновляется.
- Для того, чтобы количество листов прописывалось автоматом, я сделал себе макрос на кнопку, запускающую VRC
Цитата:
^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;all;;vrc
Внимание! Если у вас используется переменная USERI1, могут возьникнуть проблемы!
**********************

Для тех, кому не нравиться что программа создает стили и слои, вариант от VVA и Red Nova

************************************
***Обновление от 04.02.2008. **********
************************************
Добавлена возможность заполнять таблицу полями, текстом, выбирать или нет листы. Подробности в начале лиспа.
Команды:
VRC - таблица с полями, все листы
VRCTS - таблица с Tекстом, выбор (S) листов
VRCTN - таблица с Tекстом, нет (N) выбора листов
VRCFS - таблица с полями (F), выбор (S) листов

************************************
***Обновление от 06.09.2010. ***********
***********************************
Добавлена возможность выбора стиля таблиц
Версия для x64 : http://forum.dwg.ru/showpost.php?p=349807&postcount=159

Вложения
Тип файла: rar mipgost.rar (6.1 Кб, 1227 просмотров)
Тип файла: dwg
DWG 2004
Пример Ведомость чертежей.dwg (110.4 Кб, 34845 просмотров)
Тип файла: lsp vrc_VVA.lsp (34.6 Кб, 1110 просмотров)

__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось Кулик Алексей aka kpblc, 19.04.2014 в 22:22.
Просмотров: 127533
 
Непрочитано 29.10.2007, 09:31
#2
Кулик Алексей aka kpblc
Moderator

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


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

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


Выложи файлик чертежа для примера. Думаю можно будет собрать со всех листов твои ObjID и "выплюнуть" все это в блокнот, или таблицу Автокада.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.10.2007, 10:04
#4
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Вот пример файла. В таблицу автокада - это классно. Когда вставляешь в таблицу ObjID он превращиется в то что нужно!
Вложения
Тип файла: rar пример.rar (413.3 Кб, 1114 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 29.10.2007, 20:07
#5
VVA

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


Пробуй
Код:
[Выделить все]
(defun c:vrc (/ adoc alay ss pnt tbl attlst lst fld lock)
  (defun SortStringWithNumberAsNumber (ListOfString IgnoreCase / NorStrs count)
;;;Function Normalize (add 0 befor number) number in string
;;; Count normalize symbols set in variable count
;;; CAB added count as an argument
  (defun NormalizeNumberInString (str count / ch i pat ret buf)
    (setq i   0
          pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
          ret ""
    ) ;_ end of setq
    (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
      (if (vl-position ch pat)
        (progn
          (setq buf ch) ;_ end of setq
          (while
            (vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
             (setq buf (strcat buf ch))
          ) ;_ end of while
          (while (< (strlen buf) count) (setq buf (strcat "0" buf)))
          (setq ret (strcat ret buf))
        ) ;_ end of progn
      ) ;_ end of if
      (setq ret (strcat ret ch))
    ) ;_ end of while
    ret
  ) ;_ end of defun
  ;;-------------------------------------------------
  ;;  function to Count the longest number in string 
  ;;  CAB added to get the correct COUNT
  (defun getcount (lst / count pat)
    (setq count 0)
    (setq pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
    (mapcar
      '(lambda (str / i maxlen ch)
         (setq i 0 maxlen 0)
         (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
           (if (vl-position ch pat) ; number
             (setq maxlen (1+ maxlen))
             (setq count  (max count maxlen) maxlen 0)
           )
         )
  (setq count  (max count maxlen)) ;_<<< ADD 21.06.2007 by 
       )
      Lst
    )
    count
  )
  ;;===============================================
  (setq count   (GetCount ListOfString)
        NorStrs (mapcar '(lambda (x) (NormalizeNumberInString x count))
                        ListOfString)
  )
  (and IgnoreCase (setq NorStrs (mapcar 'strcase NorStrs)))
  (mapcar '(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs '<))
)
   (defun get-all-atts (obj)
  (if (and obj
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
 
      )
    (vl-catch-all-apply
      (function
 (lambda ()
   (mapcar (function (lambda (x)
         (list (vla-get-TagString x)
        (vla-get-TextString x)
                                    x
         )
       )
    )
    (append (vlax-invoke obj 'Getattributes)
     (vlax-invoke obj 'Getconstantattributes)
    )
   )
 )
      )
    )
  )
)
  (defun lib:get-active-space ()
  (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object)))) 
      (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))) 
      ) ;_ end of and 
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  ) ;_ end
  (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        alay (vla-get-activelayer adoc)
  )
  (if
(and
(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1))))
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
(setq attlst (mapcar '(lambda(x)(get-all-atts x)) lst))
(setq attlst (vl-remove-if-not '(lambda(x)(and (assoc "ЛИСТ" x)
                                               (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" x)
                                               )
                                  )
               attlst)
      )
(setq lst (SortStringWithNumberAsNumber (mapcar '(lambda (x)(cadr(assoc "ЛИСТ" x))) attlst) t))
(vl-catch-all-apply '(lambda()
(setq attlst (vl-sort attlst '(lambda(x y)(< (vl-position(cadr(assoc "ЛИСТ" x)) lst)(vl-position(cadr(assoc "ЛИСТ" y)) lst)))))
                       )
  )
 (setq pnt (vl-catch-all-apply
                       (function getpoint)
                       '("Точка вставки таблицы <Отказаться>: ")
                   )
     )
 (not (vl-catch-all-error-p pnt))
 (setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      2
                      800  ;_высота строки
                      6000 ;_ширина столбца
                    )
       )
)
(progn
  (if (= (vla-get-lock alay) :vlax-true)
        (progn (vla-put-lock alay :vlax-false) (setq lock t))
      )
          (vla-put-regeneratetablesuppressed tbl :vlax-true)
          (vla-settext tbl 0 0 "Ведомость чертежей")
          (vla-setcellalignment tbl 0 0 acmiddlecenter)
          (vla-setcelltextheight tbl 0 0
                                      500  ;_Высота текста
            )
          (vla-settext tbl 1 0 "Лист")
          (vla-settext tbl 1 1 "Обозначение")
          (vla-setcellalignment tbl 1 0 acMiddleCenter)
          (vla-setcellalignment tbl 1 1 acMiddleCenter)
          (vla-setcelltextheight tbl 1 0
                                    400  ;_Высота текста
            )
          (vla-setcelltextheight tbl 1 1
                                    400  ;_Высота текста
            )
          (vla-setcolumnwidth tbl 0
                                  3000 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                  9000 ;_Ширина колонки Обозначение
            )
 
          (vla-put-horzcellmargin tbl 100) ;_Отступ текста по горизонтали
          (setq row 1)
          (foreach i attlst
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "ЛИСТ" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl (setq row (1+ row)) 0 fld)
            (vla-setcellalignment tbl row 0 acMiddleCenter)
            (vla-setcelltextheight tbl row 0
                             350  ;_Высота текста
              )
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             350  ;_Высота текста
              )
          )
          (vla-put-regeneratetablesuppressed tbl :vlax-false)
          (vla-update tbl)
          (if lock (vla-put-lock alay :vlax-true))
        )
      )
 
  )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 25.02.2009 в 17:34. Причина: Специально для Red Nova
VVA вне форума  
 
Непрочитано 29.10.2007, 20:14
#6
RomansFather

Инженерконструктор
 
Регистрация: 25.10.2007
Минск
Сообщений: 361


Привет wetr. В тему я не въезджал, потому-что не дорос еще до использования Лэйаутов, Вьюпортов и прочей высшей математики (отчасти из за того, что работаю совместно с людьми, что привыкли по старинке, не особо вдаваясь в возможности Акада), но мне очень понравились твои динамические блоки арматуры, хомутов и шпилек. Может посоветуешь где искать, чтоб время особо не тратить на опыты.
А ВетКАД рулит без вопросов!
__________________
Запомнить информацию легко. Вспомнить трудно.
RomansFather вне форума  
 
Автор темы   Непрочитано 30.10.2007, 05:09
#7
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Пробуй...
Че-то не въезжаю:

Command: VRC
; error: no function definition: GET-ALL-ATTS

что то делаю не так?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 30.10.2007, 05:25
#8
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от RomansFather Посмотреть сообщение
Привет wetr. В тему я не въезджал, потому-что не дорос еще до использования Лэйаутов, Вьюпортов и прочей высшей математики (отчасти из за того, что работаю совместно с людьми, что привыкли по старинке, не особо вдаваясь в возможности Акада), но мне очень понравились твои динамические блоки арматуры, хомутов и шпилек. Может посоветуешь где искать, чтоб время особо не тратить на опыты.
А ВетКАД рулит без вопросов!
Я раньше тоже не вьезжал. Но когда попробовал - уже не могу иначе. Попробуй - может понравится. Из плюсов Лайаутов - авто-нумерация листов (лисп с dwg.ru), авто-заполнение ведомости чертежей(надеюсь разберемся), не надо масштабировань объекты, удобнее компановать, печать "одной кнопкой" всех листов. Из минусов: не видно все листы сразу, небольшие тормоза при переходе по листам.
p.s. Что искать то?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 30.10.2007 в 11:02.
wetr вне форума  
 
Непрочитано 30.10.2007, 09:53
#9
VVA

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


Все так, забыл функцию добавить. Пробуй снова из №5
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 30.10.2007, 11:00
#10
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Спасибо! То что нужно! Только вручную приходится перетаскивать значения ячеек - они сортируются примерно так : 3а,3б,1,10,11,12...19,2,21...
Стиль таблицы используется по умолчанию? Я ничего не шарю в лиспе, но, я могу поменять в исходном коде названия столбцов, ширину, длину ячеек??? Ничего не рухнет?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 30.10.2007, 16:34
#11
RomansFather

Инженерконструктор
 
Регистрация: 25.10.2007
Минск
Сообщений: 361


Привет wetr. Уточняю вопрос. Где найти такие динамические блоки (сетки, хомуты, шпильки...), которые применены в твоем чертеже. Я перелопатил по поиску весь сайт - нашел похожие блоки, но не настолько интересные и удобные. Если не сложно кинь ссылку или выложи сами блоки (вышли на мыло).
__________________
Запомнить информацию легко. Вспомнить трудно.
RomansFather вне форума  
 
Непрочитано 30.10.2007, 17:23
#12
VVA

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


Цитата:
Сообщение от wetr Посмотреть сообщение
Спасибо! То что нужно! Только
1. вручную приходится перетаскивать значения ячеек - они сортируются примерно так : 3а,3б,1,10,11,12...19,2,21...
2. Стиль таблицы используется по умолчанию?
3. Я ничего не шарю в лиспе, но, я могу поменять в исходном коде названия столбцов, ширину, длину ячеек??? Ничего не рухнет?
1. Изменил в №5 код. Сортироваться должны так 1,2,3а,3б,10,11,12...19,21...
2. Да
3. Нет (в смысле ничего не рухнет).
Названия солбцов
Код:
[Выделить все]
(vla-settext tbl 1 0 "Лист")
(vla-settext tbl 1 1 "Обозначение")
Ширина и длина ячеек ищи в коментариях, типа
Код:
[Выделить все]
(setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      2
                     800  ;_высота строки
                     6000 ;_ширина столбца
                    )
       )
...
        (vla-setcelltextheight tbl 1 0
                                   400  ;_Высота текста
            )
          (vla-setcelltextheight tbl 1 1
                                   400  ;_Высота текста
            )
          (vla-setcolumnwidth tbl 0
                                 3000 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                 9000 ;_Ширина колонки Обозначение
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 31.10.2007, 04:43
#13
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от RomansFather Посмотреть сообщение
Привет wetr. Уточняю вопрос. Где найти такие динамические блоки (сетки, хомуты, шпильки...), которые применены в твоем чертеже. Я перелопатил по поиску весь сайт - нашел похожие блоки, но не настолько интересные и удобные. Если не сложно кинь ссылку или выложи сами блоки (вышли на мыло).
Выложил в download все что есть, на данный момент.
http://dwg.ru/dnl/2849

О каком чертеже речь? Если не секрет?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 31.10.2007 в 04:53.
wetr вне форума  
 
Непрочитано 31.10.2007, 15:22
#14
RomansFather

Инженерконструктор
 
Регистрация: 25.10.2007
Минск
Сообщений: 361


Привет wetr. Имею ввиду чертеж пример.rar в 4-ом посте (али не товой?).
Спасибо за блоки. Если надумаешь сделать блоки хомутов, то рассмотри вариант конфигурации загибов как у меня в файле. Такие загибы как рисуют в учебниках на стройке мало кто делает. А вариант, приведенный в файле, вполне реализуем на практике и, кроме того, такие загибы приведены в штатовских нормативных документах по жб и по-моему в Еврокоде (нет под рукой сейчас).
Вложения
Тип файла: dwg
DWG 2004
Хомут.dwg (31.3 Кб, 8072 просмотров)
__________________
Запомнить информацию легко. Вспомнить трудно.
RomansFather вне форума  
 
Автор темы   Непрочитано 02.11.2007, 03:29
#15
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


to VVA. пасибо еще раз. Все получилось. Начинаю любить Lisp
to RomansFather. Добавлено. см. download .
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 06.11.2007, 10:37
#16
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Недавно узнал про многострочные атрибуты. Но они... не очень хорошо отображаются в табличке... Можно ли что то сделать???
Миниатюры
Нажмите на изображение для увеличения
Название: 2007.11.02_Model.jpg
Просмотров: 891
Размер:	18.2 Кб
ID:	560  
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.11.2007, 11:48
#17
VVA

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


Используй форматирование многострочного текста

__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 14.11.2007 в 09:48.
VVA вне форума  
 
Автор темы   Непрочитано 06.11.2007, 16:06
#18
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Что то не въехал... Каким образом его использовать?
Насколько я понял, при вставке этой абракадабры в мультитекст и, в том числе в многострочный атрибут, должно быть как у тебя на картинке? Но у меня только этот набор текста и символов остается...Попробовал с разными текстовыми стилями, с атрибутами, таблицами и мультитекстом = везде едино
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.11.2007, 17:09
#19
VVA

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


При вставке этой абракадабры через буфер Автокад добавляет еще один слэш. В окне свойств поудаляй по одному
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.11.2007, 17:19
#20
VVA

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


Вообще все это можно делать в редакторе мтекста.
1. Пичешь числитель и знаменатель, разделенный или / или ^
2. Выделяешь числитель, / (или ^), знаменатель.
3. На панельке становится активной кнопка a/b. Нажимаешь ее.
4. Текст превращается в дробь и наоборот
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 14.11.2007 в 09:48.
VVA вне форума  
 
Автор темы   Непрочитано 06.11.2007, 17:52
#21
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Это понятно. Но все равно не канает. Когда используешь многосточный атрибут - добавляется еще элементы форматирования: в частности перенос на другую строку
- "\p". И нипанятна почиму попадая в поле эта абракадабра не превращается обратно в "человека"... Мож какая сис. переменная есть?
Миниатюры
Нажмите на изображение для увеличения
Название: Capture.jpg
Просмотров: 490
Размер:	51.9 Кб
ID:	584  
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 06.11.2007, 17:55
#22
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Жаль, что у нас такая разница во времени... Толком не поговорить. Пойду спать, а то уже 01.00...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.11.2007, 18:40
#23
VVA

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


В данный момент 2008 нет, но можно попробовать переформатировать строку многострочного атрибута в "съедобную" для мтекста
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 08.11.2007, 07:34
#24
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Пришлось таки пользоваться Data Extraction, т.к. там отображается все нормально с многострочными атрибутами(Интересно почему?). Но там есть другой недостаток - упорядочить номера листов не получается если есть лист №7*. Он эти листы со звездами ставит всегда вперед...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.12.2007, 13:16
#25
...k@Sher...

ИНЖЕНЕР
 
Регистрация: 28.11.2007
Курган
Сообщений: 8
<phrase 1=


Жаль, что так и не "дожали" тему....
Мои старания по созданию многострочного атрибута
увы успехом не увеньчались.
Многострочный атрибут - тема весьма нужная!!!
Может выложит файлик кто использует его.
... ну хоть одним глазком подсмотреть.
...k@Sher... вне форума  
 
Непрочитано 06.12.2007, 18:01
#26
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 537
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


Цитата:
Сообщение от wetr Посмотреть сообщение
Те кто видел КОМПАС меня поймут: хочу чтобы ведомость рабочих четрежей заполнялась автоматически. (
От темы в итоге отвлеклись,с ведомостью то разобрался?используй подшивки,там это создается проще всего.См.пост#2
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Автор темы   Непрочитано 11.12.2007, 05:21
#27
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от ...k@Sher... Посмотреть сообщение
Жаль, что так и не "дожали" тему....
Мои старания по созданию многострочного атрибута
увы успехом не увеньчались.
Многострочный атрибут - тема весьма нужная!!!
Может выложит файлик кто использует его.
... ну хоть одним глазком подсмотреть.
1. Создавать его не нужно. Его уже создали в acad 2008.
2. Согласен!!!
3.Если у тебя 2008, при создании атрибута поставь галочку "mutiply" и все
4. Почему же не дожали. Все получилось. Я использую блок штампа(рамки) с атрибутами "НАИМЕНОВАНИЕ ЧЕРТЕЖА" и "ЛИСТ". "НАИМЕНОВАНИЕ ЧЕРТЕЖА" естественно многострочный атрибут. Блок может располагаться где угодно, т.е. этот вариант подходит как любителям МОДЕЛИ так и любителям ЛИСТа. Далее все просто:
- создаем стиль таблицы "ведомость чертедей", например
- data extraction
- все
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 29.04.2008, 21:59
#28
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA, wetr,
Хорошая темка. Вот только для тех у кого название листа в блоке атрибут. А у меня вот поверх блока мтекстом (люблю редактор мтекст). Но у этого мтекста есть определенная координата на листе (координата У, поскольку Х при разных форматах разная)
Можно ли сделать лисп, чтобы в выбранных листах выбирались мтексты с этой координатой, и затем их содержимое вписывалось в другие мтексты по очереди?
Заранее спасибо.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 29.04.2008, 22:47
#29
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Файл примера
Вложения
Тип файла: dwg
DWG 2004
Пример.dwg (235.9 Кб, 2423 просмотров)
__________________
Блог

Последний раз редактировалось Red Nova, 29.04.2008 в 23:02.
Red Nova вне форума  
 
Непрочитано 30.04.2008, 10:37
#30
fenix

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


да используй ты подшивки
__________________
ужасно интересно всё то, что неизвестно
fenix вне форума  
 
Непрочитано 30.04.2008, 14:09
#31
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Да уж если так никак, то навеное придется, но хотел попробовать без этого.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 03.05.2008, 15:10
#32
VVA

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


Для текста нужно "маркировать" текст. Собрал по быстрому пример
УСЛОВИЯ
  1. Текущий стиль таблицы должнен быть без заголовка таблицы
  2. Названия листов должны заканчиваться на цифру номера листа
    Например К1 - номер 1
    КМ-2 - номер 2
    Кж-2.1 - номер 2.1
  3. Тексты должны быть замаркированы командой VRC_Mark
  4. Собрать ведомость - VRC_VED
  5. Размеры столбцов и строк прописаны явно в тексте
В архиве подготовленный файл "Пример.dwg"
Вложения
Тип файла: rar Ved.rar (47.5 Кб, 244 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.05.2008, 16:22
#33
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA, Спасибо что откликнулся, что бы я без тебя делал. Но у меня пока не работает.
Прописал путь к папке, открыл пример, загрузил лисп, текущий стиль таблицы там твой. Все названия помечены как надо. Запускаю VRC_VED, запрашивает точку вставки, но нечего не вставляется.
Цитата:
Размеры столбцов и строк прописаны явно в тексте
Можно для чайника пояснить где это?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 07.05.2008, 10:01
#34
VVA

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


Файлик выложи
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.05.2008, 11:45
#35
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Дык файлик твой, с #32. Может у меня просто руки кривые, можно для чайника еще раз пояснить?
К стати у тебя как я понял ведомость в таблицу генерируется. А можно в мтексты вписывать? В файле с поста 29 есть пример ведомости из мтекстов. Можно сделать так. Беру первую строчку ведомости. Копирую ее (скажем 10 копий). Запускаю команду. Выходит запрос какие листы захватить, потом лисп читает номера страниц и их наименования, затем выдает запрос отметить ведомость. Отмечаем одной рамкой нашу ведомость (там напомню два столбца и 10 строчек), все переписывается на свои места. Если вдруг строчек в таблице больше чем количество листов, то в последних строчках текст становиться типа "###", если строчек в таблице меньше чем количество листов, то выходит соответствующее сообщение, а строчки заполняются до последней имеющейся.
__________________
Блог

Последний раз редактировалось Red Nova, 07.05.2008 в 12:15.
Red Nova вне форума  
 
Непрочитано 07.05.2008, 14:50
#36
VVA

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


Чтобы отобрать нужные тексты, они "маркируются" расширенными данными (команда VRC_Mark). Какие замаркированы- можно посмотреть командой VRC_Sel. Перейди в любой дист и набери ее, должен подсветиться текст.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.05.2008, 15:26
#37
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Я открываю твой файл, с поста 32, там кажется все уже подготовлено для сборки ведомости. Маркировка есть. Стиль таблицы есть. Даю команду, запрашивает точку вставки таблицы, а дальше ничего не делает.
Прошу выложи файл в котором все уже настроено как надо, и остается только лисп загрузить. А-то тот что с #32 не работает
__________________
Блог
Red Nova вне форума  
 
Непрочитано 07.05.2008, 18:18
#38
VVA

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


В примере #32 все подготовлено. Нужно только лисп загрузить
Изображения
Тип файла: gif VRC.gif (26.4 Кб, 1052 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.05.2008, 20:19
#39
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Ну прям магия какая-то. Ни в какую у меня не работает (на двух машинах). Запрос на точку вставки таблицы идет, а таблицы нету. Облом.
Прошу рассмотреть вариант описанный на #35, было бы действительно здорово.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 08.05.2008, 19:32
#40
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Прелесть варианта где вместо таблиц мтексты в том, что не надо потом таблицу приводить к стандартному размеру, не надо думать на счет примечаний. Да и просто это полезно людям, у которых на таблицы аллергия. А мне и пуха на улице вполне хватит. Все чихаю.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 05.06.2008, 22:10
#41
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Может до отпуска как нибудь все-же найдешь время
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 06.06.2008, 02:57
#42
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Зря ты таблицы не любишь - хорошая вещь!
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.06.2008, 10:54
#43
VVA

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


Red Nova,
Обещать не буду, но постараюсь.
Оффтоп: Корочку КТН обмыл как следует? Не засохнет?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.06.2008, 11:19
#44
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


По секрету скажу что корочку еще не получил, (два месяца от ВАК ответ ждать) но обмыть уже успел.
__________________
Блог

Последний раз редактировалось Red Nova, 17.07.2008 в 13:08.
Red Nova вне форума  
 
Непрочитано 17.06.2008, 20:18
#45
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA
Ты уже в отпуске?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 17.06.2008, 20:23
#46
VVA

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


__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.06.2008, 09:24
#47
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


А где отпуск проводишь? Дома или поехал куда?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 19.06.2008, 09:32
#48
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Я это к тому, чтобы понять тебя можно щас беспокоить, или ты на отдыхе, тогда я подожду до окончания отпуска.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 19.06.2008, 19:50
#49
VVA

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


Ну беспокоить можно, если достучишся. Я и сам не знаю что будет завтра. Я взял только 12 дней отпуска и на отдых (в смысле Турция-Болгария-Египет) сейчас не еду. Ковыряюсь потихоньку дома. Вот интернет себе провел. Осталось самое сложное - спрятать провода.
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 16.07.2008 в 23:05. Причина: орфография
VVA вне форума  
 
Непрочитано 19.06.2008, 20:18
#50
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Эх жалко по разным странам живем, в отличая от лиспа с проводами я бы справился.
На этой неделе пойду к другу, он в некотором роде программист (правда другого профиля), постараюсь поучить лисп и разобраться с лиспом описанным мною на этом форуме, если не получиться то вернусь на форум и буду опять стучать в твою дверь.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 16.07.2008, 20:55
#51
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA Вот решил перейти на блок штампа с атрибутом. Попробовал лисп с поста 5, у меня почему-то не работает. Хотя в файлах от wetr работает нормально.
Мои атрибуты именуются также как и у wetr в файле. Что я делаю не так?
Вложения
Тип файла: dwg
DWG 2004
Мой Штамп.dwg (98.3 Кб, 1676 просмотров)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 17.07.2008, 13:07
#52
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Ура, заработало. Вроде как сделал все как в прошлый раз, скопировал имя атрибута от wetr в свой штамп, почему-то в прошлый раз не прокатило, а на этот раз все прошло нормально.

Но не все так радужно. Возникла новая проблема.
В отличие от wetr, у меня номер листа в атрибуте вписывается как поле от имени лейаута. Когда поле копируется в таблицу, то там (при реген алл) оно отображается как odel (это model без первой буквы). Может возможно как-то вписать в таблицу не поле с дизелем, а перед этим переконвертировать его в текст?
Вложения
Тип файла: dwg
DWG 2004
Мой Штамп2.dwg (86.1 Кб, 1687 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 17.07.2008, 15:28
#53
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Я пользуюсь автонумератором этих самых блоков. Лайоуты при этом могут называться как угодно. Довольно удобная штука. Ссылку дать не могу, но по моему туда тоже VVA руку приложил. Брал на кадюсере...
...еще недавно где-то здесь на форуме djonikbishkek (извени если не правильно!) давал ссылку прям на этот лисп!
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 17.07.2008 в 15:29. Причина: орфография
wetr вне форума  
 
Непрочитано 17.07.2008, 16:05
#54
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Просмотрел недавние сообщения от djonikbishkek , такого не нашел. Может на форум выложишь? Или на мыло пришли пожалста.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 17.07.2008, 16:32
#55
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Сори. Конечно!
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=21092Ky
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 17.07.2008, 16:55
#56
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Спасибо за ссылку.
Буду просить VVA усовершенствовать лисп тут.
http://dwg.ru/f/showthread.php?t=20139&page=3
К стати, если еще не использовал, там очень полезная программа для работы с листами.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 17.07.2008, 19:24
#57
VVA

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


Листы листами, а штамп штампом
Часть 1
Вводная
1. Имя блока штампа без разницы
2. Блок штампа должен иметь таг "ЛИСТ" (по умолчанию)
3. Если у вас таг отличается, ищем и правим эту строчку (выделена в коде красным)
Код:
[Выделить все]
 (setq Target-Tag-Name "ЛИСТ") ;_ ТАГ (имя) атрибута блока
4. Значение атрибута с тагом "ЛИСТ" обновляется именем листа, на котором расположен блок, начиная с 1-й цифры. Т.е.
Название листа---------->Значение атрибута
3 ----------------------------> 3
3a ----------------------------> 3a
КЖ-1.1 -----------------------> 1.1
4. Две команды
SHTUPDALL - пробегается по всем листам
SHTUPD - пробегается по текущему листу (CTAB)
Пример можно взять с #4
Код:
[Выделить все]
(defun C:SHTUPDALL ()(update-shtamp-block nil))
(defun C:SHTUPD ()(update-shtamp-block (getvar "CTAB")))
;; obj - Ename or Vla object of block
;; att_list - list ((Tag_Name1 . Value1)(Tag_Name2 . Value2) ...)
;;                 Tag_Name - string
;;                    Value - string

(defun mip-block-setattr-bylist (obj att_list / txt lst)(vl-load-com)
(if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
(setq att_list (mapcar '(lambda(x)(cons (strcase (mip-conv-to-str(car x)))(mip-conv-to-str(cdr x)))) att_list))
  (if (and obj
           (not(vlax-erased-p obj))
           (= (vla-get-ObjectName obj) "AcDbBlockReference")
	   (eq :vlax-true (vla-get-HasAttributes obj))
	   (vlax-property-available-p obj 'Hasattributes)
	   (vlax-write-enabled-p obj)
      )
    (vl-catch-all-apply
      (function
	(lambda	()
          (foreach at (vlax-invoke obj 'Getattributes)
            (if (setq lst (assoc(strcase(vla-get-TagString at)) att_list))
              (vla-put-TextString at (cdr lst))
            )
            )
          )
        )
      )
    )
  )
(defun mip-conv-to-str (dat)
  (cond ((= (type dat) 'INT)(setq dat (itoa dat)))
         ((= (type dat) 'REAL)(setq dat (rtos dat 2 12)))
        ((null dat)(setq dat ""))
        (t (setq dat (vl-princ-to-string dat)))))
;;;csp - имя листа (getvar "CTAB")
;;;      или nil - все листы
;;(setq csp (getvar "CTAB"))
(defun update-shtamp-block ( csp  / ss i n Target-Tag-Name attValue ch )
(setq Target-Tag-Name "ЛИСТ") ;_ ТАГ (имя) атрибута блока
(if csp  
(setq ss
(ssget "_X" (list
	      '(0 . "INSERT")
	      '(66 . 1)
	      (cons 410 csp)
	      )
       )
      )
  (setq ss
(ssget "_X" (list
	      '(0 . "INSERT")
	      '(66 . 1)
	      )
       )
      )
  )
(repeat (setq n (sslength ss)) ;_ end setq
        (cdr(assoc 410(entget (setq item (ssname ss (setq n (1- n)))))))
         
  (if (/= (setq attValue (cdr(assoc 410 (entget item)))) "Model" )
(progn
    (setq i 0)
  (while (or  
	   (not(wcmatch (setq ch (substr attValue (setq i (1+ i)) 1)) "#"))
	   (=  ch "")
	   )
     )
(setq attValue (substr attValue i))
(mip-block-setattr-bylist  item (list(cons Target-Tag-Name attValue)))
  )
    )
 ) ;_ end
)
Как проверить:
1. Берете пример с #4
2. Грузите лисп
3. Переименовываете любой лист (например КМ-112)
3. Вызываем команду SHTUPD
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.07.2008 в 13:32. Причина: Описка (выделена синим)
VVA вне форума  
 
Непрочитано 17.07.2008, 19:34
#58
VVA

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


Часть 2. Конструктор "ЛЕГО"
Как скрестить LISP. Копирование, сортировка, переименование листов (layout) и код с #57
Вводная
1. Оба лиспа должны быть загружены
2. Будем скрещивать команду LTINC и SHTUPD (т.е. создадим копию листа с увеличенным номером и обновим штамп на этом листе)
Назовем команду LTINC1
Код:
[Выделить все]
(defun C:LTINC1 ()(C:LTINC)(C:SHTUPD))
Все просто как грабли. Хотя я бы сначала нащелкал нужное кол-во листов, а потом SHPUPDALL все обновил
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.07.2008 в 09:55.
VVA вне форума  
 
Непрочитано 17.07.2008, 20:10
#59
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA, Спасибо. Все и в правду просто.
Я даже сумел скрестить LTRENN и SHTUPDALL, В результате получилось именно то, что надо.
Код:
[Выделить все]
(defun C:ltren2 ()(C:ltrenn)(C:SHTUPDALL))
P.S. Надо бы на LISP. Копирование, сортировка, переименование листов (layout) добавить эти команды, они все же там ближе по тематике чем здесь.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 17.07.2008, 21:10
#60
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Заметил, что SHTUPD и SHTUPDALL делают то же самое, то есть влияют на все листы, только один не переименовывается.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 17.07.2008, 22:30
#61
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Начал использовать лисп с поста #5. Появились вопросы.


1. Лисп создает ведомость для всех без исключения чертежей. Как быть если некоторые чертежи не надо туда добавить? К примеру у меня в КМ проекте всегда бывает и лист который мы отправляем на завод изготовителя, а в проект он не входит.
2. Возможно ли добавить еще один столбец (примечание)? Я вставляю в такой столбец поле связанное со свойствами файла (custom properties), там у меня есть строка по имени “Том”, желательно вписать во все строки примечания ее значения (хотя это может не для всех быть универсально, но по госту такой столбец есть). Текст в этой колонке желательно чтобы имел направленность middle center.
3. В Лиспе я нашел некоторые параметры настройки размеров ведомости. Но все настроить мне не удалось. Как я понял высота ячейки для всех общая. Но по госту она разная для разных строк. Хотелось бы настроить по отдельности.
4. Можно ли подчеркнуть название? (как вариант).
5. В столбцах “лист” и “обозначение” перед полями появляется пробел. Для столбца “обозначение” это удобно, так как он имеет левую направленность, и этот пробел отодвигает текст от перегородки. Но столбец “лист” имеет центральную направленность, и в нем желательно этот пробел удалить, так как возникает смещение.
6. Тут думаю что ты помочь не сможешь, так как это свойство поля, пишу на всякий случай. Если в многострочном атрибуте использовать перенос строки (enter), то в поле появляются побочные эффекты в виде “\P” на местах (enter). Сразу же оговорюсь и скажу, что это можно преодолеть задав нужную ширину атрибуту. Тогда enter не нужен.
7. Прости, что вопросов так много.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 18.07.2008, 11:43
#62
VVA

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


1. Могу предложить использовать другой штамп (отличаются таги атрибутов)
2. См красным
3. См синим
4. Стандартно для МТЕКСТА. Замени "Ведомость чертежей" на "{\\LВедомость чертежей}"
5. Это не пробел, а отступ. Ищи в коде (vla-put-horzcellmargin tbl 100) ;_Отступ текста по горизонтали
6. Помочь не смогу, так как это поле. Если писать текст, то почистить можно
7. Прощен
Код:
[Выделить все]
;http://dwg.ru/f/showthread.php?t=14548
;АВТО Заполнение ведомости рабочих чертежей
(defun c:vrc (/ adoc alay ss pnt tbl attlst lst fld lock)
  (defun SortStringWithNumberAsNumber (ListOfString IgnoreCase / NorStrs count)
;;;Function Normalize (add 0 befor number) number in string
;;; Count normalize symbols set in variable count
;;; CAB added count as an argument
  (defun NormalizeNumberInString (str count / ch i pat ret buf)
    (setq i   0
          pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
          ret ""
    ) ;_ end of setq
    (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
      (if (vl-position ch pat)
        (progn
          (setq buf ch) ;_ end of setq
          (while
            (vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
             (setq buf (strcat buf ch))
          ) ;_ end of while
          (while (< (strlen buf) count) (setq buf (strcat "0" buf)))
          (setq ret (strcat ret buf))
        ) ;_ end of progn
      ) ;_ end of if
      (setq ret (strcat ret ch))
    ) ;_ end of while
    ret
  ) ;_ end of defun
  ;;-------------------------------------------------
  ;;  function to Count the longest number in string 
  ;;  CAB added to get the correct COUNT
  (defun getcount (lst / count pat)
    (setq count 0)
    (setq pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
    (mapcar
      '(lambda (str / i maxlen ch)
         (setq i 0 maxlen 0)
         (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
           (if (vl-position ch pat) ; number
             (setq maxlen (1+ maxlen))
             (setq count  (max count maxlen) maxlen 0)
           )
         )
  (setq count  (max count maxlen)) ;_<<< ADD 21.06.2007 by 
       )
      Lst
    )
    count
  )
  ;;===============================================
  (setq count   (GetCount ListOfString)
        NorStrs (mapcar '(lambda (x) (NormalizeNumberInString x count))
                        ListOfString)
  )
  (and IgnoreCase (setq NorStrs (mapcar 'strcase NorStrs)))
  (mapcar '(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs '<))
)
   (defun get-all-atts (obj)
  (if (and obj
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
    
      )
    (vl-catch-all-apply
      (function
 (lambda ()
   (mapcar (function (lambda (x)
         (list (vla-get-TagString x)
        (vla-get-TextString x)
                                    x
         )
       )
    )
    (append (vlax-invoke obj 'Getattributes)
     (vlax-invoke obj 'Getconstantattributes)
    )
   )
 )
      )
    )
  )
)
  (defun lib:get-active-space ()
  (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object)))) 
      (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))) 
      ) ;_ end of and 
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  ) ;_ end
  (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        alay (vla-get-activelayer adoc)
  )
  (if
(and
(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1))))
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
(setq attlst (mapcar '(lambda(x)(get-all-atts x)) lst))
(setq attlst (vl-remove-if-not '(lambda(x)(and (assoc "ЛИСТ" x)
                                               (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" x)
                                               )
                                  )
               attlst)
      )
(setq lst (SortStringWithNumberAsNumber (mapcar '(lambda (x)(cadr(assoc "ЛИСТ" x))) attlst) t))
(vl-catch-all-apply '(lambda()
(setq attlst (vl-sort attlst '(lambda(x y)(< (vl-position(cadr(assoc "ЛИСТ" x)) lst)(vl-position(cadr(assoc "ЛИСТ" y)) lst)))))
                       )
  )
 (setq pnt (vl-catch-all-apply
                       (function getpoint)
                       '("Точка вставки таблицы <Отказаться>: ")
                   )
     )
 (not (vl-catch-all-error-p pnt))
 (setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      3    ;_Кол-во столбцов
                      800  ;_высота строки
                      6000 ;_ширина столбца
                    )
       )
)
(progn
  (if (= (vla-get-lock alay) :vlax-true)
        (progn (vla-put-lock alay :vlax-false) (setq lock t))
      )
          (vla-put-regeneratetablesuppressed tbl :vlax-true)
          (vla-settext tbl 0 0 "Ведомость чертежей")
          (vla-setcellalignment tbl 0 0 acmiddlecenter)
          (vla-setcelltextheight tbl 0 0
                                      500  ;_Высота текста
            )
          (vla-settext tbl 1 0 "Лист")
          (vla-settext tbl 1 1 "Обозначение")
          (vla-settext tbl 1 2 "Примечание")
          (vla-setcellalignment tbl 1 0 acMiddleCenter)
          (vla-setcellalignment tbl 1 1 acMiddleCenter)
          (vla-setcellalignment tbl 1 2 acMiddleCenter)
          (vla-setcelltextheight tbl 1 0
	                              400  ;_Высота текста лИСТ
            )
          (vla-setcelltextheight tbl 1 1
                                    400  ;_Высота текста Обозначение
            )
          (vla-setcelltextheight tbl 1 2
                                    400  ;_Высота текста Примечание
            )
          (vla-setcolumnwidth tbl 0
                                  3000 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                  12000 ;_Ширина колонки Обозначение
            )
          (vla-setcolumnwidth tbl 2
                                  6000 ;_Ширина колонки Примечание
            )
          (vla-put-horzcellmargin tbl 100) ;_Отступ текста по горизонтали
          (vla-SetRowHeight tbl 0 2000) ;_Высота строки Ведомость чертежей
          (vla-SetRowHeight tbl 1 3000) ;_Высота строки Лист Обозначение Наименование
          (setq row 1)
          (foreach i attlst
	    (setq row (1+ row))
	    (vla-SetRowHeight tbl row 1200) ;_Высота строки
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "ЛИСТ" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 0 fld)
            (vla-setcellalignment tbl row 0 acMiddleCenter)
            (vla-setcelltextheight tbl row 0
                             350  ;_Высота текста
              )
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             350  ;_Высота текста
              )
	    ;;;Ссылка на свойство рисунка Tom
            (setq fld "%<\\AcVar CustomDP.Tom>%")
            (vla-settext tbl row 2 fld)
            (vla-setcellalignment tbl row 2 acMiddleCenter)
            (vla-setcelltextheight tbl row 2
                             350  ;_Высота текста
              )

          )
          (vla-put-regeneratetablesuppressed tbl :vlax-false)
          (vla-update tbl)
          (if lock (vla-put-lock alay :vlax-true))
        )
      )
  )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.07.2008 в 13:25.
VVA вне форума  
 
Непрочитано 18.07.2008, 12:28
#63
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Спасибо. Со многими вопросами понятно. Но еще не на 100%.
1. Как задать в лиспе, чтобы во все строки колонки "Примечание" вставлялось поле из custom properties (строка по имени “Том”)
2. Я сумел задать Два вида высоты строк, первая - для первых двух строк, вторая - для последующих строк. Можно ли раздельно задать высоты для первых двух строк?
3. Можно ли задать разный отступ для разных столбцов?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 18.07.2008, 12:36
#64
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Совсем забыл. Как на счет вопроса на #60?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 18.07.2008, 13:28
#65
VVA

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


Внес исправления в #62
1. См. фиолетовым
2. См. фиолетовым жирным
3. Нет (по крайней мере я не знаю как)
Насчет #60
Исправил #57. Там была описка
Вместо
(defun update-shtamp-block ( cps / ss i n Target-Tag-Name attValue ch )
Нужно
(defun update-shtamp-block ( csp / ss i n Target-Tag-Name attValue ch )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.07.2008 в 13:33.
VVA вне форума  
 
Непрочитано 18.07.2008, 14:40
#66
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Большое спасибо. Теперь ведомость чертежей можно настроить по полной программе. В сочетании с лиспами с LISP. Копирование, сортировка, переименование листов (layout) и лиспом с #57 получается полный функционал для организации листов проекта.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 18.07.2008, 15:49
#67
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Обнаружил что в столбце Примечание отступа перед полем нет вовсе, можно и в графе лист так сделать?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 18.07.2008, 17:22
#68
VVA

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


"Не виноватая я. Он сам пришел" (C) "Бриллиантовая рука"
Честное слово, нигде никаких пробелов не задавал, кроме как
(vla-put-horzcellmargin tbl 100) ;_Отступ текста по горизонтали
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.07.2008 в 21:25.
VVA вне форума  
 
Непрочитано 18.07.2008, 20:51
#69
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Выкладываю пример создания ведомости по ГОСТ. (Настройки изменены под ГОСТ).
В архиве файл со штампом, ReadMe, использованный шрифт и два лиспа (в первом в графу примечание вписывается поле тома чертежа, во втором графа примечания пуста)
Вложения
Тип файла: rar Пример создания Ведомости чертежей по ГОСТУ.rar (84.1 Кб, 1594 просмотров)
__________________
Блог

Последний раз редактировалось Red Nova, 18.07.2008 в 22:02.
Red Nova вне форума  
 
Непрочитано 18.07.2008, 21:29
#70
VVA

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


Ругается на отсутсвие GOST 2.303-68.shx
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.07.2008, 22:01
#71
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Странно, я его вроде как не использовал.
Но, раз уж ругается, то вот, выкладываю.
Вложения
Тип файла: rar GOST 2.303-68.rar (149 байт, 217 просмотров)
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 25.07.2008, 03:54
#72
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Red Nova Посмотреть сообщение
Выкладываю пример создания ведомости по ГОСТ. (Настройки изменены под ГОСТ).
В архиве файл со штампом, ReadMe, использованный шрифт и два лиспа (в первом в графу примечание вписывается поле тома чертежа, во втором графа примечания пуста)
Red Nova, отлично получилось! Спасибо. Так то лучше. Все по госту, настраивать не надо и обновляется
В общем VVA - респект!!! Впрочем, как всегда
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 28.07.2008, 13:54
#73
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Для того чтобы была возможность составит ведомость не из всех листов, а из некоторых я сделал дополнительный штамп, у которого отличаются таги. Часто нужно бывает быстро поменять основной штамп на вспомогательный (или на оборот). Приходится удалять старый штамп, вставлять новый, корректировать параметры лукап и заново заполнять атрибуты. Можно разработать лисп для замены штампов местами?
Алгоритм такой:
Команда может быть одна или сразу две. Нужно чтобы работало в обоих направлениях.
К примеру имею на листе блок "штамп", находясь на листе запускаю лисп, запоминаются лукапы, точка вставки и содержания атрибутов, затем блок удаляется, на запомненное место вставляется блок по имени "штамп вспомогательный", корректируются лукапы и содержания артибутов.
Если считаешь что это не слишком сложным, то создание этого лиспа можно еще и сделать очередным уроком в нашей обучающей теме.
Как ты думаешь?
Вложения
Тип файла: dwg
DWG 2004
Пример штампов.dwg (83.4 Кб, 3405 просмотров)
__________________
Блог

Последний раз редактировалось Red Nova, 28.07.2008 в 14:15.
Red Nova вне форума  
 
Непрочитано 28.07.2008, 15:23
#74
VVA

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


А чем Blockreplace из Express Tools не устраивает
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.07.2008, 15:31
#75
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


А ты пробовал на моем файле? У меня не работает.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 28.07.2008, 17:11
#76
VVA

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


Red Nova, Так у тебя там динамический блок.
Добавил диалог выбора листов
Код:
[Выделить все]
;http://dwg.ru/f/showthread.php?t=14548
;АВТО Заполнение ведомости рабочих чертежей
(defun c:vrc (/ adoc alay ss pnt tbl attlst lst fld lock)
  (defun SortStringWithNumberAsNumber (ListOfString IgnoreCase / NorStrs count)
;;;Function Normalize (add 0 befor number) number in string
;;; Count normalize symbols set in variable count
;;; CAB added count as an argument
  (defun NormalizeNumberInString (str count / ch i pat ret buf)
    (setq i   0
          pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
          ret ""
    ) ;_ end of setq
    (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
      (if (vl-position ch pat)
        (progn
          (setq buf ch) ;_ end of setq
          (while
            (vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
             (setq buf (strcat buf ch))
          ) ;_ end of while
          (while (< (strlen buf) count) (setq buf (strcat "0" buf)))
          (setq ret (strcat ret buf))
        ) ;_ end of progn
      ) ;_ end of if
      (setq ret (strcat ret ch))
    ) ;_ end of while
    ret
  ) ;_ end of defun
  ;;-------------------------------------------------
  ;;  function to Count the longest number in string 
  ;;  CAB added to get the correct COUNT
  (defun getcount (lst / count pat)
    (setq count 0)
    (setq pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
    (mapcar
      '(lambda (str / i maxlen ch)
         (setq i 0 maxlen 0)
         (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
           (if (vl-position ch pat) ; number
             (setq maxlen (1+ maxlen))
             (setq count  (max count maxlen) maxlen 0)
           )
         )
  (setq count  (max count maxlen)) ;_<<< ADD 21.06.2007 by 
       )
      Lst
    )
    count
  )
  ;;===============================================
  (setq count   (GetCount ListOfString)
        NorStrs (mapcar '(lambda (x) (NormalizeNumberInString x count))
                        ListOfString)
  )
  (and IgnoreCase (setq NorStrs (mapcar 'strcase NorStrs)))
  (mapcar '(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs '<))
)
(defun get-all-atts (obj)
  (if (and obj
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
    
      )
    (vl-catch-all-apply
      (function
 (lambda ()
   (mapcar (function (lambda (x)
         (list (vla-get-TagString x)
        (vla-get-TextString x)
                                    x
         )
       )
    )
    (append (vlax-invoke obj 'Getattributes)
     (vlax-invoke obj 'Getconstantattributes)
    )
   )
 )
      )
    )
  )
)
  (defun lib:get-active-space ()
  (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object)))) 
      (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))) 
      ) ;_ end of and 
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  ) ;_ end
  (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        alay (vla-get-activelayer adoc)
  )
  (if
(and
(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1))))
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
(setq tbl (_DWGRU-GET-USER-DCL "Выберите листы" (layoutlist) t))
(setq lst (vl-remove-if-not '(lambda(x)(member(cdr(assoc 410(entget(vlax-vla-object->ename x)))) tbl)) lst))
(setq attlst (mapcar '(lambda(x)(get-all-atts x)) lst))
(setq attlst (vl-remove-if-not '(lambda(x)(and (assoc "ЛИСТ" x)
                                               (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" x)
                                               )
                                  )
               attlst)
      )
(setq lst (SortStringWithNumberAsNumber (mapcar '(lambda (x)(cadr(assoc "ЛИСТ" x))) attlst) t))
(vl-catch-all-apply '(lambda()
(setq attlst (vl-sort attlst '(lambda(x y)(< (vl-position(cadr(assoc "ЛИСТ" x)) lst)(vl-position(cadr(assoc "ЛИСТ" y)) lst)))))
                       )
  )
 (setq pnt (vl-catch-all-apply
                       (function getpoint)
                       '("Точка вставки таблицы <Отказаться>: ")
                   )
     )
 (not (vl-catch-all-error-p pnt))
 (setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      3    ;_Кол-во столбцов
                      800  ;_высота строки
                      6000 ;_ширина столбца
                    )
       )
)
(progn
  (if (= (vla-get-lock alay) :vlax-true)
        (progn (vla-put-lock alay :vlax-false) (setq lock t))
      )
          (vla-put-regeneratetablesuppressed tbl :vlax-true)
          (vla-settext tbl 0 0 "Ведомость чертежей")
          (vla-setcellalignment tbl 0 0 acmiddlecenter)
          (vla-setcelltextheight tbl 0 0
                                      500  ;_Высота текста
            )
          (vla-settext tbl 1 0 "Лист")
          (vla-settext tbl 1 1 "Обозначение")
          (vla-settext tbl 1 2 "Примечание")
          (vla-setcellalignment tbl 1 0 acMiddleCenter)
          (vla-setcellalignment tbl 1 1 acMiddleCenter)
          (vla-setcellalignment tbl 1 2 acMiddleCenter)
          (vla-setcelltextheight tbl 1 0
	                              400  ;_Высота текста лИСТ
            )
          (vla-setcelltextheight tbl 1 1
                                    400  ;_Высота текста Обозначение
            )
          (vla-setcelltextheight tbl 1 2
                                    400  ;_Высота текста Примечание
            )
          (vla-setcolumnwidth tbl 0
                                  3000 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                  12000 ;_Ширина колонки Обозначение
            )
          (vla-setcolumnwidth tbl 2
                                  6000 ;_Ширина колонки Примечание
            )
          (vla-put-horzcellmargin tbl 100) ;_Отступ текста по горизонтали
          (vla-SetRowHeight tbl 0 2000) ;_Высота строки Ведомость чертежей
          (vla-SetRowHeight tbl 1 3000) ;_Высота строки Лист Обозначение Наименование
          (setq row 1)
          (foreach i attlst
	    (setq row (1+ row))
	    (vla-SetRowHeight tbl row 1200) ;_Высота строки
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "ЛИСТ" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 0 fld)
            (vla-setcellalignment tbl row 0 acMiddleCenter)
            (vla-setcelltextheight tbl row 0
                             350  ;_Высота текста
              )
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             350  ;_Высота текста
              )
	    ;;;Ссылка на свойство рисунка Tom
            (setq fld "%<\\AcVar CustomDP.Tom>%")
            (vla-settext tbl row 2 fld)
            (vla-setcellalignment tbl row 2 acMiddleCenter)
            (vla-setcelltextheight tbl row 2
                             350  ;_Высота текста
              )

          )
          (vla-put-regeneratetablesuppressed tbl :vlax-false)
          (vla-update tbl)
          (if lock (vla-put-lock alay :vlax-true))
        )
      )
  )


;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2008  DWGru Programmers Group
;;; *
;;; * _dwgru-get-user-dcl (Кандидат)
;;; *
;;; * Запрос значения у пользователя через диалоговое окно
;;; *
;;; *
;;; * 26/01/2008 Версия 0002. Редакция Владимир Азарко (VVA)
;;;              - Выход по двойному клику, если запрещен множественный выбор (multi-nil)
;;;              - Обработка нескольких колонок
;;; * 21/01/2008 Версия 0001. Редакция Владимир Азарко (VVA)
;;; ************************************************************************


;;; ************************************************************************
;;; * Library DWGruLispLib Copyright © 2008 DWGru Programmers Group
;;; *
;;; * _dwgru-get-user-dcl (Candidate)
;;; *
;;; * Inquiry of value at the user through a dialogue window
;;; *
;;; *
;;; * 26/01/2008 Version 0002. Edition Vladimir Azarko (VVA)
;;; - the Output on double a clique if the plural choice (multi-nil) is forbidden
;;; - Processing of several columns
;;; * 21/01/2008 Version 0001. Edition Vladimir Azarko (VVA)


(defun _DWGRU-GET-USER-DCL (ZAGL        INFO-LIST   MULTI
                            /           FL          RET
                            DCL_ID      MAXROW      MAX_COUNT_COL
                            COUNT_COL   I           LISTBOX_HEIGHT
                            LST         _LOC_FINISH _LOC_CLEAR
                            NCOL
                           )
;| 
* ENGLISH
* Inquiry of value at the user through a dialogue window
* Dialogue is formed to "strike"
* the Quantity of lines on page without scrolling is set by variable MAXROW.
* It is necessary to remember, that number MAXROW increases on 3.
* the Maximum quantity of columns is set by variable MAX_COUNT_COL
* It is published
     http://dwg.ru/f/showthread.php?p=203746#post203746
* Parameters of a call:
    zagl - heading of a window [String]
    info-list - the list of line values[List of String]
    multi - t - the plural choice is resolved, nil-is not present
      
* Returns:
 The list of the chosen lines or nil - a cancelling
* the Example
 (_dwgru-get-user-dcl " Specify a variant " ' ("First" "Second" "Third") nil); _-> ("First") 
 (_dwgru-get-user-dcl " Specify a variant " ' ("First" "Second" "Third") t); _-> ("First"  "Second ")
 (_dwgru-get-user-dcl " Specify a variant "
   (progn (setq i 0 lst nil) (repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1 + i)))) lst))) (reverse lst)) nil)
 (_dwgru-get-user-dcl " Specify a variant, using CTRL and SHIFT for a choice "
   (progn (setq i 0 lst nil) (repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1 + i)))) lst))) (reverse lst)) t)
|;
;|
* RUS						   
* Запрос значения у пользователя через диалоговое окно
* Диалог формируется "налету"
* Количество строк на страницу без скроллинга задается переменной MAXROW.
* Необходимо помнить, что число MAXROW увеличивается на 3.
* Максимальное количество колонок задается переменной MAX_COUNT_COL
* Опубликована
     http://dwg.ru/f/showthread.php?p=203746#post203746
* Параметры вызова:
    zagl - заголовок окна [String]
    info-list - список строковых значений[List of String]
    multi - t - разрешен множественный выбор, nil- нет
    
* Возвращает:
 Список выбранных строк или nil - отмена
* Пример
 (_dwgru-get-user-dcl "Укажите вариант" '("Первый" "Второй" "Третий") nil) ;_->("Первый") 
 (_dwgru-get-user-dcl "Укажите вариант" '("Первый" "Второй" "Третий") t) ;_->("Первый" "Второй")
 (_dwgru-get-user-dcl "Укажите вариант"
   (progn (setq i 0 lst nil)(repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1+ i)))) lst)))(reverse lst)) nil)
 (_dwgru-get-user-dcl "Укажите вариант, используя CTRL и SHIFT для выбора"
   (progn (setq i 0 lst nil)(repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1+ i)))) lst)))(reverse lst)) t)
|;
 ;_ ===== КОНСТАНТЫ ============

  (setq MAXROW 40) ;_макc. кол-во строк без скроллинга (К нему дальше добавится еще 3 строчки)
                   ;_  max lines without scrolling (To it 3 more lines further will be added)
  (setq MAX_COUNT_COL 5) ;_максимальное количество колонок
                         ;_ ; _ a maximum quantity of columns
;;============== Локальные фунцкции START==================
;;============== Local functions START========================

  (defun _LOC_FINISH ()
    (setq I   0
          RET NIL
    ) ;_ end ofsetq
    (repeat COUNT_COL
      (setq I (1+ I))
      (setq RET (cons (cons I (get_tile (strcat "info" (itoa I)))) RET))
    ) ;_ end ofrepeat
    (setq RET (reverse RET))
    (done_dialog 1)
  ) ;_ end ofdefun
  (defun _LOC_CLEAR (NOMER)
    (setq I 0)
    (repeat COUNT_COL
      (setq I (1+ I))
      (if (/= I NOMER)
        (progn
          (start_list (strcat "info" (itoa I)))
          (mapcar 'add_list (nth (1- I) LST))
          (end_list)
        ) ;_ end ofprogn
      ) ;_ end ofif
    ) ;_ end ofrepeat
  ) ;_ end ofdefun

;;;==================== Локальные фунцкции END ==================================
;;;==================== Local functions END ==================================

;;;==================== MAIN PART ===============================================

  (if (null ZAGL)
    (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
      (setq ZAGL "Выбор")
      (setq ZAGL "Select")
    ) ;_ end ofif
  ) ;_ end if
  (if (zerop (rem (length INFO-LIST) MAXROW)) ;_Целое количество столбцов
    (setq COUNT_COL (/ (length INFO-LIST) MAXROW)) ;_Его и оставляем
    (setq COUNT_COL (1+ (fix (/ (length INFO-LIST) MAXROW 1.0)))) ;_Берем ближайшее целое
  ) ;_ end ofif
  (if (> COUNT_COL MAX_COUNT_COL)
    (setq COUNT_COL MAX_COUNT_COL)
  ) ;_Ограничиваем max количеством
  (setq LISTBOX_HEIGHT (+ 3 MAXROW)) ;_  добавляем 3 строчки для красоты и для исключения пограничного скроллинга
                                     ;_ We add 3 lines for appearance and for exception boundary scroll
  (if (and (= COUNT_COL 1) (<= (length INFO-LIST) MAXROW))
    (setq LISTBOX_HEIGHT (+ 3 (length INFO-LIST)))
  ) ;_ end ofif
  (setq I 0)
  (setq FL (vl-filename-mktemp "dwgru" NIL ".dcl"))
  (setq RET (open FL "w")
        LST NIL
  ) ;_ end ofsetq
  (mapcar '(lambda (X) (write-line X RET))
          (append (list "dwgru_get_user : dialog { "
                        (strcat "label=\"" ZAGL "\";")
                        ": boxed_row {"
                        (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
                          "label = \"Значение\";"
                          "label = \"Value\";"
                        ) ;_ end ofif
                  ) ;_ end oflist
                  (repeat COUNT_COL
                    (setq LST
                           (append
                             LST
                             (list
                               " :list_box {"
                               "alignment=top ;"
                               (if MULTI
                                 "multiple_select = true ;"
                                 "multiple_select = false ;"
                               ) ;_ end ofif
                               "width=31 ;"
                               (strcat "height= " (itoa LISTBOX_HEIGHT) " ;")
                               "is_tab_stop = false ;"
                               (strcat "key = \"info" (itoa (setq I (1+ I))) "\";}")
                             ) ;_ end oflist
                           ) ;_ end ofappend
                    ) ;_ end ofsetq
                  ) ;_ end ofrepeat
                  (list
                    "}"
                    ":row{"
                    "ok_cancel_err;}}"
                  ) ;_ end oflist
          ) ;_ end of list
  ) ;_ end of mapcar
  (setq RET (close RET))
  (if (and (null (minusp (setq DCL_ID (load_dialog FL))))
           (new_dialog "dwgru_get_user" DCL_ID)
      ) ;_ end and
    (progn
      (setq LST INFO-LIST)
      ((lambda (/ RET1 BUF ITM)

         (repeat (1- COUNT_COL)
           (setq I '-1)
           (while (and (setq ITM (car LST))
                       (< (setq I (1+ I)) MAXROW)
                  ) ;_ end ofand
             (setq BUF (cons ITM BUF)
                   LST (cdr LST)
             ) ;_ end ofsetq
           ) ;_ end ofwhile
           (setq RET1 (cons (reverse BUF) RET1)
                 BUF  NIL
           ) ;_ end ofsetq
         ) ;_ end ofrepeat
         (setq RET RET1)
       ) ;_ end oflambda
      )
      (if LST
        (setq RET (cons LST RET))
      ) ;_ end ofif
      (setq LST (reverse RET))
      (setq I 0)
      (mapcar '(lambda (THIS_LIST)
                 (if (<= (setq I (1+ I)) COUNT_COL)
                   (progn
                     (start_list (strcat "info" (itoa I)))
                     (mapcar 'add_list THIS_LIST)
                     (end_list)
                   ) ;_ end ofprogn
                 ) ;_ end ofif
               ) ;_ end oflambda
              LST
      ) ;_ end ofmapcar

      (set_tile "info1" "0")
      (setq I 0
            NCOL 1
      ) ;_ end ofsetq
      (repeat COUNT_COL
        (action_tile
          (strcat "info" (itoa (setq I (1+ I))))
          (strcat "(progn (setq Ncol "
                  (itoa I)
                  ")(if (not multi)(_loc_clear Ncol))"
                  "(if (and (not multi)(= $reason 4))(_loc_finish)))"
          ) ;_ end ofstrcat
        ) ;_ end ofaction_tile
      ) ;_ end ofrepeat
      (action_tile "cancel" "(done_dialog 0)")
      (action_tile "accept" "(_loc_finish)")
      (if MULTI
        (set_tile "error"
                  (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
                    "Используйте CTRL и SHIFT для выбора"
                    "Use CTRL and SHIFT for a choicet"
                  ) ;_ end ofif
        ) ;_ end ofset_tile
        (set_tile "error"
                  (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
                    "Можно выбирать двойным щелчком"
                    "It is possible to choose double click"
                  ) ;_ end ofif
        ) ;_ end ofset_tile
      ) ;_ end ofif
      (if (zerop (start_dialog))
        (setq RET NIL)
        (progn
          (setq
            RET (apply
                  'append
                  (mapcar
                    '(lambda (ITM)
                       (setq THIS_LIST (nth (1- (car ITM)) LST))
                       (mapcar
                         (function (lambda (NUM) (nth NUM THIS_LIST)))
                         (read (strcat "(" (cdr ITM) ")"))
                       ) ;_ end ofmapcar
                     ) ;_ end oflambda
                    RET
                  ) ;_ end ofmapcar
                ) ;_ end ofapply
          ) ;_ end ofsetq

        ) ;_ end ofprogn
      ) ;_ end if
      (unload_dialog DCL_ID)
    ) ;_ end of progn
  ) ;_ end of if
  (vl-file-delete FL)
  RET
) ;_ end ofdefun
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 30.07.2008 в 13:44.
VVA вне форума  
 
Непрочитано 28.07.2008, 17:22
#77
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Спасибо, но, честно говоря, было бы более удобно, если бы ты добавил в лисп возможность выбора листов для ведомости (как в LTREN)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 30.07.2008, 11:13
#78
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA, Может все же добавишь диалог выбора листов?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 30.07.2008, 13:16
#79
ShaggyDoc

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


Не вмешиваюсь в реализацию, опишу как подобное сделано в ruCAD на алгоритмическом уровне.

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

2. Тексты в основных надписях хранятся в атрибутах с определенными именами.

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

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

5. Правильные имена компоновок позволяют автоматически заполнить ведомость чертежей. Это можно сделать и с помощью Sheet Set (подшивки) и специальной программой. Учитываем, что пользователь мог вручную переместить закладки компоновок куда угодно. Программа выводит диалоговое окно с двойным списком (см. рис). В этом списке можно отобрать компоновки, включаемые в ведомость (не обязательно все входят), а также изменить их порядок следования.

Нумерация листов в ведомости может выполняться по порядку, но можно из корректировать номера - например, вместо номера "4" сделать "4и".

Компоновка, на которую надо вставить саму ведомость, выбирается из списка. Ведомость чертится по стандартной форме в виде ACAD_TABLE. Названия чертежей вставляются в виде текста, а не в виде полей, и сделано это специально. Результат на втором рисунке.
Миниатюры
Нажмите на изображение для увеличения
Название: dlg_select_layouts_list.png
Просмотров: 252
Размер:	10.5 Кб
ID:	8821  Нажмите на изображение для увеличения
Название: veddwg_table_fill.png
Просмотров: 413
Размер:	6.8 Кб
ID:	8822  
ShaggyDoc вне форума  
 
Непрочитано 30.07.2008, 13:50
#80
VVA

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


Red Nova, Обновил лисп в #76 с диалогом запроса листов. Поправишь у себя - обнови пост #69

ShaggyDoc, Это правильно. Я бы тоже с полями не делал, но такое было ТЗ.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 30.07.2008, 16:47
#81
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
...опишу как подобное сделано в ruCAD на алгоритмическом уровне
ShaggyDoc, да где ж наконец взять это счастье-то?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 30.07.2008, 19:11
#82
ShaggyDoc

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


Цитата:
Сообщение от wetr Посмотреть сообщение
ShaggyDoc, да где ж наконец взять это счастье-то?
Так я не для рекламы, чтобы "взять", а чтобы обратить внимание на принципиальную постановку задачи - не надо искусственно придумывать какую-то систему именования вкладок. Она должна быть естественной - имя вкладки=название чертежа.

Вот тогда VVA и сделал бы по такому ТЗ. А он делал по неудачной (на мой взгляд) первоначальной идее.
ShaggyDoc вне форума  
 
Непрочитано 31.07.2008, 11:44
#83
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA
Спасибо за диалог выбора листов. (хотя честно говоря пока не опробовал)
Я тоже за мысль заменить поля текстом. Может сделаешь такой вариант? Пока на всякий случай подожду с обновлением #69
__________________
Блог
Red Nova вне форума  
 
Непрочитано 31.07.2008, 11:47
#84
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


ShaggyDoc,
Цитата:
не надо искусственно придумывать какую-то систему именования вкладок. Она должна быть естественной - имя вкладки=название чертежа.
У нас листов много. Удобнее нумеровать.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 03.08.2008, 09:58
#85
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Выкладываю последний вариант примера создания ведомости по ГОСТ, с учетом выбора листов.
Настройки по ГОСТ.
В архиве файл со штампом, ReadMe, использованные шрифты и два лиспа (в первом в графу примечание вписывается поле тома чертежа, во втором графа примечания пуста)
Вложения
Тип файла: rar Пример создания Ведомости чертежей по ГОСТУ.rar (84.4 Кб, 216 просмотров)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 03.08.2008, 12:40
#86
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Offtop: VVA, хотел спросить можно ли как то в лайаутах если написано к примеру текстом желтого цвета делать выборку именно этого цвета, в каждом лайауте потом собирать все в кучу, при этом если по два текста на лайауте то их в одну строчку выписывать, если можно то у меня родился алгоритм, без всяких таблиц и полей, буду ждать ответа...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 05.08.2008, 03:37
#87
u77


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


А нельзя ли в этот лисп добавить выбор папки , т.к. бывают проекты большие, и файлов много . (листы все пронумерованны и штампы заполненны)
u77 вне форума  
 
Непрочитано 01.10.2008, 15:02
#88
andery


 
Регистрация: 27.12.2007
Сообщений: 132
<phrase 1=


У меня такой вопрос возник ,
как сделать чтоб номер (название) листа біло в номере на штампе.
Использование полей выдает #### ....
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 202
Размер:	37.1 Кб
ID:	10546  
andery вне форума  
 
Непрочитано 01.10.2008, 15:50
#89
Кулик Алексей aka kpblc
Moderator

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


В поле выбирай Diesel Expression и в качестве кода вбить
Код:
[Выделить все]
$(getvar,"ctab")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.10.2008, 16:21
#90
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Red Nova, а мне не нравиться вариант с таблицами я обычно бз них делаю
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 01.10.2008, 19:49
#91
andery


 
Регистрация: 27.12.2007
Сообщений: 132
<phrase 1=


Кулик Алексей aka kpblc
спасибо!
Сам бы никогда не догадался )))
такой вопрос:
Почему такое не предусмотрено в "стандартных" полях?
И зачем эти поля "название листа" "номекр листа" если они не работуют?
Или они работают тока с подшивками?
andery вне форума  
 
Непрочитано 01.10.2008, 23:00
#92
Кулик Алексей aka kpblc
Moderator

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


Я говорил про "чистый" AutoCAD, без привязки к подшивкам. По-моему (могу и ошибаться!) поля "Название листа" и "Номер листа" работают только с подшивкой и никак иначе. Кто профи - пусть рассудит.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.10.2008, 07:51
#93
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,295


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В поле выбирай Diesel Expression и в качестве кода вбить
Код:
[Выделить все]
$(getvar,"ctab")
круто, спасибо kpblc
asys вне форума  
 
Автор темы   Непрочитано 02.10.2008, 10:10
#94
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Кулик Алексей aka kpblc, а ты не знаешь как получить число закладок в файле. Хочу вставить поле в рамку - "Листов"
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 02.10.2008, 10:36
#95
Кулик Алексей aka kpblc
Moderator

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


По-моему, это реализовывается только через подшивку. Количество закладок (пространств листа) в текущем документе можно вычислить лисповой функцией (layoutlist), но как ее в DIESEL подставить - не представляю. У меня не получилось.
Лисповое выражение (length (layoutlist)) работает корректно, но вот DIESEL отказывается принимать $(length,$(layoutlist))
Может, я неверно описываю DIESEL-выражение?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.10.2008, 10:36
#96
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


и еще вопрос ко всем.
Как можно в полях убрать часть текстового значения аргумента. Например, получаю значение "A3 альбомная" а нужно только А3. Может кто помнит???
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 02.10.2008 в 10:42.
wetr вне форума  
 
Непрочитано 02.10.2008, 10:46
#97
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Вот пример автозаполнения с помощью таблицы СПДС-графикс
Вложения
Тип файла: dwg
DWG 2004
Пример.dwg (190.4 Кб, 1803 просмотров)
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 02.10.2008, 10:49
#98
Кулик Алексей aka kpblc
Moderator

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


wetr, DIESEL:
Код:
[Выделить все]
$(substr,"A2 asd",1,2)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.10.2008, 10:58
#99
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Спасибо, Алексей! Буду пробовать
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 02.10.2008, 12:00
#100
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Кулик Алексей aka kpblc, что то не обновляется.

Формат %<\AcDiesel $(substr,"%<\AcObjProp Object(1910331576).Parameter(93).lookupString \f "%tc3">%",1,2)>%

не обновляет поля. "A3 альбомная" отнимает альбомная, остается А3. Но при изменении значения лукапа на "А2 альбомная", например, поле не обновляется.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 02.10.2008, 12:08
#101
Кулик Алексей aka kpblc
Moderator

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


regen сделай
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.10.2008, 03:04
#102
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Все что делал раньше - неверно. Ссылался на вхождение блока, а это не то. Необходимо, чтобы каждое вхождение блока зависело от своего параметра текущего вхождения. Это достигается вставкой поля местозаменителя (BlockPlaceholder). Но опять таки не могу "урезать выражение" с помощью Дизеля.
значение поля
Код:
[Выделить все]
%<\AcObjProp.16.2 Object(?BlockRefId).Parameter(93).lookupString \f "%tc1">%
в Diesel приобретае вид LOOKUPSTRING
Код:
[Выделить все]
$(substr,"LOOKUPSTRING",1,2)
И как результат
Код:
[Выделить все]
Формат LO
Должно быть Формат А3

Кто нибудь сталкивался?
P.S. Спасибо Какаду
http://dwg.ru/f/showpost.php?p=234249&postcount=4
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 07.10.2008 в 04:01.
wetr вне форума  
 
Непрочитано 03.10.2008, 08:30
#103
Кулик Алексей aka kpblc
Moderator

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


Выложи блочок, посмотрю. А то "всухую" что-то плохо соображается
P.S. Если со строки "LOOKUPSTRING" оставлять только первые 2 символа, то останется "LO"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 03.10.2008 в 08:35.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.10.2008, 09:45
#104
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


да я понял, что остается 2 первых символа от "LOOKUPSTRING", а вот как его заставить обрабатывать значение поля...
Вложения
Тип файла: dwg
DWG 2004
Шаблон_.dwg (108.8 Кб, 2342 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 03.10.2008, 10:18
#105
Кулик Алексей aka kpblc
Moderator

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


Кхе, а у меня в значение поля не удалось засунуть результат Lookup-параметра (имею в виду без программирования )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.10.2008, 13:58
#106
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Насколько я понял, этот самый BlockPlaceholder становится активным только при вставке поля в атрибут и только в редакторе блока. В простой текст его не вставишь. А жаль...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 09.10.2008, 09:07
#107
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Задача решилась. Выкладываю вкупе все примочки которые я использую.
Редми внутри
Вложения
Тип файла: rar Моя лучшая рамка.rar (107.1 Кб, 224 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 09.10.2008 в 10:10. Причина: скромней надо быть ;)
wetr вне форума  
 
Автор темы   Непрочитано 10.10.2008, 06:27
#108
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Немного по теме

VVA, проясни хоть немного. Ничего не получается

А в vrc нужно добавить что-то типа такого :
Код:
[Выделить все]
;;; В переменной table vla-указатель на добавленную таблицу
(vla-put-layer table (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы")))))
Добавил функцию _dwgru-layer-create(или не надо было?), добавил строку
Код:
[Выделить все]
(vla-put-layer table (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы")))))
Переменной table не нашел в коде. И кто такой
Цитата:
vla-указатель
???
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 10.10.2008, 12:52
#109
VVA

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


Ну так про table это для примера. Переменная может называться и мама_мыла_раму
Ищи что-то похожее
Код:
[Выделить все]
(setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      3    ;_Кол-во столбцов
                      800  ;_высота строки
                      6000 ;_ширина столбца
                    )
       )
(vla-put-layer tbl (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы")))))
Синее - что было, фиолетовое - нужно добавить, красное - то, что я подразумевал под
Цитата:
;;; В переменной table vla-указатель на добавленную таблицу
То, что добавил _dwgru-layer-create правильно
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 12.10.2008, 09:29
#110
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, что-то не получается у меня. Добавил функцию и строку, где ты написал - вставляется таблица в нужном слое, но пустая и не того размера.
Код:
[Выделить все]
(vl-load-com)
;;;================== Сервисные ф-ции BEGIN

;|
* Ф-ция str-str-lst
* Сервисная ф-ция извлечения из строки данных, разделенных
* каким либо символом или строкой символов
* Возвращает список строк
* Аргументы [Type]:
  str - строка для разбора [STRING]
  pat - разделитель [STRING]
*  Пример запуска
  (setq str "мы;изучаем;рекурсии" pat ";")
  (setq str "мы — изучаем — рекурсии" pat " — ")
  (str-str-lst str pat)
* Читать подробнее http://www.autocad.ru/cgi-bin/f1/board.cgi?t=25113OT
|;
(defun str-str-lst (str pat / i)
  (cond ((= str "") nil)
        ((setq i (vl-string-search pat str))
         (cons (substr str 1 i)
               (str-str-lst (substr str (+ (strlen pat) 1 i)) pat)
         ) ;_  cons
        )
        (t (list str))
  ) ;_  cond
) ;_  defun
;|=============================================================================
*   На основе ф-ции _kpblc-layer-create
*   http://dwg.ru/forum/viewtopic.php?t=3116&start=45&sid=fab803bd4dbda125ffdc6c07563f682a
*   пост № 47
*   Добавлен новый  параметр  suff - суффикс слоя, если он есть, то имя слоя получаестся путем
*   добавления к имени существующего слоя суффикса suff
*   Создание слоя с указанными параметрами.
*   Параметры вызова:
*   layer-list   список параметров слоя вида:
   '(("name" . "TestLayer")   ; имя слоя. может быть пропущено, если указан suff
     ("color" . 3)         ; номер цвета. nil -> 7
     ("lw" . 50)         ; вес линии слоя. nil -> 25
*                          Оно выражается в сотых долях миллиметра и может быть любым
*                          из следующего ряда: 0, 5, 9, 13, 15, 18, 20, 25, 30, 35, 40, 50, 53, 60, 70,
*                          80, 90, 100, 106, 120, 140, 158, 200 и 211.
     ("lt" . "hidden")      ; тип линии слоя. nil -> Continuous
               ; Если описания типа линии в acadiso.lin
               ; нет, обязательно указывать следующий
               ; параметр
   ("ltfile" . "c:\\cad\\ltypes\\lt.lin")   ; полный путь к файлу с описанием
               ; типа линии. Если файл находится в путях
               ; поддержки, путь можно не указывать
   ("plot" . "y")         ; Печатать ("y") или нет ("n") слой.
               ; nil -> "y"
   ("suff" . "_Размеры")  ;_Добавляемый суффикс с текущему слою. Если задан, поле "name" игнорируется            
   )
*    Возвращает vla-указатель на созданный слой. Если слой существует, его
* настройки приводятся в соответствие с переданным списком.
*    Слой размораживается, разблокируется и включается. Не активируется.
* Примеры:
  (_dwgru-layer-create '(("name" . "Test")("color" . 1)("lw" . 50)))
* создать если нет и слой Test цветом 1 (красный) весом линии 0.5

=========================================================================|;

(defun _dwgru-layer-create (layer-list / vla_layer buf)
       (setq *MIP-CLAYER-PROP-SETTING*
     (list (cons "layer"
   (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
   ) ;_ end of cons
    (cons "color" (getvar "cecolor"))
    (cons "lw" (getvar "celweight"))
    (cons "lt" (getvar "celtype"))
    ) ;_ end of list
    ) ;_ end of setq

  ;;;Если есть suff добавляем в начало списка,
  ;;;чтобы assoc нашел раньше
  (if (cdr(assoc "suff" layer-list))
    (progn
     (setq layer-list (vl-remove (assoc "name" layer-list) layer-list))
     (setq layer-list (append (list(cons "name" (strcat (getvar "clayer") (cdr(assoc "suff" layer-list))))) layer-list))
    )
  )
  (setq vla_layer
  (vla-add
    (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (if (snvalid (cdr (assoc "name" layer-list)))
        (cdr (assoc "name" layer-list))
        "0"
      )
    ) ;_ end of vla-add
 ) ;_ end of setq
  (vla-put-color
    vla_layer
    (if (setq buf (cdr (assoc "color" layer-list)))
      buf
      7
      ) ;_ end of if
    ) ;_ end of vla-put-color
  (vla-put-lineweight
    vla_layer
    (if (setq buf (cdr (assoc "lw" layer-list)))
      (if (member buf (list acLnWt000  acLnWt030  acLnWt090
    acLnWt005  acLnWt035  acLnWt100
    acLnWt009  acLnWt040  acLnWt106
    acLnWt013  acLnWt050  acLnWt120
    acLnWt015  acLnWt053  acLnWt140
    acLnWt018  acLnWt060  acLnWt158
    acLnWt020  acLnWt070  acLnWt200
    acLnWt025  acLnWt080  acLnWt211
    )
    )
    buf
    acLnWtByLwDefault
 )
      acLnWtByLwDefault
      ) ;_ end of if
    ) ;_ end of vla-put-lineweight
  (if (and (setq buf (cdr (assoc "lt" layer-list)))
    (_kpblc-linetype-load
      buf
      (cdr (assoc "ltfile" layer-list))
      ) ;_ end of _kpblc-linetype-load
    ) ;_ end of and
    (vla-put-linetype vla_layer (cdr (assoc "lt" layer-list)))
    (vla-put-linetype vla_layer "Continuous")
    ) ;_ end of if
  (vla-put-plottable
    vla_layer
    (if (= (cdr (assoc "plot" layer-list)) "n")
      :vlax-false
      :vlax-true
      ) ;_ end of if
    ) ;_ end of vla-put-Plottable
  (vla-put-lock vla_layer :vlax-false)
  (vla-put-layeron vla_layer :vlax-true)
  (if (not (equal (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
    vla_layer
    ) ;_ end of equal
    ) ;_ end of not
    (vla-put-freeze vla_layer :vlax-false)
    ) ;_ end of if
  vla_layer
  ) ;_ end of defun

;;;================== Сервисные ф-ции END

;;; Реактор

(or *kpblc-activedoc*
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object))))

(setq VLR-react (VLR-SysVar-Reactor nil (list '(:VLR-sysVarChanged . chrzmstyle)))) 
(defun chrzmstyle (name event / nstyle)
  (if (= (car event) "DIMSTYLE")
    (progn
      (setq nstyle (getvar "DIMSTYLE")
	    nstyle (str-str-lst nstyle "_")
	    nstyle (VL-STRING-RIGHT-TRIM "_" (apply 'strcat (mapcar '(lambda (x) (strcat x "_"))(cdr nstyle)))))
      (if (snvalid nstyle)
	(progn
	  (setq nstyle (strcat "Размерные_" nstyle))
	  (vla-put-activelayer *kpblc-activedoc*
          (_dwgru-layer-create (list (cons "name" nstyle))))
	  )
	)
      )
    )
  (princ) 
  )
;http://dwg.ru/f/showthread.php?t=14548
;АВТО Заполнение ведомости рабочих чертежей
(defun c:vrc (/ adoc alay ss pnt tbl attlst lst fld lock)
  (defun SortStringWithNumberAsNumber (ListOfString IgnoreCase / NorStrs count)
;;;Function Normalize (add 0 befor number) number in string
;;; Count normalize symbols set in variable count
;;; CAB added count as an argument
  (defun NormalizeNumberInString (str count / ch i pat ret buf)
    (setq i   0
          pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
          ret ""
    ) ;_ end of setq
    (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
      (if (vl-position ch pat)
        (progn
          (setq buf ch) ;_ end of setq
          (while
            (vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
             (setq buf (strcat buf ch))
          ) ;_ end of while
          (while (< (strlen buf) count) (setq buf (strcat "0" buf)))
          (setq ret (strcat ret buf))
        ) ;_ end of progn
      ) ;_ end of if
      (setq ret (strcat ret ch))
    ) ;_ end of while
    ret
  ) ;_ end of defun
  ;;-------------------------------------------------
  ;;  function to Count the longest number in string 
  ;;  CAB added to get the correct COUNT
  (defun getcount (lst / count pat)
    (setq count 0)
    (setq pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
    (mapcar
      '(lambda (str / i maxlen ch)
         (setq i 0 maxlen 0)
         (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
           (if (vl-position ch pat) ; number
             (setq maxlen (1+ maxlen))
             (setq count  (max count maxlen) maxlen 0)
           )
         )
  (setq count  (max count maxlen)) ;_<<< ADD 21.06.2007 by 
       )
      Lst
    )
    count
  )
  ;;===============================================
  (setq count   (GetCount ListOfString)
        NorStrs (mapcar '(lambda (x) (NormalizeNumberInString x count))
                        ListOfString)
  )
  (and IgnoreCase (setq NorStrs (mapcar 'strcase NorStrs)))
  (mapcar '(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs '<))
)
   (defun get-all-atts (obj)
  (if (and obj
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
    
      )
    (vl-catch-all-apply
      (function
 (lambda ()
   (mapcar (function (lambda (x)
         (list (vla-get-TagString x)
        (vla-get-TextString x)
                                    x
         )
       )
    )
    (append (vlax-invoke obj 'Getattributes)
     (vlax-invoke obj 'Getconstantattributes)
    )
   )
 )
      )
    )
  )
)
  (defun lib:get-active-space ()
  (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object)))) 
      (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))) 
      ) ;_ end of and 
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  ) ;_ end
  (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        alay (vla-get-activelayer adoc)
  )
  (if
(and
(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1))))
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
(setq attlst (mapcar '(lambda(x)(get-all-atts x)) lst))
(setq attlst (vl-remove-if-not '(lambda(x)(and (assoc "ЛИСТ" x)
                                               (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" x)
                                               )
                                  )
               attlst)
      )
(setq lst (SortStringWithNumberAsNumber (mapcar '(lambda (x)(cadr(assoc "ЛИСТ" x))) attlst) t))
(vl-catch-all-apply '(lambda()
(setq attlst (vl-sort attlst '(lambda(x y)(< (vl-position(cadr(assoc "ЛИСТ" x)) lst)(vl-position(cadr(assoc "ЛИСТ" y)) lst)))))
                       )
  )
 (setq pnt (vl-catch-all-apply
                       (function getpoint)
                       '("Точка вставки таблицы <Отказаться>: ")
                   )
     )
 (not (vl-catch-all-error-p pnt))
 (setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      3    ;_Кол-во столбцов
                      15  ;_высота строки
                      185 ;_ширина столбца
                    )
       )
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы"))))) t)
)
(progn
  (if (= (vla-get-lock alay) :vlax-true)
        (progn (vla-put-lock alay :vlax-false) (setq lock t))
      )
          (vla-put-regeneratetablesuppressed tbl :vlax-true)
          (vla-settext tbl 0 0 "Ведомость рабочих чертежей основного комплекта")
          (vla-setcellalignment tbl 0 0 acmiddlecenter)
          (vla-setcelltextheight tbl 0 0
                                      3.5  ;_Высота текста
            )
          (vla-settext tbl 1 0 "Лист")
          (vla-settext tbl 1 1 "Наименование")
          (vla-settext tbl 1 2 "Примечание")
          (vla-setcellalignment tbl 1 0 acMiddleCenter)
          (vla-setcellalignment tbl 1 1 acMiddleCenter)
          (vla-setcellalignment tbl 1 2 acMiddleCenter)
          (vla-setcelltextheight tbl 1 0
	                              3  ;_Высота текста лИСТ
            )
          (vla-setcelltextheight tbl 1 1
                                    3  ;_Высота текста Наименование
            )
          (vla-setcelltextheight tbl 1 2
                                    3  ;_Высота текста Примечание
            )
          (vla-setcolumnwidth tbl 0
                                  15 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                  140 ;_Ширина колонки Наименование
            )
          (vla-setcolumnwidth tbl 2
                                  30 ;_Ширина колонки Примечание
            )
          (vla-put-horzcellmargin tbl 1) ;_Отступ текста по горизонтали
          (vla-SetRowHeight tbl 0 13) ;_Высота строки Ведомость чертежей
          (vla-SetRowHeight tbl 1 15) ;_Высота строки Лист Обозначение Наименование
          (setq row 1)
          (foreach i attlst
	    (setq row (1+ row))
	    (vla-SetRowHeight tbl row 8) ;_Высота строки
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "ЛИСТ" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 0 fld)
            (vla-setcellalignment tbl row 0 acMiddleCenter)
            (vla-setcelltextheight tbl row 0
                             2.5  ;_Высота текста
              )
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             2.5  ;_Высота текста
              )
	    
            
            
            
            

          )
          (vla-put-regeneratetablesuppressed tbl :vlax-false)
          (vla-update tbl)
          (if lock (vla-put-lock alay :vlax-true))
        )
      )
  )
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 13.10.2008 в 16:06.
wetr вне форума  
 
Непрочитано 12.10.2008, 16:28
#111
VVA

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


wetr, Просто вставил vla-put-layer в конструкцию and, а она (vla-lut-layer) взвращает nil и and прекращает работу.
Замени
Код:
[Выделить все]
(vla-put-layer tbl (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы")))))
на
Код:
[Выделить все]
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы"))))) t)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 13.10.2008, 02:38
#112
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, отлично все работает!
Ну а чтобы все было идеально, нужно чтобы вставлялась таблица в нужном стиле. Это реализуемо?
(заменил код в №110. А кому лень копипастить прикрепляю файл)
Вложения
Тип файла: lsp vrc.lsp (13.3 Кб, 109 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 13.10.2008, 09:27
#113
Кулик Алексей aka kpblc
Moderator

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


Создать табличный стиль программно - реализуемо. После вставки таблицы применить к ней стиль - тоже можно. Проблема в другом В том, что ширины столбцов, например, касаются только таблицы как таковой и не хранятся в стиле.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.10.2008, 09:42
#114
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Что-то я не въехал в проблему
Сейчас в лиспе уже задаются размеры столбцов и строк. Т.е. какой стиль таблицы не выбери - создается таблица с нужными размерами ячеек. Но, не более. Стиль текста, толщины линий - это все зависит от стиля таблицы и там настраивается.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 13.10.2008, 10:22
#115
Кулик Алексей aka kpblc
Moderator

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


Я к тому, что таблицу надо будет сначала вставить, потом применять стиль, а потом перепроверять ячейки. У меня на 2006-м ADT такое было, до сих пор испуга хватает.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2008, 11:15
#116
ShaggyDoc

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


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

Сами таблицы (стобцы, ширина и прочее - в том числе, возможно и данные) надо вообще выносить из программы. Иначе потом замучаетесь на каждый случай кустарно программы делать. В ruCAD описание таблиц вынесено в XML. Например, таблица, показанная на рисунке в #79, описана так:
Код:
[Выделить все]
 
 
<?xml version="1.0" encoding="windows-1251" ?>
<table>
  <summaryinfo Title="ВЕДОМОСТЬ ЧЕРТЕЖЕЙ ОСНОВНОГО КОМПЛЕКТА"  Create_DTM="23.04.2007 11:56:48" RevNumber="4"/>
  <title rows="1" height="15" ask_title="1">
  <columns count="3">
    <column_1 size="15" type="STRING" align="C"/>
    <column_2 size="140" type="STRING"  align="L"/>
    <column_3 size="30" type="STRING" align="L"/>
  </columns>
    <row_1  height="15">
   <cell_1 text="Лист" />
   <cell_2 text="Наименование" />
   <cell_3 text="Примечание" />
 </row_1>
  </title>
  <data rows="1">
    <row_1>
      <column_1 data=""/>
      <column_2 data=""/>
      <column_3 data=""/>
    </row_1>
  </data>
</table>
В таком формате могут быть описаны любые таблицы. Для рисования в конкретной программе используется одна функция, вызываемая примерно так:

Код:
[Выделить все]
 
(setq table_obj (ru-table-xml-by-two-point
      "common\\_Ведомость чертежей основного комплекта"
      "ВЕДОМОСТЬ ЧЕРТЕЖЕЙ ОСНОВНОГО КОМПЛЕКТА "
            T
      lst_data_cells
    )
  )
Здесь в аргументах имя XML-файла описания таблицы и список данных для заполнения столбцов. Вот формирование этого списка и является главным в конкретной программе, такой как рассматриваемая в ветке. Можно сосредотачиваться на формировании списка и не думать, как же именно рисовать таблицу (она сама умеет рисоваться) и как переделывать для других случаев.

Это для размышления о возможных путях совершенствования.
ShaggyDoc вне форума  
 
Непрочитано 13.10.2008, 11:24
#117
Кулик Алексей aka kpblc
Moderator

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


ShaggyDoc, вопрос: а зачем в атрибутах, например, columns, хранить количество подэлементов? Они ж и так вычисляются (правда, я использую Microsoft'овский XML-parser...) По-моему, xml-файл можно подупростить (для вариантов ручного либо программного наращивания).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2008, 13:35
#118
ShaggyDoc

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ShaggyDoc, вопрос: а зачем в атрибутах, например, columns, хранить количество подэлементов? Они ж и так вычисляются (правда, я использую Microsoft'овский XML-parser...) По-моему, xml-файл можно подупростить (для вариантов ручного либо программного наращивания).
Здесь упрощать не надо. Если сразу задано количество колонок, нет необходимости читать все описания колонок, чтобы их пересчитать. Сразу видим, что колонок 3, а элемент каждой колонки именуется конкатенацией "column_" и номера. В том же LISP можно сразу формировать список данных.

Структуру, конечно, можно всякую предусматривать - любой парсер её прочитает (а MS-XML еще и испортит без спросу, даже при чтении). Но, если не указывать числа колонок (и строк данных), всё значительно замедляется. Сначала парсер должен будет выстроить полную объектную модель документа, а программист должен будет, обращаясь к модели, извлекать из свойств структуры количество колонок и прочее. Кроме того, иногда (не в этом случае) заголовки ячеек могут объединяться, и там надо точно задать номер ячейки, не надеясь, что парсер его правильно объединит.
ShaggyDoc вне форума  
 
Непрочитано 13.10.2008, 13:39
#119
Кулик Алексей aka kpblc
Moderator

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


Все, сегодня же забираю "САПР на базе". Пора обновляться...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2008, 15:46
#120
VVA

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


Цитата:
Сообщение от wetr Посмотреть сообщение
VVA, отлично все работает!
Ну а чтобы все было идеально, нужно чтобы вставлялась таблица в нужном стиле. Это реализуемо?
(заменил код в №110. А кому лень копипастить прикрепляю файл)
Что-то в #110 не увидил замены
По поводу стиля таблицы делаю примерно как сказал ShaggyDoc в #116.
Правда пошел по более легкому пути. Ручками создал нужный стиль, замтем "достал" его из словаря и сохранил ввиде списка. В автозагрузке есть такой кусочек
Код:
[Выделить все]
;;Добавляем стиль таблицы
(if (and (setq tb-dic(DICTSEARCH (NAMEDOBJDICT) "ACAD_TABLESTYLE"))
	 (not (member (cons 3 "МИП")(DICTSEARCH (NAMEDOBJDICT) "ACAD_TABLESTYLE"))))
  (progn
(setq tb (list
'(0 . "TABLESTYLE")
(cons 330 (CDR (ASSOC -1 tb-dic)))
'(100 . "AcDbTableStyle")
'(3 . "Standard")
'(70 . 0)
'(71 . 0)
'(40 . 1);Отступ
'(41 . 1);Отступ
'(280 . 0)
'(281 . 0)
'(7 . "МИП_ГОСТ")
'(140 . 2.5)
'(170 . 5)
'(62 . 256)
'(63 . 7)
'(283 . 0)
'(274 . -1)
'(284 . 1)
'(64 . 256)
'(275 . -1)
'(285 . 1)
'(65 . 256)
'(276 . -1)
'(286 . 1)
'(66 . 256)
'(277 . -1)
'(287 . 1)
'(67 . 256)
'(278 . -1)
'(288 . 1)
'(68 . 256)
'(279 . -1)
'(289 . 1)
'(69 . 256)
'(7 . "МИП_ГОСТ")
'(140 . 3.5)
'(170 . 5)
'(62 . 256)
'(63 . 256)
'(283 . 0)
'(274 . -2)
'(284 . 1)
'(64 . 0)
'(275 . -2)
'(285 . 1)
'(65 . 0)
'(276 . -2)
'(286 . 1)
'(66 . 0)
'(277 . -2)
'(287 . 1)
'(67 . 0)
'(278 . -2)
'(288 . 1)
'(68 . 0)
'(279 . -2)
'(289 . 1)
'(69 . 0)
'(7 . "МИП_ГОСТ")
'(140 . 3.0)
'(170 . 5)
'(62 . 256)
'(63 . 256)
'(283 . 0)
'(274 . -1)
'(284 . 1)
'(64 . 256)
'(275 . -1)
'(285 . 1)
'(65 . 256)
'(276 . -1)
'(286 . 1)
'(66 . 256)
'(277 . -1)
'(287 . 1)
'(67 . 256)
'(278 . -1)
'(288 . 1)
'(68 . 256)
'(279 . -1)
'(289 . 1)
'(69 . 256)
)
      )
(if (setq xr (entmakex tb))
(entmod (append tb-dic(list (cons 3 "МИП")(cons 350 xr)))))
(setq tb nil xr nil tb-dic nil )
))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.10.2008, 02:34
#121
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Заменил в №110.
Этот кусочек создает стиль таблицы "МИП". Осталось соединить все в одно целое и заставить таблицу вставляться в этом новом стиле.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 14.10.2008, 19:29
#122
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


wetr, так когда ждать окончание лиспа то?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 14.10.2008, 23:31
#123
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


wetr Я тут почитал твом посты, но пока не совсем понял что в итоге ты намерен получить. Хочешь чтобы таблица создавалась на определенном слою? Offtop: или может "на определенном слое"? Запутался.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 15.10.2008, 01:58
#124
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Red Nova, она уже создается на слое "_Таблицы", но с текущим стилем таблиц. Я хочу, чтобы получился конечный ПРОДУКТ - чтобы не менять ничего впоследствии.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 15.10.2008, 02:17
#125
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от dextron3 Посмотреть сообщение
wetr, так когда ждать окончание лиспа то?
Как только лисп изучу
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 15.10.2008, 09:08
#126
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Offtop: Продуктом называют результат различных процессов:
всякое произведение человеческого труда;
созданные для обмена продукты являются товаром;
продукт радиоактивного распада является нуклидом;
продуктом химической реакции является образовавшееся вещество;
аналогично, образовавшаяся субстанция является продуктом жизнедеятельности организма;

и тому подобное.

__________________
Блог
Red Nova вне форума  
 
Непрочитано 15.10.2008, 11:06
#127
VVA

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


Цитата:
Сообщение от wetr Посмотреть сообщение
Как только лисп изучу
На основе #110. Создание стиля таблицы вынес в отдельную ф-цию
table-style-make. В ней изменить поля
Код:
[Выделить все]
 '(7 . "МИП_ГОСТ") ;;;; _ТЕКСТОВЫЙ СТИЛЬ
на свой СУЩЕСТВУЮЩИЙ в момент создания стиля таблицы ТЕСКТОВЫЙ СТИЛЬ.
Изменения в команде VRC выделил красным
Не проверял, но должна работать
Код:
[Выделить все]
(vl-load-com)
;;;================== Сервисные ф-ции BEGIN
(defun table-style-make ( table-style-name / tb xr tb-dic ret)
;;;Создаем стиль таблицы
;;  table-style-name - имя стиля [String]
;; Возвращает t - стиль создан
;;            nil - нет
  ;;Добавляем стиль таблицы такого нет. Не пересоздается, если существует
(if (and (setq tb-dic(DICTSEARCH (NAMEDOBJDICT) "ACAD_TABLESTYLE"))
  (not (setq ret(member (cons 3 table-style-name)(DICTSEARCH (NAMEDOBJDICT) "ACAD_TABLESTYLE")))))
  (progn
(setq tb (list
'(0 . "TABLESTYLE")
(cons 330 (CDR (ASSOC -1 tb-dic)))
'(100 . "AcDbTableStyle")
'(3 . "Standard")
'(70 . 0)
'(71 . 0)
'(40 . 1);Отступ
'(41 . 1);Отступ
'(280 . 0)
'(281 . 0)
'(7 . "МИП_ГОСТ") ;;;; _ТЕКСТОВЫЙ СТИЛЬ
'(140 . 2.5)
'(170 . 5)
'(62 . 256)
'(63 . 7)
'(283 . 0)
'(274 . -1)
'(284 . 1)
'(64 . 256)
'(275 . -1)
'(285 . 1)
'(65 . 256)
'(276 . -1)
'(286 . 1)
'(66 . 256)
'(277 . -1)
'(287 . 1)
'(67 . 256)
'(278 . -1)
'(288 . 1)
'(68 . 256)
'(279 . -1)
'(289 . 1)
'(69 . 256)
'(7 . "МИП_ГОСТ") ;;;; _ТЕКСТОВЫЙ СТИЛЬ
'(140 . 3.5)
'(170 . 5)
'(62 . 256)
'(63 . 256)
'(283 . 0)
'(274 . -2)
'(284 . 1)
'(64 . 0)
'(275 . -2)
'(285 . 1)
'(65 . 0)
'(276 . -2)
'(286 . 1)
'(66 . 0)
'(277 . -2)
'(287 . 1)
'(67 . 0)
'(278 . -2)
'(288 . 1)
'(68 . 0)
'(279 . -2)
'(289 . 1)
'(69 . 0)
'(7 . "МИП_ГОСТ") ;;;; _ТЕКСТОВЫЙ СТИЛЬ
'(140 . 3.0)
'(170 . 5)
'(62 . 256)
'(63 . 256)
'(283 . 0)
'(274 . -1)
'(284 . 1)
'(64 . 256)
'(275 . -1)
'(285 . 1)
'(65 . 256)
'(276 . -1)
'(286 . 1)
'(66 . 256)
'(277 . -1)
'(287 . 1)
'(67 . 256)
'(278 . -1)
'(288 . 1)
'(68 . 256)
'(279 . -1)
'(289 . 1)
'(69 . 256)
)
      )
(if (setq ret(setq xr (entmakex tb)))
(entmod (append tb-dic(list (cons 3 table-style-name)(cons 350 xr)))))
))
  ret
  )
;|
* Ф-ция str-str-lst
* Сервисная ф-ция извлечения из строки данных, разделенных
* каким либо символом или строкой символов
* Возвращает список строк
* Аргументы [Type]:
  str - строка для разбора [STRING]
  pat - разделитель [STRING]
*  Пример запуска
  (setq str "мы;изучаем;рекурсии" pat ";")
  (setq str "мы — изучаем — рекурсии" pat " — ")
  (str-str-lst str pat)
* Читать подробнее http://www.autocad.ru/cgi-bin/f1/board.cgi?t=25113OT
|;
(defun str-str-lst (str pat / i)
  (cond ((= str "") nil)
        ((setq i (vl-string-search pat str))
         (cons (substr str 1 i)
               (str-str-lst (substr str (+ (strlen pat) 1 i)) pat)
         ) ;_  cons
        )
        (t (list str))
  ) ;_  cond
) ;_  defun
;|=============================================================================
*   На основе ф-ции _kpblc-layer-create
* 
*   пост № 47
*   Добавлен новый  параметр  suff - суффикс слоя, если он есть, то имя слоя получаестся путем
*   добавления к имени существующего слоя суффикса suff
*   Создание слоя с указанными параметрами.
*   Параметры вызова:
*   layer-list   список параметров слоя вида:
   '(("name" . "TestLayer")   ; имя слоя. может быть пропущено, если указан suff
     ("color" . 3)         ; номер цвета. nil -> 7
     ("lw" . 50)         ; вес линии слоя. nil -> 25
*                          Оно выражается в сотых долях миллиметра и может быть любым
*                          из следующего ряда: 0, 5, 9, 13, 15, 18, 20, 25, 30, 35, 40, 50, 53, 60, 70,
*                          80, 90, 100, 106, 120, 140, 158, 200 и 211.
     ("lt" . "hidden")      ; тип линии слоя. nil -> Continuous
               ; Если описания типа линии в acadiso.lin
               ; нет, обязательно указывать следующий
               ; параметр
   ("ltfile" . "c:\\cad\\ltypes\\lt.lin")   ; полный путь к файлу с описанием
               ; типа линии. Если файл находится в путях
               ; поддержки, путь можно не указывать
   ("plot" . "y")         ; Печатать ("y") или нет ("n") слой.
               ; nil -> "y"
   ("suff" . "_Размеры")  ;_Добавляемый суффикс с текущему слою. Если задан, поле "name" игнорируется            
   )
*    Возвращает vla-указатель на созданный слой. Если слой существует, его
* настройки приводятся в соответствие с переданным списком.
*    Слой размораживается, разблокируется и включается. Не активируется.
* Примеры:
  (_dwgru-layer-create '(("name" . "Test")("color" . 1)("lw" . 50)))
* создать если нет и слой Test цветом 1 (красный) весом линии 0.5
=========================================================================|;
(defun _dwgru-layer-create (layer-list / vla_layer buf)
       (setq *MIP-CLAYER-PROP-SETTING*
     (list (cons "layer"
   (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
   ) ;_ end of cons
    (cons "color" (getvar "cecolor"))
    (cons "lw" (getvar "celweight"))
    (cons "lt" (getvar "celtype"))
    ) ;_ end of list
    ) ;_ end of setq
  ;;;Если есть suff добавляем в начало списка,
  ;;;чтобы assoc нашел раньше
  (if (cdr(assoc "suff" layer-list))
    (progn
     (setq layer-list (vl-remove (assoc "name" layer-list) layer-list))
     (setq layer-list (append (list(cons "name" (strcat (getvar "clayer") (cdr(assoc "suff" layer-list))))) layer-list))
    )
  )
  (setq vla_layer
  (vla-add
    (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (if (snvalid (cdr (assoc "name" layer-list)))
        (cdr (assoc "name" layer-list))
        "0"
      )
    ) ;_ end of vla-add
 ) ;_ end of setq
  (vla-put-color
    vla_layer
    (if (setq buf (cdr (assoc "color" layer-list)))
      buf
      7
      ) ;_ end of if
    ) ;_ end of vla-put-color
  (vla-put-lineweight
    vla_layer
    (if (setq buf (cdr (assoc "lw" layer-list)))
      (if (member buf (list acLnWt000  acLnWt030  acLnWt090
    acLnWt005  acLnWt035  acLnWt100
    acLnWt009  acLnWt040  acLnWt106
    acLnWt013  acLnWt050  acLnWt120
    acLnWt015  acLnWt053  acLnWt140
    acLnWt018  acLnWt060  acLnWt158
    acLnWt020  acLnWt070  acLnWt200
    acLnWt025  acLnWt080  acLnWt211
    )
    )
    buf
    acLnWtByLwDefault
 )
      acLnWtByLwDefault
      ) ;_ end of if
    ) ;_ end of vla-put-lineweight
  (if (and (setq buf (cdr (assoc "lt" layer-list)))
    (_kpblc-linetype-load
      buf
      (cdr (assoc "ltfile" layer-list))
      ) ;_ end of _kpblc-linetype-load
    ) ;_ end of and
    (vla-put-linetype vla_layer (cdr (assoc "lt" layer-list)))
    (vla-put-linetype vla_layer "Continuous")
    ) ;_ end of if
  (vla-put-plottable
    vla_layer
    (if (= (cdr (assoc "plot" layer-list)) "n")
      :vlax-false
      :vlax-true
      ) ;_ end of if
    ) ;_ end of vla-put-Plottable
  (vla-put-lock vla_layer :vlax-false)
  (vla-put-layeron vla_layer :vlax-true)
  (if (not (equal (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
    vla_layer
    ) ;_ end of equal
    ) ;_ end of not
    (vla-put-freeze vla_layer :vlax-false)
    ) ;_ end of if
  vla_layer
  ) ;_ end of defun
;;;================== Сервисные ф-ции END
;;; Реактор
(or *kpblc-activedoc*
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object))))
(setq VLR-react (VLR-SysVar-Reactor nil (list '(:VLR-sysVarChanged . chrzmstyle)))) 
(defun chrzmstyle (name event / nstyle)
  (if (= (car event) "DIMSTYLE")
    (progn
      (setq nstyle (getvar "DIMSTYLE")
     nstyle (str-str-lst nstyle "_")
     nstyle (VL-STRING-RIGHT-TRIM "_" (apply 'strcat (mapcar '(lambda (x) (strcat x "_"))(cdr nstyle)))))
      (if (snvalid nstyle)
 (progn
   (setq nstyle (strcat "Размерные_" nstyle))
   (vla-put-activelayer *kpblc-activedoc*
          (_dwgru-layer-create (list (cons "name" nstyle))))
   )
 )
      )
    )
  (princ) 
  )

;АВТО Заполнение ведомости рабочих чертежей
(defun c:vrc (/ adoc alay ss pnt tbl attlst lst fld lock)
  (defun SortStringWithNumberAsNumber (ListOfString IgnoreCase / NorStrs count)
;;;Function Normalize (add 0 befor number) number in string
;;; Count normalize symbols set in variable count
;;; CAB added count as an argument
  (defun NormalizeNumberInString (str count / ch i pat ret buf)
    (setq i   0
          pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
          ret ""
    ) ;_ end of setq
    (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
      (if (vl-position ch pat)
        (progn
          (setq buf ch) ;_ end of setq
          (while
            (vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
             (setq buf (strcat buf ch))
          ) ;_ end of while
          (while (< (strlen buf) count) (setq buf (strcat "0" buf)))
          (setq ret (strcat ret buf))
        ) ;_ end of progn
      ) ;_ end of if
      (setq ret (strcat ret ch))
    ) ;_ end of while
    ret
  ) ;_ end of defun
  ;;-------------------------------------------------
  ;;  function to Count the longest number in string 
  ;;  CAB added to get the correct COUNT
  (defun getcount (lst / count pat)
    (setq count 0)
    (setq pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
    (mapcar
      '(lambda (str / i maxlen ch)
         (setq i 0 maxlen 0)
         (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
           (if (vl-position ch pat) ; number
             (setq maxlen (1+ maxlen))
             (setq count  (max count maxlen) maxlen 0)
           )
         )
  (setq count  (max count maxlen)) ;_<<< ADD 21.06.2007 by 
       )
      Lst
    )
    count
  )
  ;;===============================================
  (setq count   (GetCount ListOfString)
        NorStrs (mapcar '(lambda (x) (NormalizeNumberInString x count))
                        ListOfString)
  )
  (and IgnoreCase (setq NorStrs (mapcar 'strcase NorStrs)))
  (mapcar '(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs '<))
)
   (defun get-all-atts (obj)
  (if (and obj
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
    
      )
    (vl-catch-all-apply
      (function
 (lambda ()
   (mapcar (function (lambda (x)
         (list (vla-get-TagString x)
        (vla-get-TextString x)
                                    x
         )
       )
    )
    (append (vlax-invoke obj 'Getattributes)
     (vlax-invoke obj 'Getconstantattributes)
    )
   )
 )
      )
    )
  )
)
  (defun lib:get-active-space ()
  (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object)))) 
      (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))) 
      ) ;_ end of and 
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  ) ;_ end
  (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        alay (vla-get-activelayer adoc)
  )
  (if (table-style-make "VRC")(setvar "CTABLESTYLE" "VRC"))
  (if
(and
(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1))))
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
(setq attlst (mapcar '(lambda(x)(get-all-atts x)) lst))
(setq attlst (vl-remove-if-not '(lambda(x)(and (assoc "ЛИСТ" x)
                                               (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" x)
                                               )
                                  )
               attlst)
      )
(setq lst (SortStringWithNumberAsNumber (mapcar '(lambda (x)(cadr(assoc "ЛИСТ" x))) attlst) t))
(vl-catch-all-apply '(lambda()
(setq attlst (vl-sort attlst '(lambda(x y)(< (vl-position(cadr(assoc "ЛИСТ" x)) lst)(vl-position(cadr(assoc "ЛИСТ" y)) lst)))))
                       )
  )
 (setq pnt (vl-catch-all-apply
                       (function getpoint)
                       '("Точка вставки таблицы <Отказаться>: ")
                   )
     )
 (not (vl-catch-all-error-p pnt))
 (setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      3    ;_Кол-во столбцов
                      15  ;_высота строки
                      185 ;_ширина столбца
                    )
       )
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create '(("name" . "Таблицы"))))) t)
)
(progn
  (if (= (vla-get-lock alay) :vlax-true)
        (progn (vla-put-lock alay :vlax-false) (setq lock t))
      )
          (vla-put-regeneratetablesuppressed tbl :vlax-true)
          (vla-settext tbl 0 0 "Ведомость рабочих чертежей основного комплекта")
          (vla-setcellalignment tbl 0 0 acmiddlecenter)
          (vla-setcelltextheight tbl 0 0
                                      3.5  ;_Высота текста
            )
          (vla-settext tbl 1 0 "Лист")
          (vla-settext tbl 1 1 "Наименование")
          (vla-settext tbl 1 2 "Примечание")
          (vla-setcellalignment tbl 1 0 acMiddleCenter)
          (vla-setcellalignment tbl 1 1 acMiddleCenter)
          (vla-setcellalignment tbl 1 2 acMiddleCenter)
          (vla-setcelltextheight tbl 1 0
                               3  ;_Высота текста лИСТ
            )
          (vla-setcelltextheight tbl 1 1
                                    3  ;_Высота текста Наименование
            )
          (vla-setcelltextheight tbl 1 2
                                    3  ;_Высота текста Примечание
            )
          (vla-setcolumnwidth tbl 0
                                  15 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                  140 ;_Ширина колонки Наименование
            )
          (vla-setcolumnwidth tbl 2
                                  30 ;_Ширина колонки Примечание
            )
          (vla-put-horzcellmargin tbl 1) ;_Отступ текста по горизонтали
          (vla-SetRowHeight tbl 0 13) ;_Высота строки Ведомость чертежей
          (vla-SetRowHeight tbl 1 15) ;_Высота строки Лист Обозначение Наименование
          (setq row 1)
          (foreach i attlst
     (setq row (1+ row))
     (vla-SetRowHeight tbl row 8) ;_Высота строки
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "ЛИСТ" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 0 fld)
            (vla-setcellalignment tbl row 0 acMiddleCenter)
            (vla-setcelltextheight tbl row 0
                             2.5  ;_Высота текста
              )
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             2.5  ;_Высота текста
              )
          )
          (vla-put-regeneratetablesuppressed tbl :vlax-false)
          (vla-update tbl)
          (if lock (vla-put-lock alay :vlax-true))
        )
      )
  )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 19.09.2015 в 22:34.
VVA вне форума  
 
Автор темы   Непрочитано 17.10.2008, 05:21
#128
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Да, все работает. Но есть одно «но». Стиль таблицы создаваемый программно, имеет размеры по госту и текстовый стиль какой хочешь. Но толщины линий д.б. разные. Такие как сделал RedNova в стиле «Ведомость чертежей». Как мне показалось, программно этого нельзя сделать. Может тогда не создавать стиль в программе, а просто назначать. А в шаблоне он и так всегда лежит (у меня). Уже неловко как-то просить тебя по мелочам всяким. Экспериментирую тут с твоим кодом. Пытаюсь разобраться хотя бы с этой строчкой

Код:
[Выделить все]
(if (table-style-make "VRC")(setvar "CTABLESTYLE" "VRC"))
Функция if имеет 2 параметра/аргумента. Судя по описанию:
« if(E1 E2 [E3])
Вычисляется выражение E1. Если оно истинно (не NIL), то выполняется выражение E2, иначе - E3», if имеет 3 аргумента.
Т.е. если NIL -> то, ничего не происходит?

Я добавил
Код:
[Выделить все]
(setvar "CTABLESTYLE" "Ведомость чертежей")
в код из 110, вроде работает

Думаю правильней было бы конструкцию
(if (table-style-make "VRC")(setvar "CTABLESTYLE" "VRC"))
записать как
(if (имеется_в_чертеже_стиль "Ведомость чертежей")(setvar "CTABLESTYLE" " Ведомость чертежей ") ("CTABLESTYLE" "Standard"))???

Итого получившийся код имеет вид
Код:
[Выделить все]
(vl-load-com)
;;;================== Сервисные ф-ции BEGIN

;|
* Ф-ция str-str-lst
* Сервисная ф-ция извлечения из строки данных, разделенных
* каким либо символом или строкой символов
* Возвращает список строк
* Аргументы [Type]:
  str - строка для разбора [STRING]
  pat - разделитель [STRING]
*  Пример запуска
  (setq str "мы;изучаем;рекурсии" pat ";")
  (setq str "мы — изучаем — рекурсии" pat " — ")
  (str-str-lst str pat)
* Читать подробнее http://www.autocad.ru/cgi-bin/f1/board.cgi?t=25113OT
|;
(defun str-str-lst (str pat / i)
  (cond ((= str "") nil)
        ((setq i (vl-string-search pat str))
         (cons (substr str 1 i)
               (str-str-lst (substr str (+ (strlen pat) 1 i)) pat)
         ) ;_  cons
        )
        (t (list str))
  ) ;_  cond
) ;_  defun
;|=============================================================================
*   На основе ф-ции _kpblc-layer-create
*   http://dwg.ru/forum/viewtopic.php?t=3116&start=45&sid=fab803bd4dbda125ffdc6c07563f682a
*   пост № 47
*   Добавлен новый  параметр  suff - суффикс слоя, если он есть, то имя слоя получаестся путем
*   добавления к имени существующего слоя суффикса suff
*   Создание слоя с указанными параметрами.
*   Параметры вызова:
*   layer-list   список параметров слоя вида:
   '(("name" . "TestLayer")   ; имя слоя. может быть пропущено, если указан suff
     ("color" . 3)         ; номер цвета. nil -> 7
     ("lw" . 50)         ; вес линии слоя. nil -> 25
*                          Оно выражается в сотых долях миллиметра и может быть любым
*                          из следующего ряда: 0, 5, 9, 13, 15, 18, 20, 25, 30, 35, 40, 50, 53, 60, 70,
*                          80, 90, 100, 106, 120, 140, 158, 200 и 211.
     ("lt" . "hidden")      ; тип линии слоя. nil -> Continuous
               ; Если описания типа линии в acadiso.lin
               ; нет, обязательно указывать следующий
               ; параметр
   ("ltfile" . "c:\\cad\\ltypes\\lt.lin")   ; полный путь к файлу с описанием
               ; типа линии. Если файл находится в путях
               ; поддержки, путь можно не указывать
   ("plot" . "y")         ; Печатать ("y") или нет ("n") слой.
               ; nil -> "y"
   ("suff" . "_Размеры")  ;_Добавляемый суффикс с текущему слою. Если задан, поле "name" игнорируется            
   )
*    Возвращает vla-указатель на созданный слой. Если слой существует, его
* настройки приводятся в соответствие с переданным списком.
*    Слой размораживается, разблокируется и включается. Не активируется.
* Примеры:
  (_dwgru-layer-create '(("name" . "Test")("color" . 1)("lw" . 50)))
* создать если нет и слой Test цветом 1 (красный) весом линии 0.5

=========================================================================|;

(defun _dwgru-layer-create (layer-list / vla_layer buf)
       (setq *MIP-CLAYER-PROP-SETTING*
     (list (cons "layer"
   (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
   ) ;_ end of cons
    (cons "color" (getvar "cecolor"))
    (cons "lw" (getvar "celweight"))
    (cons "lt" (getvar "celtype"))
    ) ;_ end of list
    ) ;_ end of setq

  ;;;Если есть suff добавляем в начало списка,
  ;;;чтобы assoc нашел раньше
  (if (cdr(assoc "suff" layer-list))
    (progn
     (setq layer-list (vl-remove (assoc "name" layer-list) layer-list))
     (setq layer-list (append (list(cons "name" (strcat (getvar "clayer") (cdr(assoc "suff" layer-list))))) layer-list))
    )
  )
  (setq vla_layer
  (vla-add
    (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (if (snvalid (cdr (assoc "name" layer-list)))
        (cdr (assoc "name" layer-list))
        "0"
      )
    ) ;_ end of vla-add
 ) ;_ end of setq
  (vla-put-color
    vla_layer
    (if (setq buf (cdr (assoc "color" layer-list)))
      buf
      7
      ) ;_ end of if
    ) ;_ end of vla-put-color
  (vla-put-lineweight
    vla_layer
    (if (setq buf (cdr (assoc "lw" layer-list)))
      (if (member buf (list acLnWt000  acLnWt030  acLnWt090
    acLnWt005  acLnWt035  acLnWt100
    acLnWt009  acLnWt040  acLnWt106
    acLnWt013  acLnWt050  acLnWt120
    acLnWt015  acLnWt053  acLnWt140
    acLnWt018  acLnWt060  acLnWt158
    acLnWt020  acLnWt070  acLnWt200
    acLnWt025  acLnWt080  acLnWt211
    )
    )
    buf
    acLnWtByLwDefault
 )
      acLnWtByLwDefault
      ) ;_ end of if
    ) ;_ end of vla-put-lineweight
  (if (and (setq buf (cdr (assoc "lt" layer-list)))
    (_kpblc-linetype-load
      buf
      (cdr (assoc "ltfile" layer-list))
      ) ;_ end of _kpblc-linetype-load
    ) ;_ end of and
    (vla-put-linetype vla_layer (cdr (assoc "lt" layer-list)))
    (vla-put-linetype vla_layer "Continuous")
    ) ;_ end of if
  (vla-put-plottable
    vla_layer
    (if (= (cdr (assoc "plot" layer-list)) "n")
      :vlax-false
      :vlax-true
      ) ;_ end of if
    ) ;_ end of vla-put-Plottable
  (vla-put-lock vla_layer :vlax-false)
  (vla-put-layeron vla_layer :vlax-true)
  (if (not (equal (vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
    vla_layer
    ) ;_ end of equal
    ) ;_ end of not
    (vla-put-freeze vla_layer :vlax-false)
    ) ;_ end of if
  vla_layer
  ) ;_ end of defun

;;;================== Сервисные ф-ции END

;;; Реактор

(or *kpblc-activedoc*
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object))))

(setq VLR-react (VLR-SysVar-Reactor nil (list '(:VLR-sysVarChanged . chrzmstyle)))) 
(defun chrzmstyle (name event / nstyle)
  (if (= (car event) "DIMSTYLE")
    (progn
      (setq nstyle (getvar "DIMSTYLE")
	    nstyle (str-str-lst nstyle "_")
	    nstyle (VL-STRING-RIGHT-TRIM "_" (apply 'strcat (mapcar '(lambda (x) (strcat x "_"))(cdr nstyle)))))
      (if (snvalid nstyle)
	(progn
	  (setq nstyle (strcat "Размерные_" nstyle))
	  (vla-put-activelayer *kpblc-activedoc*
          (_dwgru-layer-create (list (cons "name" nstyle))))
	  )
	)
      )
    )
  (princ) 
  )
;http://dwg.ru/f/showthread.php?t=14548
;АВТО Заполнение ведомости рабочих чертежей
(defun c:vrc (/ adoc alay ss pnt tbl attlst lst fld lock)
  (defun SortStringWithNumberAsNumber (ListOfString IgnoreCase / NorStrs count)
;;;Function Normalize (add 0 befor number) number in string
;;; Count normalize symbols set in variable count
;;; CAB added count as an argument
  (defun NormalizeNumberInString (str count / ch i pat ret buf)
    (setq i   0
          pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
          ret ""
    ) ;_ end of setq
    (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
      (if (vl-position ch pat)
        (progn
          (setq buf ch) ;_ end of setq
          (while
            (vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
             (setq buf (strcat buf ch))
          ) ;_ end of while
          (while (< (strlen buf) count) (setq buf (strcat "0" buf)))
          (setq ret (strcat ret buf))
        ) ;_ end of progn
      ) ;_ end of if
      (setq ret (strcat ret ch))
    ) ;_ end of while
    ret
  ) ;_ end of defun
  ;;-------------------------------------------------
  ;;  function to Count the longest number in string 
  ;;  CAB added to get the correct COUNT
  (defun getcount (lst / count pat)
    (setq count 0)
    (setq pat '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
    (mapcar
      '(lambda (str / i maxlen ch)
         (setq i 0 maxlen 0)
         (while (/= (setq ch (substr str (setq i (1+ i)) 1)) "")
           (if (vl-position ch pat) ; number
             (setq maxlen (1+ maxlen))
             (setq count  (max count maxlen) maxlen 0)
           )
         )
  (setq count  (max count maxlen)) ;_<<< ADD 21.06.2007 by 
       )
      Lst
    )
    count
  )
  ;;===============================================
  (setq count   (GetCount ListOfString)
        NorStrs (mapcar '(lambda (x) (NormalizeNumberInString x count))
                        ListOfString)
  )
  (and IgnoreCase (setq NorStrs (mapcar 'strcase NorStrs)))
  (mapcar '(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs '<))
)
   (defun get-all-atts (obj)
  (if (and obj
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
    
      )
    (vl-catch-all-apply
      (function
 (lambda ()
   (mapcar (function (lambda (x)
         (list (vla-get-TagString x)
        (vla-get-TextString x)
                                    x
         )
       )
    )
    (append (vlax-invoke obj 'Getattributes)
     (vlax-invoke obj 'Getconstantattributes)
    )
   )
 )
      )
    )
  )
)
  (defun lib:get-active-space ()
  (if (and (zerop (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object)))) 
      (= :vlax-false (vla-get-mspace (vla-get-activedocument (vlax-get-acad-object)))) 
      ) ;_ end of and 
    (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  ) ;_ end
  (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        alay (vla-get-activelayer adoc)
  )
  (setvar "CTABLESTYLE" "Ведомость чертежей")
  (if
(and
(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1))))
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
(setq attlst (mapcar '(lambda(x)(get-all-atts x)) lst))
(setq attlst (vl-remove-if-not '(lambda(x)(and (assoc "ЛИСТ" x)
                                               (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" x)
                                               )
                                  )
               attlst)
      )
(setq lst (SortStringWithNumberAsNumber (mapcar '(lambda (x)(cadr(assoc "ЛИСТ" x))) attlst) t))
(vl-catch-all-apply '(lambda()
(setq attlst (vl-sort attlst '(lambda(x y)(< (vl-position(cadr(assoc "ЛИСТ" x)) lst)(vl-position(cadr(assoc "ЛИСТ" y)) lst)))))
                       )
  )
 (setq pnt (vl-catch-all-apply
                       (function getpoint)
                       '("Точка вставки таблицы <Отказаться>: ")
                   )
     )
 (not (vl-catch-all-error-p pnt))
 (setq tbl (vla-addtable (lib:get-active-space)
                      (vlax-3d-point (trans pnt 1 0))
                      (+ (length attlst) 2)
                      3    ;_Кол-во столбцов
                      15  ;_высота строки
                      185 ;_ширина столбца
                    )
       )
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create '(("name" . "_Таблицы")("lw" . 15))))) t)
)
(progn
  (if (= (vla-get-lock alay) :vlax-true)
        (progn (vla-put-lock alay :vlax-false) (setq lock t))
      )
          (vla-put-regeneratetablesuppressed tbl :vlax-true)
          (vla-settext tbl 0 0 "Ведомость рабочих чертежей основного комплекта")
          (vla-setcellalignment tbl 0 0 acmiddlecenter)
          (vla-setcelltextheight tbl 0 0
                                      3.5  ;_Высота текста
            )
          (vla-settext tbl 1 0 "Лист")
          (vla-settext tbl 1 1 "Наименование")
          (vla-settext tbl 1 2 "Примечание")
          (vla-setcellalignment tbl 1 0 acMiddleCenter)
          (vla-setcellalignment tbl 1 1 acMiddleCenter)
          (vla-setcellalignment tbl 1 2 acMiddleCenter)
          (vla-setcelltextheight tbl 1 0
	                              3  ;_Высота текста лИСТ
            )
          (vla-setcelltextheight tbl 1 1
                                    3  ;_Высота текста Наименование
            )
          (vla-setcelltextheight tbl 1 2
                                    3  ;_Высота текста Примечание
            )
          (vla-setcolumnwidth tbl 0
                                  15 ;_Ширина колонки Лист
            )
          (vla-setcolumnwidth tbl 1
                                  140 ;_Ширина колонки Наименование
            )
          (vla-setcolumnwidth tbl 2
                                  30 ;_Ширина колонки Примечание
            )
          (vla-put-horzcellmargin tbl 1) ;_Отступ текста по горизонтали
          (vla-SetRowHeight tbl 0 13) ;_Высота строки Ведомость чертежей
          (vla-SetRowHeight tbl 1 15) ;_Высота строки Лист Обозначение Наименование
          (setq row 1)
          (foreach i attlst
	    (setq row (1+ row))
	    (vla-SetRowHeight tbl row 8) ;_Высота строки
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "ЛИСТ" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 0 fld)
            (vla-setcellalignment tbl row 0 acMiddleCenter)
            (vla-setcelltextheight tbl row 0
                             2.5  ;_Высота текста
              )
            (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (caddr (assoc "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" i))))
                ">%).TextString \\f \"%tc3\">%"
                ) ;_ strcat
          )
            (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             2.5  ;_Высота текста
              )
	    
            
            
            
            

          )
          (vla-put-regeneratetablesuppressed tbl :vlax-false)
          (vla-update tbl)
          (if lock (vla-put-lock alay :vlax-true))
        )
      )
  )

В файле должен быть стиль таблицы "Ведомость чертежей". Для примера выкладываю файл, где все работает
Вложения
Тип файла: lsp vrc.lsp (13.4 Кб, 114 просмотров)
Тип файла: dwg
DWG 2004
Рамка.dwg (142.1 Кб, 2335 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 17.10.2008 в 13:43.
wetr вне форума  
 
Непрочитано 17.10.2008, 11:27
#129
VVA

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


wetr, Ты уже где-то писал, что понял для чего пишутся коментарии в лисп программах
Код:
[Выделить все]
(defun table-style-make ( table-style-name / tb xr tb-dic ret)
;;;Создаем стиль таблицы
;;; читать http://forum.dwg.ru/showpost.php?p=295877&postcount=120
;;  table-style-name - имя стиля [String]
;; Возвращает t - стиль создан
;;            nil - нет
  ;;Добавляем стиль таблицы такого нет. Не пересоздается, если существует
Теперь разбираем
Код:
[Выделить все]
(if                               ;_Начало оператора
(table-style-make "VRC") ;_Ф-ция table-style-make вернет t (истина) если 
                         ;_создан стиль VRC
(setvar "CTABLESTYLE" "VRC") ;_Если стиль создан делаем текущим
)  ;_Заканчивем if
Я еще выделил синим, что стиль не меняется, если существует
Поэтому можно смело менять
(if (table-style-make "VRC")(setvar "CTABLESTYLE" "VRC"))
на
(if (table-style-make "Ведомость чертежей")(setvar "CTABLESTYLE" "Ведомость чертежей"))

Вариант
(if (имеется_в_чертеже_стиль "Ведомость чертежей")(setvar "CTABLESTYLE" " Ведомость чертежей ") ("CTABLESTYLE" "Standard"))???
(для замены (if (table-style-make "VRC")(setvar "CTABLESTYLE" "VRC"))
Код:
[Выделить все]
(if (member (cons 3 "Ведомость чертежей")(DICTSEARCH (NAMEDOBJDICT) "ACAD_TABLESTYLE"))(setvar "CTABLESTYLE" "Ведомость чертежей"))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.10.2008, 13:40
#130
ShaggyDoc

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


Цитата:
Но толщины линий д.б. разные. Как мне показалось, программно этого нельзя сделать.
А как же ишшо их, толщины, программисту делать? Ну не руками же.
vla-setgridlineweight, vla-setcellgridlineweight
Только надо с умом, чтобы одни линии были "толстенькие", а другие тоненькие. Шоб по стандарту.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 20.10.2008, 16:45
#131
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Резюмируя:

Мы имеем лисп от VVA, который создает "Ведомость рабочих чертежей основного комплекта"
- Ведомость создается в виде таблицы с полями.
- Обязательно использование блока с атрибутами.
- Таблицы вставляется в слое _Таблица. Если слоя нет - он создается
- Таблицы вставляются в Стиле таблиц "Ведомость чертежей", оформленные по ГОСТ. Если стиля нет - он создается. Единственное условие - наличие в файле текстового стиля Vlad_style (в моем случае). Стиль текста меняется в лиспе - там помечено. Единственное "но" - создаваемая программно таблица(если стиля "Ведомость чертежей" нет в файле он создается) будет иметь толщины линий одинаковые (чуть-чуть не по гост). Но так-как в моем шаблоне всегда есть этот стиль настроенный точно под ГОСТ (спасибо Red Nova) то я и не парюсь
Вложения
Тип файла: lsp vrc.lsp (15.1 Кб, 103 просмотров)
Тип файла: dwg
DWG 2007
Рамка.dwg (227.8 Кб, 2584 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 21.10.2008, 15:50
#132
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


А можно подробную инструкцию к примерам? Как например добавить новые позиции в таблицу (добавлял лист с блоком-рамкой, regen all, vrc -- новой позиции нет)?
В 2008 автокаде многострочный атрибут или отображается с \P или (после открытия-закрытия блока в редакторе блоков) преобразуется в однострочный.
b00 вне форума  
 
Автор темы   Непрочитано 21.10.2008, 16:18
#133
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


b00,
Цитата:
Как например добавить новые позиции в таблицу (добавлял лист с блоком-рамкой, regen all, vrc -- новой позиции нет)?
Новой позиции не будет - вставляй новую таблицу, старую удаляй.
Цитата:
В 2008 автокаде многострочный атрибут или отображается с \P
Когда заполняешь многострочный атрибут, не жамкай ентер. Это он вылазит в виде \P. Просто набирай текст - он сам перенесется на новую строку. Или потаскай за грипсы многострочного атрибута в редакторе блоков.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 21.10.2008, 16:36
#134
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от wetr Посмотреть сообщение
b00,
Новой позиции не будет - вставляй новую таблицу, старую удаляй.
Я не могу понять, как ее вставлять, чтобы сформировался список чертежей
Код:
[Выделить все]
Command: VRC
; error: too few arguments
В общем хорошо бы man по команде в первый пост добавить
Цитата:
Сообщение от wetr Посмотреть сообщение
b00,
Когда заполняешь многострочный атрибут, не жамкай ентер. Это он вылазит в виде \P. Просто набирай текст - он сам перенесется на новую строку. Или потаскай за грипсы многострочного атрибута в редакторе блоков.
Спасибо!

Последний раз редактировалось b00, 21.10.2008 в 16:52.
b00 вне форума  
 
Непрочитано 21.10.2008, 17:22
#135
VVA

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


b00,
Цитата:
Я не могу понять, как ее вставлять, чтобы сформировался список чертежей
Посмотри этот файл примера wetr
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.10.2008, 17:38
#136
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Вот тут в теме пример проскакивал
Последняя версия vrc.lsp позволяет подобное или нет? И если позволяет, то какие аргументы передавать для vrc?
b00 вне форума  
 
Автор темы   Непрочитано 21.10.2008, 18:01
#137
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


b00, с какого поста брал код?
VVA, я тут подумал... (не пугайся )
В общем мой блок-рамка имеет пункт "Листов". Т.е. сколько всего штук.
благодаря твоей подсказке
http://forum.dwg.ru/showpost.php?p=110593&postcount=3
я сделал макрос на кнопку запускающую VRC
Код:
[Выделить все]
^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;all;;vrc
Сильно ногами не пинать - это мой первый макрос.
Прочитал, что переменные USERI* нужно стараться обходить стороной. Типа их все могут переопределять и тогда - "Ой". Но здесь вроде по другому не сделаешь.
Ну так вот, в блоке сделал поле в
Код:
[Выделить все]
%<\AcDiesel $(-,$(getvar,USERI1), 1)>%
т.к. у меня первый лист титульный.
И, вуаля, кол-во листов прописывается само. А теперь вопрос:
Почему у меня не получилось проделать тот же фокус с лиспом?
Т.е. я тупо вбил строчку
Код:
[Выделить все]
(setvar "USERI1" (length(layoutlist)))
после всего кода VRC, а он не срабатывал. Точнее срабатывал только 1 раз при перезапуске автокада, а при изменениях в текущей сессии результато в не давал. Что я сделал не так?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 22.10.2008 в 02:26.
wetr вне форума  
 
Непрочитано 21.10.2008, 18:07
#138
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от wetr Посмотреть сообщение
b00, с какого поста брал код?
Отсюда (как и пример чертежа):
131
b00 вне форума  
 
Непрочитано 21.10.2008, 18:29
#139
VVA

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


wetr, b00, В примере #131 в лиспе ищется имя тага атрибута наименование чертежа "НАИМЕНОВАНИЕ.ЧЕРТЕЖА", а в блоке штампа "НАИМЕНОВАНИЕ.ЧЕРТЕЖА_001". Лисп не работает. Через пару минут выложу вариант vrc с настройками.
*** Добавлено
Вариант с настройками и файлом примера. Как работает написано вначале
Вложения
Тип файла: rar Ведомость чертежей.rar (66.7 Кб, 139 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 21.10.2008 в 18:48.
VVA вне форума  
 
Автор темы   Непрочитано 22.10.2008, 03:21
#140
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, СУПЕР! Все создается программно. Вынес все настройки в 1 место - спасибо, намного удобнее.
Только я не нашел ни в 1 файле тэг атрибута "НАИМЕНОВАНИЕ.ЧЕРТЕЖА_001". Может он сам приписывается? Я пробовал на 2х компах - не нашел, в лиспе исправил на "НАИМЕНОВАНИЕ.ЧЕРТЕЖА", заработало.
Выложу наверное в первом посте пояснения и ссылку на файлы - вроде уже идеал!
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 22.10.2008, 08:31
#141
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


VVA, спасибо!
b00 вне форума  
 
Непрочитано 22.10.2008, 10:43
#142
VVA

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


>wetr Я имел ввиду имя тега атрибута в блоке
*** Добавлено.
По поводу текста в 1-м посте
Ограничения на Автокад 2008 только из-за того, что там используется многострочный Атрибут. Программе все равно какой, лишь бы тэг совпадал. Поэтому если не использовать многострочные атрибуты, то можно и с 2006 (так как используются поля). Кстати в примере из #139 файл в формате 2004 Автокада и все работает.
Миниатюры
Нажмите на изображение для увеличения
Название: VRC.jpg
Просмотров: 240
Размер:	35.3 Кб
ID:	11347  
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 22.10.2008 в 10:50.
VVA вне форума  
 
Автор темы   Непрочитано 22.10.2008, 10:51
#143
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Нету у меня такого...
Миниатюры
Нажмите на изображение для увеличения
Название: пример.jpg
Просмотров: 208
Размер:	67.6 Кб
ID:	11350  
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 22.10.2008, 10:54
#144
VVA

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


Допускаю, что при пересохранении в формат 2004 Автокад сам меняет имя тэга многострочного атрибута
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.10.2008, 11:01
#145
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
По поводу текста в 1-м посте
Исправил
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 22.10.2008, 14:13
#146
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от wetr Посмотреть сообщение
и еще вопрос ко всем.
Как можно в полях убрать часть текстового значения аргумента. Например, получаю значение "A3 альбомная" а нужно только А3. Может кто помнит???
Цитата:
Сообщение от wetr Посмотреть сообщение
Задача решилась.
Как решилась? Я блок рамки для себя редактировал и поломал это поле Не пойму, как исправить, тоже лезет "А4 альбомная" и т.п. в лучшем случае.
5...6 страницы темы.
b00 вне форума  
 
Автор темы   Непрочитано 22.10.2008, 14:36
#147
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


b00, зайди в атрибут, вставь поле (Ctrl+F), МестозаполнительБлока(blockplaceholder), ссылка на lookup.
Или скачай заново мой блок
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 22.10.2008 в 15:41.
wetr вне форума  
 
Непрочитано 22.10.2008, 14:57
#148
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


wetr, вот что там сейчас у меня (если через редактор блоков смотреть):
Код:
[Выделить все]
%<\AcObjProp.16.2 Object(?BlockRefId,1).Parameter(93).lookupString>%
Это оно или нет?
Если заново скачаю -- придется заново менять. Тогда и поломать заново могу

Если не через редактор блоков править, то выглядит так:
Миниатюры
Нажмите на изображение для увеличения
Название: example.JPG
Просмотров: 191
Размер:	61.0 Кб
ID:	11373  
b00 вне форума  
 
Автор темы   Непрочитано 22.10.2008, 15:42
#149
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Нужно выбрать "МестозаполнительБлока". Но он доступен только из редактора блоков, а не так как ты открываешь.
***Добавлено.
Но сначала нужно для Lookup parameter "Выбор" выставить "Показывать в свойствах" в свойствах. Только после этого он станет доступным в полях как "МестозаполнительБлока"
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 22.10.2008 в 15:47.
wetr вне форума  
 
Непрочитано 22.10.2008, 15:50
#150
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от wetr Посмотреть сообщение
Нужно выбрать "МестозаполнительБлока". Но он доступен только из редактора блоков, а не так как ты открываешь.
Да вроде все так, не знаю...
Цитата:
Сообщение от b00 Посмотреть сообщение
Код:
[Выделить все]
%<\AcObjProp.16.2 Object(?BlockRefId,1).Parameter(93).lookupString>%
А результат не тот
Если картинкой, то см. выделенную строку:
Миниатюры
Нажмите на изображение для увеличения
Название: example1.jpg
Просмотров: 162
Размер:	41.3 Кб
ID:	11374  
b00 вне форума  
 
Автор темы   Непрочитано 22.10.2008, 16:11
#151
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


выложи файл
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 22.10.2008, 16:15
#152
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


прочти в посте 149 после слова ***Добавлено
Это как раз для тебя
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 22.10.2008, 16:26
#153
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от wetr Посмотреть сообщение
прочти в посте 149 после слова ***Добавлено
Это как раз для тебя
уффффф!
Починил
Спасибо!
b00 вне форума  
 
Непрочитано 11.11.2008, 11:45
#154
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA
У меня возникли проблемы с армянским вариантом программы. Таблицу я настроил, но автокад по видимому имеет аллергию на то, что в таблицах поля с армянскими символами. Либо файл портится, либо такие поля просто пропадают, сначала вроде все как с русским вариантом, но чуток поработаешь и фатал эррор гарантирован . Можно переделать лисп с #69 так, чтобы текст из штампов записывался в таблицу не полем, а просто текстом?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 11.11.2008, 19:11
#155
VVA

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


У меня сейчас запарка до 20 ноября. Напомни после 20
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.11.2008, 19:26
#156
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Запишу в мобильник напоминалку на 21-е.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 21.11.2008, 16:29
#157
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Уже 21-е число
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 04.02.2009, 15:50
#158
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Я получаю много вопросов в личку по поводу использования этой программы. Я думаю лучше общаться здесь, ведь часто возникают одинаковые вопросы.
Вот например переписка

Цитата:
Сообщение от Nikolay 2
Цитата:
Сообщение от wetr
Цитата:
Сообщение от Nikolay 2
Еще раз стучусь в ПМ, вопрос такого плана: можно ли организовать выбор листов (проект 125 листов и все в одну табличку....а сворачивает ее Кад в 3-4 столбца не совсем красиво. У VVA в предыдущем варианте была такая функция (вот только сама таблица не совсем нормальная), как ее реализовать можно?
Не совсем понял суть вопроса. Можно поподробней - что не получается?
Если есть аська - то лучше туда пиши или в jabber
Аськи нет, есть Skype. В предыдушей версии у VVA было так: в ком. строке vrc и выпадает менюшка (наверное на vba или делфи), с возможностью выбора листов, котрые будут внесены в ведомость чертежей. Выбираю 1.....35, далее ОК, потом -предложение вставить таблицу - вставляю, потом в ком. строке снова ввожу vrc - выпадает менюшка - выбираю 36....75 - Ок - вставляю таблицу рядом, и т.д. Сейчас возможности выбрать листы, которые будут добавлены в ведомость нет, сразу предлагает вставить таблицу и она формируется из всех листов...
Странно. Зачем 5 раз создавать таблицы, если можно сделать 1 объект и на 5 столбцов разделить.
Я бы так сделал. Если я правильно понял проблему...
Цитата:
а сворачивает ее Кад в 3-4 столбца не совсем красиво
М.б. ты не все настройки таблиц видел? Там можно все сделать.
См. прикрепленный файл.
Или тебе нужна только часть ведомости?
Вложения
Тип файла: rar Рамка.rar (173.2 Кб, 108 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 04.02.2009, 16:45
1 | #159
VVA

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


>wetr
Версия vrc от 04.02.2008 24.05.2013 23-01-2014.
Добавлена возможность заполнять таблицу полями, текстом, выбирать или нет листы. Подробности в начале лиспа. Протестируй и если нормально, то обнови 1-й пост. Файл для тестирования брать в 1-м посте.
2014-01-23 Добавлена функция BG:GET-TEXTSTRING (как замена vla-get-textstring. Т.к. неверно возвращает строку при наличии юникод символов) Смотреть здесь
Команды:
VRC - таблица с полями, все листы
VRCTS - таблица с Tекстом, выбор (S) листов
VRCTN - таблица с Tекстом, нет (N) выбора листов
VRCFS - таблица с полями (F), выбор (S) листов
Вложения
Тип файла: dwg
DWG 2004
Пример Ведомость чертежей.dwg (110.4 Кб, 2432 просмотров)
Тип файла: lsp vrc_VVA_2018_03_08.lsp (40.9 Кб, 187 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 08.03.2018 в 23:40. Причина: Обработка x64
VVA вне форума  
 
Непрочитано 04.02.2009, 18:10
#160
Nikolay 2


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


Цитата:
Сообщение от VVA Посмотреть сообщение
>wetr
Версия vrc от 04.02.2008. Добавлена возможность заполнять таблицу полями, текстом, выбирать или нет листы. Подробности в начале лиспа. Протестируй и если нормально, то обнови 1-й пост. Файл для тестирования брать в 1-м посте. Команды:
VRC - таблица с полями, все листы
VRCTS - таблица с Tекстом, выбор (S) листов
VRCTN - таблица с Tекстом, нет (N) выбора листов
VRCFS - таблица с полями (F), выбор (S) листов
Хоть и не мне адресовалось, но не идет....протокол по F2 приложен

Почему то написал в первый раз, что некорректный файл
Вложения
Тип файла: rar Протокол_.rar (710 байт, 139 просмотров)

Последний раз редактировалось Nikolay 2, 04.02.2009 в 18:30.
Nikolay 2 вне форума  
 
Непрочитано 04.02.2009, 18:21
#161
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Nikolay 2 Посмотреть сообщение
Хоть и не мне адресовалось, но не идет....протокол по F2 приложен
Где?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.02.2009, 18:26
#162
Nikolay 2


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


Странно. Зачем 5 раз создавать таблицы, если можно сделать 1 объект и на 5 столбцов разделить.
Я бы так сделал. Если я правильно понял проблему...


М.б. ты не все настройки таблиц видел? Там можно все сделать.
См. прикрепленный файл.
Или тебе нужна только часть ведомости?[/quote]

И получается, что таблицы, кроме первой обезглавлены... По поводу наличия заголовка в каждой таблицы один мой знакомый сказал "всю жизнь так делаем", и ты знаешь, я ему верю. Причина одна - он проектирует столько, сколько я живу, шутка ли 50 лет (и еще работает, и держат его не из уважения, а за профессионализм. Хорошо здоровье позволяет). Были времена (давно правда) сомневался в этой фразе, но потом поковырявшись в нормативах убеждался в правоте и теперь фраза из его уст "всю жизнь так делаем" для меня означает "учите матчасть, Николай". Извиняюсь перед модераторами за флейм. Ну должен быть у каждой таблицы заголовок...


оп!!!! извинения для vetr касательно заголовков, заголовки поставил и пр. настройки тоже, да, матчасть пошел учить...

Последний раз редактировалось Nikolay 2, 04.02.2009 в 19:18. Причина: извинения для vetr
Nikolay 2 вне форума  
 
Непрочитано 04.02.2009, 18:26
#163
VVA

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


Где протокол?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.02.2009, 18:31
#164
Nikolay 2


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


Вложил в предыдущий ответ
Nikolay 2 вне форума  
 
Непрочитано 04.02.2009, 18:39
#165
VVA

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


Обновил #159
Вот что должно быть в протоколе
Цитата:
Команда: _appload
vrc_VVA.lsp успешно загружено.

Команда:
Ведомость рабочих чертежей версия 04.02.2009. Наберите:
VRC - таблица с полями, все листы
VRCTS - таблица с Tекстом, выбор (S) листов
VRCTN - таблица с Tекстом, нет (N) выбора листов
VRCFS - таблица с полями (F), выбор (S) листов
Команда:
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 04.02.2009 в 19:03. Причина: Чуток ошибся номером поста
VVA вне форума  
 
Непрочитано 04.02.2009, 18:57
#166
Nikolay 2


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Обновил #160
Вот что должно быть в протоколе
Именно так и есть, все работает. Большое спасибо, думаю от многих. Глупая конечно мысль пришла, но все же, можно ли изменив название чертежа, например в "таблице с Tекстом, выбор (S) листов" сделать так, чтобы он изменился в соответствующем листе?
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 21.04.2009, 07:33
#167
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Nikolay 2 Посмотреть сообщение
Глупая конечно мысль пришла, но все же, можно ли изменив название чертежа, например в "таблице с Tекстом, выбор (S) листов" сделать так, чтобы он изменился в соответствующем листе?
Ничего и не глупая. Заполнение многострочных атрибутов довольно трудоемкое занятие, связанное к тому же с переключением листов.
Но лучший вариант опять подшивки.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 11.09.2009, 10:12
#168
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, в 2010 автокаде не хочет работать лисп
Код:
[Выделить все]
_VRCTN ; error: bad argument type: consp "3"
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 06.09.2010, 03:02
#169
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, а каким образом заставить программу вставлять ведомость в таблицу, в нужном мне стиле таблиц? Программа всегда создает стиль таблиц "Ведомость чертежей"?
Все дело в том, что у нас теперь цветозависимые стили печати, и цвет текста в разных строках таблицы - разный. Это для того, чтоб более высокий текст имел большую толщину, как требует ГОСТ.
Так вот, когда я заменил в строке
Код:
[Выделить все]
(if (table-style-make "Ведомость чертежей" (text-style-make text-style-name text-font-file))(setvar "CTABLESTYLE" "Ведомость чертежей"))
"Ведомость чертежей" на "Основной"(наш стиль таблиц с настроенными цветами), то программа затерла настройки существующего стиля. Как это можно обойти?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 06.09.2010 в 03:11.
wetr вне форума  
 
Непрочитано 06.09.2010, 11:10
#170
VVA

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


wetr, Смотреть код vrc_VVA.lsp с поста #1?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.09.2010, 15:40
#171
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а как можно использовать лисп без блочного штампа?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 06.09.2010, 18:25
#172
VVA

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


А как названия листов собирать?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.09.2010, 19:04
#173
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а что если создать блочный текст?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 07.09.2010, 02:24
#174
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, смотрю "код vrc_VVA.lsp с поста #1"

Код:
[Выделить все]
(defun table-style-make ( table-style-name text-style-name / tb xr tb-dic ret)
;;;Создаем стиль таблицы
;;; читать http://forum.dwg.ru/showpost.php?p=295877&postcount=120
;;  table-style-name - имя стиля [String]
;;  text-style-name  - имя текстового стиля таблицы [String]
;; Возвращает t - стиль создан
;;            nil - нет
  ;;Добавляем стиль таблицы такого нет. Не пересоздается, если существует
но table-style-name нет в настройках лиспа
Код:
[Выделить все]
 (setq Tag-Name-LIST "ЛИСТ"                       ;;; ИМЯ ТЭГА АТРИБУТА БЛОКА, в котором хранится номер листа
        Tag-Name-NCHERT "НАИМЕНОВАНИЕ.ЧЕРТЕЖА"     ;;; ИМЯ ТЭГА АТРИБУТА БЛОКА, в котором хранится наименование чертежа
        Table-layer    "_Таблицы"                  ;;; Слой, на который будет вставляться таблица
        text-style-name "Ведомость чертежей"       ;;; Имя стиля текста таблицы
        text-font-file  "MIPGOST.SHX"              ;;; Файл шрифта стиля текста таблицы Скачать можно здесь http://dwg.ru/dnl/147 или вписать свой
        )
а table-style-make я пробовал менять на имя существующего стиля таблиц, программа затерает существующий стиль
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 07.09.2010, 10:22
#175
VVA

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


Цитата:
Сообщение от dextron3 Посмотреть сообщение
VVA, а что если создать блочный текст?
Это какой-то новый примитив Автокада? Если текст в блоке, то это и есть "блочный штамп"

Цитата:
Сообщение от wetr Посмотреть сообщение
VVA, смотрю "код vrc_VVA.lsp с поста #1"
Изменил немного код. Добавил переменную для стиля таблиц. Принцип такой: если стиля таблицы с таким именем нет, то создается с настройками какие и были, если стиля таблицы с таким именем еcть, то со стилем ничего не делается. Обновил код в посте #159. Протестируй, если нормально, то то обнови 1-й пост
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.09.2010, 12:32
#176
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а что если таблица не влазиет в формат листа как ее на две части к примеру разбить



VVA, у меня есть идея воспользоваться таким алгоритмом:

1. Надписи в штампе состоят из блочных штампов как вы говорите, но чтобы просто можно копирывать было из лайаута в лайаут без проблем и потом они распозновались как отдельные блочки
2. Запускаем лисп он согласно нумерации лайаутов и расположения в лайауте согласно оси Х и Y объединяет название в лайауте и в итоге выдает перечень старниц просто в блокноте как вы делали 2 года назад
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 07.09.2010, 13:49
#177
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Изменил немного код. Добавил переменную для стиля таблиц. Принцип такой: если стиля таблицы с таким именем нет, то создается с настройками какие и были, если стиля таблицы с таким именем еcть, то со стилем ничего не делается. Обновил код в посте #159. Протестируй, если нормально, то то обнови 1-й пост
Спасибо, завтра буду тестировать
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 07.09.2010, 15:13
#178
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


пара вопросиков подскажите кому не лень
пытаюсь прикрутить автонумератор http://dwg.ru/dnl/1929 вот этот, нумерует только тот лист на котором выделено, можно сделать чтоб нумеровал все листы? (расположены в листах соответственно)

объясните пожалуйста, как сделано что в блоке идет ссылка на текст с вкладки "титул" ну хотя бы на примере "шифр!!!" чего то никак догнать не могу. Спасибо
kifa вне форума  
 
Автор темы   Непрочитано 08.09.2010, 01:37
#179
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, все работает! Спасибо! Обновил первый пост

kifa,
http://forum.dwg.ru/showthread.php?t=35047 вопрос №5
автонумератор

Цитата:
VVA, а что если таблица не влазиет в формат листа как ее на две части к примеру разбить
dextron3, в таблицах это предусмотрено - посмотри внимательней
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 08.09.2010 в 01:53.
wetr вне форума  
 
Непрочитано 08.09.2010, 09:35
#180
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от wetr Посмотреть сообщение
Владивосток
Сообщений: 1,381
Отправить сообщение для wetr с помощью ICQ

VVA, все работает! Спасибо! Обновил первый пост

kifa,
http://forum.dwg.ru/showthread.php?t=35047 вопрос №5
автонумератор
спасибо огромное!
kifa вне форума  
 
Непрочитано 08.09.2010, 13:21
#181
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


VVA, скажите, пожалуйста, если использовать пакетную обработку файлов по лиспу в 6-м сообщении темы возможно ли возникновение каких-либо проблем?
__________________
"Молодой человек, Вы не представляете всей широты поставленной перед Вами задачи." © Панкратова Г.Е.
kha вне форума  
 
Непрочитано 08.09.2010, 17:07
#182
VVA

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


Да. Навскидку:
1. Файл сохранен в формате более старшей версии Автокада.
2. Файл испорчен и при открытии требует выполнить _recover
3. В файле есть ссылка на несуществующий файл форм. И при его открытии будет болтаться окно запроса.
4. Наличие Proxy объектов.
Почитай тему Последовательное применение lisp-функции к множеству файлов Там описаны и другие варианты обработки. Я бы остановился на варианте №4 из поста #4 по ссылке
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.09.2010, 17:46
#183
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а на мой вопрос?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 08.09.2010, 18:17
#184
VVA

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


Цитата:
Сообщение от dextron3 Посмотреть сообщение
VVA, а на мой вопрос?
На твой вопрос ответил wetr
Цитата:
Сообщение от wetr Посмотреть сообщение
dextron3, в таблицах это предусмотрено - посмотри внимательней
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.09.2010, 21:10
#185
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а про идею с алгоритмом?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 08.09.2010, 22:20
#186
VVA

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


Цитата:
Сообщение от dextron3 Посмотреть сообщение
1. Надписи в штампе состоят из блочных штампов как вы говорите, но чтобы просто можно копирывать было из лайаута в лайаут без проблем и потом они распозновались как отдельные блочки
Не вижу никаких проблем. Создаешь блок из одних атрибутов и копируешь сколько нужно и куда нужно.

Цитата:
Сообщение от dextron3 Посмотреть сообщение
2. Запускаем лисп он согласно нумерации лайаутов и расположения в лайауте согласно оси Х и Y объединяет название в лайауте и в итоге выдает перечень старниц просто в блокноте как вы делали 2 года назад
Здесь не понятно. Причем здесь X и Y. Название листа берется из атрибута. Где-то на форуме были программы по синхронизации названий листов и атрибутов. Ну и наконец если я это делал 2 года назад, то почему бы этим не воспользоваться?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.09.2010, 06:46
#187
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, я пользуюсь, а представьте что вам чужой чертеж дали где обычные текста и нет блоков а надо сделать лист общих данных
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 02.08.2011, 17:15
#188
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


В запарке не всегда удаётся отследить - нажал Enter или нет при вводе наименования чертежа. Это незаметно на рамке, но при формировании ведомости всплывают косячки.
Надоело каждый раз править и добавил очистку форматирования наименования чертежа:

Код:
[Выделить все]
	    (if IsField
              (setq fld (strcat " %<\\AcObjProp Object(%<\\_ObjId "
                                (vl-princ-to-string(vla-get-objectid (caddr (assoc Tag-Name-NCHERT i))))
                                ">%).TextString \\f \"%tc3\">%"
                                ) ;_ strcat
                    )
              (setq fld (vl-princ-to-string (cadr (assoc Tag-Name-NCHERT i))))
              )
;;;;	    Убираем форматирование наименования чертежа, заданное пользователем
           (while (wcmatch fld "*\\P*")
              (setq fld (vl-string-subst "" "\\P" fld))
	     )
	   (while (wcmatch fld "*   *")
              (setq fld (vl-string-subst " " "   " fld))
	     )
	   (while (wcmatch fld "*  *")
              (setq fld (vl-string-subst " " "  " fld))
	     )
	   (setq fld (vl-string-left-trim "\\W0.7000;" fld))
;;;         Закончили уборку форматирования наименования чертежа
	    (vla-settext tbl row 1 fld)
            (vla-setcellalignment tbl row 1 acMiddleLeft)
            (vla-setcelltextheight tbl row 1
                             3  ;_Высота текста
              )
Здесь же убираются лишние пробелы в наименовании чертежа, а также параметр сжатия текста по горизонтали.

UPD:

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

Код:
[Выделить все]
          (vla-put-horzcellmargin tbl 2) ;_Отступ текста по горизонтали
          (vla-put-vertcellmargin tbl 1) ;_Отступ текста по вертикали
            (vla-SetRowHeight tbl 0 8) ;_Высота строки Ведомость чертежей
          (vla-SetRowHeight tbl 1 8) ;_Высота строки Лист Обозначение Наименование
__________________
"Молодой человек, Вы не представляете всей широты поставленной перед Вами задачи." © Панкратова Г.Е.

Последний раз редактировалось kha, 04.08.2011 в 13:14.
kha вне форума  
 
Непрочитано 23.08.2011, 10:48
#189
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


Прикрутил ещё одну опцию - формирование ведомости рабочих чертежей по выбору секущей рамкой:

(and
;;(setq ss (ssget "_X" '((0 . "INSERT")(66 . 1)))) - было
(setq ss (ssget '((0 . "INSERT")(66 . 1)))) ;;;; - стало
(setq lst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex ss)))))
__________________
"Молодой человек, Вы не представляете всей широты поставленной перед Вами задачи." © Панкратова Г.Е.
kha вне форума  
 
Непрочитано 04.04.2012, 14:36
#190
baklushev


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


При использовании программы в Win 7x64 (авосад 10 русс) в таблице (в полях -номер листа и наименование) появляются звезды.
В Win XP32 (автосад 9 англ) все работало. Не подскажите в чем дело?
baklushev вне форума  
 
Непрочитано 04.04.2012, 18:32
#191
VVA

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


baklushev, Я думаю, что проблема в этом ( см. пост #4 решение в #8)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.04.2012, 22:30
#192
baklushev


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


VVA Спасибо! Вроде стало все на месте
baklushev вне форума  
 
Непрочитано 01.06.2012, 13:28
#193
baklushev


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


В таблице (ведомость рабочих чертежей, поля - наименование) перед названием листа стоят знаки (\W0.9000. Как от них избавиться? Сейчас разбиваю поля и удаляю вручную (поиск и замена).
baklushev вне форума  
 
Непрочитано 01.06.2012, 13:53
#194
VVA

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


попробуй убрать форматирование http://forum.dwg.ru/showthread.php?t=24790
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.08.2012, 14:01
#195
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


и так и сяк пробую вставить кусок когда, чтоб поля нормлаьно отображались, в каде 2011, система winows 7 ультимейт х64. Ставлю в конец, все правильно делаю?
код беру отсюда
http://forum.dwg.ru/showthread.php?t=51822
kifa вне форума  
 
Непрочитано 24.05.2013, 13:54
#196
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Давно не использовал лисп. На 2013-м x64 пробую код с поста #159. Вариант с полями выдает вместо требуемого названия "####". Вариант без полей показывает вопросы вместо армянского шрифта (с русским нормально). Шрифт прилагаю.
Вложения
Тип файла: rar CS Arm Unicode.rar (11.9 Кб, 34 просмотров)
Red Nova вне форума  
 
Непрочитано 24.05.2013, 13:57
#197
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


мой лисп в х64 нормально работает. исправлял...долго и упорно вроде получилось
Вложения
Тип файла: lsp vrc_VVA.lsp (32.4 Кб, 58 просмотров)
kifa вне форума  
 
Непрочитано 24.05.2013, 14:43
#198
VVA

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


kifa, Спасибо. Именно в этом и дело. В своем варианте убери в конце файла цифру 39
Обновил #159
Red Nova, Шрифт пока не тестировал. Попробуй обновленный вариант. М.б. дело было в этом
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.05.2013, 14:58
#199
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
Пробую обновленный код.

Код:
[Выделить все]
Command: VRC
nil
Command:
Command: VRCFS
nil
Command:
Command: VRCTN
nil
Command:
Command: VRCTS
nil
Command:

Последний раз редактировалось Red Nova, 24.05.2013 в 15:04.
Red Nova вне форума  
 
Непрочитано 24.05.2013, 22:15
#200
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от VVA Посмотреть сообщение
В своем варианте убери в конце файла цифру 39
спасибо подчищу
kifa вне форума  
 
Непрочитано 30.05.2013, 16:17
#201
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


При наличие свободного времени прошу знающих товарищей глянуть почему таки обновленный код с #159 не заработал (2013x64)
Red Nova вне форума  
 
Непрочитано 30.05.2013, 17:22
1 | #202
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


моё решение для нанокада (акада с cs спдс)
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 19.06.2013, 19:06
#203
VVA

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


Цитата:
Сообщение от Red Nova Посмотреть сообщение
VVA,
Пробую обновленный код.
Я проверил #159 работает на W7 x64 Acad2013 x64 SP2. Возможно у тебя не совпадали tag'и атрибутов. Я обновил #159, добавил файл с примером. В lsp файлы таги атрибутов настроены на файл примера
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.07.2013, 10:45
#204
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA,
После того как удалил ранее прописанные в автозагрузке файлы лисп заработал. Но, как и прежде, при варианте без полей вместо армянских букв одни вопросы. Шрифт прилагаю.
Вложения
Тип файла: rar vrc arm.rar (199.9 Кб, 53 просмотров)
Red Nova вне форума  
 
Непрочитано 22.11.2013, 21:59
#205
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от kha Посмотреть сообщение
В запарке не всегда удаётся отследить - нажал Enter или нет при вводе наименования чертежа. Это незаметно на рамке, но при формировании ведомости всплывают косячки.
Надоело каждый раз править и добавил очистку форматирования наименования чертежа:
Для работы с полями код или с текстом? С текстом вроде работает, а вот с полями нет, есть решения как в полях убирать непечатные символы, сейчас то руками подчистил, так на будущее спрашиваю?
kifa вне форума  
 
Непрочитано 23.11.2013, 13:55
#206
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Red Nova Посмотреть сообщение
Но, как и прежде, при варианте без полей вместо армянских букв одни вопросы.
Можно попробовать такой вариант
У меня вот что получилось
Изображения
Тип файла: jpg Арм.JPG (79.9 Кб, 485 просмотров)
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 25.11.2013, 15:21
#207
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


Цитата:
Сообщение от kifa Посмотреть сообщение
Для работы с полями код или с текстом? С текстом вроде работает, а вот с полями нет, есть решения как в полях убирать непечатные символы, сейчас то руками подчистил, так на будущее спрашиваю?
с полями не делаю содержание, к сожалению не могу подсказать по этому поводу
__________________
"Молодой человек, Вы не представляете всей широты поставленной перед Вами задачи." © Панкратова Г.Е.
kha вне форума  
 
Непрочитано 28.11.2013, 10:16
#208
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


maratovich
Интересная программка. Все же я предпочитаю наш лисп. Правда для "не русских" проектов приходится только вариант с полями использовать. Так что потом все взрываем!
Red Nova вне форума  
 
Непрочитано 28.11.2013, 10:18
#209
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Red Nova Посмотреть сообщение
Правда для "не русских" проектов приходится только вариант с полями использовать. Так что потом все взрываем!
А что именно не устроило ? И зачем взрываете ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 28.11.2013, 10:45
#210
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


maratovich Да нет, все норм. Просто есть короткий путь к которому уже привык и который мы с VVA и wetr давно разжевали и используем. Взрывать не обязательно, мне так спокойнее .
Red Nova вне форума  
 
Непрочитано 16.12.2013, 08:06
#211
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


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

Пример файла прикладываю.
Вложения
Тип файла: dwg
DWG 2010
Автоматика для освещения.dwg (1.08 Мб, 3087 просмотров)
kifa вне форума  
 
Непрочитано 16.12.2013, 09:20
#212
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
в названия чертежей добавляются интеры, соответственно едет форматирование и в ведомости появляются /Р
/Р появляется если использовать enter в многострочном атрибуте из которого копируется название чертежа, ставь пробелы.
Цитата:
плюс к этому едет высота шрифта
А у них твой шрифт точно подгружен, это ведь не стандартный Автокадовский?
Red Nova вне форума  
 
Непрочитано 16.12.2013, 09:24
#213
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от Red Nova Посмотреть сообщение
/Р появляется если использовать enter в многострочном атрибуте из которого копируется название чертежа, ставь пробелы.
В том то и дело что у меня пробелов нигде нет, enter никогда не использую. А у них при открытии они откуда то возникают.


Цитата:
Сообщение от Red Nova Посмотреть сообщение
А у них твой шрифт точно подгружен, это ведь не стандартный Автокадовский?
Да этот шрифт они мне и присылали, я до этого всегда стандартный arial использовал и проблем не было.
kifa вне форума  
 
Непрочитано 16.12.2013, 09:33
#214
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
В том то и дело что у меня пробелов нигде нет, enter никогда не использую. А у них при открытии они откуда то возникают.
У меня открыл как enter. Если ты их не использовал то возможно баг многострочного атрибута. Кроме этого, также в файле смещены названия в штампах. Вообще многосточные атрибуты не стабильные, сам использую в штампах и они то и дело слетают, превращаются в однострочные и т.п.
Цитата:
Да этот шрифт они мне и присылали, я до этого всегда стандартный arial использовал и проблем не было.
У меня с высотой все в порядке показывает. Нужен скрин с их компьютера.
Red Nova вне форума  
 
Непрочитано 16.12.2013, 09:36
#215
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от Red Nova Посмотреть сообщение
У меня открыл как enter. Если ты их не использовал то возможно баг многострочного атрибута. Кроме этого, также в файле смещены названия в штампах.
Вот в этом и проблема, я этот блок уже года 2-3 юзаю первый раз такая проблема, причем у меня на 8-ми компах все нормально, вот и пытаюсь понять в чем дело.

Цитата:
Сообщение от Red Nova Посмотреть сообщение
Кроме этого, также в файле смещены названия в штампах.
вот это тоже из за enter
вот прикрепил как это выглядит у меня
Изображения
Тип файла: jpg Поля.jpg (186.8 Кб, 363 просмотров)
kifa вне форума  
 
Непрочитано 16.12.2013, 09:42
#216
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


У меня 2013х64. У тебя какой битности?
Может переход с 32х на 64х ?
Цитата:
Кроме этого, также в файле смещены названия в штампах.
вот это тоже из за enter
Нет, enter тут не при чем. Координата текста слетела. Точно такой же баг у меня на моих штампах встречается.
Red Nova вне форума  
 
Непрочитано 16.12.2013, 09:46
#217
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


64х у людей тоже, ладно бы везде слетало а то не пойму закономерности.
у меня 2013х64 русский.
kifa вне форума  
 
Непрочитано 16.12.2013, 09:48
#218
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Так ты же писал что у тебя 2014. Ты уж определись ))
Red Nova вне форума  
 
Непрочитано 16.12.2013, 09:52
#219
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


2014 это я просто качаю 2013 на пробу щас вот и запарился)

попробовал у себя в 2011х64 все ровно... хз че делать

есть подозрение что все дело в шрифтах все же

Если не сложно открой вариант с ариалом, улетает или нет?


Разобрался вроде - кривой таки шрифт. Спасибо за помощь
Вложения
Тип файла: dwg
DWG 2010
Автоматика для освещения_arial.dwg (1.14 Мб, 2992 просмотров)

Последний раз редактировалось kifa, 16.12.2013 в 11:26.
kifa вне форума  
 
Непрочитано 19.04.2014, 14:55
#220
zz07


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


Здравствуйте! Более для меня подходящий вариант от VVA и Red Nova не работает. Т.е. я захожу в файл примера, подгружаю лиспы и по командам vrc и vrc2 выводятся таблицы, в которых все в решетках, т.е. у полей почему-то сбита ссылка. Уже вставленные в файле примере таблицы работают нормально, т.е. при изменении параметров листа поля правильно обновляются. Не подскажите в чем дело?
zz07 вне форума  
 
Непрочитано 19.04.2014, 15:07
#221
VVA

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


zz07, номер поста откуда взял коды и файл примера. а так же версия и разрядность автокада. немного побольше информации
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.04.2014, 16:49
#222
zz07


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


VVA, код и файл примера взял из шапки темы, номер поста #69.
Autocad 2013, английский, x64
zz07 вне форума  
 
Непрочитано 19.04.2014, 22:08
#223
VVA

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


zz07, Дело в разрядности. Смотри вариант из #159
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.04.2014, 14:52
#224
zz07


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


VVA, спасибо, все работает.
А текст можно как-то в названии чертежа принудительно переносить на другую строку?
zz07 вне форума  
 
Непрочитано 20.04.2014, 18:19
#225
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


используй многострочный атрибут
Red Nova вне форума  
 
Непрочитано 19.01.2015, 08:26
#226
diek


 
Регистрация: 26.02.2007
от туда
Сообщений: 370


какой-то не понятный глюк, когда перезагружаешь файл, то все номера листов превращаются в 1 (ну или в любой другой номер листа на котором сохранился перед выходом) регениратьсия не помогает, после того как зайдешь на каждый лист то все встает на свои места
diek вне форума  
 
Непрочитано 18.11.2015, 13:23
#227
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Перешел на 2015х64. Не работает...
Код:
[Выделить все]
VRC - таблица с полями, все листы
VRCTS - таблица с Tекстом, выбор (S) листов
VRCTN - таблица с Tекстом, нет (N) выбора листов
VRCFS - таблица с полями (F), выбор (S) листов

Добавлено. Заработало после того как поменяли в региональных настройках windows US на Russia...

Последний раз редактировалось Red Nova, 18.11.2015 в 14:28.
Red Nova вне форума  
 
Непрочитано 25.11.2015, 15:38
#228
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Добрый день. А возможно каким-то образом получить номер листа не из атрибута блока рамки, а взять из порядкового номера вкладки листа?
Т.е. через
Код:
[Выделить все]
 $(substr, $(getvar,CTAB), X, Y)
я могу получить символы с X по X+Y из названия вкладки, но мне не нужны номера листов в названиях - достаточно расставить вкладки в нужном порядке. Вот к этим порядковым номерам хочется получить доступ, чтобы после перетаскивания вкладки на новое место автоматически менялся номер в штампе в соответствии с её новым порядковым номером.

Последний раз редактировалось b00, 22.10.2016 в 07:55.
b00 вне форума  
 
Непрочитано 27.11.2015, 10:19
1 | #229
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


b00, задачка довольно интересная.
Думаю, тут только программно. Штатно нельзя сослаться полем на порядковый номер листа. Если мы говорим НЕ о номере листа в подшивке. И то, там мы сошлемся не на порядковый номер листа в списке, а на жестко заданное свойство "Номер листа подшивки", которое не поменяется автоматом при перетасовке листов.
В общем, если я правильно понял задачу, а именно: номер листа представлен атрибутом, который находится в составе блока форматки, этот блок находится в пространстве листа, при этом атрибуту нужно присвоить порядковый номер листа, на котором он находится, и при замене листов местами этот атрибут, содержащий поле, должен обновиться вне зависимости от цифр, входящих в имя листа, но в завимости от порядкового номера листа, - то вот (пока) тестовая, набросанная на скорую руку версия кода, без обработок ошибок и прочих пряничков:
Код:
[Выделить все]
 (vl-load-com)
(defun C:SLN nil (C:SETLAYOUTNUMBERS))
(defun C:LN nil (C:LAYOUTNUMERATOR))
(defun C:SETLAYOUTNUMBERS ( / lyt-lst lyt-collection i lyt lyt-name var-name attr)
	(C:LAYOUTNUMERATOR)
	(setq lyt-lst (layoutlist)
		  lyt-collection (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
	)
	(repeat (setq i (length lyt-lst))
		(setq lyt (vla-Item lyt-collection (nth (setq i (1- i)) lyt-lst))
			  lyt-name (vla-get-Name lyt)
		)
		(setvar "CTAB" lyt-name)
		(setq var-name (vl-string-translate " " "-" lyt-name))
		(setq attr (vlax-ename->vla-object (car (nentsel "\nУкажите атрибут, содержащий номер текущего листа: "))))
		(vla-put-TextString attr (strcat "%<\\AcVar.17.0 Lisp." var-name ">%"))
		(vla-regen (vla-get-activedocument (vlax-get-acad-object)) AcActiveViewport)
	)
)
(defun C:LAYOUTNUMERATOR ( / lyt-lst lyt-collection i lyt lyt-name var-name lyt-nmbr )

	(setq lyt-lst (layoutlist)
		  lyt-collection (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
	)
	(repeat (setq i (length lyt-lst))
		(setq lyt (vla-Item lyt-collection (nth (setq i (1- i)) lyt-lst))
			  lyt-name (vla-get-Name lyt)
			  var-name (vl-string-translate " " "-" lyt-name)
			  lyt-nmbr (vla-get-TabOrder lyt)
		)
		(set (read var-name) lyt-nmbr)
	)
	(vla-regen (vla-get-activedocument (vlax-get-acad-object)) AcAllViewports)
)
Доступны две команды:
1. SetLayoutNumbers или SLN - начнется поочередное переключение листов (пока не в порядке их следования во вкладках, а в алфавитном порядке), на каждом из них пользователю будет предложено выбрать атрибут, в котором хранится номер листа. Это может быть и текст или Мтекст, но тогда обязательно не в блоке, потому как в этом случае он будет одинаковым на всех листах. Эту команду можно будет исключить в принципе, если принять определенные соглашения. Например, этот атрибут должен иметь определенное имя или находиться на определенном слое и т.д. Тут лучше бы мне увидеть файл с примером - понимания будет больше. Данный вариант - хоть и требует по одному клику на лист - универсальный при условии, что в листе есть блок с атрибутом. Промахнуться мимо атрибута пока нельзя - вылетит с ошибкой.
2. LayoutNumerator или LN - далее эту команду следует вызывать после того, как был изменен порядок следования листов. Произойдет изменение полей. Пока сделал принудительную регенерацию. Если файлы большие, и возникнут тормоза, можно будет ее убрать, и тогда для обновления полей придется производить регенерацию вручную, по мере необходимости. Не уверен, но думаю, что данную команду можно заменить реактором (т.е она будет вызываться автоматически при изменении листов) - пока не проверял.

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

Последний раз редактировалось skkkk, 27.11.2015 в 10:42.
skkkk вне форума  
 
Непрочитано 27.11.2015, 14:23
#230
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


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

И сопутствующий вопрос - для обработки строки в Diesel есть только функция substr?
Т.е. вкладки листов имеют имена вида: 01_2.1_Название_листа, 02_2.2_Название_листа и т.п.
Первые 2 (или X) символов до первого знака _ при помощи $(substr,$(getvar,CTAB),1,X) я вырезаю из имени вкладки и добавляю к полю, высчитывающему по формуле сквозной номер листа в томе (именно от этой операции хочется избавиться, получая данную информацию из порядка расположения вкладки листа, что и делает Ваш скрипт).
Следующие X символов до второго знака _, которые должны быть подставлены в номер листа в основной надписи, простым substr универсально описать не получается, можно ли в Diesel применить регулярку типа ^(\d+)_([.\d]+).*$ ?
b00 вне форума  
 
Непрочитано 27.11.2015, 15:10
1 | #231
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от b00 Посмотреть сообщение
Т.е. информация о номере листа нигде не содержится?
Она содержится в свойстве листа TabOrder, но доступ к ней только программный, из полей - нет (по крайней мере, насколько я знаю, могу ошибаться). Чтобы к ней был доступ из полей, и была придумана данная программка. Она назначает это свойство одноименной (за исключением замененных пробелов на тире) глобальной переменной, на которую уже можно сослаться полем.
Цитата:
Сообщение от b00 Посмотреть сообщение
Но как тогда порядок вкладок сохраняется от открытия к открытию файла?
Этот порядок и сохраняется в указанном свойстве каждого листа. Точнее в файле. Ведь всегда после закрытия порядок следования листов остается неизменным, правда? Иными словами это свойство напрямую зависит от положения листа по порядку и может принимать только одно значение - целое число. Функцией vla-get-TabOrder мы это число можем получить, функцией vla-put-TabOrder - задать, при этом произойдет физическое перемещение листа в соответствующую позицию, остальные номера поменяются согласно ряду натуральных целых чисел.
Цитата:
Сообщение от b00 Посмотреть сообщение
Можно заранее определить имя блока и имя атрибута в блоке, которые должны обрабатываться командой.
Можно, и это довольно просто, но все же желательно сначала потестировать на живом примере, поскольку писал быстро, я запросто мог не учесть каких-то нюансов, которые могут подпортить ситуацию. Думаю, помимо этого найдется еще что добавить или подправить. Хотелось бы как можно меньше раз возвращаться к этому вопросу. Дали ТЗ - получили решение - будьте добры выдать замечания и предложения. На форуме так принято.

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

Однако, меня одолевает ощущение, что мы отошли от основной темы топика... Косвенная связь, конечно, есть, но к ведомости чертежей наш код имеет посредственное отношение. Если есть интерес, и он достаточно велик, предлагаю попросить модераторов перебросить это обсуждение в отдельную тему, если они сочтут это целесообразным.
skkkk вне форума  
 
Непрочитано 02.12.2015, 10:31
#232
PutnikAda

Менеджер проектов
 
Регистрация: 03.11.2015
Полтава
Сообщений: 28


А я через "Извлечение данных" эту ведомость делаю, как и многие другие. Никаких проблем.
PutnikAda вне форума  
 
Непрочитано 02.12.2015, 13:58
#233
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от PutnikAda Посмотреть сообщение
А я через "Извлечение данных" эту ведомость делаю, как и многие другие. Никаких проблем.
а нумерация нормальная? а то пришлось тут проект в модели делать....так вот 1-10 листы не по порядку пришлось попыхтеть покопировать немного.
kifa вне форума  
 
Непрочитано 02.12.2015, 14:02
#234
baksconstructor


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


Цитата:
Сообщение от kifa Посмотреть сообщение
а нумерация нормальная? а то пришлось тут проект в модели делать....так вот 1-10 листы не по порядку пришлось попыхтеть покопировать немного.
Как вариант- мы из Реверс получаем ведомость, может пригодится.
baksconstructor вне форума  
 
Непрочитано 02.12.2015, 14:03
#235
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Да меня то вполне устраивает этот лисп. Просто иногда вот приходится работать без листов, все в модели, тогда и плююсь )
kifa вне форума  
 
Непрочитано 02.12.2015, 19:24
#236
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Коллеги, кто-нибудь может видео на камстасии закинуть, как оно работает, хотел наглядно посмотреть, не хочу свою предыдущую от VVA удалять она меня устраивает на все 100%
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 04.12.2015, 15:17
#237
PutnikAda

Менеджер проектов
 
Регистрация: 03.11.2015
Полтава
Сообщений: 28


Цитата:
Сообщение от kifa Посмотреть сообщение
а нумерация нормальная? а то пришлось тут проект в модели делать....так вот 1-10 листы не по порядку пришлось попыхтеть покопировать немного.
У меня в блоке штампа три атрибута: номер листа и еще два поля с названием листа и частью проектируемого объекта, изображенного на конкретном листе. Сортирую по номеру листа. Все отлично.
PutnikAda вне форума  
 
Непрочитано 08.12.2015, 12:45
#238
b00


 
Регистрация: 21.10.2008
Петербург
Сообщений: 19
<phrase 1=


Цитата:
Сообщение от skkkk Посмотреть сообщение
Дали ТЗ - получили решение - будьте добры выдать замечания и предложения. На форуме так принято.
Мне достаточно приведенного решения, благодарю. С учетом полученных пояснений по теме извлечения и установки свойства TabOrder (стал ясен смысл отдельного программного создания списка с номерами листов из TabOrder - чтобы получить доступ к ним через поля) я Ваш скрипт, при нужде, под себя перепишу, в т.ч. пропишу и имя атрибута блока.
b00 вне форума  
 
Непрочитано 08.06.2016, 17:21
#239
meccp


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


Здравствуйте!
Акад 13. Прошу научить в несколько шагов сделать а/заполнение ведомости чертежей. Чертеж на листах. Многострочные атрибуты (будущие названия чертежей) не получаются. Ссылки на эти атрибуты на разные листы неизвестно как ставить. Помогите плиз. Или хоть ветку дайте из этого моря.
meccp вне форума  
 
Непрочитано 08.06.2016, 17:37
#240
Boxa

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


Цитата:
Сообщение от meccp Посмотреть сообщение
Здравствуйте!
Акад 13. Прошу научить в несколько шагов сделать а/заполнение ведомости чертежей. Чертеж на листах. Многострочные атрибуты (будущие названия чертежей) не получаются. Ссылки на эти атрибуты на разные листы неизвестно как ставить. Помогите плиз. Или хоть ветку дайте из этого моря.
Смотрите подшивку.
Boxa вне форума  
 
Непрочитано 08.06.2016, 18:18
#241
Erbol2014

ТОО
 
Регистрация: 22.05.2014
Аршалы
Сообщений: 52


Цитата:
Сообщение от meccp Посмотреть сообщение
Помогите плиз. Или хоть ветку дайте из этого моря.
Создание ведомости чертежей в программе AutoCAD
Erbol2014 вне форума  
 
Непрочитано 09.06.2016, 00:12
#242
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
Сообщение от meccp Посмотреть сообщение
Здравствуйте!
Акад 13. Прошу научить в несколько шагов сделать а/заполнение ведомости чертежей. Чертеж на листах. Многострочные атрибуты (будущие названия чертежей) не получаются. Ссылки на эти атрибуты на разные листы неизвестно как ставить. Помогите плиз. Или хоть ветку дайте из этого моря.
Скачай отсюда Там по ГОСТ. Есть подробная инструкция и файл примера с многострочными атрибутами.
Red Nova вне форума  
 
Непрочитано 09.06.2016, 11:50
#243
meccp


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


Спасибо!
Но я хочу своими руками без микропрограмм.
В начале темы у человека получалось в ведомости ставить текст-поле, которое менялось даже при изменении текста на разных листах.
У меня такое текст-поле превращается в #### в акаде13.
Не пойму как сделать связь
meccp вне форума  
 
Непрочитано 09.06.2016, 12:07
#244
kifa


 
Регистрация: 03.12.2009
Сообщений: 1,847


Цитата:
Сообщение от meccp Посмотреть сообщение
Спасибо!
Но я хочу своими руками без микропрограмм.
а смысл?
kifa вне форума  
 
Непрочитано 10.06.2016, 14:48
#245
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от meccp Посмотреть сообщение
...хочу своими руками без микропрограмм.
Тогда точно
Цитата:
Сообщение от Boxa Посмотреть сообщение
Смотрите подшивку.
Потому как иного способа сделать связь полей между файлами я не знаю.
Тем более, что там ничего сложного. Нажимаем Файл -> Создать подшивку и понеслась.
Когда в подшивку добавлены листы, левой кнопкой таскаем их вверх-вниз, правой - осваиваем возможности, одна из которых - это почти удобная нумерация листов, на которую, кстати, можно ссылаться полем. А вот когда все готово, то еще одна возможность - Вставить ведомость листов... . Пусть и не по ГОСТ, зато с гиперссылками. А без "микропрограмм" по-другому и никак. Хотя вру - все можно сделать из палочек, даже текст.
skkkk вне форума  
 
Непрочитано 10.06.2016, 16:07
#246
meccp


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


С подшивкой я мучался. Получился процесс ради процесса. Ибо надо и в штампе вбить название чертежа и в названии листов надо вбить тоже самое. Мне надо ЧТОБЫ ПО ПРОСТОМУ ОБОЙТИ ЗАПРЕТ Поле-Лист-Объект (что не сделал автодеск). С таблицей хорошая наколочка была, но поле ячейку с буквами не глотает (####) forum.dwg.ru/showthread.php?p=1541389#post1541389. Еще советовали копировать блок-текст, так он всегда в одинаковом прямоугольнике д.б. (тоже не подходит). Так есть простой х/умный способ? wetr знает, но не говорит

----- добавлено через ~8 мин. -----
.....затем копировать текст вида "%<\AcObjProp Object(%<\_ObjId 2130566400>%).TextString>%" в отдельный файл, затем вставлять в нужное мне поле. поле для объекта серое и неактивное. wetr как это сделать???
meccp вне форума  
 
Непрочитано 10.06.2016, 17:09
#247
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от meccp Посмотреть сообщение
С подшивкой я мучался. Получился процесс ради процесса. Ибо надо и в штампе вбить название чертежа и в названии листов надо вбить тоже самое.
Ничего не понял...вся информация вводится в поля подшивки ОДИН РАЗ, иначе от нее кроме вреда никакой пользы. Полное наименование листа (любой мыслимой длины) вводится в "Описание листа" и отображается на чертеже в соотв. поле. Краткое (кажется, до 256 симв.), для удобства поиска - в "название листа", в чертеже не отображается. Дублировать их не следует, да и не получится из-за ограничений на длину строки в "названии листа"

Последний раз редактировалось kp+, 10.06.2016 в 17:15.
kp+ вне форума  
 
Непрочитано 10.06.2016, 19:21
#248
meccp


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


у нас названия листов могут поменяться. ну да ладно. если я буду подшивкой пользоваться, мне тогда и в подшивке надо вбивать название листов и в штампе. на кой оно мне? ветр же как то обманул акад и сделал то что надо. в первом посте он копировал-вставлял адреса
meccp вне форума  
 
Непрочитано 12.06.2016, 00:22
#249
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от meccp Посмотреть сообщение
если я буду подшивкой пользоваться, мне тогда и в подшивке надо вбивать название листов и в штампе
Еще раз - название листа "вбивается" один раз и только в подшивке. А поле в штампе и в ведомости листов подхватывает то, что "вбито" в подшивке. При изменении информации в подшивке меняется информация и в штампе, и в ведомости листов.
Offtop: Врубись, ведь это же кайф! (С)
kp+ вне форума  
 
Непрочитано 14.06.2016, 10:24
#250
meccp


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


Попробовал еще раз с подшивками. Все работает. Меняешь в подшивке (в листе) название листа и меняется поле в штампе и в ведомости. ОК. ТОЛЬКО БЕДА В ТОМ, ЧТО В ШТАМПЕ ТЕКСТ, КОТОРЫЙ ДОЛЖЕН БЫТЬ ПО УМУ МНОГОСТРОЧНЫМ И ДОЛЖЕН ВПИХИВАТЬСЯ В ПРЯМОУГОЛЬНИК НИ ФИГА НЕ ПЕРЕНОСИТСЯ.
Короче прям в модели в штампах (в м/строчном тексте) я меняю названия листов и у меня меняется поле в ведомости листов сделанной из палок. Ничего лучше и проще не могу придумать
meccp вне форума  
 
Непрочитано 14.06.2016, 10:56
#251
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от meccp Посмотреть сообщение
ТОЛЬКО БЕДА В ТОМ, ЧТО В ШТАМПЕ ТЕКСТ, КОТОРЫЙ ДОЛЖЕН БЫТЬ ПО УМУ МНОГОСТРОЧНЫМ И ДОЛЖЕН ВПИХИВАТЬСЯ В ПРЯМОУГОЛЬНИК НИ ФИГА НЕ ПЕРЕНОСИТСЯ
Опять ничего не понял. Капса много, толку мало. Выложите пример чертежа
kp+ вне форума  
 
Непрочитано 14.06.2016, 12:32
#252
meccp


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


не понимаете, так пусть ответит проектировщик. проектировщики представляют себе штамп
meccp вне форума  
 
Непрочитано 14.06.2016, 12:55
#253
h5r32


 
Регистрация: 28.12.2011
СПб
Сообщений: 843


Господа вопрос по программе в шапке темы, все страницы не читал, но решил попробывать данную чудо программу и возник такой вопрос, если название чертежа в штампе длиннее строки Ведомости рабочих чертежей можно ли сделать чтоб текст перепрыгивал на следующую строку? Для понимания картинку приложил.
Миниатюры
Нажмите на изображение для увеличения
Название: dwg.jpg
Просмотров: 75
Размер:	137.4 Кб
ID:	172048  
h5r32 вне форума  
 
Непрочитано 14.06.2016, 13:19
#254
meccp


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


Да я тут давно на это ответ жду
meccp вне форума  
 
Непрочитано 14.06.2016, 13:22
#255
baksconstructor


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


Цитата:
Сообщение от meccp Посмотреть сообщение
Да я тут давно на это ответ жду
Вы сами ограничили :
Цитата:
Сообщение от meccp Посмотреть сообщение
Но я хочу своими руками без микропрограмм.
baksconstructor вне форума  
 
Непрочитано 14.06.2016, 13:43
#256
meccp


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


ОК. как превратить однострочный текст поля в м/строчный? без нанотехнологий
meccp вне форума  
 
Непрочитано 14.06.2016, 13:55
#257
baksconstructor


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


Цитата:
Сообщение от meccp Посмотреть сообщение
без нанотехнологий
Не знаю, но мы делаем так:
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 94
Размер:	253.1 Кб
ID:	172052  
baksconstructor вне форума  
 
Непрочитано 14.06.2016, 14:20
#258
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от meccp Посмотреть сообщение
не понимаете, так пусть ответит проектировщик. проектировщики представляют себе штамп
Каким именно образом Вы заполняете свой штамп - не представляет никто, кроме Вас. Отсюда и просьба выложить пример Вашего DWG.

Цитата:
Сообщение от meccp Посмотреть сообщение
ОК. как превратить однострочный текст поля в м/строчный? без нанотехнологий
По меньшей мере, вставлять поле в многострочный текст (Mtext) или многострочный атрибут.

Offtop: Письмо прописными буквами воспринимается как крик. Успокойтесь

Цитата:
Сообщение от h5r32 Посмотреть сообщение
можно ли сделать чтоб текст перепрыгивал на следующую строку?
Стандартными средствами таблиц Акада (по крайней мере, 2010) - нельзя. Такой функционал был в проге Atable http://alxd.it-dept.ru/ru/shareware/...0for%20AutoCAD Но кажется автор прекратил поддержку под новые версии

Последний раз редактировалось kp+, 14.06.2016 в 14:51.
kp+ вне форума  
 
Непрочитано 14.06.2016, 15:05
#259
h5r32


 
Регистрация: 28.12.2011
СПб
Сообщений: 843


Понял спасибо.
h5r32 вне форума  
 
Непрочитано 14.06.2016, 16:13
#260
meccp


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


штамп нарисован палками. В одном из прямоугольников штампа - название листа. название листа длинное (3 строчки). сейчас в прямоугольник вписан м/строчный текст. ну очевидно же всё! зачем чего то прикладывать?
В акад2013 вставлять поле в многострочный текст не получается
meccp вне форума  
 
Непрочитано 14.06.2016, 16:51
#261
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от meccp Посмотреть сообщение
ну очевидно же всё! зачем чего то прикладывать?
Если лечение по фотографии неэффективно, то что говорить о лечении по описанию?
Другой вопрос, если у Вас нет возможности выложить DWG (например служба внутренней безопасности бдит)

Цитата:
Сообщение от meccp Посмотреть сообщение
В акад2013 вставлять поле в многострочный текст не получается
Это какой-то глюк. У меня версия 2010, поля в Мтексте нормально работают. У коллеги 2013, тоже все путем.

Цитата:
Сообщение от meccp Посмотреть сообщение
штамп нарисован палками. В одном из прямоугольников штампа - название листа.
Эти "палки" и Мтекст - отдельные примитивы, или объединены в блок? Если объединены в блок, то поля подшивки в обычном Мтексте, входящем в состав блока, работать не будут. Вместо этого надо использовать многострочный атрибут.

Последний раз редактировалось kp+, 14.06.2016 в 17:00.
kp+ вне форума  
 
Непрочитано 14.06.2016, 17:23
#262
meccp


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


Все верно. по безопасности не могу прислать.
Без блока. Просто м/строчный текст.
Поле ни фига не подхватывает м/строчный текст у меня в акад2013.
meccp вне форума  
 
Непрочитано 14.06.2016, 17:44
#263
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от meccp Посмотреть сообщение
Все верно. по безопасности не могу прислать.
Печаль. Но хороший пример как это должно быть, уже с DWG и файлом подшивки DST можно посмотреть тут: http://dwg.ru/dnl/5319

Цитата:
Сообщение от meccp Посмотреть сообщение
Поле ни фига не подхватывает м/строчный текст у меня в акад2013.
То ли Вы что-то не так делаете, то ли Ваш Акад 2013 надо переустанавливать или ставить сервис-паки.

Еще много интересного в теме "решился освоить подшивку" http://forum.dwg.ru/showthread.php?p=1540643
kp+ вне форума  
 
Непрочитано 15.06.2016, 20:55
#264
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


А многострочный атрибут разве не также себя ведет как многострочный текст? Если в нем настроить выравнивание, то он будет переносить слова в соответствии с габаритами ограничивающего прямоугольника. Советую для атрибутов включить редактор такой же, как и для мтекста (переменная ATTIPE). Честно говоря, тоже не очень понял, о чем речь, надеюсь, понял правильно.
skkkk вне форума  
 
Непрочитано 16.06.2016, 08:56
#265
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от skkkk Посмотреть сообщение
Честно говоря, тоже не очень понял, о чем речь, надеюсь, понял правильно.
Многострочный текст внутри блока не воспринимает поля подшивки, в отличие от многострочного атрибута.
kp+ вне форума  
 
Непрочитано 16.06.2016, 12:20
#266
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


kp+, поля подшивки - это имеются в виду дополнительные свойства, которые пользователь сам создаёт? У меня мтекст в блоке отлично их воспринимает и обновляется, равно как и атрибут.
skkkk вне форума  
 
Непрочитано 16.06.2016, 12:56
#267
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от skkkk Посмотреть сообщение
поля подшивки - это имеются в виду дополнительные свойства, которые пользователь сам создаёт?
И основные типа "номер проекта" тоже.
Цитата:
Сообщение от skkkk Посмотреть сообщение
У меня мтекст в блоке отлично их воспринимает и обновляется, равно как и атрибут.
Это при "жесткой" ссылке на конкретную подшивку. "Мягкие" ссылки типа "НомерПроектаТекущейПодшивки" МТекст внутри блока не воспринимает.
kp+ вне форума  
 
Непрочитано 16.06.2016, 21:39
#268
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от kp+ Посмотреть сообщение
Это при "жесткой" ссылке на конкретную подшивку. "Мягкие" ссылки типа "НомерПроектаТекущейПодшивки" МТекст внутри блока не воспринимает.
Отнюдь. Именно так я и делаю. Единожды создал подшивку, создал все нужные свойства. В динблоке основной надписи с рамкой (взял тут на сайте) создал в атрибутах поля со ссылками на свойства подшивки: как основные, так и пользовательские. Затем я беру файл *.dst и копирую в папку с новым проектом, удаляю (исключаю) из нее все листы. В файлах нового проекта создаю листы, вставляю в каждый из них блок рамки через палитру и импортирую эти листы в новую подшивку. Затем меняю значения свойств, и в штампах новых листов они подхватываются. Правда, давно это было, не помню, как я сделал эти поля, кажется, через формулы для поля. Если будет интерес, я вспомню.

Но при таком подходе есть один момент, который порой приводит к ошибкам. Если одновременно открыто более одной подшивки, может получиться так, что в штампе появляются данные не из той подшивки. Если так получается, приходится переоткрывать Автокад. По этой причине приучил себя открывать каждый проект в отдельном сеансе.
skkkk вне форума  
 
Непрочитано 17.06.2016, 08:43
#269
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от skkkk Посмотреть сообщение
По этой причине приучил себя открывать каждый проект в отдельном сеансе.
Месье знает толк...
kp+ вне форума  
 
Непрочитано 20.06.2016, 15:11
#270
Шмель


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


Добрый день.
Я работаю в пространстве модели и динамические блоки рамки находятся там-же.
Создаю листы командой AL (лисп нашел здесь же) исключительно для публикации.

В примере если блоки формата перенести в модель, то поля сбиваются. Для модели такое возможно?

В идеале примерно так: В модели есть примерно 40 дин. блоков "Формат" с атрибутами (с числе которых - лист и наименование).
1. Вводим специальную команду
2. Программа предлагает выбрать необходимые блоки "Формат".
3. Секущей рамкой выделяем пространство с блоками.
4. Создается таблица ведомости (как в примере) с соответствующими значениями атрибутов.

Спасибо
Шмель вне форума  
 
Непрочитано 20.06.2016, 16:19
#271
Шмель


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


Рамка
Вложения
Тип файла: dwg
DWG 2007
Рамка.dwg (5.60 Мб, 38 просмотров)
Шмель вне форума  
 
Непрочитано 20.06.2016, 17:09
#272
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от Шмель Посмотреть сообщение
В примере если блоки формата перенести в модель, то поля сбиваются. Для модели такое возможно?
извратить можно все) как в пространстве модели смогут одинаковые поля показывать разное содержимое? пространство то одно.
Сергей812 вне форума  
 
Непрочитано 20.06.2016, 17:37
#273
Шмель


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


Да уж.
Пришла мысль приспособить извлечение атрибутов. Немного длиннее, чем с полями, но всеж не вручную.
Спасибо.
Шмель вне форума  
 
Непрочитано 20.06.2016, 17:50
#274
baksconstructor


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


Как вариант решение в приложении.
Автоматом, но без извлечения данных.
Только вот пришлось немного блок исправить - край рамки сделать полилинией.
Вложения
Тип файла: dwg
DWG 2007
Рамка с ведомостью.dwg (4.31 Мб, 41 просмотров)
baksconstructor вне форума  
 
Непрочитано 21.06.2016, 08:41
#275
Шмель


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


baksconstructor, а как запустить процесс (решение ненахожу )
Шмель вне форума  
 
Непрочитано 21.06.2016, 08:46
#276
baksconstructor


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


Цитата:
Сообщение от Шмель Посмотреть сообщение
а как запустить процесс (решение ненахожу )
Я писал что это - как вариант, причем при использовании Реверс
Можно видеоурок посмотреть.
Только Ваш блок нужно доработать.
baksconstructor вне форума  
 
Непрочитано 03.11.2016, 16:24
#277
NVFk

Конструктор
 
Регистрация: 23.03.2011
Москва
Сообщений: 43


Цитата:
Сообщение от Шмель Посмотреть сообщение
Добрый день.
Создаю листы
Если Вы работаете в листах, зачем Вам все эти сложности - используйте подшивку. Там ведомость автоматически вставляется, названия и номера листов можно быстро редактировать.

----- добавлено через ~4 мин. -----
А можно ведомость собирать из чертежей, которые находятся в нескольких файлах?
__________________
Если долго мучаться, то всегда получится:i-m_so_happy:
NVFk вне форума  
 
Непрочитано 03.11.2016, 17:03
#278
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от NVFk Посмотреть сообщение
А можно ведомость собирать из чертежей, которые находятся в нескольких файлах?
Приложите пример вашего чертежа.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 03.11.2016, 17:55
#279
NVFk

Конструктор
 
Регистрация: 23.03.2011
Москва
Сообщений: 43


Цитата:
Сообщение от maratovich Посмотреть сообщение
Приложите пример вашего чертежа.
Да все то же самое, но проект разбит на несколько файлов: Монтажные схемы отдельно, узлы отдельно, а ведомость чертежей одна общая
__________________
Если долго мучаться, то всегда получится:i-m_so_happy:
NVFk вне форума  
 
Непрочитано 03.11.2016, 18:22
#280
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


а что vrc_VVA.lsp не берёт ?
Цитата:
Сообщение от NVFk Посмотреть сообщение
Да все то же самое
у меня другой метод, но надо смотреть чем создана рамка.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 03.11.2016, 18:47
#281
NVFk

Конструктор
 
Регистрация: 23.03.2011
Москва
Сообщений: 43


в vrc_VVA меню выбора файлов не нашел, я в лиспе совсем не силен, но думаю что vrc про другие файлы ничего не знает.
Рамка еще не создана Дело в том, что на новой работе требование чертить в модели, а я уже к подшивкам привык. Думаю как ведомость листов делать. Что у Вас за метод?
__________________
Если долго мучаться, то всегда получится:i-m_so_happy:
NVFk вне форума  
 
Непрочитано 03.11.2016, 18:53
1 | #282
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от NVFk Посмотреть сообщение
Что у Вас за метод?
baksconstructor ранее описал в #276
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 03.11.2016, 19:00
#283
NVFk

Конструктор
 
Регистрация: 23.03.2011
Москва
Сообщений: 43


Ок, но у меня еще надежды на vrc
__________________
Если долго мучаться, то всегда получится:i-m_so_happy:
NVFk вне форума  
 
Непрочитано 13.04.2017, 11:06
#284
Liverka


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


Всем привет. Подскажите, а можно ли изменить данный лисп, что бы в итоге список листов для ведомости формировался не как таблица, а как многострочный текст (1лист=1Мтекст)?
Liverka вне форума  
 
Непрочитано 13.04.2017, 19:00
#285
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Liverka, полученную таблицу можно просто взорвать (команда _explode). Чем такой вариант плох?
skkkk вне форума  
 
Непрочитано 14.04.2017, 11:56
#286
Liverka


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


skkkk, Собственно, такой вариант и использую в работе, но это не совсем удобно, особенно когда длинные названия листов располагаются в одной строчке, то еще приходится их вручную корректировать. Хотелось бы исключить такой вариант
Liverka вне форума  
 
Непрочитано 07.03.2018, 10:59
#287
Barmaley Bubusikin


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


Подскажите, как отключить переопределение цвета слоя командой VRC. Из описания понял, что настройки слоя и таблицы указываются жестко при их создании, но вставляю на существующий слой.
Barmaley Bubusikin вне форума  
 
Непрочитано 07.03.2018, 17:17
#288
VVA

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


Barmaley Bubusikin, Посмотрел код из #1. VRC цвет слоя не меняет
Цитата:
;;; Найти 12 строками ниже следующие настройки :
;;; (setq Tag-Name-LIST "ЛИСТ" ;;; ИМЯ ТЭГА АТРИБУТА БЛОКА, в котором хранится номер листа
;;; Tag-Name-NCHERT "НАИМЕНОВАНИЕ.ЧЕРТЕЖА" ;;; ИМЯ ТЭГА АТРИБУТА БЛОКА, в котором хранится наименование чертежа
;;; Table-layer "_Таблицы" ;;; Слой, на который будет вставляться таблица
;;; text-style-name "Ведомость чертежей" ;;; Имя стиля текста таблицы
;;; text-font-file "MIPGOST.SHX" ;;; Файл шрифта стиля текста таблицы Скачать можно здесь http://dwg.ru/dnl/147 или вписать свой
;;; table-style-name "Ведомость чертежей" ;;; Имя стиля таблицы
;;; )
;;;
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.03.2018, 18:35
#289
Barmaley Bubusikin


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


475 (if (setq buf (cdr (assoc "color" layer-list)))
476 buf
477 5 //вот здесь поменял цвет на синий (как мне надо), но вопрос
Цитата:
Сообщение от Barmaley Bubusikin Посмотреть сообщение
как отключить переопределение цвета слоя
остается.
Barmaley Bubusikin вне форума  
 
Непрочитано 08.03.2018, 13:06
#290
VVA

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


Найди
Код:
[Выделить все]
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create (list (cons "name" Table-layer)(cons "lw"  15))))) t)
Добавь
Цитата:
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create (list (cons "name" Table-layer)(cons "lw" 15)(cons "color" 5))))) t)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.03.2018, 14:12
#291
Barmaley Bubusikin


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Посмотрел код из #1
Я пользуюсь кодом из #159.
Цитата:
Сообщение от VVA Посмотреть сообщение
Добавь
Цитата:
(or (vla-put-layer tbl (vla-get-name(_dwgru-layer-create (list (cons "name" Table-layer)(cons "lw" 15)(cons "color" 5))))) t)
Цвет слоя меняется (проверил на чистом vrc_VVA_2014_01_23.lsp только с этим изменением).
Хотелка такая: цвет "по слою" без жесткого задания. Спасибо за внимание.
upd. Меняется и толщина слоя. Похоже, лисп не понимает, что слой существует.

Последний раз редактировалось Barmaley Bubusikin, 08.03.2018 в 14:54. Причина: дополнение
Barmaley Bubusikin вне форума  
 
Непрочитано 08.03.2018, 23:41
1 | #292
VVA

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


Обновил #159
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.03.2018, 01:30
#293
Barmaley Bubusikin


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Обновил #159
Что надо. Благодарю!
Barmaley Bubusikin вне форума  
 
Непрочитано 05.04.2018, 09:41
#294
posetitel


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


Цитата:
Сообщение от NVFk Посмотреть сообщение
Да все то же самое, но проект разбит на несколько файлов: Монтажные схемы отдельно, узлы отдельно, а ведомость чертежей одна общая
Кстати да, есть ли возможность создавать ведомость, когда листы находятся в нескольких файлах
posetitel вне форума  
 
Непрочитано 05.04.2018, 09:51
#295
baksconstructor


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
Кстати да, есть ли возможность создавать ведомость, когда листы находятся в нескольких файлах
не помешал бы пример.
baksconstructor вне форума  
 
Непрочитано 05.04.2018, 09:59
#296
posetitel


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


есть папка проекта, в ней чертежи 1.двг, 2.двг, 3.двг, есть в папке еще внутренняя папка "дополнение", там чертежи 4.двг, 5.двг, все начерчено в модели, а оформлено в листах (т.е. рамки и штампы указаны в листах), листов может быть несколько.
в корневой папке создаю файл "общие данные" и как в лиспе от VAA в нем создать ведомость чертежей, только уже с возможностью выбирать файлы и листы в нем, которые будут помещены в ведомость
posetitel вне форума  
 
Непрочитано 05.04.2018, 11:12
#297
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


пока самое удобное для себя - название чертежа в многострочном атрибуте прямо в вставке блока основной надписи вбивается при "настройке" листа через ВЭ. Все остальное - через подшивку. А извлекать программно - из подшивки выдергиваешь название чертежа и лист, затем из атрибута - название чертежа. Если даже "глюкнет" программа - вручную пройтись по атрибутам и скопировать - дело несколько минут)
Сергей812 вне форума  
 
Непрочитано 26.08.2019, 12:05
#298
vedmak


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


А как такую таблицу Содержание сделать автоматической?
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 156
Размер:	110.1 Кб
ID:	217144  
vedmak вне форума  
 
Непрочитано 27.09.2020, 20:24
#299
Zalman


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


Здравствуйте! Очень нравится программа по созданию ведомости... Респект автору! Напишите есть ли возможность, что бы при вставке таблицы, ее размер был в 100 раз больше? Часто работаю с чертежами с масштабом 1:100. Может настройки какие есть?
Zalman вне форума  
 
Непрочитано 13.03.2024, 14:17
#300
posetitel


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


А еще возможно ли допилить лисп так, чтобы листы в ведомость попадали не по алфавитному порядку, а по порядку следования в файле?
Т.е. у меня листы называются не "1", "2", "3", "4"..., а например "Фасад", "Разрез поперечный", "Разрез продольный", лисп ведомость выдает в алфавитном порядке, т.е. лист с именем фасад оказывается в конце списка, а нужно в начале.
posetitel вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Автозаполнение ведомости рабочих чертежей

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автозаполнение ведомости чертежей и автонумерация листов в спдс 6 Кукурузо_Джон_Горыныч ПО от CSoft 34 15.02.2019 08:13
Ведомость рабочих чертежей основного комплекта 13Rossoneri Архитектура 3 22.08.2015 00:21
Аннулирование комплекта рабочих чертежей путем замены Elena.sh Разное 8 26.05.2011 05:47
Хочу быстрее заполнять ведомости рабочих чертежей! a-alex Программирование 2 19.02.2008 19:09