<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Комментарии на: Тихое выполнение функций и команд</title>
	<atom:link href="https://autolisp.ru/2010/11/29/execute_silence/feed/" rel="self" type="application/rss+xml" />
	<link>https://autolisp.ru/2010/11/29/execute_silence/</link>
	<description>LISP для AutoCAD</description>
	<lastBuildDate>Tue, 24 Feb 2026 16:11:05 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-28856</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 10:24:56 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-28856</guid>
		<description><![CDATA[То, что у меня не наблюдается, не означает, что подобное нельзя словить :) Это ж известный закон - у разработчика всегда и все работает :)
Так что я бы не убирал, наверное, подобные проверки. Как говорится, &quot;от греха&quot; ;)]]></description>
		<content:encoded><![CDATA[<p>То, что у меня не наблюдается, не означает, что подобное нельзя словить <img src="https://autolisp.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> Это ж известный закон - у разработчика всегда и все работает <img src="https://autolisp.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /><br />
Так что я бы не убирал, наверное, подобные проверки. Как говорится, "от греха" <img src="https://autolisp.ru/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>От: TararykovDG</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-28855</link>
		<dc:creator><![CDATA[TararykovDG]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 10:20:06 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-28855</guid>
		<description><![CDATA[Алексей, спасибо, раз у Тебя подобного не наблюдается, посмотрю у себя еще раз повнимательней, в чем может быть причина.]]></description>
		<content:encoded><![CDATA[<p>Алексей, спасибо, раз у Тебя подобного не наблюдается, посмотрю у себя еще раз повнимательней, в чем может быть причина.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-28854</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 10:09:59 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-28854</guid>
		<description><![CDATA[Доброго. Я гонял на 2006, 2008, 2009, 2010 и 2012. Подобного вроде бы не замечалось.Странно...
Для гарантии я бы добавил еще одну проверку - на объекты таблиц (они в блоках *T):
[cc lang=&quot;cadlisp&quot;](vl-load-com)

(defun purge-blocks (adoc /)
  (vlax-for blk (vla-get-blocks (cond (adoc)
                                      (t (vla-get-activedocument (vlax-get-acad-object)))
                                      ) ;_ end of cond
                                ) ;_ end of vla-get-blocks
    (if (and (equal (vla-get-islayout blk) :vlax-false)
             (equal (vla-get-isxref blk) :vlax-false)
             (not (wcmatch (vla-get-name blk) &quot;`*D*,`*T*&quot;))
             ) ;_ end of and
      (vl-catch-all-apply
        (function
          (lambda ()
            (vla-delete blk)
            ) ; _end of lambda
          ) ; _end of function
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of if
    ) ;_ end of vlax-for
  ) ;_ end of defun[/cc]

P.S. Обновил код - добавил проверку на внешние ссылки :)]]></description>
		<content:encoded><![CDATA[<p>Доброго. Я гонял на 2006, 2008, 2009, 2010 и 2012. Подобного вроде бы не замечалось.Странно...<br />
Для гарантии я бы добавил еще одну проверку - на объекты таблиц (они в блоках *T):<br />
[cc lang="cadlisp"](vl-load-com)</p>
<p>(defun purge-blocks (adoc /)<br />
  (vlax-for blk (vla-get-blocks (cond (adoc)<br />
                                      (t (vla-get-activedocument (vlax-get-acad-object)))<br />
                                      ) ;_ end of cond<br />
                                ) ;_ end of vla-get-blocks<br />
    (if (and (equal (vla-get-islayout blk) :vlax-false)<br />
             (equal (vla-get-isxref blk) :vlax-false)<br />
             (not (wcmatch (vla-get-name blk) "<code>*D*,</code>*T*"))<br />
             ) ;_ end of and<br />
      (vl-catch-all-apply<br />
        (function<br />
          (lambda ()<br />
            (vla-delete blk)<br />
            ) ; _end of lambda<br />
          ) ; _end of function<br />
        ) ;_ end of vl-catch-all-apply<br />
      ) ;_ end of if<br />
    ) ;_ end of vlax-for<br />
  ) ;_ end of defun[/cc]</p>
<p>P.S. Обновил код - добавил проверку на внешние ссылки <img src="https://autolisp.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>От: TararykovDG</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-28853</link>
		<dc:creator><![CDATA[TararykovDG]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 09:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-28853</guid>
		<description><![CDATA[Привет, Алексей. Все это время (с мая) пользовался Твоим кодом с небольшой доработкой (добавил проверку, что текущий блок не *ModelSpace и не *PaperSpace…) для тихого удаления неиспользуемых блоков и слоев. И вот на днях получил, супер облом. Итак, ситуация следующая, если на чертеже присутствуют размеры (а они очень часто присутствуют), то в коллекции блоков появляются блоки с именами *D. Так вот если их попытаться молча удалить, то размеры потом ведут себя очень странно. А именно, при перемещении – отскакивают, при этом если нажать Ctrl+A для выделения всех элементов, то ручки у отскочивших размеров, находятся в нужном месте, а графически они куда-то смещаются. А если попытаться скопировать их через буфер обмена, то они не вставляются, а вставляется предыдущее содержимое буфера обмена. Протестировал на ACAD 2008 и ACAD 2012. Если не трудно протестируй у себя так ли это или это только мой “баг”, во всяком случае сейчас делаю так.
[cc lang=&quot;lisp&quot;]
(defun purge-blocks(adoc / )
  (vlax-for blk (vla-get-Blocks adoc)
      (if (and (equal (vla-get-IsLayout blk) :vlax-false)
               (not (wcmatch (vla-get-name blk) &quot;`*D*&quot;))
               )
        (vl-catch-all-apply
                     (function
                       (lambda()
                         (vla-delete blk)
                         ); _end of lambda
                       ) ; _end of function
                     ) ; _end of if
        ) ; _end of if
      ) ; _end of while
  ); _end of defun
[/cc]]]></description>
		<content:encoded><![CDATA[<p>Привет, Алексей. Все это время (с мая) пользовался Твоим кодом с небольшой доработкой (добавил проверку, что текущий блок не *ModelSpace и не *PaperSpace…) для тихого удаления неиспользуемых блоков и слоев. И вот на днях получил, супер облом. Итак, ситуация следующая, если на чертеже присутствуют размеры (а они очень часто присутствуют), то в коллекции блоков появляются блоки с именами *D. Так вот если их попытаться молча удалить, то размеры потом ведут себя очень странно. А именно, при перемещении – отскакивают, при этом если нажать Ctrl+A для выделения всех элементов, то ручки у отскочивших размеров, находятся в нужном месте, а графически они куда-то смещаются. А если попытаться скопировать их через буфер обмена, то они не вставляются, а вставляется предыдущее содержимое буфера обмена. Протестировал на ACAD 2008 и ACAD 2012. Если не трудно протестируй у себя так ли это или это только мой “баг”, во всяком случае сейчас делаю так.<br />
[cc lang="lisp"]<br />
(defun purge-blocks(adoc / )<br />
  (vlax-for blk (vla-get-Blocks adoc)<br />
      (if (and (equal (vla-get-IsLayout blk) :vlax-false)<br />
               (not (wcmatch (vla-get-name blk) "`*D*"))<br />
               )<br />
        (vl-catch-all-apply<br />
                     (function<br />
                       (lambda()<br />
                         (vla-delete blk)<br />
                         ); _end of lambda<br />
                       ) ; _end of function<br />
                     ) ; _end of if<br />
        ) ; _end of if<br />
      ) ; _end of while<br />
  ); _end of defun<br />
[/cc]</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-26503</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Thu, 03 May 2012 19:59:18 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-26503</guid>
		<description><![CDATA[Насчет vlax-get и vlax-put. В данном случае их можно безболезненно заменить на vlax-get-property -эффект будет тот же самый.
И касательно вложенных блоков. Как-то у меня не получилось повторить подобную ситуацию. Несколько проходов по коллекции блоков удалили вложенные. Конечно, там можно добавить массу проверок, но я подобным просто не заморачивался. Если надо, могу попробовать на днях что-нибудь нарисовать.]]></description>
		<content:encoded><![CDATA[<p>Насчет vlax-get и vlax-put. В данном случае их можно безболезненно заменить на vlax-get-property -эффект будет тот же самый.<br />
И касательно вложенных блоков. Как-то у меня не получилось повторить подобную ситуацию. Несколько проходов по коллекции блоков удалили вложенные. Конечно, там можно добавить массу проверок, но я подобным просто не заморачивался. Если надо, могу попробовать на днях что-нибудь нарисовать.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: TararykovDG</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-26244</link>
		<dc:creator><![CDATA[TararykovDG]]></dc:creator>
		<pubDate>Thu, 26 Apr 2012 12:53:08 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-26244</guid>
		<description><![CDATA[Алексей, ну уж извини, снова есть вопросы.
Во-первых, последний код при обработке блоков, удалит все листы (*PaperSpace0 и т.д.), кроме того, который является текущим (ну да это легко исправить, добавив проверку IsLayout для каждого элемента из коллекции блоков).
Во-вторых, не удалит вложенные блоки (как это делает (vl-cmdf &quot;_.-purge&quot; &quot;_Block&quot; &quot;*&quot; &quot;_No&quot;)), которые до удаления их родительских блоков не являлись неиспользуемыми, а после могли таковыми стать. И здесь самое интересное даже повторное прохождение по коллекции блоков и применение к нем vla-delete не удаляет такие блоки, хотя в утилите очистки чертежа блоки появляются.]]></description>
		<content:encoded><![CDATA[<p>Алексей, ну уж извини, снова есть вопросы.<br />
Во-первых, последний код при обработке блоков, удалит все листы (*PaperSpace0 и т.д.), кроме того, который является текущим (ну да это легко исправить, добавив проверку IsLayout для каждого элемента из коллекции блоков).<br />
Во-вторых, не удалит вложенные блоки (как это делает (vl-cmdf "_.-purge" "_Block" "*" "_No")), которые до удаления их родительских блоков не являлись неиспользуемыми, а после могли таковыми стать. И здесь самое интересное даже повторное прохождение по коллекции блоков и применение к нем vla-delete не удаляет такие блоки, хотя в утилите очистки чертежа блоки появляются.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: TararykovDG</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-26240</link>
		<dc:creator><![CDATA[TararykovDG]]></dc:creator>
		<pubDate>Thu, 26 Apr 2012 10:50:47 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-26240</guid>
		<description><![CDATA[И еще есть вопрос, в последнем коде используется функция vlax-get, которая, наряду с vlax-put является не документированной, и как пишет Н. Полещук: “Возможно, в очередной версии AutoCAD они окажутся изъятыми…
…использование этих функций не может быть рекомендовано ввиду неясности их дальнейшей судьбы”]]></description>
		<content:encoded><![CDATA[<p>И еще есть вопрос, в последнем коде используется функция vlax-get, которая, наряду с vlax-put является не документированной, и как пишет Н. Полещук: “Возможно, в очередной версии AutoCAD они окажутся изъятыми…<br />
…использование этих функций не может быть рекомендовано ввиду неясности их дальнейшей судьбы”</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-26239</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Thu, 26 Apr 2012 10:45:20 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-26239</guid>
		<description><![CDATA[Ага, спасибо, исправляю :)]]></description>
		<content:encoded><![CDATA[<p>Ага, спасибо, исправляю <img src="https://autolisp.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>От: TararykovDG</title>
		<link>https://autolisp.ru/2010/11/29/execute_silence/comment-page-1/#comment-26238</link>
		<dc:creator><![CDATA[TararykovDG]]></dc:creator>
		<pubDate>Thu, 26 Apr 2012 10:32:27 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=368#comment-26238</guid>
		<description><![CDATA[Алексей, здравствуй! Спасибо за пример тихого выполнения команд, мне пригодился для замены _-purge’мета, в четвертом коде (или втором снизу) одна лишняя скобка:
  (repeat 3 (vla-purgeall adoc))
    ) ;_ end of repeat]]></description>
		<content:encoded><![CDATA[<p>Алексей, здравствуй! Спасибо за пример тихого выполнения команд, мне пригодился для замены _-purge’мета, в четвертом коде (или втором снизу) одна лишняя скобка:<br />
  (repeat 3 (vla-purgeall adoc))<br />
    ) ;_ end of repeat</p>
]]></content:encoded>
	</item>
</channel>
</rss>
