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

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

Сквозная нумерация динамических блоков

Ответ
Поиск в этой теме
Непрочитано 18.09.2007, 17:45
Сквозная нумерация динамических блоков
zenon
 
Остекляем!!! Алюминим!!!
 
Москва
Регистрация: 21.02.2005
Сообщений: 3,824

Назрело!
В связи с введением динамических блоков начиная с AutoCAD2006, по роду моей деятельности появилась возможность рисовать монтажную схему стоек с указание ее длины в аттрибуте, с автоматическим изменением аттрибута в зависимости от удлинения стойки.
Поэтому назрел вопрос о сквозной нумерации, то бищь присвоении 2му аттрибуту номера стойки в зависимости от ее длины.
см. чертеж
[ATTACH]1190123036.dwg[/ATTACH]
Можно ли расстановку позиций реализовать программно?
ps предварительно расставив стойки.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
Просмотров: 88196
 
Непрочитано 19.09.2007, 21:12
#41
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Supermax
TRY-TO-RENUM запустил, но он ничего с блоками не сделал. Ни длины не изменил, ни номера не поставил.
Ну е-мое, сколько раз можно говорить, функция имеет 2 обязательных параметра. Первый - тэг атрибута, по которому производится сортировка. Второй - тэг атрибута, в который проставлять позиции. Если в блоке отсутствует хоть что-то из этого, с блоком ничего сделано не будет. Если блок находится на блокированном слое, он исключается из набора. Если атрибут помещен на блокированный слой, его значение не меняется.
Ну что, мне видео сделать, как работает? Я ж проверяю перед опубликованием, а если не проверяю, то предупреждаю об этом.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.09.2007, 21:17
#42
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ну е калы мыны!
Взял ТВОЙ DWG, где вставлены POZ.
Переписал твой первый макрос в файл .lsp
Загрузил
Вставил в коммандную строку (try-to-renum "dlina" "pos")
нажал ентер
Объвел блоки
нажал ентер

- Какие были свойства и длины такие и остались.
Supermax вне форума  
 
Непрочитано 19.09.2007, 21:20
#43
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


АААААА!!!
Ты вместо POZ написал pos!!!
Исправляй!
Supermax вне форума  
 
Непрочитано 19.09.2007, 21:28
#44
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ладно, поменял я длинну, опять запустил и все осталось как есть.
Обнулил атрибуты - не помогло. Вернуло те номера, что с самого начала сделала.
Один раз отмаркировало насмерть! Меняй длинну, не меняй теперь уже ничего по новой не отмаркируешь.
Это я изгалясь от скуки.
Вставь очистку памяти от старых значений.
Supermax вне форума  
 
Непрочитано 19.09.2007, 21:30
#45
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Перезагрузил чертеж и макрос - отмаркировало как положено.
Просто перезагрузка макроса не спасает. Чертеж перегружать приходится.
Supermax вне форума  
 
Непрочитано 19.09.2007, 21:58
#46
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Будь добр, возьми мою трубу и откатай на ней макрос.
Не хочет он пробелы видеть в длинне "... L=" без пробела берет.
Русский шрифт ему не нравится. А как без него?

(try-to-renum "... L=" "ПОЗИЦИЯ_ПО_СХЕМЕ") надо чтобы взял!!
Supermax вне форума  
 
Непрочитано 19.09.2007, 22:18
#47
Кулик Алексей aka kpblc
Moderator

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


Без учета #46
Специально только что проверил, нашел один баг / фичу, пофиксил. Суть в том, что не выполнялось преобразование в числовое значение для сортировки. Теперь выполняется, если это возможно. Дополнительно внес в локальные переменные объявления 2 функций.
Код:
[Выделить все]
(defun try-to-renum (source                       res
                     /                            selset
                     adoc                         pos
                     ent_lst                      _kpblc-conv-vla-to-list
                     _kpblc-block-attr-get-pointer-mask
                     _kpblc-is-ent-block-with-attr
                     _kpblc-is-ent-block-with-constant-attr
                     _kpblc-property-get          _kpblc-property-set
                     _kpblc-conv-value-to-string  _kpblc-error-catch
                     _kpblc-error-print
                     )
                    ;|
*    Простановка позиций с повторами для блоков
*    Параметры вызова:
   source   тэг атрибута, критичного к простановке (например, DLINA)
   res   тэг атрибута, куда устанавливается значение позиции
*    Примеры вызова:
(try-to-renum "dlina" "pos")
|;

  (defun _kpblc-conv-value-to-string (value /)
                                     ;|
*    конвертация значения в строку.
|;
    (if value
      (vl-princ-to-string value)
      ""
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-error-catch (protected-function
                             on-error-function
                             /
                             catch_error_result
                             )
                            ;|
*** Функция взята из книжной версии ruCAD'a без каких бы то ни было переделок,
*** кроме переименования.
*    Оболочка отлова ошибок.
*    Параметры вызова:
*   protected-function   - "защищаемая" функция
*   on-error-function   - функция, выполняемая в случае ошибки
|;
    (setq catch_error_result (vl-catch-all-apply protected-function))
    (if (and (vl-catch-all-error-p catch_error_result)
             on-error-function
             ) ;_ end of and
      (apply on-error-function
             (list (vl-catch-all-error-message catch_error_result))
             ) ;_ end of apply
      catch_error_result
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-error-print (func-name msg)
                            ;|
*    Функция вывода сообщения об ошибке для (_kpblc-error-catch)
*    Параметры вызова:
*   func-name   имя функции, в которой возникла ошибка
*   msg      сообщение об ошибке
|;
    (princ (strcat "\n ** "
                   (strcase func-name t)
                   " ERROR #"
                   (if msg
                     (strcat
                       (_kpblc-conv-value-to-string (getvar "errno"))
                       ": "
                       (_kpblc-conv-value-to-string msg)
                       ) ;_ end of strcat
                     ": undefined"
                     ) ;_ end of if
                   "\n"
                   ) ;_ end of strcat
           ) ;_ end of princ
    (princ)
    ) ;_ end of defun

  (defun _kpblc-property-set (obj property value / res)
                             ;|
*    Установка значения свойства объекта.
*    Параметры вызова:
*   obj      указатель на объект
*   property   наименование свойства
*   value      устанавливаемое значение
|;
    (_kpblc-error-catch
      (function
        (lambda ()
          (if (and obj
                   (vlax-property-available-p
                     obj
                     property
                     t
                     ) ;_ end of vlax-property-available-p
                   (vlax-read-enabled-p obj)
                   (vlax-write-enabled-p obj)
                   (not (vlax-erased-p obj))
                   ) ;_ end of and
            (progn
              (vlax-put-property
                obj
                property
                (cond
                  ((or (= (type value) (type (vlax-get-property obj property)))
                       (and (member (type value) (list 'int 'real))
                            (member (type (vlax-get-property obj property))
                                    (list 'int 'real)
                                    ) ;_ end of member
                            ) ;_ end of and
                       ) ;_ end of or
                   value
                   )
                  ((and (= (type (vlax-get-property obj property)) 'variant)
                        (member (type (car (_kpblc-conv-vla-to-list value)))
                                (list 'int 'real)
                                ) ;_ end of member
                        ) ;_ end of and
                   (vlax-3d-point (_kpblc-conv-vla-to-list value))
                   )
                  ((= (type (vlax-get-property obj property)) 'variant)
                   ((lambda (/ temp value_type)
                      (setq temp (_kpblc-conv-vla-to-list value))
                      (vlax-make-variant
                        (vlax-safearray-fill
                          (vlax-make-safearray
                            (cond ((= (type (car temp)) 'real) vlax-vbdouble)
                                  ((= (type (car temp)) 'int) vlax-vbinteger)
                                  ((= (type (car temp)) 'str) vlax-vbstring)
                                  (t vlax-vbobject)
                                  ) ;_ end of cond
                            (cons 0 (1- (length temp)))
                            ) ;_ end of vlax-make-safearray
                          temp
                          ) ;_ end of vlax-safearray-fill
                        ) ;_ end of vlax-make-variant
                      ) ;_ end of lambda
                    )
                   )
                  ) ;_ end of cond
                ) ;_ end of vlax-put-property
              ) ;_ end of if
            (setq res (vlax-get-property obj property))
            ) ;_ end of if
          ) ;_ end of lambda
        ) ;_ end of function
      '(lambda (x)
         (_kpblc-error-print
           (strcat
             "_kpblc-property-set :"
             " obj->"
             (_kpblc-conv-value-to-string (_kpblc-property-get obj 'objectname))
             " property->"
             (_kpblc-conv-value-to-string property)
             " value-> "
             (_kpblc-conv-value-to-string value)
             ) ;_ end of strcat
           x
           ) ;_ end of _kpblc-error-print
         ) ;_ end of lambda
      ) ;_ end of _kpblc-error-catch
    res
    ) ;_ end of defun

  (defun _kpblc-property-get (obj property / res)
                             ;|
*    Получение значения свойства объекта
|;
    (_kpblc-error-catch
      (function
        (lambda ()
          (if (and obj
                   (vlax-property-available-p
                     obj
                     property
                     ) ;_ end of vlax-property-available-p
                   ) ;_ end of and
            (setq res (vlax-get-property obj property))
            ) ;_ end of if
          ) ;_ end of lambda
        ) ;_ end of function
      '(lambda (x)
         (_kpblc-error-print
           (strcat "_kpblc-property-get :"
                   " obj->"
                   (_kpblc-conv-value-to-string
                     (if (vlax-property-available-p
                           obj
                           'objectname
                           ) ;_ end of vlax-property-available-p
                       (vla-get-objectname obj)
                       obj
                       ) ;_ end of if
                     ) ;_ end of _kpblc-conv-value-to-string
                   " property->"
                   (_kpblc-conv-value-to-string property)
                   ) ;_ end of strcat
           x
           ) ;_ end of _kpblc-error-print
         ) ;_ end of lambda
      ) ;_ end of _kpblc-error-catch
    res
    ) ;_ end of defun

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

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

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

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

  (vl-load-com)
  (if (setq selset (ssget "_:L" '((0 . "INSERT") (66 . 1))))
    (progn
      (foreach ent (setq ent_lst
                          (vl-remove-if-not
                            '(lambda (x)
                               (equal (vla-get-isdynamicblock (car x)) :vlax-true)
                               ) ;_ end of lambda
                            (vl-sort
                              (mapcar
                                '(lambda (a / str)
                                   (cons
                                     (setq a (vlax-ename->vla-object a))
                                     (cond
                                       ((wcmatch
                                          (setq str
                                                 (_kpblc-property-get
                                                   (car
                                                     (_kpblc-block-attr-get-pointer-mask
                                                       a
                                                       source
                                                       ) ; _ end of
                                                     ) ;_ end of car
                                                   'textstring
                                                   ) ; _ end of
                                                ) ;_ end of setq
                                          (strcat (_kpblc-conv-value-to-string (atof str))
                                                  "*"
                                                  ) ;_ end of strcat
                                          ) ;_ end of wcmatch
                                        (atof str)
                                        )
                                       (t str)
                                       ) ;_ end of cond
                                     ) ;_ end of cons
                                   ) ;_ end of lambda
                                (vl-remove-if
                                  'listp
                                  (mapcar 'cadr (ssnamex selset))
                                  ) ;_ end of vl-remove-if
                                ) ;_ end of mapcar
                              (function
                                (lambda (a b)
                                  (cond
                                    ((= (type (cdr a)) (type (cdr b)))
                                     (< (cdr a) (cdr b))
                                     )
                                    (t
                                     (< (_kpblc-conv-value-to-string (cdr a))
                                        (_kpblc-conv-value-to-string (cdr b))
                                        ) ;_ end of <
                                     )
                                    ) ;_ end of cond
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-sort
                            ) ;_ end of vl-remove-if-not
                         ) ;_ end of setq
        (_kpblc-property-set
          (car (_kpblc-block-attr-get-pointer-mask (car ent) res))
          'textstring
          (_kpblc-conv-value-to-string
            (setq
              pos (cond
                    ((= (length ent_lst) (length (member ent ent_lst)))
                     1
                     )
                    (t
                     (if (= (cdr ent)
                            (cdr (nth (1- (- (length ent_lst)
                                             (length (member ent ent_lst))
                                             ) ;_ end of -
                                          ) ;_ end of 1+
                                      ent_lst
                                      ) ;_ end of nth
                                 ) ;_ end of cdr
                            ) ;_ end of =
                       pos
                       (setq pos (1+ pos))
                       ) ;_ end of if
                     )
                    ) ;_ end of cond
              ) ;_ end of setq
            ) ;_ end of _kpblc-conv-value-to-string
          ) ;_ end of _kpblc-property-set
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
Файл, на котором выполнялось тестирование - аттач. Среда тестирования: ADT 2006 RUS + SP1, запущен как ACAD. Видео не делал.
[ATTACH]1190225934.dwg[/ATTACH]
Примеры вызова:
(try-to-renum "name" "pos")
(try-to-renum "dlina" "pos")
---
Добавлено: какая труба? Откуда ее взять-то? Выкладывай.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.09.2007, 22:19
#48
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ура-а-а-а! Я трубу починил и все заработало даже с русским шрифтом.
Пробел пришлось ликвидировать, атрибуты снести и поновой вставить, там еще один комплект висел непонятно где. Только полной видимостью и нашел.

Так, не расслабляться! Округление человеческое давай и добавочку к номеру.
Supermax вне форума  
 
Непрочитано 19.09.2007, 22:24
#49
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Первый вариант на моей трубе работает, а второй не хочет!.
Да и первый маркирует все блоки номером 1
Supermax вне форума  
 
Непрочитано 19.09.2007, 22:25
#50
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Supermax
Будь добр, возьми мою трубу и откатай на ней макрос.
Не хочет он пробелы видеть в длинне "... L=" без пробела берет.
Русский шрифт ему не нравится. А как без него?

(try-to-renum "... L=" "ПОЗИЦИЯ_ПО_СХЕМЕ") надо чтобы взял!!
А у тебя что, тэги такие у атрибутов? Во второй еще могу попробовать поверить, но вот в первый - никогда.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.09.2007, 22:28
#51
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Supermax
Первый вариант на моей трубе работает, а второй не хочет!.
Вот блин... У меня дома 3 нокии (разных моделей, разных, не надо! ) и 1 гнусмас, не считая труб в санузле. Твоей трубы у меня нет. Проверить не смогу пока не дашь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.09.2007, 22:34
#52
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


На.
[ATTACH]1190226898.dwg[/ATTACH]
Supermax вне форума  
 
Непрочитано 19.09.2007, 22:36
#53
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Все, ушел домой. Завтра продолжу.
Supermax вне форума  
 
Непрочитано 19.09.2007, 23:00
#54
Дима_

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


Прошу прощения что позновато влезаю, но есть и вариант сделать это без лиспа - с помощью контрольной суммы, минус в том, что вхождения блоков не будут упорядоченны по номеру относительно длинны, а вероятность колиизии определяеться размерностью (должно быть достаточно большое простое число относительно количества вхождений) - объяснение муторое получилось - смотри пример если подойдет то пожалуйста.
[ATTACH]1190228400.dwg[/ATTACH]
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 19.09.2007, 23:36
#55
Кулик Алексей aka kpblc
Moderator

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


> Supermax : Бгы... Ессно, работать не будет. Потому что у меня идет обращение к атрибутам блока, а не к значениям динамических свойств. Отсюда мораль - еще раз внимательно перечитывать тему
Лично мне сейчас переделывать лисп в ломак по полной программе. Потому что следом захочется ставить позиции на основе не одного свойства, а нескольких, да еще и в порядке указания, да еще и с возможностью фильтрации по атрибутам... Не, народ, я на такое не согласный.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.09.2007, 09:32
#56
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Дорогой наш Кулик Алексей aka kpblc работает!!!!!!!!!!!!!!!!!!!!!
я из первого поста запустил РАБОТАЕТ именно так как надо
Смотри прилагаемый чертеж
[ATTACH]1190266169.dwg[/ATTACH]
Порядок моих действий
1 - расстановка стоек
2 - Regenall
3 - Ввод команды
Код:
[Выделить все]
(try-to-renum "dlina" "pos")
где заместо "dlina" "pos" вставляю теги длины и позиции (у меня "dlina" "poz")
4 - и собственно на обсчет
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 20.09.2007, 09:41
#57
Кулик Алексей aka kpblc
Moderator

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


Сначала чутка оффтопа:
Я сейчас не работает, я сейчас сидит дома и слегка болеет и с трудом соображает.
Теперь серьезно: вариант будет корректно работать, пока длина стоек не будет составлять, к примеру, такую последовательность: 150 200 2000 78 - вот тогда нумерация позиций корректно проставлена не будет. В последнем варианте я попробовал уйти от этого. Вроде даже получилось.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2007, 09:44
#58
VVA

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


> zenon №25
Подправил код в посте № 21. Если еще актуально, то должно работать
VVA вне форума  
 
Автор темы   Непрочитано 20.09.2007, 09:48
#59
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


2 вариант тоже работает, я как-то разницы не заметил.

Цитата:
Сообщение от Кулик Алексей aka kpblc
Я сейчас не работает, я сейчас сидит дома и слегка болеет и с трудом соображает.
Горячий чай с малиной!!!

Цитата:
Сообщение от Кулик Алексей aka kpblc
Теперь серьезно: вариант будет корректно работать, пока длина стоек не будет составлять, к примеру, такую последовательность: 150 200 2000 78 - вот тогда нумерация позиций корректно проставлена не будет. В последнем варианте я попробовал уйти от этого. Вроде даже получилось.
Попробовал вроде работет. А в чем баг был??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 20.09.2007, 10:48
#60
Кулик Алексей aka kpblc
Moderator

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


Для примеру: выбрать 4 стойки, в первой длина 700, во второй - 78, в третьей - 470, в последней - 5600. Какова должна быть последовательность позиций и какова она будет (при первом варианте)?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сквозная нумерация динамических блоков

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

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