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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Подготовка подосновы

LISP. Подготовка подосновы

Ответ
Поиск в этой теме
Непрочитано 13.04.2011, 20:25 24 |
LISP. Подготовка подосновы
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,990

Набор команд, опубликованных в теме Подоснова
Желательно ознакомиться с указанной темой или как минимум с описанием
Описание команд
Код:
[Выделить все]
BGLAYDEL - Удаление выключенных и замороженных слоев с примитивами
BG1BLEXP - Взрывает блоки, состоящие из одного примитива (возможно другого блока)
BGBLEXP  - Взрывает блок и все блоки, входящие в него, превращая видимые атрибуты в текст
BGBLEXP1 - Взрывает блоки 1-го уровня, превращая видимые атрибуты в текст
BGBLDYNEXP1 - Взрывает динамические блоки 1-го уровня, превращая видимые атрибуты в текст
BGBLEXP1NOATT - Взрывает блоки 1-го уровня, у которых нет видимых атрибутов
BGBLXCLIP - Показывает подрезанные блоки
BGBLDYN2A - Преобразовывает динамические блоки в анонимные
BGBLDYN2S - Преобразовывает динамические блоки в статические
BGBLALLDYN2A - Преобразовывает ВСЕ динамические блоки в анонимные    
BGBLALLDYN2S - Преобразовывает ВСЕ динамические блоки в статические  
BGBLXCLIPEXP - взорвать подрезанный блок
BGCB - копирует одно из вхождений блока в блок с новым именем 
BGRB - переименовывает одно из вхождений блока в блок с новым именем
M2U - Преобразовать MINSERT в Unnamed блок
M2B - Преобразовать MINSERT в блок
U2B - Преобразовать UNNAMED в блок
U2BM - Преобразовать UNNAMED в блок множественный выбор
UX - Взорвать UNNAMED блок
=======================================
BGRGB2ACI - Изменяет цвет с RGB на ACI
BGAll2RGB - Изменяет ACI цвет в его RGB эквивалент
BGCOLOR - Задает выбранный цвет всем объектам
BGCOLORCMD - Задает выбранный цвет всем объектам с запросом в командной строке
BGCOLORXREF - Меняет цвет выбранных внешних сылок (только в текушем сеансе)
BGCOLBL - Установка "послою" цвета примитивов подосновы. Если цвет задан явно- создается новый слой !Новое с версии 3.0
BGResetXRef -Сброс настроек слоев выбранных внешних ссылок на установленные в исходном файле
BGBLCC - Изменяет цвет выбранных блоков
BGENCC - Изменяет цвет выбранного элемента блока
BGCATT - Изменяет цвет атрибутов выбранных блоков
BGCBL2 - Изменяет цвет в блоках 2 и более уровня (вложенных блоках)
BGBLFIX - Нормализация блоков (цвет, слой, взрываемость и т.п.)
BGCFT   - Конвертирует все поля в обычный текст
BGCFTSEL - конвертирование полей в обычный текст в выбранных примитивах
BGHATCHDEL - Удаление штриховки
Текущая версия 3.13a
Отличие версий 3.3 и 3.6 и выше - переписана функция взрыва блоков (команды BGBLEXP...)
В версии 3.3 - вариант из expresstools. Сохраняются поля при взрыве. Медленная обработка при большом количестве блоков
В версии 3.6 функция bg:BURST-ONE заменена функцией Lee Mac LM:burst. На порядок быстрее, если атрибут многострочный и включена маскировка - получаем маскированный мтест.
Поля не сохраняются.

Код:
[Выделить все]
;;;	Версии:
;;;	1.0 - исправлены ошибки burst - при наследовании типа линии поблоку, показ скрытых атрибутов и наследования типа линии блока
;;;	                                если в блок примитив входил не на 0 слое, тип линии поблоку.
;;;	      добавлена обработка Burst LineWeight
;;;	1.1  изменение цвета блока при наличии атрибутов (см ;;; Change VVA 12.09.2008)
;;;	...
;;;	1.4  Обработка стилей мультилиний
;;;	1.11 ChangeAllObjectsColor - Обработка размеров, leader и mtext с явным заданием цвета.
;;;	     BGBLEXP - обработка видимостей динамических блоков (если в видимости включены атрибуты)
;;;	     BG1BLEXP - Обабатываются блоки, состоящие из одного элемента и
;;;	     - имя блока A$C*
;;;	     - или любое другое имя и этот один элемент другой блок
;;;	1.12 - Не удаляет блоки, расположенные на выключенном/ замороженном слое
;;;	       и имеющие хотя бы 1 примитив на включенном слое, отличном от "0"
;;;	2.0  - BGBLEXP - исправлена ошибка со списком
;;;	2.1  - обработка блоков внешних ссылок ChangeXrefAllObjectsColor
;;;	2.2  - команда BGCFT
;;;	2.3  - add BGCOLORXREF and BGRGB2ACI
;;;	2.4  - Обработка многострочных атрибутов
;;;     2.5  - Добавленна gc:FieldCode ChangeAllObjectsColor ChangeXrefAllObjectsColor - обработка Unicode символов
;;;     2.6  - Добавленны команды BGBLDYN2A BGBLDYN2S
;;;     2.7  - Добавлена обработка предварительного выбора
;;;     2.8  - Баги с обработкой атрибутов и visibility
;;;     2.9 - Команда BGBLDYNEXP1 
;;;     2.9.1 - добавлена ф-ция bg:massoc
;;;     2.10  - Конвертация динамических блоков  bg:DynToStatic. Сохранение и восстановление значений атрибутов
;;;     2.11 - Изменения в bg:get-all-atts (обработка UNICOD символов в значениях атрибутов)
;;;              добавлена команда BGHATCHDEL
;;;             ChangeAllObjectsColor - change table text and grid color
;;;    2.12  - Учтен lineweight для атрибутов. Изменен BgBlFIX
;;;    2.13  - Добавлена функция BG:GET-TEXTSTRING (как замена vla-get-textstring. Т.к. неверно возвращает строку при наличии юникод символов)
;;;    2.14  - Добавлена команда BGAll2RGB Изменена ClearFieldInAllObjects
;;;    2.15  - Небольшие изменения в BGAll2RGB. добавлены BGCB и BGRB
;;;;   2.16  - BGCBL2 теперь работает с RGB и ACI цветами
;;;;   2.17  - BGBLCC  теперь работает с RGB и ACI цветами + мелкие изменения
;;;;   2.18  - Учтено предложение http://forum.dwg.ru/showpost.php?p=949149&postcount=102
;;;;           Добавлена команда BGBLXCLIPEXP
;;;;   2.19  - Команда BGBLFIX. Добавлена опция игнорирования блокированных слоев
;;;    2.22  - Добавлены опции Одинаковые масштабы и Разрешить расчленение
;;;    2.23 - Внесены изменения в команду BGBLXCLIPEXP
;;;    2.24  - Отредактирована команда UX (вложенность анонимных блоков)
;;;    2.25  - Fix BGBLCC и BGCBL2 command. Add BGCFTSEL
;;;    2.26  - BGCFT - добавлена обработка формата текста в таблице. Добавлены команды BGBLALLDYN2A и BGBLALLDYN2S
;;;    2.27  - в командах U2B ,UX добавлена обработка блоков с именем *E
;;;    2.28  - BGCFT - исправлена ошибка + изменения в function bg:DynToStatic
;;;    2.29  - Исправлен недочет ClearFieldInThisObject
;;;    2.30    Fixed minor bugs in function ClearFieldInThisObject   http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/vla-get-textstring-u-symbols/td-p/4365165
;;;    2.31    BGCFT добавлена очистка полей в размерах  ( http://forum.dwg.ru/showthread.php?p=1335110#post1335110 )
;;;    2.32    изменения в bg:get-TextString (http://forum.dwg.ru/showpost.php?p=1386990&postcount=235)
;;;    2.33    изменения в bg:get-TextString (http://forum.dwg.ru/showpost.php?p=1386990&postcount=252) 
;;;    2.34    BGBLFIX обработка именованных стилей печати
;;;    2.35    BGBLEXP изменения
;;;    2.36    изменения в команде UX http://forum.dwg.ru/showthread.php?p=1421560#post1421560
;;;    2.37    BGCFT исправлена ошибка при обработке заблокированных ячеек таблицы
;;;    2.38    BGLAYDEL исправлена ошибка с востановлением слоев
;;;    2.40    Изменения в ф-ции bg:FieldCode. Добавлена ф-ция bg:GetObjectIDString mark VVA 2015-12-07
;;;    2.41    Изменения в ф-ции ClearFieldInThisObject. Обработка значений размеров над и под размерной линией. Mark VVA 2016-01-04
;;;    3.0    Добавлена команда BGCOLBL
;;;            Установка послою цвета примитивов подосновы. Если цвет задан явно- создается новый слой
;;;    3.1    BGBLEXP - сохранение полей в атрибутах
;;;   3.2    BGCFT игнор
;;;   3.3    Исправление в команде M2B
;;;   3.4    Исправление fix bg:explode-block (исключение обработки внешних ссылок)
;;;   3.5    BG:BURST-ONE измененая для сохранения постоянных атрибутов
;;;   3.6    добавлено bg:del-constraint в BGBLEXP
;;;   3.7    изменения в команде M2B
;;;   3.8    Изменения в bg:FieldCode (http://forum.dwg.ru/showpost.php?p=1754063&postcount=467)
;;;   3.9    Изменения BGLAYDEL. Слои удаляются командой _-LAYDEL
;;;   3.10   Добавлена команда BGCOLORCMD
;;;;  3.11   Изменения BGLAYDEL
;;;;  3.12   Изменения в функции mip_MTEXT_Unformat (VVA 2021-12-24)
;;;;          https://forum.dwg.ru/showthread.php?p=1975506#post1975506
;;;;   3.12a   Изменения в функции bg:hatch-delete-form-Block (VVA 2022-05-13)
;;;;            https://forum.dwg.ru/showpost.php?p=1991289&postcount=624

Полезные ссылки
C2L - Color to Layer или еще здесь
COLORFL - Color From Layer
PFL - Properties From Layer

Вложения
Тип файла: zip bgtools 3.3.zip (53.6 Кб, 6478 просмотров)
Тип файла: zip bgtools3.13b.zip (57.3 Кб, 203 просмотров)

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

Последний раз редактировалось VVA, 29.01.2024 в 16:36. Причина: См историю изменений
Просмотров: 411427
 
Непрочитано 25.08.2016, 09:14
#381
Walkmax


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


Цитата:
Сообщение от gomer Посмотреть сообщение
Никогда не пользуйтесь низкосортным, аматорским программным обеспечением!
Что конкретно имеется в виду?
Walkmax вне форума  
 
Непрочитано 06.09.2016, 16:46
#382
Walkmax


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Я сейчас в отпуске и не смогу ничего посмотреть до 5 сентября. Вдруг если забуду, напомни после 5-го
Напоминаю
Walkmax вне форума  
 
Автор темы   Непрочитано 13.09.2016, 13:26
#383
VVA

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


Цитата:
Сообщение от Walkmax Посмотреть сообщение
Напоминаю
Проверил на 2016 Автокаде. Все работает. Версию bgtools специально скачивал с #1. WIndows 7x64 корпоративная, Автокад 2016 SP1 + hotfix
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.09.2016, 13:29
#384
Walkmax


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


Это по поводу какого вопроса?
Актуальным остался этот:«есть ли способ вызова BGCFT без диалогового окна?»
Walkmax вне форума  
 
Автор темы   Непрочитано 13.09.2016, 13:30
#385
VVA

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


Цитата:
Сообщение от Walkmax Посмотреть сообщение
есть ли способ вызова BGCFT без диалогового окна?
В макросе вызвать
Код:
[Выделить все]
(ConvField->Text nil)
или добавить свою команду
Код:
[Выделить все]
(defun C:CFTAll ()(ConvField->Text nil))
----- добавлено через ~3 мин. -----
Кнопка
Код:
[Выделить все]
^C^C^P(load "bgtools.LSP");BGBLALLDYN2S;(ConvField->Text nil);
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.09.2016, 13:48
| 1 #386
Walkmax


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


Спасибо, испытаю
Walkmax вне форума  
 
Непрочитано 12.10.2016, 19:23
#387
quazi


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


Цитата:
Сообщение от VVA Посмотреть сообщение
quazi, выложи dwg с примером. Посмотрю. Зависимостям никогда не пользовался
Извиняюсь что прекратил диалог) Думал обойтись без этого процесса и решил не беспокоить.
Но к сожалению взрывания блоков мне не избежать, а они гады разлетаются.
В приложенном файле несколько вхождений блока. Блок содежит геометрические и 2 размерные зависимости.
Применив BGBLEXP ко всему чертежу получаю кашу.
BGBLEXP к первому блоку отрабатывает нормально, просто сохраняются зависимости которые можно снять вручную.
Если выполнить BGBLEXP, а за ней _DelConstraint к полученным примитивам, то таким образом по одному можно корректно обработать все блоки.
Вложения
Тип файла: dwg
DWG 2010
test.dwg (117.0 Кб, 34 просмотров)
quazi вне форума  
 
Непрочитано 13.10.2016, 03:22
#388
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Кстати, да. Если есть параметризация, то блоки с помощью BGBLEXP можно взрывать только по одному с удалением зависимостей после каждого "взрыва"
RNB вне форума  
 
Непрочитано 13.10.2016, 08:55
#389
Кулик Алексей aka kpblc
Moderator

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


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

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Может, тогда попробовать сначала вообще все зависимости снести?
В этой теме нашел код в 1 строку, сносящий все зависимости (просто сносит соответствующий словарь). Вот теперь думаю, будет ли это корректно применительно ко всему чертежу. Или применять _DelConstraint с каждой группе после расчленения. Применение командных методов может здорово замедлить выполнение лиспа для чертежей с большим количеством блоков. Или как вариант в команде проверить наличие словаря и выдать предупреждение, что все зависимости будут снесены.

Код:
[Выделить все]
(defun _stripconstraint ( / dic)
  (and (setq dic (dictsearch (namedobjdict) "acad_assocnetwork")) (entdel (cdr (assoc -1 dic))))
)
(_stripconstraint)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.10.2016, 14:10
#391
quazi


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


Цитата:
Сообщение от VVA Посмотреть сообщение
... нашел код в 1 строку, сносящий все зависимости (просто сносит соответствующий словарь).
Спасибо, мою проблему решает.
Как встроить в bgtools не подскажу, наверное лучше несколько вариантов на выбор и ждать отзывов)

Еще есть вопрос по порядку прорисовки.
Для маскировки использую в блоках ассоциативные штриховки размещенные за своим контуром:Нажмите на изображение для увеличения
Название: asda.jpg
Просмотров: 64
Размер:	12.2 Кб
ID:	177642
После BGBLEXP ассоциативность штриховки сохраняется, а draworder нет -она выскакивает перед контуром. Можно ли это победить?
quazi вне форума  
 
Автор темы   Непрочитано 13.10.2016, 14:44
#392
VVA

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


Цитата:
Сообщение от quazi Посмотреть сообщение
Еще есть вопрос по порядку прорисовки.
Send to back все заливки во всех блоках
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.10.2016, 16:47
#393
quazi


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Немного не то. В определении блока у меня порядок штриховки правильный, неправильным становится после BGBLEXP уже в виде примитивов.
Пример во вложении. Делаю (_stripconstraint), затем BGBLEXP - штриховки вылазят наверх.
Теперь можно для каждой полученной штриховки выполнить _hatchedit и выбрать Draw order: Send Behind Boundary - получается необходимый порядок, выглядит как до взрывания.
Вложения
Тип файла: dwg
DWG 2010
test.dwg (114.8 Кб, 40 просмотров)
quazi вне форума  
 
Автор темы   Непрочитано 14.10.2016, 08:26
#394
VVA

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


Мыслей пока никаких. Даже штатная команда не восстанавливает порядок следования. fixDraworder так же не помог
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.12.2016, 11:59
#395
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


у меня предложение . было бы хорошо если бы BGBLALLDYN2S , не просто формировал из 1000 динамических блоков 1000 статических.а брал бы значения всех свойств и формировал новый блок тип анзвание_свойтсво1_значение_свойства1_ .... и т.д. чтобы в итоге получлось не 1000 новых блоков а 15-20 .
и еще можно добавить удаление всех wipeout, а то wipeout в количестве 1000-2000 inre очень тормозят чертеж
Composter вне форума  
 
Автор темы   Непрочитано 09.12.2016, 20:59
#396
VVA

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


Цитата:
Сообщение от Composter Посмотреть сообщение
у меня предложение . было бы хорошо если бы BGBLALLDYN2S , не просто формировал из 1000 динамических блоков 1000 статических.а брал бы значения всех свойств и формировал новый блок тип анзвание_свойтсво1_значение_свойства1_ .... и т.д. чтобы в итоге получлось не 1000 новых блоков а 15-20 .
я уже думал над этим. пока останавливало возможное длинное название блока. Вспомнил про хэш функцию Если названия дин свойств и значений предствавить строкой и взять ее хэш функцию. Надо это дело немного покурить
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 25.01.2017, 18:31
#397
b00


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


Добрый день. При использовании BGCFT из состава bgtools 3.1a наблюдаю следующую проблему:
Имеется рамка со штампом - динамический блок, в котором номер текущего листа берётся из названия вкладки листа и указывается в штампе посредством вставки в атрибут этого дин. блока с помощью поля (Ctrl+F) такого DieselExpression:
Код:
[Выделить все]
$(getvar,"CTAB")
(иногда дополнительно обрезается до нужного формата использованием substr, но в рассматриваемом примере этого нет). При вызове BGCFT в штампе значения поля с номером листа на всех листах, кроме активного, конвертируются в текст (что ожидается), но сбрасываются на "Model" или заменяются номером активного (на момент вызова BGCFT) листа. Возможно это как-то победить, чтобы номера листов конвертировались правильно?
Вложения
Тип файла: dwg
DWG 2010
пример_bgcft.dwg (167.1 Кб, 37 просмотров)
b00 вне форума  
 
Автор темы   Непрочитано 26.01.2017, 14:09
#398
VVA

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


Могу пока только предложить исключать из обработки поля со ссылкой на diesel выражение и переменную CTAB. Т.е. тексты и атрибуты, в содержании которых есть ссылка на поле "%<\\AcDiesel $(getvar,\"CTAB\")>%" будут исключаться из обработки. Делать?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.01.2017, 18:01
#399
frostmourn


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


b00, попробуйте перед вызовом BGCFT выполнить такой код
Код:
[Выделить все]
 
(vlax-for x
	  (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
	  (if (/= (strcase (vla-get-name x)) "MODEL")
		(progn (setvar 'ctab (vla-get-name x)) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport))
	  )
)
Авось поможет...
frostmourn вне форума  
 
Непрочитано 27.01.2017, 13:43
#400
b00


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Могу пока только предложить... Делать?
Спасибо, не нужно, решение из #399 помогло.

Цитата:
Сообщение от frostmourn Посмотреть сообщение
b00, попробуйте перед вызовом BGCFT выполнить такой код
Благодарю, помогло! Это принудительная перезагрузка переменной ctab просто? (С последующим обновлением листа).
b00 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Подготовка подосновы

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 4555 24.03.2024 13:44
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
LISP на команду 3dcorbit Малюк LISP 2 30.09.2009 14:18
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19