<?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>Комментарии на: Внутренности dwg</title>
	<atom:link href="https://autolisp.ru/2010/06/18/inside-dwg/feed/" rel="self" type="application/rss+xml" />
	<link>https://autolisp.ru/2010/06/18/inside-dwg/</link>
	<description>LISP для AutoCAD</description>
	<lastBuildDate>Sat, 01 Aug 2026 18:51:14 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>От: @rey7</title>
		<link>https://autolisp.ru/2010/06/18/inside-dwg/comment-page-1/#comment-6926</link>
		<dc:creator><![CDATA[@rey7]]></dc:creator>
		<pubDate>Fri, 04 Mar 2011 05:13:40 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=305#comment-6926</guid>
		<description><![CDATA[так работает:

[cc lang=&quot;cadlisp&quot;];;;Функция преобразования числа из шестнадцатиричной в десятичную систему исчисления
;;;аргументы :
;;;а - число в шестнадцатиричной системе исчисления , тип string
;;;переменные:
;;;listst - список степеней числа 16. Длина списка равна количеству символов аргумента
(defun c:h-dec (a / i listst)
  (setq i (strlen a))
  (repeat i
    (setq listst (cons (expt 16 (1- i)) listst))
    (setq i (1- i))
    ) ;_ end of repeat
  (rtos
    (apply
      (function +)
      (mapcar
        (function *)
        (reverse
          (mapcar
            (function
              (lambda (x)
                (cond
                  (
                   (vl-symbolp (read (chr x)))
                   (+ (vl-position (chr x) &#039;(&quot;A&quot; &quot;B&quot; &quot;C&quot; &quot;D&quot; &quot;E&quot; &quot;F&quot;))
                      10
                      ) ;_ end of +
                   )
                  (t
                   (atoi (chr x))
                   )
                  ) ;_ end of cond
                ) ;_ end of lambda
              ) ;_ end of function
            (vl-string-&gt;list a)
            ) ;_ end of mapcar
          ) ;_ end of reverse
        (mapcar (function float) listst)
        ) ;_ end of mapcar
      ) ;_ end of apply
    ) ;_ end of rtos
  ) ;_ end of defun

;;;Функция преобразования числа из десятичной в шестнадцатиричную систему исчисления.
;;;Аргументы:
;;;b- число в десятичной системе исчисления , тип integer
;;;Переменные:
;;;blist - число в шестнадцатеричной системе исчисления , тип string
(defun c:dec-h (b / blist list16)
  (setq list16 &#039;(&quot;0&quot; &quot;1&quot; &quot;2&quot; &quot;3&quot; &quot;4&quot; &quot;5&quot; &quot;6&quot; &quot;7&quot; &quot;8&quot; &quot;9&quot; &quot;A&quot; &quot;B&quot; &quot;C&quot; &quot;D&quot; &quot;E&quot; &quot;F&quot;))
  (while (&gt;= b 16)
    (setq blist (cons (fix (rem b 16)) blist)
          b     (fix (/ b 16.00))
          ) ;_ end of setq
    ) ;_ end of while
  (apply (function strcat)
         (mapcar(function(lambda (x)
                    (nth x list16)
                    ))
                 (setq blist (cons b blist))
                 ) ;_ end of mapcar
         ) ;_ end of apply
  ) ;_ end of defun

;;; Функция экспорта базы данных рисунка в текстовой файл. Производит поиск графических и не графических примитивов в
;;; базе
;;; рисунка
;;;перебирая метки с 1 до метки последнего созданного примитива , выводит свойства примитивов в текстовой файл
;;; в виде :  &quot;класс объекта&quot;  &quot;метка&quot;  &quot;метка в десятичном представлении&quot; &quot;имя объекта&quot; (при его наличии)
;;; аргументов нет
;;; переменные :
;;;filename - имя файла вывода данных
;;;dsk - дескриптор файла
;;;lp - имя последнего созданного примитива
;;;m - метка примитива
;;;lm - список меток
(defun c:es_export_database (/ lm filename dsk lp m)
  (setq i 1)
  (if (and
        (setq filename (getfiled &quot;Файл вывода &quot; &quot;C:\\&quot; &quot;xls&quot; 1))
          ;имя файла вывода
        (setq dsk (open filename &quot;a&quot;)) ;дескриптор файла
        (setq lp (entmakex &#039;((0 . &quot;point&quot;) (10 0 0 0))))
          ; создаем примитив для определения количества повторов цикла перебора меток
        ) ;_ end of and
    (progn
      (repeat (1- (atoi (h-dec (cdr (assoc 5 (entget lp))))))
          ;цикл перебора меток
        (if
          (setq m (handent (dec-h i)))
           (setq lm (cons m lm)) ; список содержащий метки существующих в чертеже примитивов
           ) ;_ end of if
        (setq i (1+ i)
              ) ;_ end of setq
        ) ;_ end of repeat
      (entdel lp) ; удаляем рабочий примитив
      (mapcar
        &#039;(lambda (x / nam prn)
           (setq prn (strcat (vla-get-objectname x)
                             &quot;\t&quot;
                             (vla-get-handle x)
                             &quot;\t&quot;
                             (h-dec (vla-get-handle x))
                             &quot;\t&quot;
                             (rtos (vla-get-objectid x) 2 0)
                             &quot;\t&quot;
                             ) ;_ end of strcat
                 ) ;_ end of setq
           (if
             (and
               (vlax-property-available-p x &#039;name)
               (not (vl-catch-all-error-p
                      (setq
                        nam (vl-catch-all-apply &#039;vla-get-name (list x))
                        ) ;_ end of setq
                      ) ;_ end of vl-catch-all-error-p
                    ) ;_ end of not
               ) ;_ end of and
              (setq prn (strcat prn nam &quot;\t&quot;))
              (setq prn (strcat prn &quot;\t&quot;))
              ) ;_ end of if
           (princ (strcat prn &quot;\n&quot;) dsk)
           ) ;_ end of lambda
        (vl-remove &#039;nil
                   (mapcar &#039;vlax-ename-&gt;vla-object (reverse lm))
                   ) ;_ end of vl-remove
        ) ; функция печати данных примитива в файл
      (close dsk)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun[/cc]]]></description>
		<content:encoded><![CDATA[<p>так работает:</p>
<p>[cc lang="cadlisp"];;;Функция преобразования числа из шестнадцатиричной в десятичную систему исчисления<br />
;;;аргументы :<br />
;;;а - число в шестнадцатиричной системе исчисления , тип string<br />
;;;переменные:<br />
;;;listst - список степеней числа 16. Длина списка равна количеству символов аргумента<br />
(defun c:h-dec (a / i listst)<br />
  (setq i (strlen a))<br />
  (repeat i<br />
    (setq listst (cons (expt 16 (1- i)) listst))<br />
    (setq i (1- i))<br />
    ) ;_ end of repeat<br />
  (rtos<br />
    (apply<br />
      (function +)<br />
      (mapcar<br />
        (function *)<br />
        (reverse<br />
          (mapcar<br />
            (function<br />
              (lambda (x)<br />
                (cond<br />
                  (<br />
                   (vl-symbolp (read (chr x)))<br />
                   (+ (vl-position (chr x) '("A" "B" "C" "D" "E" "F"))<br />
                      10<br />
                      ) ;_ end of +<br />
                   )<br />
                  (t<br />
                   (atoi (chr x))<br />
                   )<br />
                  ) ;_ end of cond<br />
                ) ;_ end of lambda<br />
              ) ;_ end of function<br />
            (vl-string-&gt;list a)<br />
            ) ;_ end of mapcar<br />
          ) ;_ end of reverse<br />
        (mapcar (function float) listst)<br />
        ) ;_ end of mapcar<br />
      ) ;_ end of apply<br />
    ) ;_ end of rtos<br />
  ) ;_ end of defun</p>
<p>;;;Функция преобразования числа из десятичной в шестнадцатиричную систему исчисления.<br />
;;;Аргументы:<br />
;;;b- число в десятичной системе исчисления , тип integer<br />
;;;Переменные:<br />
;;;blist - число в шестнадцатеричной системе исчисления , тип string<br />
(defun c:dec-h (b / blist list16)<br />
  (setq list16 '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"))<br />
  (while (&gt;= b 16)<br />
    (setq blist (cons (fix (rem b 16)) blist)<br />
          b     (fix (/ b 16.00))<br />
          ) ;_ end of setq<br />
    ) ;_ end of while<br />
  (apply (function strcat)<br />
         (mapcar(function(lambda (x)<br />
                    (nth x list16)<br />
                    ))<br />
                 (setq blist (cons b blist))<br />
                 ) ;_ end of mapcar<br />
         ) ;_ end of apply<br />
  ) ;_ end of defun</p>
<p>;;; Функция экспорта базы данных рисунка в текстовой файл. Производит поиск графических и не графических примитивов в<br />
;;; базе<br />
;;; рисунка<br />
;;;перебирая метки с 1 до метки последнего созданного примитива , выводит свойства примитивов в текстовой файл<br />
;;; в виде :  "класс объекта"  "метка"  "метка в десятичном представлении" "имя объекта" (при его наличии)<br />
;;; аргументов нет<br />
;;; переменные :<br />
;;;filename - имя файла вывода данных<br />
;;;dsk - дескриптор файла<br />
;;;lp - имя последнего созданного примитива<br />
;;;m - метка примитива<br />
;;;lm - список меток<br />
(defun c:es_export_database (/ lm filename dsk lp m)<br />
  (setq i 1)<br />
  (if (and<br />
        (setq filename (getfiled "Файл вывода " "C:\\" "xls" 1))<br />
          ;имя файла вывода<br />
        (setq dsk (open filename "a")) ;дескриптор файла<br />
        (setq lp (entmakex '((0 . "point") (10 0 0 0))))<br />
          ; создаем примитив для определения количества повторов цикла перебора меток<br />
        ) ;_ end of and<br />
    (progn<br />
      (repeat (1- (atoi (h-dec (cdr (assoc 5 (entget lp))))))<br />
          ;цикл перебора меток<br />
        (if<br />
          (setq m (handent (dec-h i)))<br />
           (setq lm (cons m lm)) ; список содержащий метки существующих в чертеже примитивов<br />
           ) ;_ end of if<br />
        (setq i (1+ i)<br />
              ) ;_ end of setq<br />
        ) ;_ end of repeat<br />
      (entdel lp) ; удаляем рабочий примитив<br />
      (mapcar<br />
        '(lambda (x / nam prn)<br />
           (setq prn (strcat (vla-get-objectname x)<br />
                             "\t"<br />
                             (vla-get-handle x)<br />
                             "\t"<br />
                             (h-dec (vla-get-handle x))<br />
                             "\t"<br />
                             (rtos (vla-get-objectid x) 2 0)<br />
                             "\t"<br />
                             ) ;_ end of strcat<br />
                 ) ;_ end of setq<br />
           (if<br />
             (and<br />
               (vlax-property-available-p x 'name)<br />
               (not (vl-catch-all-error-p<br />
                      (setq<br />
                        nam (vl-catch-all-apply 'vla-get-name (list x))<br />
                        ) ;_ end of setq<br />
                      ) ;_ end of vl-catch-all-error-p<br />
                    ) ;_ end of not<br />
               ) ;_ end of and<br />
              (setq prn (strcat prn nam "\t"))<br />
              (setq prn (strcat prn "\t"))<br />
              ) ;_ end of if<br />
           (princ (strcat prn "\n") dsk)<br />
           ) ;_ end of lambda<br />
        (vl-remove 'nil<br />
                   (mapcar 'vlax-ename-&gt;vla-object (reverse lm))<br />
                   ) ;_ end of vl-remove<br />
        ) ; функция печати данных примитива в файл<br />
      (close dsk)<br />
      ) ;_ end of progn<br />
    ) ;_ end of if<br />
  ) ;_ end of defun[/cc]</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Vildar</title>
		<link>https://autolisp.ru/2010/06/18/inside-dwg/comment-page-1/#comment-5346</link>
		<dc:creator><![CDATA[Vildar]]></dc:creator>
		<pubDate>Thu, 30 Dec 2010 09:44:18 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=305#comment-5346</guid>
		<description><![CDATA[Алексей с Наступающим! 
А можно попросить выложить кусочек результатов этой программы. Меня только это интересует. Лисп мне сложно понять. А увидев результат, я сразу, надеюсь, пойму что же делает эта программа (функция).

Спасибо.]]></description>
		<content:encoded><![CDATA[<p>Алексей с Наступающим!<br />
А можно попросить выложить кусочек результатов этой программы. Меня только это интересует. Лисп мне сложно понять. А увидев результат, я сразу, надеюсь, пойму что же делает эта программа (функция).</p>
<p>Спасибо.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2010/06/18/inside-dwg/comment-page-1/#comment-5331</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Wed, 29 Dec 2010 15:33:41 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=305#comment-5331</guid>
		<description><![CDATA[Доброго. Только что проверил на AutoCAD 2008 Eng + SP 32 bit и AutoCAD 2011 Eng + SP 32 bit, Windows Vista Home 32 bit. Ошибка есть. Но, что самое интересное - ошибка появляется, если код выполнять не пошагово. После хотя бы одного прохода пошагово все работает корректно.
Есть, конечно, вариант: попытаться сначала сформировать полноценный список, и лишь потом его выводить в файл. Но мне почему-то такой подход не кажется правильным :(
Как бороться - не знаю, а Эдуарда сейчас уже сложно заманить на решение лисповых задач :( Если чего получится - попробую сделать решение. Хотя особых надежд на это я бы не возлагал...]]></description>
		<content:encoded><![CDATA[<p>Доброго. Только что проверил на AutoCAD 2008 Eng + SP 32 bit и AutoCAD 2011 Eng + SP 32 bit, Windows Vista Home 32 bit. Ошибка есть. Но, что самое интересное - ошибка появляется, если код выполнять не пошагово. После хотя бы одного прохода пошагово все работает корректно.<br />
Есть, конечно, вариант: попытаться сначала сформировать полноценный список, и лишь потом его выводить в файл. Но мне почему-то такой подход не кажется правильным <img src="https://autolisp.ru/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /><br />
Как бороться - не знаю, а Эдуарда сейчас уже сложно заманить на решение лисповых задач <img src="https://autolisp.ru/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> Если чего получится - попробую сделать решение. Хотя особых надежд на это я бы не возлагал...</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Vildar</title>
		<link>https://autolisp.ru/2010/06/18/inside-dwg/comment-page-1/#comment-5320</link>
		<dc:creator><![CDATA[Vildar]]></dc:creator>
		<pubDate>Wed, 29 Dec 2010 07:07:26 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=305#comment-5320</guid>
		<description><![CDATA[Если можно уточню.
Сообщение - ; ошибка: no function definition: nil
Выскакивает в функции es_export_database, в строке:
[cc lang=&quot;lisp&quot;](vl-remove &#039;nil
                   (mapcar &#039;vlax-ename-&gt;vla-object (reverse lm))
                   ) ;_ end of vl-remove[/cc]
А еще точнее в этом месте этой строки: (reverse lm)
Может это поможет вам разобраться. Спасибо.
Autocad2008 sp1, winXP, 32bit.]]></description>
		<content:encoded><![CDATA[<p>Если можно уточню.<br />
Сообщение - ; ошибка: no function definition: nil<br />
Выскакивает в функции es_export_database, в строке:<br />
[cc lang="lisp"](vl-remove 'nil<br />
                   (mapcar 'vlax-ename->vla-object (reverse lm))<br />
                   ) ;_ end of vl-remove[/cc]<br />
А еще точнее в этом месте этой строки: (reverse lm)<br />
Может это поможет вам разобраться. Спасибо.<br />
Autocad2008 sp1, winXP, 32bit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2010/06/18/inside-dwg/comment-page-1/#comment-5315</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Tue, 28 Dec 2010 22:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=305#comment-5315</guid>
		<description><![CDATA[Доброго. Во-первых, спасибо за замеченную опечатку. Во-вторых, весьма странно: я только что специально прогнал код на практически пустом файле (AutoCAD 2011 Eng 64 bit + SP), все сработало корректно.
Что-то странное - код не прикрепить никак :(]]></description>
		<content:encoded><![CDATA[<p>Доброго. Во-первых, спасибо за замеченную опечатку. Во-вторых, весьма странно: я только что специально прогнал код на практически пустом файле (AutoCAD 2011 Eng 64 bit + SP), все сработало корректно.<br />
Что-то странное - код не прикрепить никак <img src="https://autolisp.ru/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Vildar</title>
		<link>https://autolisp.ru/2010/06/18/inside-dwg/comment-page-1/#comment-5309</link>
		<dc:creator><![CDATA[Vildar]]></dc:creator>
		<pubDate>Tue, 28 Dec 2010 15:03:44 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=305#comment-5309</guid>
		<description><![CDATA[При запуск (es_export_database), акад пишет:
; ошибка: no function definition: FUNTION

Подправил на Function, ну думаю опечатка, и опять запустил
; ошибка: no function definition: nil

Все я в тупике.
Подскажите плиз.]]></description>
		<content:encoded><![CDATA[<p>При запуск (es_export_database), акад пишет:<br />
; ошибка: no function definition: FUNTION</p>
<p>Подправил на Function, ну думаю опечатка, и опять запустил<br />
; ошибка: no function definition: nil</p>
<p>Все я в тупике.<br />
Подскажите плиз.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
