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

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

Код ЛИСП для назначения активного стиля размеров

Ответ
Поиск в этой теме
Непрочитано 19.11.2021, 07:54 #1
Код ЛИСП для назначения активного стиля размеров
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 754

Как выглядит код ЛИСП для назначения активного стиля размеров?
Помогите сделать кнопку, чтобы можно было назначать активный стиль размеров, путем указания размера на чертеже
Просмотров: 1017
 
Непрочитано 19.11.2021, 08:17
1 | #2
Кулик Алексей aka kpblc
Moderator

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


(setvar "dimstyle" (cdr(assoc 3 (entget (car (entsel))))))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2021, 08:41
#3
МишаИнженер


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


Запустил команду и получил сообщение:
Команда: (setvar "dimstyle" (cdr(assoc 3 (entget (car (entsel))))))
Выберите объект: ; ошибка: Настройка переменной AutoCAD отвергнута: "dimstyle" "М86.96_1_1_8.696_см"
Почему стиль не назначился?
МишаИнженер вне форума  
 
Непрочитано 19.11.2021, 08:56
#4
Кулик Алексей aka kpblc
Moderator

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


Ну тогда так:
Код:
[Выделить все]
 (vla-put-activedimstyle
  (vla-get-activedocument (vlax-get-acad-object))
  (vla-item (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object)))
            (cdr (assoc 3 (entget (car (entsel)))))
  ) ;_ end of vla-item
) ;_ end of vla-put-ActiveDimStyle
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2021, 08:59
#5
МишаИнженер


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


Опять не работает, выдает ошибку:
Команда: (vla-put-activedimstyle
(_> 2
(_> (vla-get-activedocument (vlax-get-acad-object))
(_> 3
(_> (vla-item (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object)))
((_> 4
((_> (cdr (assoc 3 (entget (car (entsel)))))
((_> 5
((_> ) ;_ end of vla-item
(_> 6
(_> ) ;_ end of vla-put-ActiveDimStyle

Выберите объект: ; ошибка: Слишком много фактических параметров

Если комментарии убрать, то все работает! Спасибо!
МишаИнженер вне форума  
 
Непрочитано 19.11.2021, 09:01
| 1 #6
Кулик Алексей aka kpblc
Moderator

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


Ты про лисп вообще в курсе? Запускаешь vlide, и там в консоли пытаешь код. Потом, когда он отработает, оформляешь как отдельный lsp-файл с определением команды; обеспечиваешь автозагрузку кода; создаешь кнопку и на нее вешаешь вызов собственной команды.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2021, 09:05
#7
МишаИнженер


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


Получился оптимизированный код для кнопки:
Код:
[Выделить все]
(vla-put-activedimstyle (vla-get-activedocument (vlax-get-acad-object)) (vla-item (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object))) (cdr (assoc 3 (entget (car (entsel)))))))
А можно сделать чтобы функция выводила сообщение в командную строку: "Назначен активный стиль размеров "М86.96_1_1_8.696_см""?

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ты про лисп вообще в курсе? Запускаешь vlide, и там в консоли пытаешь код. Потом, когда он отработает, оформляешь как отдельный lsp-файл с определением команды; обеспечиваешь автозагрузку кода; создаешь кнопку и на нее вешаешь вызов собственной команды.
Я где-то читал, что надо в код кнопки в начало добавлять символы: C^C^ а потом код лисп и все должно работать
МишаИнженер вне форума  
 
Непрочитано 19.11.2021, 09:15
#8
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
А можно сделать
Можно. Делай, разрешаю Только для этого придется идти путем, который я показал в #6.
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Я где-то читал
В. Свет, "AutoCAD: язык макрокоманд и создание кнопок". Есть в местном Download. Советую перечитать.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.11.2021, 09:50
#9
МишаИнженер


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


Хорошо, спасибо!
А как сделать чтобы функция выводила сообщение в командную строку: "Назначен активный стиль размеров "...""?
А то функция получается работает в глухом режиме и не отчитывается о проделанной работе и эту работу надо проверять и тратить на это время.
А если есть отчет то проверку можно не делать а просто поверить отчету функции и сэкономить на этом время!
МишаИнженер вне форума  
 
Непрочитано 19.11.2021, 10:03
1 | #10
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,284


(progn (princ (strcat "\nНазначен активный стиль размеров \"" (getvar 'dimstyle) "\"")) (princ))
koMon вне форума  
 
Автор темы   Непрочитано 19.11.2021, 10:27
#11
МишаИнженер


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


Спасибо! А как объединить эти две строки кода:
(vla-put-activedimstyle (vla-get-activedocument (vlax-get-acad-object)) (vla-item (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object))) (cdr (assoc 3 (entget (car (entsel)))))))
(progn (princ (strcat "\nНазначен активный стиль размеров \"" (getvar 'dimstyle) "\"")) (princ))
в одну команду ЛИСП для кнопки?
МишаИнженер вне форума  
 
Непрочитано 19.11.2021, 11:43
1 | #12
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,284


записать подряд
koMon вне форума  
 
Автор темы   Непрочитано 20.11.2021, 12:04
#13
МишаИнженер


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


Удалось сделать следующий код кнопки, который работает без глюков:
Код:
[Выделить все]
^C^C(progn (vla-put-activedimstyle (vla-get-activedocument (vlax-get-acad-object)) (vla-item (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object))) (cdr (assoc 3 (entget (car (entsel))))))) (princ (strcat "Назначен активный стиль размеров: " (getvar 'dimstyle))) (princ))
Наклонная черта: "\n..." вызывает остановку загрузки кода кнопки, поэтому от наклонной черты пришлось отказаться.
Спасибо всем!
МишаИнженер вне форума  
 
Непрочитано 20.11.2021, 13:22
1 | #14
LenidSN


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


;; Set current dimstyle by picking an object on desired dimstyle.

Код:
[Выделить все]
(defun C:MyCommand ()
  (prompt "\Select Desired Dimstyle...")
  (command "-DIMSTYLE" "_R" "")
  (alert (getvar "DIMSTYLE"))
  (princ)
)
LenidSN вне форума  
 
Автор темы   Непрочитано 25.11.2021, 09:26
#15
МишаИнженер


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


Цитата:
Сообщение от LenidSN Посмотреть сообщение
LenidSN
Каким образом при запуске вашей программы в самом начале на экране появляется сообщение (смотри картинку):?
Миниатюры
Нажмите на изображение для увеличения
Название: Сообщение неизвестного происхождения.png
Просмотров: 14
Размер:	8.3 Кб
ID:	243072  
МишаИнженер вне форума  
 
Непрочитано 25.11.2021, 09:35
1 | #16
trir


 
Регистрация: 18.12.2010
Сообщений: 4,663


http://docs.autodesk.com/ACD/2011/EN...b7ccc-6abc.htm
trir на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Код ЛИСП для назначения активного стиля размеров

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разнос налезающих друг на друга размеров по свободным местам dextron3 LISP 8 06.11.2020 19:15
Изменение стиля размеров в конструкторе содержимого AutoCAD MEP 2021 Malkidim Вертикальные решения на базе AutoCAD 4 19.10.2020 08:56
Не отображаются значения размеров. Помогите разобраться. mkung AutoCAD 9 13.10.2017 13:38
Маштаб для автовыбора стиля размера Positron AutoCAD 9 26.02.2010 13:15