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

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

Имена динамических блоков

Ответ
Поиск в этой теме
Непрочитано 21.03.2011, 10:23 #1
Имена динамических блоков
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Друзья, есть динамический блок. Имя его Truba. Когда вставляю кучу блоков, имена их становятся не труба, а *U232 и тому подобные. Каким образом вытащить программно его истинное имя?
Просмотров: 10718
 
Непрочитано 21.03.2011, 10:40
#2
Do$

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


Смотреть свойство "EffectiveName"
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 21.03.2011, 11:11
#3
Zaghim


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


Код:
[Выделить все]
(setq object (entget name))
  (setq klass (cdr (assoc 0 object)))
Далее под цифоркой 2 сидит имя, но имя как уже говорил в виде *U232, под какой цифрой истинное?)
Zaghim вне форума  
 
Непрочитано 21.03.2011, 11:31
#4
Лиспер


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


(setq name (vla-get-effectivename (vlax-ename->vla-object object)))
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 21.03.2011, 12:43
#5
Zaghim


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


А без VisualLisp нельзя обойтись?
Zaghim вне форума  
 
Непрочитано 21.03.2011, 12:46
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Если только совсем делать нечего
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 21.03.2011, 12:46
#7
Do$

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


Цитата:
А без VisualLisp нельзя обойтись?
Насколько я знаю - нет. А чем не устраивает?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 21.03.2011, 12:52
#8
Zaghim


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


Я использую код от программы Gakson. Стырил отсюда, так вот в ней это строка не проходит, выбрасывает по ошибке((
Zaghim вне форума  
 
Непрочитано 21.03.2011, 13:01
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


А ты уверен что если туда просто вставить имя дин. блока - она будет работать?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 21.03.2011, 13:09
#10
Zaghim


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


Код:
[Выделить все]
(defun C:gakson ( / *error*)
 (setq p_cmdecho (getvar "CMDECHO")
       p_snapmode (getvar "SNAPMODE")
       p_orthomode (getvar "ORTHOMODE")
       p_blipmode (getvar "BLIPMODE")
       p_osmode (getvar "OSMODE")
       visotm nil
       visotmold nil
 )
  ;(vl-load-com)

      (defun *error* (msg)  ; Переопределение функции ERROR
        (princ "Программа прервана пользователем")
        (setvar "SNAPMODE" p_snapmode)
        (setvar "ORTHOMODE" p_orthomode)
        (setvar "BLIPMODE" p_blipmode)
        (setvar "OSMODE" p_osmode)
        (setvar "CMDECHO" p_cmdecho)    
        (setq p_cmdecho nil p_snapmode nil p_orthomode nil p_osmode nil p_blipmode nil)
        (princ)
      ) ; defun(*error*)
  
 (setvar "CMDECHO" 0)
 (setvar "SNAPMODE" 0)
 (setvar "ORTHOMODE" 0)
 (setvar "BLIPMODE" 0)
 (setvar "OSMODE" 1)
 (gc)
  
(setq stangle nil stangle1 nil endangle nil endangle1 nil bit10 nil bit10new nil
      bit11 nil bit11new nil bit50 nil bit50new nil bit51 nil bit51new nil object_new nil)
(setq n 0 nabr nil number 0 name nil processed_obj 0)

;(princ "\n ПРОГРАММА ПЕРЕВОДА ПЛАНА В АКСОНОМЕТРИЧЕСКУЮ ПРОЕКЦИЮ.")
;(princ "\n Выберите объекты: ")
(setq nabr (ssget "_A"))
(setq number (sslength nabr))
(initget 6)
  (setq ugol 45.0)
  ;(if (null ugol) (setq ugol 45.0))
(setq ugolrad (* pi (/ ugol 180.0)))
;(setq point (getpoint "\n Укажите точку поворота : ")
(setq point (list 0.0 0.0 0.0)
      x0 (car point)
      y0 (cadr point)
)
(princ "\n")
(setvar "OSMODE" 0)
(while (> number n)
  (setq visotmold visotm)
  (setq name (ssname nabr n))
  (setq object (entget name))
  (setq klass (cdr (assoc 0 object)))
  ;(setq nambl (vla-get-effectivename (vlax-ename->vla-object object)))
  (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 object))))) 4)  
    (vl-cmdf "_.-layer" "_U" (cdr (assoc 8 object)) "")
  )  
; разделение по типам объектов
  (cond
     ;;;----- Обработка примитивов типа "INSERT"
     ((eq klass "INSERT")

        ;(setq eb1 (entlast))
        ;(setq ebd (entget eb1))
        ;(setq name (entnext name))
        ;    (while (AND name
    ;      (= (cdr (assoc 0 (setq object (entget name)))) "ATTRIB")
    ;          ) 
    ;      (setq imattr (cdr (assoc 2 object))
        ;            znattr (cdr (assoc 1 object))
        ;      )
    ;      (if (= imattr "VO") 
        ;        (setq visotm znattr)
    ;      )
    ;      (setq name (entnext name))
    ;    )
        ;(if (= visotm visotmold)
    ;  (alert "Равны!")
    ;  (alert "Не равны!")
    ;)  

      (command "explode" name)
          ;(exit)

     ) ; equal klass "INSERT"



  ) ; cond
  (setq n (+ n 1))

  ) ;while(main)
(if (/= n processed_obj)
    (princ (strcat "\n Не удалось обработать объектов: " (rtos (- n processed_obj) 2 0) ".\n"))
  )
  (setvar "SNAPMODE" p_snapmode)
  (setvar "ORTHOMODE" p_orthomode)
  (setvar "BLIPMODE" p_blipmode)
  (setvar "OSMODE" p_osmode)
  (setvar "CMDECHO" p_cmdecho)
  ; (setvar "ERRNO" 0)
  
) ; defun
Все прекрасно работает, можете попробовать...блоки перебираю и взрываю, если надо дергаю атрибуты с блоков.
Zaghim вне форума  
 
Непрочитано 21.03.2011, 15:26
1 | #11
TararykovDG

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Цитата:
А без VisualLisp нельзя обойтись?
Насколько я знаю - нет. А чем не устраивает?
Просто ради интереса. У меня вот получилось без EffectiveName, через dxf коды
Код:
[Выделить все]
 
(cdr (assoc 2 (entget (cdr (assoc 340 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (car (entsel)))))))))))))))))
Так работает, только если у дин. блока "подергали" какой-либо параметр и (cdr (assoc 2 (entget (car (entsel))))) возвращает *U..., если же блок не трогали, то (cdr (assoc 2 (entget (car (entsel))))) вернет истинное имя, а "шляпа" что показана выше работать не будет
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 21.03.2011, 16:12
#12
Zaghim


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


TararykovDG, вот это мощно)))) щас попробую
Zaghim вне форума  
 
Непрочитано 21.03.2011, 16:43
#13
TararykovDG

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


Zaghim, походу в Твоем коде надо убрать ; в строке
Код:
[Выделить все]
 
 ;(vl-load-com)
Тогда и vla-get-effectivename будет работать
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 21.03.2011, 16:59
#14
Zaghim


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


Не, он и с ним и без него пофиг, ругается и выходит... Твоя строка работает, все круто. СПАСИБО БОЛЬШОЕ!!!!!
Zaghim вне форума  
 
Непрочитано 21.03.2011, 17:38
#15
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Аргументом функции vlax-ename->vla-object должен быть приметив, а ты ей список подсовываешь, он риугаеться примерно так:
не верный тип аргумента: lentitype ((-1 . <Имя ...
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 21.03.2011, 17:44
#16
Zaghim


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


Блин я оленина(((( пардон...
Zaghim вне форума  
 
Непрочитано 21.03.2011, 18:35
#17
VVA

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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
так работает, только если у дин. блока "подергали" какой-либо параметр и (cdr (assoc 2 (entget (car (entsel))))) возвращает *U
Так работает со всеми блоками
Код:
[Выделить все]
(defun get-block-name ( blockentity / name repbtag )
;;; (C) Lee Mac LM:EffectiveName
;;; http://www.theswamp.org/index.php?topic=37493.0
;;; http://forum.dwg.ru/showthread.php?t=65082
;;; blockname EffectiveName динамические блоки
  (if (wcmatch (setq name (cdr (assoc 2 (entget blockentity)))) "`**")
    (if
      (and
        (setq repbtag
          (cdadr
            (assoc -3
              (entget
                (cdr
                  (assoc 330
                    (entget (tblobjname "BLOCK" name))
                  )
                )
               '("AcDbBlockRepBTag")
              )
            )
          )
        )
        (setq repbtag (handent (cdr (assoc 1005 repbtag))))
      )
      (setq name (cdr (assoc 2 (entget repbtag))))
    )
  )
  name
)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 07.04.2011 в 13:53. Причина: Новая версия
VVA вне форума  
 
Непрочитано 24.03.2011, 08:50
#18
Do$

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


Как показала практика, наличие 360 группы в entget-листе вставки блока не является достаточным условием для того, что в тех недрах, куда мы этим лиспом залазим, окажется имя блока... Так что, Владимир, Ваша функция из #17 для динамического блока, который еще не подвергался изменениям, имя не находит и выдет ошибку
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 24.03.2011, 09:23
#19
VVA

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


Вполне может быть. Я у себя делаю как в #2
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.03.2011, 09:52
#20
Do$

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


В общем, по моим наблюдениям, самым "быстрым" оказался такой код:
Код:
[Выделить все]
 (defun blk-get-name-mix (ent / name)
  (if (wcmatch (setq name (cdr (assoc 2 (entget ent)))) "`*U#*")
    (vla-get-EffectiveName (vlax-ename->vla-object ent))
    name
  ) ;_ end of if
) ;_ end of defun
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 24.03.2011, 10:20
1 | #21
Лиспер


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


Сейчас проверить быстродействие не могу, но тем не менее (как вариант)
Код:
[Выделить все]
 (defun _dwgru-get-block-name (ent)
  (if (vlax-property-available-p
        (setq ent (vlax-ename->vla-object ent))
        'effectivename
        ) ;_ end of vlax-property-available-p
    (vla-get-effectivename ent)
    (vla-get-name ent)
    ) ;_ end of if
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 24.03.2011, 11:12
1 | #22
VVA

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


Do$, Блоки с именем *U# не обязательно динамические. Это могут быть и обычные, т.е vla-get-EffectiveName вернет ошибку
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.03.2011, 12:06
1 | #23
Do$

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


Свойство EffectiveName есть у любого блока, а не только динамического,
поэтому достаточно такого будет:
Код:
[Выделить все]
 (defun blk-get-name-vla (ent)
  ;;(blk-get-name-vla (car (entsel)))
  (vla-get-EffectiveName (vlax-ename->vla-object ent))
) ;_ end of defun
И кратко и работет быстро
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 24.03.2011 в 13:06. Причина: Столько фигни понаписал, а самое главное - сделал...
Do$ вне форума  
 
Непрочитано 24.03.2011, 13:37
1 | #24
Лиспер


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Свойство EffectiveName есть у любого блока, а не только динамического,
Осталось запустить код на AutoCAD 2005 И получить сурьезный облом
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 07.04.2011, 13:52
#25
VVA

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Как показала практика, наличие 360 группы в entget-листе вставки блока не является достаточным условием для того, что в тех недрах, куда мы этим лиспом залазим, окажется имя блока... Так что, Владимир, Ваша функция из #17 для динамического блока, который еще не подвергался изменениям, имя не находит и выдет ошибку
Обновлен код в #17

Цитата:
Сообщение от Do$ Посмотреть сообщение
В общем, по моим наблюдениям, самым "быстрым" оказался такой код:
Новые наблюдения
Код:
[Выделить все]
 
(BenchMark
             '(
                  (get-block-name (entlast)) ;_ post #17
                  (blk-get-name-mix (entlast)) ;_post #20
                  (blk-get-name-vla (entlast)) ;_post #23
              )
 )
Цитата:
Benchmarking ..................Elapsed milliseconds / relative speed for 32768 iteration(s):

(GET-BLOCK-NAME (ENTLAST)).......1297 / 1.90 <fastest>
(BLK-GET-NAME-MIX (ENTLAST)).....1297 / 1.90
(BLK-GET-NAME-VLA (ENTLAST)).....2469 / 1.00 <slowest>
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.04.2011, 21:16
#26
Do$

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


Только диву даюсь: каким образом можно было докопаться до такого решения?
Я, кстати, когда тестировал, проверял на трех разных блоках:
- обычный "статический"
- динамический, только что вставленный
- динамический, у которого значения параметров менялись после вставки
Результаты были сильно разные...
Do$ вне форума  
 
Непрочитано 11.04.2011, 15:02
#27
Walkmax


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


А есть ли возможность в код представленный тут http://www.jefferypsanders.com/autolisp_AttInc.html добавить возможность работы с дин.блоками?
Walkmax вне форума  
 
Непрочитано 11.04.2011, 15:08
#28
Лиспер


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


А чем штатные варианты не устраивают?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 11.04.2011, 15:14
#29
Walkmax


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


Если-бы был достойный груз знаний по данной теме может и устроили-бы, но увы ...
Данный код очень помогает, но вот есть один нюанс ...
Walkmax вне форума  
 
Непрочитано 11.04.2011, 16:06
#30
Do$

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


Цитата:
А есть ли возможность в код представленный тут http://www.jefferypsanders.com/autolisp_AttInc.html добавить возможность работы с дин.блоками?
Мне кажется, что с такими вопросами лучше в отдельную тему. Но раз уж тут начали обсуждать...
Цитата:
Сообщение от Лиспер Посмотреть сообщение
А чем штатные варианты не устраивают?
А что, есть такое?
Do$ вне форума  
 
Непрочитано 11.04.2011, 16:46
#31
Лиспер


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


Насколько я понял (код не анализировал), это фактически замена стандартной команды _attedit. Или нет? Если нет, дома погляжу еще разок...
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 11.04.2011, 17:04
#32
Do$

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


Вроде бы, это автоматический нумератор атрибутов (наподобие экспрессовского TCOUNT, только для атрибутов блока).
Do$ вне форума  
 
Непрочитано 11.04.2011, 17:16
#33
Walkmax


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


Функционал следующий:
В чертёж ставм блок с атрибутами
Вызов команды
На запрос указать блок для дальнейших операций указываем нужный блок
В появившемся окне доступны операции выбора атрибутов, определения начального значения нумерации, направление нумерации
Далее если блок не *U, каждый следующий клик мышкой в чертеже ставит ранее указанный блок, с нумерацией в теге указанного атрибута, с ранее указанного стартового значения, в ранее указанном направлении.

Но вот весь вопрос в том, что данный код не работает с *U-именоваными блоками
Walkmax вне форума  
 
Непрочитано 14.04.2011, 10:57
#34
TararykovDG

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


Цитата:
Сообщение от Walkmax Посмотреть сообщение
А есть ли возможность в код представленный тут http://www.jefferypsanders.com/autolisp_AttInc.html добавить возможность работы с дин.блоками?
Попробуй так
Вложения
Тип файла: zip ATTINC.zip (3.2 Кб, 60 просмотров)
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.04.2011, 12:10
#35
Walkmax


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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Попробуй так
Получается так
Команда: ATTINC

Select Block:
Gathering all blocks named *U16 .....
Walkmax вне форума  
 
Непрочитано 14.04.2011, 12:44
#36
TararykovDG

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


Цитата:
Сообщение от Walkmax Посмотреть сообщение
Получается так
Команда: ATTINC

Select Block:
Gathering all blocks named *U16 .....


Walkmax, выложи чертеж на котором так получается (в версии не выше 2008 ACAD'а). Да, и кстати какой у Тебя ACAD.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.04.2011, 13:56
#37
Walkmax


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


Вот чертёж и блок в нём
Чертеж1.dwg
Walkmax вне форума  
 
Непрочитано 14.04.2011, 14:11
#38
TararykovDG

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


Walkmax, судя по всему Ты не обновил свои файлы на те, которые я выложил в посте #34. На всякий случай выкладываю только lisp-файл. На Твоем чертеже у меня все отработало
Вложения
Тип файла: lsp ATTINC_NEW.lsp (10.7 Кб, 61 просмотров)
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.04.2011, 14:15
#39
Walkmax


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



Всё работает, после пинка
Спасибо
Walkmax вне форума  
 
Непрочитано 31.05.2011, 19:14
#40
Sanchev


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Свойство EffectiveName есть у любого блока, а не только динамического,
поэтому достаточно такого будет:
Код:
[Выделить все]
 (defun blk-get-name-vla (ent)
  ;;(blk-get-name-vla (car (entsel)))
  (vla-get-EffectiveName (vlax-ename->vla-object ent))
) ;_ end of defun
И кратко и работет быстро
подскажите тупому начинающему, что является параметром функции blk-get-name-vla?
Sanchev вне форума  
 
Непрочитано 31.05.2011, 19:29
#41
gomer

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


Цитата:
Сообщение от Sanchev Посмотреть сообщение
подскажите тупому начинающему, что является параметром функции blk-get-name-vla?
примитив 'ENAME Во втором приближении можно сделать так
Код:
[Выделить все]
 (defun *-get-EffectiveName (ent)
  (if (= 'ENAME
	 (type ent)
	 (*-get-EffectiveName (vlax-ename->vla-object ent))
	 (vla-get-EffectiveName ent)
      )
  )
)
gomer вне форума  
 
Непрочитано 31.05.2011, 20:36
#42
Кулик Алексей aka kpblc
Moderator

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


vla-указатель на вхождение блока.
P.S. gomer, по-моему, ты со скобками напутал... ИМХО должно быть нечто типа
Код:
[Выделить все]
 (vl-load-com)

(defun *-get-name (ent)
  (cond
    ((= (type ent) 'ename)
     (*-get-name (vlax-ename->vla-object ent))
    )
    ((and (= (type ent) 'vla-object)
	  (vlax-property-available-p ent 'effectivename)
     )
     (vla-get-effectivename ent)
    )
    ((and (= (type ent) 'vla-object)
	  (vlax-property-available-p ent 'name)
     )
     (vla-get-name ent)
    )
  )
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 31.05.2011 в 20:42.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.06.2011, 12:57
#43
Sanchev


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


Цитата:
Сообщение от gomer Посмотреть сообщение
примитив 'ENAME Во втором приближении можно сделать так
спасибо, но, другими словами, вопрос заключался в том, как запустить эту программу?

Цитата:
Сообщение от Do$ Посмотреть сообщение
Код:
[Выделить все]
 (defun blk-get-name-vla (ent)
  ;;(blk-get-name-vla (car (entsel)))
  (vla-get-EffectiveName (vlax-ename->vla-object ent))
) ;_ end of defun
Sanchev вне форума  
 
Непрочитано 02.06.2011, 13:20
#44
Do$

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


Это не программа, это функция, она может использоваться в программе посредством ее вызова. А пример вызова - в закомментированной строке.
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Имена динамических блоков



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сквозная нумерация динамических блоков zenon Программирование 214 28.08.2020 08:45
подсчет динамических блоков AAI Программирование 37 25.06.2012 15:05
Тормозит команда расчленения набора блоков batmax Программирование 4 31.08.2010 17:37
Подсчет и сортировка блоков на текущем слое. Помогите отредактировать. Kortes Программирование 17 26.03.2010 18:46
Проблема вставки Динамических блоков Владимир М Программирование 11 12.09.2007 15:42