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

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

Эспликация блоков из выбранного

Ответ
Поиск в этой теме
Непрочитано 26.08.2009, 15:58
Эспликация блоков из выбранного
G-RAV
 
Геодезист
 
г.Новосибирск
Регистрация: 16.08.2009
Сообщений: 86

Опять возникла какая то невероятная идея.... Которую сам реализую вряд ли..
Допустим на чертеже есть несколько разных блоков (условные знаки), у каждого по одному атрибуту (номер). Я представляю себе задачу сл. образом:
Выбираешь необходимую область, в которой находятся необходимые блоки.."Ентер"
В свою очередь в лист (в любые координаты) вставляется список в виде текста (можно конечно и таблицу, но не принципиально), в котором
1-имя блока________2-сам блок (с пустым атрибутом)_______ 3-номера (например 1...5, 12,13)________ 4-количество блоков.

В качестве исходника прикрепляю dwg...

Вложения
Тип файла: dwg
DWG 2004
пример_экспликация.dwg (44.6 Кб, 1514 просмотров)

Просмотров: 7951
 
Непрочитано 03.09.2009, 22:10
#21
VVA

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


Может здесь подберешь себе что-нибудь
подсчет динамических блоков
Подсчет количества блоков
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 04.09.2009, 13:31
#22
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от VVA Посмотреть сообщение
Может здесь подберешь себе что-нибудь
подсчет динамических блоков
Подсчет количества блоков
Спасибо... Только вот в целях самообразования хочется самому доделать....

И меня опять проблема, на этот раз с циклом
Код:
[Выделить все]
(defun C:ESP (/ selset SelEnt tab objekt objektname NN item new_lst z n)
  (setq selset (ssget))
  (cond
    ((not selset) nil)
    ((= (type selset) 'pickset)
     (repeat
       (setq tab  nil
      item (sslength selset)
       ) ;_ end setq
 (setq SelEnt  (ssname selset (setq item (1- item)))
       objekt  (entget SelEnt)
       objektname (cdr (assoc 2 objekt))
       SelEnt  (entnext SelEnt)
       NN  (cdr (assoc 1 (entget SelEnt)))
       tab  (reverse(cons (list objektname NN) tab))
 ) ;_ end of setq
 
     ) ;_ end repeat
    )
    ((listp selset) selset)
  ) ;_ end of cond
 
  (while (/= tab nil) ;- цикл, пока список не пуст
(setq n 0) ;- обнуление счетчика на количество
(setq z 0) ;- обнуление счетчика для NTH
   (while (/=(nth z tab) nil)  ;- подцикл, пока есть подсписки
         (if (= (caar tab) (car(nth z tab))) ;- условие, если 1-й элемент подсписка равен z-му
    (setq n (+ n 1) ;- то n+1
      new_lst (vl-remove (nth z tab) tab) ;- то удалить z-й подсписок присвоить списку new_lst 
  tab new_lst )) ;- присвоить tab new_lst, конец if 
  (setq z (+ z 1)));- след. элемент, конец подцикла
 
(prompt (strcat "\n" (caar tab) "  " (itoa n) "шт."));- вывод информации на экран     
(setq new_lst (vl-remove (car tab) tab)) ;- удаляем 1-й элемент tab   
(setq tab new_lst) ;- присвоить tab new_lst      
 
  );- конец цикла
 
) ;_ end of defun
...получается - чёпопало.. причем, если в подцикле убрать setq tab new_lst выходит более менее прилично..
G-RAV вне форума  
 
Непрочитано 04.09.2009, 13:56
#23
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Код:
[Выделить все]
(while (/= tab nil) ;- цикл, пока список не пуст 
; _Вместо (/= tab nil) обычно просто ставят tab
(setq n 0) ;- обнуление счетчика на количество
(setq z 0) ;- обнуление счетчика для NTH
;| _А дальше ты делаешь вот что: проходишь по списку tab при помощи
номера элемента z, но при этом зачем-то удаляешь из списка tab z-й элемент в каждом
цикле - из-за этого и получается чушь. |;
   (while (/= (nth z tab) nil)  ;- подцикл, пока есть подсписки
         (if (= (caar tab) (car(nth z tab))) ;- условие, если 1-й элемент подсписка равен z-му
    (setq n (+ n 1) ;- то n+1
; _есть такая ф-ция (1+), (+ n 1) это то же самое, что (1+ n)
; _аналогичная ф-ция (1-)
      new_lst (vl-remove (nth z tab) tab) ;- то удалить z-й подсписок присвоить списку new_lst 
  tab new_lst )) ;- присвоить tab new_lst, конец if 
  (setq z (+ z 1)));- след. элемент, конец подцикла
 
(prompt (strcat "\n" (caar tab) "  " (itoa n) "шт."));- вывод информации на экран     
(setq new_lst (vl-remove (car tab) tab)) ;- удаляем 1-й элемент tab
; _Удалять первый элемент правильнее и безопаснее с помощью (cdr tab)  
(setq tab new_lst) ;- присвоить tab new_lst      
 
  );- конец цикла
 
) ;_ end of defun
Вообще, не вижу никакой логики в коде... Продумай получше. Попробуй список "вручную" прогнать через все преобразования.

Последний раз редактировалось Do$, 04.09.2009 в 14:10.
Do$ вне форума  
 
Автор темы   Непрочитано 04.09.2009, 14:33
#24
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Я к этому уже сегодня приходил.. получается:
Цитата:
UZ12 13шт.
UZ12 12шт.
UZ12 11шт.
UZ12 10шт.
UZ12 9шт.
UZ12 8шт.
UZ12 7шт.
UZ2 26шт.
UZ2 25шт.
UZ2 24шт.
UZ2 23шт.
UZ2 22шт.
UZ2 21шт.
UZ2 20шт.
UZ6 9шт.
UZ6 8шт.
UZ6 7шт.
UZ6 6шт.
.............
В принципе, правильно, но не то, что требуется
G-RAV вне форума  
 
Непрочитано 04.09.2009, 16:00
#25
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Offtop: Может ну его, программирование? Непростое это дело...
Do$ вне форума  
 
Автор темы   Непрочитано 06.09.2009, 17:52
#26
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Do$ Посмотреть сообщение
Offtop: Может ну его, программирование? Непростое это дело...
Может...

Вся проблема была в том, что в условии на совпадение имен нужно было преременной z присвоить ( z-1 )....
Код:
[Выделить все]
(defun C:ESP (/ selset SelEnt tab objekt objektname NN item z n name
       nomer)
  (setq selset (ssget'((0 . "INSERT"))))
  (cond
    ((not selset) nil)
    ((= (type selset) 'pickset)
     (repeat
       (setq tab  nil
      item (sslength selset)
       ) ;_ end setq
 (setq SelEnt  (ssname selset (setq item (1- item)))
       objekt  (entget SelEnt)
       objektname (cdr (assoc 2 objekt))
       SelEnt  (entnext SelEnt)
       NN  (cdr (assoc 1 (entget SelEnt)))
       tab  (reverse (cons (list objektname NN) tab))
 ) ;_ end of setq
 
     ) ;_ end repeat
    )
    ((listp selset) selset)
  ) ;_ end of cond
 
  (while (/= tab nil)
    (setq n 1
   z 1
   nomer nil
    )
    (while (/= (nth z tab) nil)
      (if (= (caar tab) (car (nth z tab)))
 (setq n     (1+ n)
       nomer (cons (cdr (nth z tab)) nomer)
       tab   (vl-remove (nth z tab) tab)
       z     (1- z)
 )
      )
      (setq z (1+ z))
    )
   (setq nomer (append (cdar tab) nomer))
    (print (list (caar tab) nomer n))
    (setq tab (vl-remove (car tab) tab))
 
  )
) ;_ end of defun
Сейчас тот вид, который нужен
Цитата:
(имя_блока (номера) количество)
Осталось только отсортировать номера (почему-то vl-sort не работает)...

Последний раз редактировалось G-RAV, 06.09.2009 в 19:42.
G-RAV вне форума  
 
Непрочитано 07.09.2009, 00:32
#27
Кулик Алексей aka kpblc
Moderator

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


Учитывая, что атрибутов может быть несколько, я бы использовал нечто типа такого (правда, у меня там мои библиотечные функции используются, которые переделывать было лень):
Код:
[Выделить все]
(defun c:esp2 (/                        adoc                     selset                   res
               name                     is                       fun_get-ent-name         _kpblc-conv-vla-to-list
               _kpblc-conv-ent-to-vla   _kpblc-conv-ent-to-ename _kpblc-conv-value-to-string
               _kpblc-conv-list-to-string                        fun_get-attr
               )

  (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)
       )
      ) ;_ end of cond
    ) ;_ end of defun

  (defun fun_get-attr (ent)
    (append
      (_kpblc-conv-vla-to-list (vla-getattributes ent))
      (_kpblc-conv-vla-to-list (vla-getconstantattributes ent))
      ) ;_ end of append
    ) ;_ end of defun

  (defun _kpblc-conv-value-to-string (value /)
                                     ;|
*    конвертация значения в строку.
|;
    (cond
      ((= (type value) 'str) value)
      ((= (type value) 'int) (itoa value))
      ((= (type value) 'real) (rtos value 2 14))
      ((not value) "")
      (t (vl-princ-to-string value))
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-list-to-string (lst sep)
                                    ;|
*    Преобразование списка в строку
*    Параметры вызова:
	lst	обрабатываемй список
	sep	разделитель. nil -> " "
|;
    (setq lst (mapcar (function _kpblc-conv-value-to-string) lst)
          sep (if sep
                sep
                " "
                ) ;_ end of if
          ) ;_ end of setq
    (strcat (car lst)
            (apply (function strcat)
                   (mapcar
                     (function
                       (lambda (x)
                         (strcat sep x)
                         ) ;_ end of lambda
                       ) ;_ end of function
                     (cdr lst)
                     ) ;_ end of mapcar
                   ) ;_ end of apply
            ) ;_ end of strcat
    ) ;_ end of defun

  (defun _kpblc-conv-ent-to-ename (ent_value /)
                                  ;|
*    Функция преобразования полученного значения в ename
*    Параметры вызова:
*	ent_value	значение, которое надо преобразовать в примитив. Может
*			быть именем примитива, vla-указателем или просто
*			списком.
*			Если не принадлежит ни одному из указанных типов,
*			возвращается nil
*    Примеры вызова:
(_kpblc-conv-ent-to-ename (entlast))
(_kpblc-conv-ent-to-ename (vlax-ename->vla-object (entlast)))
|;
    (cond
      ((= (type ent_value) 'vla-object)
       (vlax-vla-object->ename ent_value)
       )
      ((= (type ent_value) 'ename) ent_value)
      ((= (type ent_value) 'str) (handent ent_value))
      ((= (type ent_value) 'list) (cdr (assoc -1 ent_value)))
      (t nil)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-ent-to-vla (ent_value / res)
                                ;|
*    Функция преобразования полученного значения в vla-указатель.
*    Параметры вызова:
*	ent_value	значение, которое надо преобразовать в указатель. Может
*			быть именем примитива, vla-указателем или просто
*			списком.
*			Если не принадлежит ни одному из указанных типов,
*			возвращается nil
*    Примеры вызова:
(_kpblc-conv-ent-to-vla (entlast))
(_kpblc-conv-ent-to-vla (vlax-ename->vla-object (entlast)))
|;
    (cond
      ((= (type ent_value) 'vla-object) ent_value)
      ((= (type ent_value) 'ename) (vlax-ename->vla-object ent_value))
      ((setq res (_kpblc-conv-ent-to-ename ent_value))
       (vlax-ename->vla-object res)
       )
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-vla-to-list (value / res)
                                 ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((listp value)
       (mapcar '_kpblc-conv-vla-to-list value)
       )
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (_kpblc-conv-vla-to-list (vlax-safearray->list value))
         ) ;_ end of if
       )
      ((and (member (type value) (list 'ename 'str 'vla-object))
            (= (type (_kpblc-conv-ent-to-vla value)) 'vla-object)
            (vlax-property-available-p (_kpblc-conv-ent-to-vla value) 'count)
            ) ;_ end of and
       (vlax-for sub (_kpblc-conv-ent-to-vla value)
         (setq res (cons sub res))
         ) ;_ end of vlax-for
       )
      (t value)
      ) ;_ end of cond
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type (setq selset (vl-catch-all-apply
                              (function
                                (lambda ()
                                  (ssget '((0 . "INSERT")))
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'pickset
         ) ;_ end of =
    (progn
      (foreach ent (mapcar (function vlax-ename->vla-object)
                           ((lambda (/ tab item)
                              (repeat (setq tab  nil
                                            item (sslength selset)
                                            ) ;_ end setq
                                (setq tab (cons (ssname selset (setq item (1- item))) tab))
                                ) ;_ end of repeat
                              ) ;_ end of lambda
                            )
                           ) ;_ end of mapcar
        (setq res (if (not (setq is (car (member (setq name (fun_get-ent-name ent))
                                                 (mapcar (function
                                                           (lambda (x)
                                                             (cdr (assoc "name" x))
                                                             ) ;_ end of lambda
                                                           ) ;_ end of function
                                                         res
                                                         ) ;_ end of mapcar
                                                 ) ;_ end of member
                                         ) ;_ end of car
                                 ) ;_ end of setq
                           ) ;_ end of not
                    (cons
                      (list
                        (cons "name" name)
                        (cons "ent" ent)
                        (cons "range" 1)
                        ) ;_ end of list
                      res
                      ) ;_ end of cons
                    ((lambda (/ _is)
                       (setq _is (car (vl-remove-if-not
                                        (function
                                          (lambda (x)
                                            (= (cdr (assoc "name" x)) is)
                                            ) ;_ end of LAMBDA
                                          ) ;_ end of function
                                        res
                                        ) ;_ end of vl-remove-if-not
                                      ) ;_ end of car
                             ) ;_ end of setq
                       (subst
                         (subst (cons "range" (1+ (cdr (assoc "range" _is))))
                                (assoc "range" _is)
                                _is
                                ) ;_ end of subst
                         _is
                         res
                         ) ;_ end of subst
                       ) ;_ end of lambda
                     )
                    ) ;_ end of if
              ) ;_ end of setq
        ) ;_ end of foreach
      (princ
        (strcat "\n"
                (_kpblc-conv-list-to-string
                  (mapcar
                    (function
                      (lambda (x / lst)
                        (setq lst (fun_get-attr (cdr (assoc "ent" x))))
                        (strcat (cdr (assoc "name" x))
                                " : "
                                (if lst
                                  (_kpblc-conv-list-to-string
                                    (mapcar (function
                                              (lambda (a)
                                                (strcat (vla-get-tagstring a) "=" (vla-get-textstring a))
                                                ) ;_ end of LAMBDA
                                              ) ;_ end of function
                                            lst
                                            ) ;_ end of mapcar
                                    "; "
                                    ) ;_ end of _kpblc-conv-list-to-string
                                  ""
                                  ) ;_ end of if
                                " : "
                                (itoa (cdr (assoc "range" x)))
                                " шт."
                                ) ;_ end of strcat
                        ) ;_ end of LAMBDA
                      ) ;_ end of function
                    (vl-sort
                      res
                      (function
                        (lambda (a b)
                          (< (cdr (assoc "name" a)) (cdr (assoc "name" b)))
                          ) ;_ end of lambda
                        ) ;_ end of function
                      ) ;_ end of vl-sort
                    ) ;_ end of mapcar
                  "\n"
                  ) ;_ end of _kpblc-conv-list-to-string
                ) ;_ end of strcat
        ) ;_ end of princ
      ) ;_ end of progn
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.09.2009, 06:15
#28
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Алексей, а можешь дать ссылочку, где можно про функции технологии ActiveX почитать? В книге Н.Полещука есть некоторые описания, но их, как я вижу, недостаточно.. Очень много функций, которые используются в твоей программе, в книге нет..

Последний раз редактировалось G-RAV, 07.09.2009 в 06:28.
G-RAV вне форума  
 
Непрочитано 07.09.2009, 08:06
#29
Кулик Алексей aka kpblc
Moderator

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


Так оно все в справке описано. Правда, справка написана для VBA, но это не проблема: http://www.cad.dp.ua/stats/vla_doc.php
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.09.2009, 08:11
#30
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Так оно все в справке описано. Правда, справка написана для VBA, но это не проблема: http://www.cad.dp.ua/stats/vla_doc.php
ссылочка не работает ....Попробывал найти пару функций... В справке действительно все есть - это радует...
G-RAV вне форума  
 
Непрочитано 07.09.2009, 08:16
#31
Кулик Алексей aka kpblc
Moderator

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


Как это "не работает"? Только что оттуда...
Вложения
Тип файла: pdf activex_4_rules.pdf (219.5 Кб, 370 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.09.2009, 08:44
#32
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Как это "не работает"? Только что оттуда...
Меня почему-то выбрасывает! Спасибо за activex_4_rules.pdf... Очень полезная информация..
G-RAV вне форума  
 
Автор темы   Непрочитано 09.09.2009, 15:00
#33
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Вот наконец-то доделал код, никогда не думал, что у самого получится Правда работает в том случае, когда у блока один атрибут - с ActiveX пока тяжковато
Код:
[Выделить все]
(defun C:ESP (/       selset  SelEnt  tab     objekt  objektname
       NN      item    z       n       nomer   x       N$K
       N$$
      )
  (defun *error* (msg)
    (princ msg)
    (if old_cmdecho
      (setvar "cmdecho" old_cmdecho)
    )
    (if old_osmode
      (setvar "osmode" old_osmode)
    )
  )
  (setq old_cmdecho (getvar "cmdecho"))
  (setq old_osmode (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setq selset (ssget '((0 . "INSERT"))))
  (cond
    ((not selset) nil)
    ((= (type selset) 'pickset)
     (repeat
       (setq tab  nil
      item (sslength selset)
       ) ;_ end setq
 (setq SelEnt  (ssname selset (setq item (1- item)))
       objekt  (entget SelEnt)
       objektname (cdr (assoc 2 objekt))
       SelEnt  (entnext SelEnt)
       NN  (cdr (assoc 1 (entget SelEnt)))
       tab  (reverse (cons (list objektname NN) tab))
 ) ;_ end of setq
 
     ) ;_ end repeat
    )
    ((listp selset) selset)
  ) ;_ end of cond
 
  (while (/= tab nil)
    (setq n 1
   z 1
   nomer nil
    )
    (while (/= (nth z tab) nil)
      (if (= (caar tab) (car (nth z tab)))
 (setq n     (1+ n)
       nomer (cons (atoi (cadr (nth z tab))) nomer)
       tab   (vl-remove (nth z tab) tab)
       z     (1- z)
 )
      )
      (setq z (1+ z))
    )
    (setq nomer (vl-sort (append (list (atoi (cadar tab))) nomer) '<))
    (setq N$$ (itoa (car nomer))
   nomer (vl-remove (car nomer) nomer)
    )
    (while (/= nomer nil)
      (setq N$K (strcat "," (itoa (car nomer))))
      (while (= (1+ (car nomer)) (cadr nomer))
 (setq N$K (strcat "..." (itoa (cadr nomer))))
 (if (and (/= (nth 2 nomer) nil)
   (= (1+ (nth 2 nomer)) (nth 3 nomer))
     )
   (setq N$K (strcat "..."
       (itoa (cadr nomer))
       ","
       (itoa (nth 2 nomer))
      )
   )
 )
 (setq nomer (vl-remove (car nomer) nomer))
      )
 
      (setq N$$ (strcat N$$ N$K))
      (setq nomer (vl-remove (car nomer) nomer))
    )
    (setvar "cmdecho" old_cmdecho)
    (setvar "osmode" old_osmode)
    (print
      (setq spisok (list (caar tab) N$$ (itoa n)))
    )
    (setq tab (vl-remove (car tab) tab))
 
  )
 
) ;_ end of defun
G-RAV вне форума  
 
Непрочитано 09.09.2009, 15:23
#34
Кулик Алексей aka kpblc
Moderator

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


#27 вообще никак не пригодился?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.09.2009, 15:40
#35
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
#27 вообще никак не пригодился?
Я думаю, что пригодится еще, не успел до конца разобраться, не все пока понятно... Вообще в процессе разобора столько узнал о возможностях ActiveX.. Впечатлило.. Но еще и с лиспом не все понятно... Вот например функции - function, lambda, mapcar - одни из некоторых фукций, которые неподдаются моему пониманию, хотя их описание у меня перед глазами....
Будем работать...
G-RAV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Эспликация блоков из выбранного



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Очистка рисунка от "пустых" блоков Makswell Готовые программы 15 26.10.2022 15:24
Обновление атрибутов всех блоков (Attsync для всех блоков) Vildar AutoCAD 3 18.05.2022 14:28
VBA: утечка памяти при вставке блоков Mikha Программирование 13 03.04.2009 09:18
Изменить параметры у всех объектов внутри блоков 800x600 AutoCAD 5 25.03.2008 14:21
Взрыв блоков Filcarpenter Разное 19 28.01.2007 09:57