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

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

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

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

Набор команд, опубликованных в теме Подоснова
Желательно ознакомиться с указанной темой или как минимум с описанием
Описание команд
Код:
[Выделить все]
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 Кб, 6609 просмотров)
Тип файла: zip bgtools3.13b.zip (57.3 Кб, 255 просмотров)

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

Последний раз редактировалось VVA, 29.01.2024 в 16:36. Причина: См историю изменений
Просмотров: 413502
 
Автор темы   Непрочитано 03.04.2012, 15:19
#81
VVA

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


Alex_80, приложи файл, проверю (правда не на 2013)
Вовочка, Именно поэтому программа игнорирует подрезанные блоки, т.к. все возможные методы (express, vla-exlpode, _explode) игнорируют при взрыве подрезку.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.04.2012, 08:58
#82
Alex_80

ПГС
 
Регистрация: 24.11.2011
Сообщений: 31


Сохранил в 2007.
Вложения
Тип файла: dwg
DWG 2007
ТО.dwg (140.3 Кб, 3919 просмотров)
Alex_80 вне форума  
 
Непрочитано 05.04.2012, 09:45
1 | #83
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от Вовочка Посмотреть сообщение
Можно ли добавить к Бэкграунду программку "Взрыва подрезаного блока". Объясню, имеем подрезанный блок. Я его взрываю, и мне вылазит весь блок, а нужно, только то что подрезано
Вовочка, попробуй так
Код:
[Выделить все]
 
; Обязательно загузить bgtools 2.16.lsp (так как в команде используются функции из этого пакета)
; Вызов: BGBLXCLIPEXP
(defun c:BGBLXCLIPEXP( / ent)
  (vl-load-com)
  ((lambda(ent actdoc)
     (vla-startundomark actdoc)
     (if (and ent
              (not (vl-catch-all-error-p ent))
              )
       ((lambda(obj)
          (if (bg:block-GetXclip (vlax-ename->vla-object obj)) ; bg:block-GetXclip из bgtools 2.16.lsp
            (bg:block-xclip-exp obj)
            (prompt "\nУказанный блок неподрезанный")
            )
          )
         (car ent)
         )
       )
     (vla-endundomark actdoc)
     )
    (vl-catch-all-apply 'entsel
                        (list "\nУкажите подрезанный блок:")
                        )
    (vla-get-activedocument (vlax-get-acad-object))
    )
  (princ)
  ); end c:BGBLXCLIPEXP

(defun bg:block-xclip-exp(blk / pline_obj)
  (if (vl-cmdf "_.xclip" blk "" "_P")
    ((lambda(pline_obj)
       ((lambda(lst_exp_obj lst_xclip point)
          (if (and lst_exp_obj
                   lst_xclip
                   (not (vl-catch-all-error-p point))
                   )
            ((lambda(is_int_point)
               ((lambda(nbr_xclip pline_trim)
                  (if nbr_xclip
                    (foreach item (mapcar 'vlax-vla-object->ename lst_exp_obj)
                      (if is_int_point
                        (if (ssmemb item nbr_xclip)
                          (entdel item)
                          )
                        (if (not (ssmemb item nbr_xclip))
                          (entdel item)
                          )
                        )
                      )
                    )
                  (apply 'vl-cmdf (append (list "_.trim" pline_obj "" "_F")
                                          ((lambda(ed_pline_trim)
                                             (append (mapcar 'cdr (vl-remove-if-not (function (lambda(x) (= (car x) 10)))
                                                                                    (entget pline_trim)
                                                                                    )
                                                             )
                                                     (list (cdr (assoc 10 ed_pline_trim)))
                                                     )
                                             )
                                            (entget pline_trim)
                                            )
                                          (list "" "")
                                          )
                         )
                  (entdel pline_trim)
                  )
                 (if is_int_point
                   (ssget "_WP" lst_xclip)
                   (ssget "_CP" lst_xclip)
                   )
                 (if (vl-cmdf "_.offset" 0.1 pline_obj point "")
                   (entlast)
                   )
                 )
               )
              ((lambda(point_obj / result)
                 (setq result (ssmemb point_obj (ssget "_CP" lst_xclip)))
                 (entdel point_obj)
                 result
                 )
                (entmakex (list '(0 . "POINT") (cons 10 point)))
                )
              )
            )
          )
         (bg:burst-list blk)
         (mapcar 'cdr (vl-remove-if-not (function (lambda(x) (= (car x) 10))) (entget pline_obj)))
         (progn
           (initget 1)
           (vl-catch-all-apply 'getpoint
                               (list "\nУкажите точку внутри или снаружи контура подрезки: ")
                               )
           )
         )
       (entdel pline_obj)
       )
      (entlast)
      )
    )
  ); end bg:block-xclip-exp
P. S. Из-за использования для расчетов графических построений, командных методов, формирования наборов (по-другому я пока не сообразил как), данный вариант команды в течении одного цикла работы обрабатывает не все блоки на чертеже, а только один, указываемым блок. К тому же необходимо будет указать какую именно часть блока оставить видимой, а какую удалить.

VVA, если сочтете возможным, такой приближенный вариант расчленения подрезанных блоков с сохранением подрезки, добавьте команду в основной пакет bgtools.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 05.04.2012, 14:29
#84
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Супер. Только не понял. Зачем мне указывать точку внутри или снаружи. И так понятно, что человек захочет оставить то что видимо сейчас, а не инверсию. ИМХО
VVA: эта подпрограмма обязана жить в БГтулсе.
еще раз спасибо, что вы есть, товарищи программисты!!!
Вовочка вне форума  
 
Непрочитано 05.04.2012, 14:52
#85
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от Вовочка Посмотреть сообщение
Только не понял. Зачем мне указывать точку внутри или снаружи. И так понятно, что человек захочет оставить то что видимо сейчас, а не инверсию.
Вовочка, проблема в том, что это Ты глазками видишь какая часть подрезана, а программно мне не удалось это определить, поэтому и появился дополнительный запрос на точку внутри или снаружи контура
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 05.04.2012, 18:44
#86
shartal


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


BGBLXCLIPEXP работает у меня странно. Оставшиеся после нее объекты совершенно не соответствуют контуру подрезки. Что динамические блоки , что обычные. На картинке снизу блок- блок с подрезкой- после команды.
Миниатюры
Нажмите на изображение для увеличения
Название: блок.jpg
Просмотров: 151
Размер:	12.5 Кб
ID:	77901  
shartal вне форума  
 
Автор темы   Непрочитано 05.04.2012, 19:06
#87
VVA

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


TararykovDG, Спасибо, добавлю. Чуть освобожусь с работой. Так как работают командные методы с выбором линией и рамкой, то нужно будет дополнительно проверить, что полученная полилиния контура подрезки целиком видна на экране.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.04.2012, 19:43
#88
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от shartal Посмотреть сообщение
BGBLXCLIPEXP работает у меня странно. Оставшиеся после нее объекты совершенно не соответствуют контуру подрезки. Что динамические блоки , что обычные. На картинке снизу блок- блок с подрезкой- после команды.

shartal, как правильно заметил VVA, да и я сам оговаривался об этом в посте #83, в команде BGBLXCLIPEXP используются командные методы, объекты формируются набором, все это приводит к крайней неустойчивости возможного результата, но другого варианта пока нет.
P. S. и лучше вместо картинки выложи файл с блоком (желательно в версии ACAD2008 или ниже) где не верно работает команда, мне проще будет разобраться
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 08.05.2012, 12:13
#89
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Такой вопрос. Есть ли программа, которая может всю палитру и альбомы цветов перевести к номерам цветов? Почему пишу в этой ветке, приходит ко мне подоснова от архитекторов. Там условно 100 цветов АРХу мало 256 номеров цветов и он выбирает из палитры. Чертеж красивый, что сказать. Только при предпросмотре на печать (и при монохроме и при грейскейле) я имею цветной рисунок. Я от и подумал. Запускаю команду и она все цвета из палитры объектов присваивает СХОЖЫЕ (что-бы чертеж оставался красивым).
Ну и хотел спросить у VVA проверил ли он программу из поста №83 для добавления в комбанй BG?
Вовочка вне форума  
 
Непрочитано 08.05.2012, 12:24
#90
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Кто будет определять схожесть 4 миллиардов цветов с индексированными 256-ю цветами?
Многие принтеры и плоттеры можно настроить на исключительно черную печать или печать в оттенках серого в свойствах самого устройства печати.
Profan вне форума  
 
Автор темы   Непрочитано 08.05.2012, 12:59
#91
VVA

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


Цитата:
Сообщение от Вовочка Посмотреть сообщение
Есть ли программа, которая может всю палитру и альбомы цветов перевести к номерам цветов?
Есть. Смотри
Цитата:
BGRGB2ACI - Изменяет цвет с RGB на ACI
Цитата:
Ну и хотел спросить у VVA проверил ли он программу из поста №83 для добавления в комбанй BG?
Пока нет. В планах после праздников 9 мая.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.07.2012, 14:21
#92
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


VVA, в 7 номере журнала autocad-magazin (немецкий журнал) за 2011 год статья на 3 страницы об этой подборке программ, тогда еще версия 2.10
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Автор темы   Непрочитано 09.07.2012, 15:26
#93
VVA

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


YRat, Ага. Я только свою фамилию смог прочитать :-)
http://forum.dwg.ru/showpost.php?p=804475&postcount=115
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.07.2012, 18:05
#94
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Искренне поздравляю. Заслужено.
Вовочка вне форума  
 
Непрочитано 09.07.2012, 21:09
#95
Vova

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


Если пройтись по ссылкам 93-поста и дойти до руды, выйдем на тему Подоснова http://forum.dwg.ru/showthread.php?t...F1%ED%EE%E2%E0
Может, есть созревшие поговорить на эту тему? Все хвалят лисп от VVA, но создается впечатление что используется он для частных нужд а не для комплексного приготовления подосновы, для чего этот лисп, и создавался. Или вы до сих пор требуете от своих архов выдавать вам в кажестве подосновы вместо официального чертежа некий полупустой план с закрытыми некоторыми слоями? А они почему-то тратят свое драг. время на неоплачиваемые вами хотелки и вынуждены работать по вашей подсказке, а не как им, возможно, удобней
Vova вне форума  
 
Непрочитано 10.07.2012, 14:48
#96
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Vova, кто же против? Вопросы создаются по мере углубления в программку и если она не справляется, то ее расширяют. У меня возникли некоторые предложения, я их высказывал - пообещали после майских проверить (см. мои посты). И еще есть там подпрограмма CFT. Она убивает все поля, что не всегда хорошо. В некоторых случаях нужен выбор а не все. Спасибо.
Вовочка вне форума  
 
Непрочитано 16.07.2012, 11:15
#97
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Новый вариант команды BGBLXCLIPEXP - взорвать подрезанный блок
Код:
[Выделить все]
 
; Обязательно загрузить bgtools 2.16.lsp (так как в команде используются функции из этого пакета)
; Вызов: BGBLXCLIPEXP
(defun c:BGBLXCLIPEXP( / ent)
  (vl-load-com)
  ((lambda(ent actdoc)
     (vla-startundomark actdoc)
     (if (and ent
              (not (vl-catch-all-error-p ent))
              )
       ((lambda(obj point)
          (if (bg:block-GetXclip (vlax-ename->vla-object obj))
            (bg:block-xclip-exp obj point)
            (prompt "\nУказанный блок не подрезанный")
            )
          )
         (car ent)
         (cadr ent)
         )
       )
     (vla-endundomark actdoc)
     )
    (vl-catch-all-apply 'entsel
                        (list "\nУкажите подрезанный блок: ")
                        )
    (vla-get-activedocument (vlax-get-acad-object))
    )
  (princ)
  ); end c:BGBLXCLIPEXP

(defun bg:block-xclip-exp(blk point / pline_obj)
  (if (vl-cmdf "_.xclip" blk "" "_P")
    ((lambda(pline_obj)
       (vl-cmdf "_.zoom" "_O" pline_obj "")
       ((lambda(lst_exp_obj lst_xclip eps)
          (if (and lst_exp_obj
                   lst_xclip
                   )
            ((lambda(is_int_point)
               ((lambda(nbr_xclip pline_trim)
                  (if (and nbr_xclip pline_trim)
                    (progn
                      (foreach item (mapcar 'vlax-vla-object->ename lst_exp_obj)
                        (if is_int_point
                          (if (not (ssmemb item nbr_xclip))
                            (entdel item)
                            )
                          (if (ssmemb item nbr_xclip)
                            (entdel item)
                            )
                          )
                        )
                      (apply 'vl-cmdf (append (list "_.trim" pline_obj "" "_F")
                                              ((lambda(ed_pline_trim)
                                                 (append (mapcar 'cdr (vl-remove-if-not (function (lambda(x) (= (car x) 10)))
                                                                                        ed_pline_trim
                                                                                        )
                                                                 )
                                                         (list (cdr (assoc 10 ed_pline_trim)))
                                                         )
                                                 )
                                                (entget pline_trim)
                                                )
                                              (list "" "")
                                              )
                             )
                      (entdel pline_trim)
                      )
                    )
                  (vl-cmdf "_.zoom" "_P")
                  )
                 (if is_int_point
                   (ssget "_CP" lst_xclip)
                   (ssget "_WP" lst_xclip)
                   )
                 ((lambda(reverse-point)
                    (if reverse-point
                      (if (vl-cmdf "_.offset" eps pline_obj (get-reverse-point point pline_obj 0.1) "")
                        (entlast)
                        )
                      )
                    )
                   (get-reverse-point point pline_obj 0.1)
                   )
                 )
               )
              ((lambda(point_obj / result)
                 (setq result (ssmemb point_obj (ssget "_CP" lst_xclip)))
                 (entdel point_obj)
                 result
                 )
                (entmakex (list '(0 . "POINT") (cons 10 point)))
                )
              )
            )
          )
         (bg:burst-list blk)
         (mapcar 'cdr (vl-remove-if-not (function (lambda(x) (= (car x) 10))) (entget pline_obj)))
         (min 0.1 (* (getvar 'viewsize) 0.01))
         )
       (entdel pline_obj)
       (vl-cmdf "_.zoom" "_P")
       )
      (entlast)
      )
    )
  ); end bg:block-xclip-exp

(defun get-reverse-point(pt obj e / )
  ((lambda(cl_pt)
     (if cl_pt
       ((lambda(param_cl_pt end_param)
          (if param_cl_pt
            ((lambda(p1 p2)
               (if (not p1) (setq p1 (vlax-curve-getPointAtParam obj e)))
               (if (not p2) (setq p2 (vlax-curve-getPointAtParam obj (- end_param e))))
               ((lambda(c_p)
                  (polar pt (angle pt c_p) (+ (distance pt c_p) e))
                  )
                 (polar p1 (angle p1 p2) (* (distance p1 p2) 0.5))
                 )
               )
              (vlax-curve-getPointAtParam obj (+ param_cl_pt e))
              (vlax-curve-getPointAtParam obj (- param_cl_pt e))
              )
            )
          )
         (vlax-curve-getParamAtPoint obj cl_pt)
         (vlax-curve-getEndParam obj)
         )
       )
     )
    (vlax-curve-getClosestPointTo obj pt)
    )
  ); end get-reverse-point
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 16.07.2012, 19:44
#98
gomer

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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Обязательно загрузить bgtools 2.16.lsp
Не хочу показаться ханжой, но в обозначенном лиспе более 20 локальных определений функции *error*, по сути выполняющих одно и тоже, так почему бы не использовать хотя б одну из них, вместо громоздкой vl-catch-all-apply

Последний раз редактировалось gomer, 16.07.2012 в 19:49.
gomer вне форума  
 
Непрочитано 17.07.2012, 08:47
#99
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от gomer Посмотреть сообщение
Не хочу показаться ханжой, но в обозначенном лиспе более 20 локальных определений функции *error*, по сути выполняющих одно и тоже, так почему бы не использовать хотя б одну из них, вместо громоздкой vl-catch-all-apply
Честно говоря, я не изучал bgtools 2.16.lsp, ну а использовать для отлова ошибок vl-catch-all-apply - изначально так привык

P.S. Я тоже не хочу показаться ханжой. Специально посчитал в bgtools 2.16.lsp количество локальных определений функции *error* - их ровно 15
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 21.07.2012, 22:10
#100
gomer

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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
их ровно 15
ой,и вправду, я вот хотел менюшку выложить для сего лиспа, но руки не доходят...
gomer вне форума  
Ответ
Вернуться   Форум 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