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

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

Альтернатива нумерации атрибутов блоков

Ответ
Поиск в этой теме
Непрочитано 31.05.2010, 14:03 #1
Альтернатива нумерации атрибутов блоков
Maxxwell
 
Регистрация: 25.08.2009
Сообщений: 50

есть у меня прога по массовой перенумерации атрибутов блоков ChangeAttributes, очень удобно, когда 1500 датчиков на чертеже нужно пронумеровать...так вот, незадача, поставил CAD х64 а она там нормально работать не хочет,открытия и обновления окна программы приходится ждать по 1-2 минуты и VBA x64 в процессах начинает жрать от 50% ресурса камня. Мож кто подскажет, есть ли какая-нить реальная альтернатива данной проге, а то без нее иногда бывает туго, но сам аналогов, по крайней мере здесь, не нашел...или мож кто подскажет, как справиться с данным глюком (или подскажет как подправить, если сталкивался с такой несовместимостью)...прога лежит тут: http://dwg.ru/dnl/515
Просмотров: 10158
 
Непрочитано 31.05.2010, 14:11
#2
Кулик Алексей aka kpblc
Moderator

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


Альтернатива есть - переписывай на .NET или lisp.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.05.2010, 14:18
#3
Maxxwell


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


эт канешн круто,но с моими знаниями лиспа это будет очень тернистый путь
Maxxwell вне форума  
 
Непрочитано 31.05.2010, 14:20
#4
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,985


Maxxwell
http://dwg.ru/dnl/1929
Правда, тоже писан на VBA
Nike вне форума  
 
Автор темы   Непрочитано 31.05.2010, 14:30
#5
Maxxwell


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


клевая прога, но она для текстовых примитивов а не для атрибутов блоков, для того,чтобы ей воспользоваться, мне нужно будет через _qselect разбить все блоки, а это уже изъе)))но все равно огромное спасибо!!!

ЗЫ: тогда еще вопрос, под вин7 х64 поставится 2010 кад в х32?
Maxxwell вне форума  
 
Непрочитано 31.05.2010, 14:38
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Здесь: автоматическая нумерация в атрибутах блока
На следующих сайтах нужна регистрация, но ее стоит сделать
Incremental Numbering Suite (Lee Mac NumInc V3.1)





Automatic Numbering

Incrementally number a group of Attributed Blocks/MText/Text


Код:
[Выделить все]
(defun c:AutoInc (/ _x _y _gbn _ss2l _0 r ss i lat long)
  ;; Alan J. Thompson, 03.26.10

  (vl-load-com)

  (setq _x (lambda (e) (car (cdr (assoc 10 (entget e))))))
  (setq _y (lambda (e) (cadr (cdr (assoc 10 (entget e))))))
  (setq _gbn (lambda (L # / n g f)
               (setq n -1)
               (while (> (1- (length L)) n)
                 (repeat # (setq g (cons (nth (setq n (1+ n)) L) g)))
                 (setq f (cons (reverse g) f)
                       g nil
                 ) ;_ setq
               ) ;_ while
               (reverse f)
             ) ;_ lambda
  ) ;_ setq
  (setq _ss2l (lambda (x / e i l)
                (if (eq (type x) 'PICKSET)
                  (progn (setq i -1)
                         (while (setq e (ssname x (setq i (1+ i))))
                           (setq l (cons e l))
                         ) ;_ while
                         l
                  ) ;_ progn
                ) ;_ if
              ) ;_ lambda
  ) ;_ setq
  (setq _0 (lambda (l) (vl-position (cdr (assoc 0 (entget x))) l)))

  (or *AI:LR* (setq *AI:LR* "Right"))
  (or *AI:TB* (setq *AI:TB* "Top"))

  (cond
    ((and (setq r (getint "\nSpecify number of rows: "))
          (not (initget 0 "Left Right"))
          (setq *AI:LR* (cond
                          ((getkword (strcat "\nSort from Left or Right? [Left/Right] <"
                                             *AI:LR*
                                             ">: "
                                     ) ;_ strcat
                           ) ;_ getkword
                          )
                          (*AI:LR*)
                        ) ;_ cond
          ) ;_ setq
          (not (initget 0 "Top Bottom"))
          (setq *AI:TB* (cond
                          ((getkword (strcat "\nSort from Top or Bottom? [Top/Bottom] <"
                                             *AI:TB*
                                             ">: "
                                     ) ;_ strcat
                           ) ;_ getkword
                          )
                          (*AI:TB*)
                        ) ;_ cond
          ) ;_ setq
          (setq ss (_ss2l (ssget "_:L"
                                 '((-4 . "<OR")
                                   (0 . "MTEXT,TEXT")
                                   (-4 . "<AND")
                                   (0 . "INSERT")
                                   (66 . 1)
                                   (-4 . "AND>")
                                   (-4 . "OR>")
                                  )
                          ) ;_ ssget
                   ) ;_ _ss2l
          ) ;_ setq

     ) ;_ and

     (setq lat  (if (eq *AI:LR* "Left")
                  <
                  >
                ) ;_ if
           long (if (eq *AI:TB* "Top")
                  >
                  <
                ) ;_ if
     ) ;_ setq

     (setq i 0)
     (foreach x
              (apply
                (function append)
                (mapcar
                  (function (lambda (l) (vl-sort l (function (lambda (a b) (long (_y a) (_y b)))))))
                  (mapcar (function (lambda (y) (vl-remove nil y)))
                          (_gbn (vl-sort ss (function (lambda (a b) (lat (_x a) (_x b))))) r)
                  ) ;_ mapcar
                ) ;_ mapcar
              ) ;_ apply

       (cond
         ((_0 '("MTEXT" "TEXT"))
          (vl-catch-all-apply
            (function vla-put-textstring)
            (list (vlax-ename->vla-object x) (itoa (setq i (1+ i))))
          ) ;_ vl-catch-all-apply
         )
         ((_0 '("INSERT"))
          (vl-catch-all-apply
            (function vla-put-textstring)
            (list (car (vlax-invoke (vlax-ename->vla-object x) (function GetAttributes)))
                  (itoa (setq i (1+ i)))
            ) ;_ list
          ) ;_ vl-catch-all-apply
         )
       ) ;_ cond


     ) ;_ foreach
    ) ;_ cond
  ) ;_ cond
  (princ)
) ;_ defun
Вложения
Тип файла: rar Lee Mac AutoNum V4.RAR (8.9 Кб, 475 просмотров)
Тип файла: zip Lee Mac NumIncV3-1.zip (17.5 Кб, 234 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 16.11.2011 в 09:31.
VVA вне форума  
 
Непрочитано 31.05.2010, 14:48
1 | #7
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,985


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

VVA
Спасибо за сылки!
А код из ссылок не могли бы привести - там регистрироваться требуется..

Последний раз редактировалось Nike, 31.05.2010 в 14:58.
Nike вне форума  
 
Непрочитано 31.05.2010, 15:17
#8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Зарегистрируйся - не пожалеешь. Там куча очень полезных программок.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 31.05.2010, 15:31
#9
Maxxwell


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


VVA, спасибо огромное, ссылки обалденные, приду домой (х64 дома стоит) буду тестить)))

Incremental Numbering Suite там отсутствует, по ней открывается Incrementally number a group of Attributed Blocks/MText/Text , не знаю почему так
Maxxwell вне форума  
 
Непрочитано 31.05.2010, 15:46
#10
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Так будет точнее: http://www.theswamp.org/index.php?topic=28727.0
Александр Ривилис вне форума  
 
Непрочитано 31.05.2010, 16:01
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Maxxwell, Nike, Подправил пост #6. И настоятельно советую зарегистрироваться.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.05.2010, 17:19
#12
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,985


Цитата:
Сообщение от VVA Посмотреть сообщение
Maxxwell, Nike, Подправил пост #6. И настоятельно советую зарегистрироваться.
Спасибо! Зарегистрируемся
Nike вне форума  
 
Непрочитано 31.05.2010, 22:17
#13
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


Не знаю подойдёт ли. Перенумеровывает первый атрибут блока в выбраном направлении. Сначала спрашивает направление - 1 точка, 2 точка. Потом блоки. Проверок на наличие атрибутов нет.
Код:
[Выделить все]
(defun c:nvec ( / p1 p2 v1 sn blokset blklength spis_b i 
                  name_blk spis_blk name_b kord_b XY_b 
                  name_XY spis_b nb nm1 sps atr n_atr ) 
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0)
(setq p1 (getpoint "Point one"))
(setq p2 (getpoint "Point two"))
(setq v1 (list (-(car p2)(car p1))(-(cadr p2)(cadr p1)))) 
(setq sn (getint "Start number: "))
(setq blokset (ssget "_:L" '(( 0 . "INSERT"))))
(setq blklength (sslength blokset)) 
(setq spis_b nil i -1)
(repeat  blklength
  (setq i (1+ i))      
  (setq name_blk (ssname blokset i))
  (setq spis_blk  (entget  name_blk))
  (setq name_b   (cdr(assoc -1 spis_blk)))
  (setq kord_b   (cdr(assoc 10 spis_blk)))
  (setq XY_b     (reverse(cdr(reverse kord_b))))
  (setq name_XY  (append XY_b (list name_b)))
  (setq spis_b (append spis_b (list name_XY)))
)
(setq spis_b (vl-sort spis_b
(function (lambda (e1 e2)
(< (+ (*(car e1)(car v1))(*(cadr e1)(cadr v1)))
   (+ (*(car e2)(car v1))(*(cadr e2)(cadr v1)))) ) ) ) )
(setq i -1)
(repeat  blklength
  (setq i (1+ i))  
  (setq nb (caddr (nth i spis_b)))
  (setq nm1  (entnext nb))
  (setq sps (entget  nm1))
  (setq atr (assoc 1 sps))
  (setq n_atr (cons 1 (itoa (+ sn i))))
  (setq sps (subst n_atr atr sps))
  (entmod sps)
  (entupd  (cdr (assoc -1 sps))) 
)
(setvar "Osmode" snp)
)

Последний раз редактировалось Victor, 31.05.2010 в 22:25.
Victor вне форума  
 
Автор темы   Непрочитано 01.06.2010, 17:13
#14
Maxxwell


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


VVA, пасип тебе добрый человек, поюзал все что ты предложил, renum то что дохтур прописал, но и для остального применение найдем!!!!
Maxxwell вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Альтернатива нумерации атрибутов блоков

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массовое редактирование свойств атрибутов блоков kgb Программирование 11 13.06.2023 14:39
Обновление атрибутов всех блоков (Attsync для всех блоков) Vildar AutoCAD 3 18.05.2022 14:28
Собрать информацию Атрибутов блоков в таблицу Спецификации Sirius2w AutoCAD 41 01.09.2010 13:07
Потеря значений атрибутов блоков, вставленных в ячейки таблицы Дмитрий Голованов AutoCAD 2 17.12.2009 08:57