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

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

Как доработать лисп вставки имени блока в листе ?

Ответ
Поиск в этой теме
Непрочитано 08.08.2017, 09:23 #1
Как доработать лисп вставки имени блока в листе ?
baksconstructor
 
Регистрация: 05.11.2014
Сообщений: 978

Имеется lisp, вставляет имя блока в выноске, работает хорошо. Вставляет выноску в пространстве модели.
Есть необходимость чтобы вставлял выноску в активном пространстве листа.
Т.к. в лиспе не силён - подскажите что где изменить чтобы вставлял в пространстве листа ?
Код:
[Выделить все]
 
(defun c:BNameLabel (/ ent entl obj)
  (cond ((not (setq ent (car (entsel "\nSelect block: ")))))
        ((not (eq (cdr (assoc 0 (entget ent))) "INSERT")) (princ "\nInvalid object!"))
        ((setq pt (getpoint "\nSpecify first point: "))
         (setq entl (entlast))
         (vl-cmdf "_.mleader" "_non" pt "\\")
         (while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (vl-cmdf ""))
         (if (not (equal entl (setq entl (entlast))))
           (vla-put-textstring
             (vlax-ename->vla-object entl)
             (vlax-get-property
               (setq obj (vlax-ename->vla-object ent))
               (if (vlax-property-available-p obj 'EffectiveName)
                 'EffectiveName
                 'Name
               )
             )
           )
         )
        )
  )
  (princ)
)
(vl-load-com)
(princ)
Просмотров: 1639
 
Непрочитано 08.08.2017, 09:37
#2
Кулик Алексей aka kpblc
Moderator

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


Учитывая, что используются командные методы, работать должно в текущем пространстве. Менять как бы и нечего (если, конечно, не учитывать особенности поведения команды _.mleader)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.08.2017, 09:38
#3
baksconstructor


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Учитывая, что используются командные методы, работать должно в текущем пространстве.
Оно работает, но когда активный вьюпорт, выбираю блок, ставит выноску, но выноска остается в модели, а нужно чтоб в листе была вставка.
baksconstructor вне форума  
 
Непрочитано 08.08.2017, 09:52
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от baksconstructor Посмотреть сообщение
Оно работает, но когда активный вьюпорт, выбираю блок, ставит выноску, но выноска остается в модели, а нужно чтоб в листе была вставка.
если работаете в пространстве модели через активный ВЭ листа - с какого перепуга акад должен понять, что ему нужно рисовать в пространстве листа?)
Сергей812 вне форума  
 
Автор темы   Непрочитано 08.08.2017, 09:55
#5
baksconstructor


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если работаете в пространстве модели через активный ВЭ листа - с какого перепуга акад должен понять, что ему нужно рисовать в пространстве листа?)
Так в этом и затык , хочется заставить вставлять в лист.
Может в конце добавить смену пространства для этой выностки ? Как ?
baksconstructor вне форума  
 
Непрочитано 08.08.2017, 09:55
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


А так chspace для последнего элемента, наверно.
Сергей812 вне форума  
 
Автор темы   Непрочитано 08.08.2017, 10:24
#7
baksconstructor


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


Сам сделал, мож кому пригодится.
Код:
[Выделить все]
 (defun c:BNameLabelPS (/ ent entl obj)
  (cond ((not (setq ent (car (entsel "\nSelect block: ")))))

        ((not (eq (cdr (assoc 0 (entget ent))) "INSERT")) (princ "\nInvalid object!"))

        ((setq pt (getpoint "\nSpecify first point: "))

         (setq entl (entlast))

         (vl-cmdf "_.mleader" "_non" pt "\\")

         (while (eq (logand 1 (getvar 'CMDACTIVE)) 1) (vl-cmdf ""))

         (if (not (equal entl (setq entl (entlast))))

           (vla-put-textstring

             (vlax-ename->vla-object entl)

             (vlax-get-property

               (setq obj (vlax-ename->vla-object ent))

               (if (vlax-property-available-p obj 'EffectiveName)

                 'EffectiveName

                 'Name

               )

             )

           )

         )

        )
  )
 
  (command
    "_.chspace" "_l" ""
    );;end command
 (princ)
)
(vl-load-com)
(princ)
baksconstructor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как доработать лисп вставки имени блока в листе ?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить масштаб вставки блока? Autocad 2017 Rus farookh1 AutoCAD 7 05.04.2017 21:36
СПДС 10 CS, некорректная точка вставки при сохранении блока в шаблон. doctorraz ПО от CSoft 12 22.04.2016 06:09
Почему съезжает точка вставки этого блока? Sanmart AutoCAD 6 08.04.2016 16:26
Помогите доработать прог. написания имени и адреса файла Grinzaid Программирование 16 23.07.2007 10:33
Точка вставки блока и маленький глюк Serzhio AutoCAD 2 21.04.2005 11:16