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

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

Перенос тип линии+длина в атрибут блока (оптимизация)

Ответ
Поиск в этой теме
Непрочитано 07.02.2020, 15:51 #1
Перенос тип линии+длина в атрибут блока (оптимизация)
Lumpy
 
Регистрация: 25.06.2019
Сообщений: 13

[/quote]Добрый день.

Подскажите пожалуйста как сделать так чтобы тип линии и длинна бралась с одного выбранного объекта и не приходилось дважды выбирать.

или направление куда почитать посмотреть.


Код:
[Выделить все]
 (defun get-lw-length-from-pt (pt / ss)
  ;;;Ф-ция возвращает лнину полилинии в переданной точке pt или nil-если ничего не обнаружено
  (vl-load-com)
  (if
    (setq ss (ssget "_:S"  (list (cons 0 "*LINE" ))))
    (vlax-curve-getDistAtParam (ssname ss 0)(vlax-curve-getEndParam (ssname ss 0)))
        )        
           
     )

;;;Пример использования
(defun C:marker ()
 
   
      (progn
                                   (setq len (get-lw-length-from-pt pt))             
                                   (setq rt (car (entsel "\n Выберите полилинию : ")))
                         (setq res  (cdr (assoc 6 (entget rt))))
             (setq attr (car (nentsel "\nВыберите атрибут блока: ")))
             (vla-put-TextString (vlax-ename->vla-object attr)  (strcat (prin1 res) " (" (rtos len 2 1)"0 м"))
                 
          
      )
             
  )

Последний раз редактировалось Lumpy, 07.02.2020 в 16:43. Причина: Не выделил код
Просмотров: 977
 
Непрочитано 07.02.2020, 16:53
#2
Кулик Алексей aka kpblc
Moderator

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


Как вариант, без проверок и без гарантий
Код:
[Выделить все]
 (defun c:mk ()
  (setq ent  (car (entsel "\nPOLYLINE : "))
        attr (car (nentsel "\nAttRef : "))
        ) ;_ end of setq
  (vla-put-textstring (vlax-ename->vla-object att)
                      (strcat (prin1 (cdr (assoc 6 (entget ent))))
                              " ("
                              (rtos (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent)))
                              "0 m)"
                              ) ;_ end of strcat
                      ) ;_ end of vla-put-TextString
  ) ;_ end of defun
Что такое 6 группа в полилинии - не помню.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.02.2020, 17:02
#3
Lumpy


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Что такое 6 группа в полилинии - не помню.
Это тип линии как раз.

спасибо, но не работает=)
ошибка: неверный тип аргумента: lentityp nil
Lumpy вне форума  
 
Автор темы   Непрочитано 07.02.2020, 17:38
#4
Lumpy


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


нашел опечатку
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
*(vla-put-textstring (vlax-ename->vla-object att)
буковки r не хватало. благодарю все работает.
Lumpy вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Перенос тип линии+длина в атрибут блока (оптимизация)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Длина динамического блока не соответствует действительности. Как исправить? neonlight_child Динамические блоки 2 02.11.2017 11:37
Почему многострочный атрибут блока становиться в одну строку? Alexg-12 AutoCAD 13 10.06.2013 15:58
Как изменить атрибут предварительно выделеного блока VBA shprot Программирование 7 15.05.2012 14:25
ПОле, вставленное в атрибут блока maestro AutoCAD 46 10.03.2007 01:43
Длина температурного блока Net Прочее. Архитектура и строительство 10 11.02.2006 14:28