NANOCAD ШОУ
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Нормализация блоков текущего файла.

LISP. Нормализация блоков текущего файла.

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 09.06.2008, 10:30 8 | 1
LISP. Нормализация блоков текущего файла.
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 34,733

Кулик Алексей aka kpblc вне форума Вставить имя

Небольшая вспомогательная программа по "нормализации блоков" текущего файла.
Пример вызова:
(norm-blocks bit)
Аргументы вызова:
  1. bit сумма любого количества следующих значений:
    • 1 ; слой объекта - "0"
    • 2 ; тип линии объекта - ByBlock
    • 4 ; вес линии объекта - ByBlock
    • 8 ; цвет линии объекта - ByBlock
    • 16 ; масштаб линии объекта - 1
    • nil или <1 - выход из программы
Код:
[Выделить все]
(norm-blocks 1)	; перевести все объекты всех блоков в слой "0", не меняя остальные
  ; настройки
(norm-blocks 2)	; изменить тип линий всех объектов всех блоков на "ByBlock", не
  ; меняя остальных свойств
(norm-blocks 7) ; изменить слой на "0" (1), тип линиии - на ByBlock (2); вес линии - на
  ; ByBlock (4)

Вложения
Тип файла: lsp norm-blocks.lsp (5.8 Кб, 3155 просмотров)
Тип файла: lsp norm-blocks_v3.lsp (5.8 Кб, 1395 просмотров)

__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 12.11.2014 в 11:34.
Просмотров: 51460
 
Непрочитано 23.07.2008, 10:35
#21
Залётный


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Алексей прав - надо отделять мух от котлет. Нормализация определений блоков одно, вставок (в т.ч. атрибутов) - другое.



Что касается атрибутов во вставках, их надо приводить к действующему определению стиля. Во вставленных блоках при изменении параметров текстового стиля (наклон, сжатие) вид атрибутов не изменяется. Чтобы их причесать используется специальная функция.
Приношу извинение, но может я не совсем понимаю терминологию. Если будтет не трудно, прошу пояснить что такое БЛОК и что такое ВСТАВКА. Я работаю с английской версией Autodesk(овских) продуктов. Здесь на форуме всегда полагал, что БЛОК - это соответствует BLOCK в английской версии. Что то мне не удаётся найти эквивалента существительному ВСТАВКА. Может вставка это глагол INSERT?
Залётный вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 23.07.2008, 10:42
#22
Кулик Алексей aka kpblc
Moderator

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


Описание блока всегда одно. Вхождений блока может быть сколько угодно, именно вхождения блока имеют такие свойства, как слой, тип, цвет и вес линии, пространство-владелец, габариты и т.п. Только вхождения можно разбивать. Только во вхождениях можно редактировать значения атрибутов.
Но состав блока хранится в описании. Изменение описания блока приводит к изменению вхождений. Выполнение _.refedit - это редактирование описания блока.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 23.07.2008, 11:18
#23
ShaggyDoc

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


В английской версии BLOCK - это имя команды, которая позволяет создать Block Definition (определение блока). Одновременно block - это термин для какого-то количества разных примитивов, объединенных в одно целое и имеющих имя.

INSERT - имя команды для вставки блока. Одновременно INSERT - это имя примитива вставленного в чертеж блока. Вот эти insert-ы и называют вхождениями или вставками блоков.
ShaggyDoc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 23.07.2008, 14:18
#24
Залётный


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Одновременно INSERT - это имя примитива вставленного в чертеж блока. Вот эти insert-ы и называют вхождениями или вставками блоков.
Спасибо, никогда об этом не подозревал. Буду иметь в виду.
Залётный вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.08.2008, 17:37
#25
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,756
Отправить сообщение для Alan с помощью ICQ


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Алексей прав - надо отделять мух от котлет. Нормализация определений блоков одно, вставок (в т.ч. атрибутов) - другое.

..........

Что касается атрибутов во вставках, их надо приводить к действующему определению стиля. Во вставленных блоках при изменении параметров текстового стиля (наклон, сжатие) вид атрибутов не изменяется.
Чтобы их причесать используется специальная функция.
Ув.ShaggyDoc, а нельзя ли сделать посыл на эту функцию?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.08.2008, 18:46
#26
Кулик Алексей aka kpblc
Moderator

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


Если надо, то можно и самостоятельно нарисовать Вопрос в количестве и качестве проверок.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.08.2008, 19:00
#27
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,756
Отправить сообщение для Alan с помощью ICQ


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если надо, то можно и самостоятельно нарисовать Вопрос в количестве и качестве проверок.
Алексей, да я наполовину написал. Но всё для своего частного случая. Да и, ты знаешь, не программист я.
Поэтому и хотелось взглянуть квалифицированное решение. У тебя смотрел, но не нашел...
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.08.2008, 20:54
#28
ShaggyDoc

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


Цитата:
Ув.ShaggyDoc, а нельзя ли сделать посыл на эту функцию?
Совершенно случайно оказалось, что можно - других функций вроде бы не использует. Оидн аргумент - имя стиля.

Код:
[Выделить все]
 
(defun ru-textstyle-update
       (style / ent_name ent_data old_style style_angle style_width tbe _modify-style)
  (defun _modify-style (style_name
                        new_style_name
                        ent_data
                        style_width
                        style_angle
                        /
                        ent_type
                       )
    (setq ent_type (cdr (assoc 0 ent_data)))
    (if (and (or (= "TEXT" ent_type)
                 (= "ATTRIB" ent_type)
                 (= "ATTDEF" ent_type)
             ) ;_ end of or
             (or (= "*" style_name)
                 (= (strcase style_name) (cdr (assoc 7 ent_data)))
             ) ;_ end of or
        ) ;_ end of and
      (entmod (subst (cons 51 style_angle)
                     (assoc 51 ent_data)
                     (subst
                       (cons 41 style_width)
                       (assoc 41 ent_data)
                       (subst
                         (cons 7 new_style_name)
                         (assoc 7 ent_data)
                         ent_data
                       ) ;_ end of subst
                     ) ;_ end of subst
              ) ;_ end of subst
      ) ;_ end of entmod
    ) ;_ end of if
  ) ;_ end of defun
  ;; размеры
  (princ
    (strcat "Ждите, привожу стиль\n '" style "' к определению...\n")
  ) ;_ end of princ
  (setq ent_name    (tblnext "DIMSTYLE" t)
        old_style   (tblobjname "STYLE" style)
        tbe         (entget old_style)
        style_width (cdr (assoc 41 tbe))
        style_angle (cdr (assoc 50 tbe))
  ) ;_ end of setq
  (while ent_name
    (setq ent_data (entget (tblobjname "DIMSTYLE" (cdr (assoc 2 ent_name)))))
    (if (or
          (= "*" style)
          (= old_style (cdr (assoc 340 ent_data)))
        ) ;_ end of or
      ;; (print
      (entmod
        (subst
          (cons 340 old_style)
          (assoc 340 ent_data)
          ent_data
        ) ;_ end of subst
      ) ;_ end of entmod
    ) ;_ end of if
    (entupd (cdr (assoc -1 ent_data)))
    (setq ent_name (tblnext "DIMSTYLE"))
  ) ;_ end of while
  ;; блоки
  (setq ent_name (tblnext "BLOCK" t))
  (while ent_name
    (setq ent_data (cdr (assoc -2 ent_name)))
    (while ent_data
      (setq ent_data (entget ent_data))
      (_modify-style style style ent_data style_width style_angle)
      (setq ent_data (entnext (cdr (assoc -1 ent_data))))
    ) ;_ end of while
    (setq ent_name (tblnext "BLOCK"))
  ) ;_ end of while
  ;; примитивы
  (setq ent_name (entnext))
  (while ent_name
    (_modify-style style style (entget ent_name) style_width style_angle)
    (entupd ent_name)
    (setq ent_name (entnext ent_name))
  ) ;_ end of while
) ;_ end of defun
Для примениня надо обернуть в программу (текст привожу для справок)
Код:
[Выделить все]
 
(defun start
       (/ checked_list enabled_list i res_list text_styles_list _modify-style)
  (if
    (ru-yes
      (strcat
        "\nПроизводится изменение начертания всех существующих \nТЕКСТОВ, АТРИБУТОВ \nво ВСЕХ примитивах, включая блоки, \nвыбранного стиля!"
        "\n\nУстанавливается по определению стиля\n начертание, сжатие, угол наклона"
        "\nПользоваться осторожно!\nБудем делать"
      ) ;_ end of strcat
    ) ;_ end of ru-msg-info
     (progn
       ;;а стиль LINE надо исключить из заменяемых
       (setq text_styles_list (ru-obj-list-textstyles))
       (foreach style text_styles_list
         (setq enabled_list (cons (if (or (= style "RU_LINE")
                                          (= (substr (strcase style) 1 4) "ТОПО")
                                      ) ;_ end of or
                                    NIL
                                    t
                                  ) ;_ end of if
                                  enabled_list
                            ) ;_ end of cons
               checked_list (cons (if (or (= style "RU_LINE")
                                          (= (substr (strcase style) 1 4) "ТОПО")
                                      ) ;_ end of or
                                    NIL
                                    t
                                  ) ;_ end of if
                                  checked_list
                                  ;;enabled_list
                            ) ;_ end of cons
         ) ;_ end of setq
       ) ;_ end of foreach
       (if (setq res_list (ru-dlg-show-check-list
                            "Отбор изменяемых стилей"
                            text_styles_list
                            (reverse checked_list)
                            (reverse enabled_list)
                            nil
                            "command_edit_style_redraw"
                          ) ;_ end of ru-dlg-show-check-list
           ) ;_ end of setq
         (progn
           (setq i 0)
           (foreach style text_styles_list
             (if (nth i res_list)
               (ru-textstyle-update style)
             ) ;_ end of if
             (setq i (1+ i))
           ) ;_ end of foreach
         ) ;_ end of progn
       ) ;_ end of if
     ) ;_ end of progn
  ) ;_ end of if
  (princ)
) ;_ end of defun
(START)
Здесь общий алгоритм - отбор стилей, которые надо переопределить с исключением таких, которые переопределять нельзя. Ну и цикл применения функции.
ShaggyDoc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.08.2008, 20:30
#29
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 304


Хотелось бы уточнить у профи, в блоке порядка 10 атрибутов,
Можно ли, для всех или нескольких, махом изменить коэф. сжатия?
Например с 1 на 0,65 (для того что бы влазила в таблицу)
SLADE вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.08.2008, 21:24
#30
ShaggyDoc

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


Цитата:
Сообщение от SLADE Посмотреть сообщение
Хотелось бы уточнить у профи, в блоке порядка 10 атрибутов,
Можно ли, для всех или нескольких, махом изменить коэф. сжатия?
Например с 1 на 0,65 (для того что бы влазила в таблицу)
Код в #28 это делает. Изменяет все в соответствии с текущими установками заданного стиля - в том числе и у всех атрибутов всех блоков с таким стилем.
ShaggyDoc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 29.08.2008, 14:05
#31
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,756
Отправить сообщение для Alan с помощью ICQ


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Код в #28 это делает. Изменяет все в соответствии с текущими установками заданного стиля - в том числе и у всех атрибутов всех блоков с таким стилем.
ShaggyDoc, огромное спасибо за опубликованный код.
Извини, не смог поблагодарить сразу... Пригрузили бесплатной халтурой, как только освобожусь, сразу пущу его в освоение.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 06.09.2008, 15:06
#32
Supermax

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


Во вхождениях блока можно менять не только значение атрибутов, но и их наименование, при этом в чертеже появляется несколько вхождений одного и того же блока, но наименования атрибутов и их значения разные. Такое состояние копируется как внутри самого файла, так и передается копированием в другие файлы. Это необходимо, когда надо переименовать атрибут с одного языка на другой, не нарушая целостность базового описания. Везде, где в работе программы нужно переписывать в отчетный документ не только значение атрибута, но и его наименование, такое возможно. Значит, и тут могут быть подводные камни.
Командой ATTSYNC все вхождения блока возвращают свои первоначальные значения имен атрибутов, но при этом стирается значение этих атрибутов в каждом вхождении блока и заменяется значением из базовой записи. Если имена атрибутов соответствуют базовому значению имени атрибута, то значение атрибутов в таких блоках при ATTSYNC не нарушается, хотя оно и разное, а если имя атрибута "подкорректировали" то при ATTSYNC значение уйдет в мусорку, причем во всех вхождениях!
Вы все знаете, что имена атрибутов пишутся заглавными буквами, но их можно и не заглавными писать, но только через лисп. Если такое сделали с вхождением не поменяв в базовом описании, то может произойти непоправимое (если таких вхождений несколько тысяч).

Есть проблема с перестановкой местами имен атрибутов. Чисто в трудоемкости. Поменять что в базовом описании, что во вхождении местами атрибуты можно только переименовав уже имеющиеся и перенеся их значения друг-другу. Если сделать это только во вхождении, или только в базовом описании, то при ATTSYNC .... сами понимаете. Значит надо переставив в базовом описании выбрать все вхождения и там переставить, предварительно проверив, что все вхождения соответствуют базовому описанию.
Я сейчас работаю над весьма большой программой по аудиту блоков, там все это будет реализовано. Более того, сначала отчет о существующем положении, а уж за тем корректировка. С заменой свойств примитивов включенных в блок дело еще сложнее. Вы про блоки в блоке еще не обсудили. Наверное я и вышеизложенные моменты учту и добавлю в этот аудитор.
Supermax вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.04.2010, 13:45
#33
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,548


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Небольшая вспомогательная программа по "нормализации блоков" текущего файла.
А можно "прикрутить" к этой отличной програмке еще и возможность устанавливать/отменять запрет на расчленение (Explode) блоков?

Например, динамические блоки у нас желательно делать расчленяемыми, а обычные - нерасчленяемыми. Запустил для библиотек динамических - поставил режим "Разрешить расчленение"==Да. А для библиотек обычных - "Разрешить расчленение"==Нет. Или, пока создаешь библиотеки обычных блоков, то нужно иметь возможность их разнести, чтобы делать проверки и т.п. А при передаче в пользование программкой задать запрет.
И т.п. Да и по умолчанию в Автокаде стоит "разрешить". И у большинства блоков чужих библиотек стоит разрешение. А блоков множество - в каждый залезать очень долго, и пропустить все равно можно.
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.04.2010, 14:50
#34
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun norm-blocks-with-explode (bit               explode           /                 adoc
                                 *error*           fun_conv-vla-to-list                fun_layer-save
                                 fun_layer-restore lst_layer         fun_get-ent-name  fun_property-set
                                 )
                                ;|
*    Нормализация блоков текущего файла.
*    Аргументы вызова:
	bit	сумма любого количества следующих значений:
	  1   ; слой объекта - "0"
	  2   ; тип линии объекта - ByBlock
	  4   ; вес линии объекта - ByBlock
	  8   ; цвет линии объекта - ByBlock
	  16  ; масштаб линии объекта - 1
	  nil или <1 - выход из программы
	explode	для всех блоков установить "разбиваемость". t -> установить
		nil -> снять
*    Примеры вызова:
(norm-blocks-with-explode 1 t)	; перевести все объекты всех блоков в слой "0", не меняя остальные
  ; настройки. Установить блоки "разбиваемыми"
(norm-blocks-with-explode 2 nil)	; изменить тип линий всех объектов всех блоков на "ByBlock", не
  ; меняя остальных свойств. Снять "разбиваемость" блоков
(norm-blocks-with-explode 7 t) ; изменить слой на "0" (1), тип линиии - на ByBlock (2); вес линии - на
  ; ByBlock (4). Установить блоки разбиваемыми
|;

  (defun *error* (msg)
    (fun_layer-restore (lst_layer))
    (vla-regen adoc acallviewports)
    (vla-endundomark adoc)
    (princ)
    ) ;_ end of defun

  (defun fun_get-attr (blk-ref)
    (append (fun_conv-vla-to-list (vla-getattributes blk-ref))
            (fun_conv-vla-to-list (vla-getconstantattributes blk-ref))
            ) ;_ end of append
    ) ;_ end of defun

  (defun fun_conv-vla-to-list (value / res)
    (cond
      ((= (type value) 'variant)
       (setq res (fun_conv-vla-to-list (vlax-variant-value value)))
       )
      ((and (= (type value) 'safearray)
            (>= (vlax-safearray-get-u-bound value 1) 0)
            ) ;_ end of and
       (setq res (vlax-safearray->list value))
       )
      ((and (= (type value) 'safearray)
            (< (vlax-safearray-get-u-bound value 1) 0)
            ) ;_ end of and
       (setq res nil)
       )
      (t
       (if (vlax-property-available-p value 'count)
         (setq res ((lambda (/ lst)
                      (vlax-for item value
                        (setq lst (cons item lst))
                        ) ;_ end of vlax-for
                      (reverse lst)
                      ) ;_ end of lambda
                    )
               ) ;_ end of setq
         (setq res (list value))
         ) ;_ end of if
       )
      ) ;_ end of cond
    res
    ) ;_ end of defun

  (defun fun_get-ent-name (ent)
    (cond
      ((vlax-property-available-p ent 'effectivename)
       (vla-get-effectivename ent)
       )
      ((vlax-property-available-p ent 'name)
       (vla-get-name ent)
       )
      (t nil)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun fun_layer-save (/ res)
    (setq res (mapcar '(lambda (x)
                         (list x
                               (cons "freeze" (vla-get-freeze x))
                               (cons "lock" (vla-get-lock x))
                               ) ;_ end of list
                         ) ;_ end of lambda
                      (vl-remove-if
                        '(lambda (a)
                           (wcmatch (fun_get-ent-name a) "*|*")
                           ) ;_ end of lambda
                        (fun_conv-vla-to-list (vla-get-layers adoc))
                        ) ;_ end of vl-remove-if
                      ) ;_ end of mapcar
          ) ;_ end of setq
    (foreach item lst
      (fun_property-set item "freeze" :vlax-false)
      (fun_property-set item "lock" :vlax-false)
      ) ;_ end of foreach
    res
    ) ;_ end of defun

  (defun fun_layer-restore (lst)
    (foreach item lst
      (foreach prop (cdr item)
        (fun_property-set (car item) (car prop) (cdr prop))
        ) ;_ end of foreach
      ) ;_ end of foreach
    ) ;_ end of defun

  (defun fun_property-set (ent prop value)
    (if (vlax-property-available-p ent prop)
      (vl-catch-all-apply '(lambda () (vlax-put-property ent prop value)))
      ) ;_ end of if
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if (and bit
           (>= bit 1)
           ) ;_ end of and
    (progn
      (setq lst_layer (fun_layer-save)
            explode   (if explode
                        :vlax-true
                        :vlax-false
                        ) ;_ end of if
            ) ;_ end of setq
      (foreach blk_def (vl-remove-if
                         '(lambda (x)
                            (or (equal (vla-get-islayout x) :vlax-true)
                                (equal (vla-get-isxref x) :vlax-true)
                                ) ;_ end of or
                            ) ;_ end of lambda
                         (fun_conv-vla-to-list (vla-get-blocks adoc))
                         ) ;_ end of vl-remove-if
        (if (vlax-property-available-p blk_def 'explodable t)
          (vla-put-explodable blk_def explode)
          ) ;_ end of if
        (vlax-for sub blk_def
          (if (>= bit 16)
            (progn
              (fun_property-set sub 'linetypescale 1.)
              (setq bit (- bit 16))
              ) ;_ end of progn
            ) ;_ end of if
          (if (>= bit 8)
            (progn
              (fun_property-set sub 'linetypescale 1.)
              (setq bit (- bit 8))
              ) ;_ end of progn
            ) ;_ end of if
          (if (>= bit 4)
            (progn
              (fun_property-set sub 'lineweight aclnwtbyblock)
              (setq bit (- bit 4))
              ) ;_ end of progn
            ) ;_ end of if
          (if (>= bit 2)
            (progn
              (fun_property-set sub 'linetype "byblock")
              (setq bit (- bit 2))
              ) ;_ end of progn
            ) ;_ end of if
          (if (>= bit 1)
            (progn
              (fun_property-set sub 'layer "0")
              (setq bit (1- bit))
              ) ;_ end of progn
            ) ;_ end of if
          ) ;_ end of vlax-for
        ) ;_ end of foreach
      ;; В принципе, следующий цикл не особо требуется, но я оставил
      (foreach ent (fun_conv-vla-to-list (vla-get-blocks adoc))
        (vlax-for sub ent
          (vl-catch-all-apply '(lambda () (vla-update sub)))
          ) ;_ end of vlax-for
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  (fun_layer-restore lst_layer)
  (vla-regen adoc acallviewports)
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Вложения
Тип файла: lsp norm-blocks-with-explode.LSP (6.7 Кб, 235 просмотров)
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 05.04.2010 в 09:58.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.04.2010, 15:23
#35
Nike

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


Извиняюсь, а можно нормализовать не все подряд, а только выбранные блоки?
Nike вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.04.2010, 15:27
#36
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,548


Круто, но пока что у меня ругается:

Command: (norm-blocks-with-explode 2 nil)
; error: no function definition: NORM-BLOCKS-WITH-EXPLODE
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.04.2010, 16:15
#37
Кулик Алексей aka kpblc
Moderator

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


А код вообще загружен?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.04.2010, 16:29
#38
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,548


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А код вообще загружен?
Пардон! Я не то не туда скопировал!
Работает!

А можно задавать Byblock не только линиям, но и окружностям, дугам, подписям - вообще всем типам элементов?
Ведь в блоках, особенно в чужих, существующих, используются самые разные типы элементов.

Последний раз редактировалось АлексЮстасу, 01.04.2010 в 16:37.
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.04.2010, 16:51
#39
Кулик Алексей aka kpblc
Moderator

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


Свойства устанавливаются всему составу описания блока.
> #35: да, можно "нормализовать не все подряд". Но у меня на это сейчас времени и сил немного "не хватат". Сопутствующих вопросов многовато возникает...
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.04.2010, 17:21
#40
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,548


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Свойства устанавливаются всему составу описания блока.
Опять прошу прощения! Весна, видно, действует, трудно сосредоточиться. Да, цвет, стиль устанавливаются всем типам элементов.

Но веса линий почему-то остаются ByLayer. И когда ставлю 4, и когда 7.
И в прежней версии тоже остаются. Например:

(norm-blocks-with-explode 4 t)
(norm-blocks 4)

Последний раз редактировалось АлексЮстасу, 01.04.2010 в 17:31.
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Нормализация блоков текущего файла.

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lisp. Расстановка блоков на пересечении линий. wetr LISP 21 25.12.2014 15:27
Импорт палитры блоков при помощи LISP TwoZero LISP 11 27.01.2013 22:35
AutoCAD 2008 - вставка блоков из файла в файл Vavan Metallist AutoCAD 14 25.05.2009 19:37
Удаление не используемых блоков из файла Гузалия AutoCAD 3 13.12.2007 10:06
2008. Глюк с назначением текущего цвета из Lisp? _Andre_ LISP 5 25.10.2007 13:50

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


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