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

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

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

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

Небольшая вспомогательная программа по "нормализации блоков" текущего файла.
Пример вызова:
(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 Кб, 5119 просмотров)
Тип файла: lsp norm-blocks_v3.lsp (5.8 Кб, 3822 просмотров)

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 12.11.2014 в 11:34.
Просмотров: 95446
 
Непрочитано 21.06.2008, 08:47
#2
dextron3

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


В каких случаях можно применить это?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 21.06.2008, 12:23
#3
VVA

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


В тех случаях, когда слой, на котором установлен блок отключаешь, а он все равно виден. У нас этим грешат архитекторы или когда чертежи приходят со стороны, как правило с творческих мастерских.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.07.2008, 11:42
#4
Red Nova

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


А можно добавить возможность применить команду не ко всем блокам, а только к выбранным?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 19.07.2008, 12:42
#5
ButcheR

пианист
 
Регистрация: 18.02.2008
Питер
Сообщений: 418


Цитата:
Сообщение от Red Nova Посмотреть сообщение
А можно добавить возможность применить команду не ко всем блокам, а только к выбранным?
лисп поезный, но для такого случая, я думаю проще будет использовать команду "быстрый выбор"...ну или в крайняк с "группами" что-нибудь намутить.
ButcheR вне форума  
 
Непрочитано 19.07.2008, 12:45
#6
ButcheR

пианист
 
Регистрация: 18.02.2008
Питер
Сообщений: 418


по теме возник вопрос... X-ref тоже по сути блок... к нему тоже бы наверно полезно применять такие свойства.
Народ, кто работает с X-ref, расскажите, в какой слой его помещаете и какие свойства при этом задаёте?
ButcheR вне форума  
 
Непрочитано 19.07.2008, 15:27
#7
Red Nova

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


Цитата:
лисп поезный
Это в смысле поездом удобно перевозить?
Цитата:
я думаю проще будет использовать команду "быстрый выбор"...ну или в крайняк с "группами" что-нибудь намутить.
Чета ты совсем в дебри ушел. Причем тут быстрый выбор и группы.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 19.07.2008, 15:46
#8
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Смотрю с точки зрения изготовления подосновы из чужого (архитектурного) чертежа.
Согласен с №4. На загруженном чертеже невозможно проконтролировать результат. Кроме того, инструкцию по кодам придется записать на бумажке и приклеить на стену, так как не каждый день по 5 раз будет применятся. Либо несколько кнопок сделать. Хотя это возможно
Надо бы иметь возможность вернуть в исходное, чтобы попробовать другой бит-код
Vova вне форума  
 
Автор темы   Непрочитано 20.07.2008, 00:12
#9
Кулик Алексей aka kpblc
Moderator

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


Red Nova, #4 : такой задачи не ставилось. Но в принципе возможно (правда, придется переписывать практически наполовину )
ButcheR, #6: этот лисп исключает из обработки внешние ссылки. При чем тут "в какой слой (xref) его помещаете и какие свойства при этом задаёте" не очень понятно.
Vova, #8: стандартная команда отмены должна вернуть все обратно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2008, 00:54
#10
Залётный


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


Цитата:
Сообщение от Кулик Алексей 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)
Возможно ли добавить обнуление толщины полилиний и возможность изменения свойств всех елементов блока, особенно цвета, ByLayer.

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

Было бы не плохо ещё заменять в блоках, если встречаются, ttf шрифты на какой-нибудь стандартный shx, например simplex. Особенно это актуально если внутри блока применяется Mtext и фонт прописан прямо в нём.
Залётный вне форума  
 
Автор темы   Непрочитано 20.07.2008, 01:27
#11
Кулик Алексей aka kpblc
Moderator

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


Теоретически - возможно. Практически...
1) Практически перенос толщин полилиний внутри блока в 0 проблем не составляет. Завтра только, сегодня уже силенок не хватат.
2) Установка свойств примитивов внутри блока в ByLayer лично я считаю неверным принципиально (см. аттач): слева блок с цветом примитива "ByLayer", справа - "ByBlock". Как разница, ощущается?
3) Замена только стиля (кстати, на какой? На текущий?) тоже проблем в общем-то не составит. Но вот снятие форматирования mtext'ов... Тут надо просто искать гарантированно работающий код.
Кстати, как поступать с атрибутами блоков?
P.S. Скорость работы такого лиспа будет, скорее всего, на порядок ниже, чем у исходного.
P.P.S. Я уже несколько раз убеждался, что под "нормализацией" каждый понимает что-то свое
Вложения
Тип файла: dwg
DWG 2004
ByLayer_vs_ByBlock.dwg (68.1 Кб, 14365 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2008, 03:26
#12
Залётный


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Теоретически - возможно. Практически...
1) Практически перенос толщин полилиний внутри блока в 0 проблем не составляет. Завтра только, сегодня уже силенок не хватат.
Горячки тут нет. Можно и завтра и послезавтра и в любое удобное для тебя время.

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
2) Установка свойств примитивов внутри блока в ByLayer лично я считаю неверным принципиально (см. аттач): слева блок с цветом примитива "ByLayer", справа - "ByBlock". Как разница, ощущается?
Вообщем то, как мне кажется, я представляю разницу и сам испoльзую внутри блока разные премитивы с разными свойствами (ByLayer и ByBlock) для того, чтобы можно было более гибко их использовать. Однако стараюсь этим не злоупотреблять т.к. существуют смежники и для них такая штука не подарок. Часто мы используем в качестве подосновы файлы смежников (прямой XREF overlay, для того, чтобы они тоже могли использовать наши) их рабочего чертежа. Если все элементы у них выполнены с цветом ByLayer, проблем не возникает. РАботаю с VIZRETAIN - 1 и просто меняю цвет их слоёв на тот, который меня устраивает.

Для нормализации подосновы, по крайней мере у нас, требуется чтобы она была только фоном и печаталась тонкими линиями. Поскольку у нас печать производится по цвету примитива, простая замента цвета всех елементов блока (и размерных стилей) на цвет ByLayer и замена цвета всех слоёв на необходимый цвет, в принципе, решает эту задачу.


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
3) Замена только стиля (кстати, на какой? На текущий?) тоже проблем в общем-то не составит. Но вот снятие форматирования mtext'ов... Тут надо просто искать гарантированно работающий код.
Кстати, как поступать с атрибутами блоков?
P.S. Скорость работы такого лиспа будет, скорее всего, на порядок ниже, чем у исходного.
В настоящее время использую два лиспа ChStyle и StripMtext (см. атач.)
Взяты очень давно отсюда:
ChStyle
StripMtext v2.1 R15+ Copyright Steve Doman [email protected] 8/25/01
Полагаю замена должна производится глобально т.е. и в атрибутах тоже.

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
P.P.S. Я уже несколько раз убеждался, что под "нормализацией" каждый понимает что-то свое
Полностью согласен. Как я понял, твой лисп предназначен для подготовки пришлых файлов для использования в своей работе.
Вполне вероятно я мог и ошибиться
Вложения
Тип файла: zip ChStyle_StripMtext.ZIP (1.8 Кб, 639 просмотров)
Залётный вне форума  
 
Непрочитано 20.07.2008, 11:45
#13
VVA

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


Залетный, Вариант осюда. Запроса нет, глобальная ширина полилиний принудительно устанавливается в 0
Код:
[Выделить все]
;;published by kpblc
;;http://www.arcada.com.ua/forum/viewtopic.php?t=526
;;modyfied and published by VVA
;;http://www.cadtutor.net/forum/showthread.php?t=13295
;|=============================================================================
*    Функция "нормализации" блоков активного файла. В зависимости от ответа на
* вопрос к типу ByBlock приводится либо тип линии, либо вес линии, либо цвет,
* либо все вместе (при пустом ответе, т.е. по умолчанию).
*    Обрабатываются все блоки, без исключения.
*  Не обрабатываются внешние ссылки
=============================================================================|;
(defun c:normblocks (/ adoc answer lays lock lay *error* ans0 atype cnt isRus)
 (defun *error* (msg)(princ msg)
   (if lock (foreach x lock (vla-put-lock x :vlax-true)))(vl-cmdf "_.Redraw"))
  (vl-load-com)(setq cnt 0 isRus (= (getvar "DWGCODEPAGE") "ANSI_1251"))
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq lays (vla-get-layers adoc))
  (vla-startundomark adoc)
  (if isRus
  (initget "Типлиний Веслиний Цвет ВСЕ LType LWeight Color All _ T W C A T W C A")
  (initget "LType LWeight Color All _ T W C A")
    )
  (if (null (setq answer
      (getkword
        (if isRus
        "\nНормализовать в блоке [Типлиний/Веслиний/Цвет/ВСЕ] <ВСЕ> : "
        "\nIn blocks to lead to norm [LType/LWeight/Color/All] <All> : "
          ))))
    (setq answer "A")) ;_ end of if
  (if isRus
    (initget "поСлою поБлоку byLayer byBlock _ byLayer byBlock byLayer byBlock")
    (initget "byLayer byBlock")
    )
  (setq atype (getkword
                (if isRus
                "\nСодержимое блока изменить на [поСлою/поБлоку] <поБлоку>:"
                "\nSet contents inside the block to [byLayer/byBlock] <byBlock>:")))

  (initget "Yes No")
  (setq ans0 (getkword
               (if isRus
               "\nИзменить слой примитивов на 0? [Yes/No] <No>:"
               "\nChange entities layer's to 0? [Yes/No] <No>:")))
  (vlax-for item (vla-get-blocks adoc)

    (if (and (= (vla-get-IsLayout item) :vlax-false)
             (= (vla-get-IsXRef item) :vlax-false))
      (progn
      (setq cnt (1+ cnt))
      (grtext -1 (strcat (if isRus "Изменяется " "Modyfied ") (vla-get-name item)))
      ;(print (strcat (if isRus "Изменяется " "Modyfied ") (vla-get-name item)))
   (vlax-for   sub_item item ;(vla-item (vla-get-blocks adoc) (vla-get-name item))
   (setq lay (vla-item lays (vla-get-layer sub_item)))
   (if (= (vla-get-lock lay) :vlax-true)
   (progn (vla-put-lock lay :vlax-false)(setq lock (cons lay lock))))
   (if (= ans0 "Yes")(vla-put-Layer sub_item "0"))
   ;;;Ширина полилиний в 0
   (if (vlax-property-available-p sub_item "ConstantWidth")
   (vl-catch-all-apply
        '(lambda ()
           (vla-put-ConstantWidth sub_item 0.)
           ) ;_ end of lambda
        ) ;_ end of vl-catch-all-apply
     )

   (cond
     ((= answer "W")
      (vla-put-LineWeight sub_item (if (= atype "byLayer") acLnWtByLayer aclnwtbyblock))
      )
     ((= answer "T")
      (vla-put-linetype sub_item (if (= atype "byLayer") "ByLayer" "ByBlock"))
      )
     ((= answer "C")
      (vla-put-color sub_item (if (= atype "byLayer") acByLayer acByBlock))
      )
     (t
      (vla-put-LineWeight sub_item (if (= atype "byLayer") acLnWtByLayer aclnwtbyblock))
      (vla-put-linetype sub_item (if (= atype "byLayer") "ByLayer" "ByBlock"))
      (vla-put-color sub_item (if (= atype "byLayer") acByLayer acByBlock))
      )
     ) ;_ end of cond
   ) ;_ end of vlax-for
   )
      ) ;_ end of if
    ) ;_ end of vlax-for
  (if lock (foreach x lock (vla-put-lock x :vlax-true)))
  (vla-regen adoc acallviewports)
  (vla-endundomark adoc)(vl-cmdf "_.Redraw")
  (princ (if isRus
           (strcat "\nИзменено " (itoa cnt) " блоков")
           (strcat "\nModyfied " (itoa cnt) " blocks")
           )
         )
  (princ)
  ) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 22.09.2008 в 16:44. Причина: орфография
VVA вне форума  
 
Непрочитано 20.07.2008, 11:50
#14
VVA

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


По поводу смены текстового стиля есть хорошая функция, опубликованная T.Willey здесь
Код:
[Выделить все]
;;Posted by T.Willey 
;;http://www.theswamp.org/index.php?topic=14247.15
;;Обработка всех примитивов рисунка через VLA
;;Doc - указатель на объект документа
;;StyName - string. Имя текстового стиля. Стиль должен существовать
(defun ChangeAllTextObjectsStyle (Doc StyName / tempObjType IsLo ColCnt RowCnt)

(vlax-for Blk (vla-get-Blocks Doc)
 (setq IsLo (if (= (vla-get-IsLayout Blk) :vlax-true) T nil))
 (if (= (vla-get-IsXref Blk) :vlax-false)
  (vlax-for Obj Blk
   (setq tempObjType (vla-get-ObjectName Obj))
   (cond
    ((vl-position tempObjType '("AcDbText" "AcDbMText" "AcDbAttributeDefinition"))
     (vla-put-StyleName Obj StyName)
     (if (not IsLo)
      (vla-put-Layer Obj "0")
     )
    )
    ((wcmatch tempObjType "AcDb*Dimension")
     (vla-put-TextStyle Obj StyName)
    )
    ((= tempObjType "AcDbBlockReference")
     (foreach Att (vlax-invoke Obj 'GetAttributes)
      (vla-put-StyleName Att StyName)
     )
     (foreach Att (vlax-invoke Obj 'GetConstantAttributes)
      (vla-put-StyleName Att StyName)
     )
    )
    ((= tempObjType "AcDbTable")
     (setq ColCnt 0)
     (repeat (vla-get-Columns Obj)
      (setq RowCnt 0)
      (repeat (vla-get-Rows Obj)
       (vlax-invoke Obj 'SetCellTextStyle RowCnt ColCnt StyName)
       (setq RowCnt (1+ RowCnt))
      )
      (setq ColCnt (1+ ColCnt))
     )
    )
   )
  )
 )
)
)
PS. Все это вылилось в набор команд: LISP. Замена текстового стиля
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 24.09.2009 в 18:18.
VVA вне форума  
 
Непрочитано 22.07.2008, 18:24
#15
Залётный


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Залетный, Вариант осюда. Запроса нет, глобальня ширина полилиний принудительно устанавливается в 0
Вроде работает. Одна проблема - атрибуты. Требуется отдельный BATTMAN для каждого блока с атрибутами. Возможно ли это добавить в код?
Залётный вне форума  
 
Непрочитано 22.07.2008, 18:31
#16
VVA

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


Залётный,
Цитата:
Поскольку у нас печать производится по цвету примитива, простая замента цвета всех елементов блока (и размерных стилей) на цвет ByLayer и замена цвета всех слоёв на необходимый цвет, в принципе, решает эту задачу.
COLORX видел?
А про BATTMAN поподробнее.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.07.2008, 20:33
#17
Залётный


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Залётный,

COLORX видел?
Это не то, что надо.

Цитата:
Сообщение от VVA Посмотреть сообщение
ЗалётныйА про BATTMAN поподробнее.


NORMBLOCKS всё переопределя в цвет, для меня, ByLayer. Если в чертёж вставлять блок, то он будет цветом ByLayer. Однако атрибуты блоков уже имеющиеся в чертеже сохраняют свой цвет. Поэтому их требуется синхронизировать, что выполнняется при помощи команды BATTMAN. Просто открывается этот блок в BATTMAN и нажимается кнопка Sync. Возможно ли выполнить такую синхронизацию при помощи LISP и если да, то добавить её к коду NORMBLOCKS.
Залётный вне форума  
 
Автор темы   Непрочитано 22.07.2008, 22:48
#18
Кулик Алексей aka kpblc
Moderator

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


Так дело в том, что "нормализуются" описания блоков, а не их вхождения. Атрибуты - отдельная головная боль. Пользователь может каждому конкретному атрибуту выставить свой слой, тип, вес и цвет линии, текстовый стиль. И чего и в какой вид приводить?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.07.2008, 06:27
#19
Залётный


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Так дело в том, что "нормализуются" описания блоков, а не их вхождения. Атрибуты - отдельная головная боль. Пользователь может каждому конкретному атрибуту выставить свой слой, тип, вес и цвет линии, текстовый стиль. И чего и в какой вид приводить?
Вот вот. Как я понимаю, BATTMAN приводит атрибуты вставленных блоков к тому виду, чтобы они соответствовали "нормализованному" описанию. В случае когда они нормализовались в цвет ByLayer, они сразу принимают цвет слоя, что и требовалось в начале.
Залётный вне форума  
 
Непрочитано 23.07.2008, 06:44
#20
ShaggyDoc

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


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

При этом надо определяться с понятием "нормализация". Блоки-то разные бывают. Например, другой чертеж вставленный в виде блока скорее всего не надо нормализировать. А вот различные блоки условных обозначений - надо. Особенно если они сделаны черт знает кем и когда.

У меня для нормализации используется 16 функций, которые применяются в разных сочетаниях.

Что нормализуется:
1. Все примитивы блоков переносятся на слой 0.

2. Большинству примитивов назначается цвет ByBlock. Исключения - когда элементу задан конкртеный цвет, который должен быть постоянным всегда и в любых условиях.

3. Особые сложности с шириной и весом линий. Если задан вес 0, то он переводится в LwDefault - иначе могут быть пробемы с печатью. Если у полилиний не постоянная физическая ширина - она не изменяется. Для полилиний с постоянной физической шириной - вес ByLayer.

Если у полилиний уже есть Lw, и он не 0 и не Default - устанавливается ByBlock. Ну и другие варианты есть.

4. Вес линий для текстов и атрибутов LwDefault или зависящий от высоты текста - чтоб "большие" буквы выглядели жирнее, как по ЕСКД.

Что касается атрибутов во вставках, их надо приводить к действующему определению стиля. Во вставленных блоках при изменении параметров текстового стиля (наклон, сжатие) вид атрибутов не изменяется. Чтобы их причесать используется специальная функция.
ShaggyDoc вне форума  
 
Непрочитано 23.07.2008, 10:35
#21
Залётный


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


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



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

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


Описание блока всегда одно. Вхождений блока может быть сколько угодно, именно вхождения блока имеют такие свойства, как слой, тип, цвет и вес линии, пространство-владелец, габариты и т.п. Только вхождения можно разбивать. Только во вхождениях можно редактировать значения атрибутов.
Но состав блока хранится в описании. Изменение описания блока приводит к изменению вхождений. Выполнение _.refedit - это редактирование описания блока.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей 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"В
Сообщений: 13,381


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

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


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


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

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


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

..........

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

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


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

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от Кулик Алексей 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"В
Сообщений: 13,381


Цитата:
Ув.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
Сообщений: 324


Хотелось бы уточнить у профи, в блоке порядка 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"В
Сообщений: 13,381


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

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от 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
Москва
Сообщений: 3,031


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

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

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


Код:
[Выделить все]
(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 Кб, 323 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

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

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


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

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


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

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
С.-Петербург
Сообщений: 39,848


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

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


Цитата:
Сообщение от Кулик Алексей 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
С.-Петербург
Сообщений: 39,848


Свойства устанавливаются всему составу описания блока.
> #35: да, можно "нормализовать не все подряд". Но у меня на это сейчас времени и сил немного "не хватат". Сопутствующих вопросов многовато возникает...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.04.2010, 17:21
#40
АлексЮстасу

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


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

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

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

Последний раз редактировалось АлексЮстасу, 01.04.2010 в 17:31.
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 05.04.2010, 00:44
#41
Кулик Алексей aka kpblc
Moderator

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


Исправил #34
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.04.2010, 03:09
#42
АлексЮстасу

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


Что-то в последней версии norm-blocks-with-explode у меня не только веса не меняются с ByLayer на ByBlock, но и типы линий остаются ByLayer, и слои остаются как были.
Меняется только разбиваемость.
И когда задаю (norm-blocks-with-explode 2 nil), т.е. изменять тип линий всех объектов всех блоков на "ByBlock".
И когда задаю (norm-blocks-with-explode 4 nil), ), т.е. изменять веса всех объектов всех блоков на "ByBlock".
И когда задаю (norm-blocks-with-explode 7 t), т.е. изменить слой на "0" (1), тип линиии - на ByBlock (2); вес линии - на ByBlock (4).

Можно добавть статистику - сколько блоков обработано. Чтобы сразу было понятно, что программа работала, т.к. при малом числе блоков все происходит так быстро, что непонятно - работала вообще или нет.

Последний раз редактировалось АлексЮстасу, 05.04.2010 в 03:14.
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 05.04.2010, 13:39
1 | #43
Кулик Алексей aka kpblc
Moderator

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


Нда, что-то у меня вчерась совсем не соображалось...
Попробуй так:
Код:
[Выделить все]
(defun norm-blocks-with-explode (bit               explode           /                 loc_bit
                                 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
            loc_bit   bit
            ) ;_ end of setq
      (foreach blk_def
               (vl-remove-if
                 (function
                   (lambda (x)
                     (or
                       (equal (vla-get-islayout x) :vlax-true)
                       (equal (vla-get-isxref x) :vlax-true)
                       (wcmatch
                         (strcase (vla-get-name x))
                         ",_DOT,_DOTSMALL,_DOTBLANK,_ORIGIN,_ORIGIN2,_OPEN,_OPEN90,_OPEN30,_CLOSED,_SMALL,_NONE,_OBLIQUE,_BOXFILLED,_BOXBLANK,_CLOSEDBLANK,_DATUMFILLED,_DATUMBLANK,_INTEGRAL,_ARCHTICK"
                         ) ;_ end of wcmatch
                       ) ;_ end of or
                     ) ;_ end of lambda
                   ) ;_ end of function
                 (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
          (setq bit loc_bit)
          (if (>= bit 16)
            (progn
              (fun_property-set sub 'color 0)
              (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
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.04.2010, 14:16
#44
АлексЮстасу

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


Работает, делает, хотя и статистику не выдает
АлексЮстасу вне форума  
 
Непрочитано 16.11.2010, 13:27
#45
Kserg_nn


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


пожалуйста подскажите как ее правильно запустить в 2010 автокаде?
norm-blocks
_norm-blocks
ничего не помогает(

пишет ошибку "ошибка: слишком мало аргументов"
Kserg_nn вне форума  
 
Непрочитано 16.11.2010, 17:32
#46
АлексЮстасу

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


Цитата:
Сообщение от Kserg_nn Посмотреть сообщение
пожалуйста подскажите как ее правильно запустить в 2010 автокаде?
norm-blocks
_norm-blocks
ничего не помогает(

пишет ошибку "ошибка: слишком мало аргументов"
Вы и не указали аргументы.

См. в лиспе, в его начале "Аргументы вызова", "Примеры вызова" - в первом посте, в посте #43.
АлексЮстасу вне форума  
 
Непрочитано 17.11.2010, 09:49
#47
Kserg_nn


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


с этим разобрался я просто скобки не писал, а без них пробел нельзя поставить), но все равно это не то что мне нужно
не нужно чтоб элемент блока помещались именно в слой где лежит сам блок! причем так чтоб блоки можно было выбирать
Kserg_nn вне форума  
 
Непрочитано 17.11.2010, 10:18
#48
Лиспер


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


Нереально.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 17.11.2010, 11:22
#49
Kserg_nn


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


очень жаль(
даже без выбора блоков не реально? пусть все массово переносятся
Kserg_nn вне форума  
 
Непрочитано 17.11.2010, 11:25
#50
Лиспер


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


Проблема не в этом. Есть блок с именем "Блок1", у него 2 вхождения - одно на слой "Слой1", с цветом ПоСлою, весом линии 0,50, типом линии Dashed; второе - на слое "Слой123", цвет красный, вес линии ПоСлою, тип линии Continuous. Какие настройки должны получить примитивы описания блока?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 17.11.2010, 13:32
#51
Kserg_nn


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


устроило бы если бы было так: цвет, вес, тип линии - "по слою"
Kserg_nn вне форума  
 
Непрочитано 17.11.2010, 13:58
#52
Лиспер


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


Для этого внутри блока достатчно сделать все ПоБлоку
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 17.11.2010, 15:38
#53
Kserg_nn


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


я не могу войти в блок, да и ходить в каждый (если их много) особого удовольствия нет
Kserg_nn вне форума  
 
Непрочитано 17.11.2010, 15:43
#54
Лиспер


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


Вообще-то именно для того, чтобы не заходить в каждый блок, и сделана эта программа.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 17.11.2010, 16:25
#55
Kserg_nn


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


но она в "0" все приводит, мне так не надо же
Kserg_nn вне форума  
 
Автор темы   Непрочитано 17.11.2010, 22:57
#56
Кулик Алексей aka kpblc
Moderator

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


Я советую создать несколько блоков с разными настройками примитивов, повставлять их на разные слои и потом разбить. И проанализировать результаты.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.11.2010, 10:34
#57
Kserg_nn


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


хорошо, спасибо
Kserg_nn вне форума  
 
Непрочитано 26.07.2011, 17:58
#58
Nike

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


аналог от manusoft.com

Код:
[Выделить все]
  ;FixBlock.lsp  [June 30, 1998]
 ;
 ; Copyright 1996 - 1998 ManuSoft
 ;
 ; Freeware from:
 ;   ManuSoft
 ;   http://www.manusoft.com
 ;
 ; Load function, then enter FIXBLOCK to redefine selected blocks
 ;  so that all entities are on layer '0', color 'BYBLOCK'.
 ;


(defun C:FixBlock (/ ss cnt idx blkname donelist Grp Update)
  (defun Grp (gc el) (cdr (assoc gc el)))
  (defun Update (bname / ename elist)
    (setq ename (tblobjname "BLOCK" bname))
    (if
      (and ename (zerop (logand 52 (Grp 70 (entget ename '("*"))))))
      (progn
        (while ename
          (setq elist (entget ename '("*"))
                elist (subst '(8 . "0") (assoc 8 elist) elist)
                elist (if (assoc 62 elist)
                        (subst '(62 . 0) (assoc 62 elist) elist)
                        (append elist '((62 . 0)))))
          (entmake elist)
          (setq ename (entnext ename)))
        (if (/= "ENDBLK" (Grp 0 elist))
          (entmake '((0 . "ENDBLK") (8 . "0") (62 . 0))))
        'T))
  )
  (if (> (logand (Grp 70 (tblsearch "layer" "0")) 1) 0)
    (princ "\nLayer 0 must be thawed before running FIXBLOCK!\n")
    (progn
      (if
        (progn
          (princ "\nPress <Enter> to fix all defined blocks\n")
          (setq cnt 0
                ss (ssget '((0 . "INSERT")))))
        (progn
          (setq idx (sslength ss))
          (while (>= (setq idx (1- idx)) 0)
            (if (not (member (setq blkname (Grp 2 (entget (ssname ss idx)))) donelist))
              (progn
                (if (Update blkname) (setq cnt (1+ cnt)))
                (setq donelist (cons blkname donelist))))))
        (while (setq blkname (Grp 2 (tblnext "BLOCK" (not blkname))))
          (if (Update blkname) (setq cnt (1+ cnt)))))
      (princ (strcat "\n" (itoa cnt) " block" (if (= cnt 1) "" "s") " redefined\n"))))
  (princ)
)
;End-of-file
Nike вне форума  
 
Непрочитано 22.08.2012, 19:14
#59
zerg_od


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


Можно добавить чтобы менялся ещё и цвет линии объекта - на ByBlock. Предусмотрено ли редактирование атрибутов блока.
zerg_od вне форума  
 
Непрочитано 23.08.2012, 09:28
#60
VVA

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


zerg_od,
BGBLFIX - Нормализация блоков
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.09.2012, 19:04
#61
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Исправил #34
Алексей, забыл исправить в #1 толщины линий не меняются ввиду "byblock"
gomer вне форума  
 
Автор темы   Непрочитано 22.09.2012, 23:52
#62
Кулик Алексей aka kpblc
Moderator

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


Скажу честно - у меня сейчас нет никакой возможности работать с этим кодом Совсем
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.11.2014, 10:15
#63
_slonik_


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


Цитата:
Сообщение от gomer Посмотреть сообщение
Алексей, забыл исправить в #1 толщины линий не меняются ввиду "byblock"
Поддерживаю. Обидно
_slonik_ вне форума  
 
Автор темы   Непрочитано 12.11.2014, 10:50
1 | #64
Кулик Алексей aka kpblc
Moderator

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


Вроде бы исправил. В первом посте - norm-blocks_v2.lsp
На тестирование времени нет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.11.2014, 11:01
#65
_slonik_


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вроде бы исправил. В первом посте - norm-blocks_v2.lsp
На тестирование времени нет
В лиспе вставлен обычный текст
_slonik_ вне форума  
 
Автор темы   Непрочитано 12.11.2014, 11:35
1 | #66
Кулик Алексей aka kpblc
Moderator

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


Говорила мне мама - не занимайся десятком дел на тормознутом компьютере... Исправил
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.11.2014, 12:21
#67
_slonik_


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


Не страшно) Ррработает!!!
_slonik_ вне форума  
 
Непрочитано 12.11.2014, 17:31
1 | #68
VVA

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


_slonik_, Напоминаю, что эта тема развивалась в LISP. Подготовка подосновы
Цитата:
BGBLFIX - Нормализация блоков
Миниатюры
Нажмите на изображение для увеличения
Название: bgblfix.png
Просмотров: 285
Размер:	43.2 Кб
ID:	138594  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.03.2015, 10:38
#69
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988


Есть ли возможность к нормализации блоков еще добавить нормализацию массивов по тому же принципу, что и блоки.
crosandr вне форума  
 
Автор темы   Непрочитано 31.03.2015, 10:49
#70
Кулик Алексей aka kpblc
Moderator

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


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

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988


Есть блоки и программа norm-blocks_v3.lsp с ними работает, а есть примитив "массив". Ситуация типом линии, весом и слоем базового элемента массива такая же, как и с блоком. Если элемент массива не на слое 0, то изменение слоя массива ничего не изменит
Пример в файле
Вложения
Тип файла: dwg
DWG 2010
new block.dwg (75.9 Кб, 1473 просмотров)
crosandr вне форума  
 
Непрочитано 31.03.2015, 16:16
#72
VVA

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


crosandr,
BGBLFIX - Нормализация блоков
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.03.2015, 16:23
#73
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988


VVA, использовал, программа пишет, что блок обработан, а результата нет.
crosandr вне форума  
 
Непрочитано 31.03.2015, 20:45
#74
VVA

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


А у меня результат есть
Миниатюры
Нажмите на изображение для увеличения
Название: blku.png
Просмотров: 262
Размер:	148.2 Кб
ID:	146768  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.04.2015, 08:05
#75
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988


Странно, буду проверять. Все галочки были установлены, на блоках программа работает.
crosandr вне форума  
 
Непрочитано 03.11.2015, 23:06
#76
Soldat_OV


 
Регистрация: 13.02.2009
Воронеж
Сообщений: 39


Доброго времени суток!
Отличная программа, работает как надо
Только вот нашелся чертежик от архитекторов, пытаюсь выполнить нормализацию блоков, а она некорректно обрабатывает, по крайней мере, обрабатывает не так, как другие чертежи.
Пишет:
"Ассоциативность контура штриховки отменена.(много много раз)
Вы действительно хотите сделать это? <Н>"

И вот совсем не понятно что я хочу сделать??? И как это исправить?
Чертеж прикреплен
Autocad 2010 Windows 8 x32

Последний раз редактировалось Soldat_OV, 18.11.2015 в 22:46.
Soldat_OV вне форума  
 
Непрочитано 04.11.2015, 11:48
#77
VVA

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


Soldat_OV, О какой проге идет речь?

----- добавлено через ~2 ч. -----
Проверил на программе из #72 - все обработалось
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.11.2015, 20:32
#78
Soldat_OV


 
Регистрация: 13.02.2009
Воронеж
Сообщений: 39


VVA, программу запускала из #34
Soldat_OV вне форума  
 
Непрочитано 05.11.2015, 09:19
#79
VVA

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


Soldat_OV, Попробуй командой из #72 , (скриншот в #74)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.11.2015, 21:43
#80
Soldat_OV


 
Регистрация: 13.02.2009
Воронеж
Сообщений: 39


VVA, да, спасибо, этим кодом все обработалось! Жаль только код из #72 менее интуитивно понятен мне
Soldat_OV вне форума  
 
Непрочитано 09.11.2015, 17:24
#81
VVA

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


Цитата:
Сообщение от Soldat_OV Посмотреть сообщение
Жаль только код из #72 менее интуитивно понятен мне
Ого. Вызов функции с параметрами из #34 более интуитивен
Почему бы не попробовать такие же ф-ции Алексея из #1
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.01.2016, 16:31
#82
forgod


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


Кулик Алексей aka kpblc, большое спасибо за код!
forgod вне форума  
 
Непрочитано 06.07.2016, 20:38
#83
Кукурузо_Джон_Горыныч

инженер-конструктор
 
Регистрация: 26.12.2006
Moscow
Сообщений: 201
<phrase 1=


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

Последний раз редактировалось Кукурузо_Джон_Горыныч, 06.07.2016 в 20:47.
Кукурузо_Джон_Горыныч вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Нормализация блоков текущего файла.

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт палитры блоков при помощи LISP TwoZero LISP 13 31.01.2019 17:38
Lisp. Расстановка блоков на пересечении линий. wetr LISP 22 03.04.2018 10:54
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