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

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

Счетчик листов

Ответ
Поиск в этой теме
Непрочитано 28.12.2006, 01:17 #1
Счетчик листов
master_vlad
 
Регистрация: 19.03.2004
Сообщений: 172

Известно, что Autocad сам нумерует Layout при их копировании, напримет так Layout1 ; Layout1 (2) ; Layout1 (3) ... итд.
Очевидно что это можно использовать именуя первый (1), тогда второй при копировании автоматически станет (2), более того, можно организовать чтение названия листа и вставки его в штамп (лист)
например так
Код:
[Выделить все]
%<$(substr, $(getvar, ctab), 3, $(-, $(strlen, $(getvar, ctab)), 3))>%
где ctab - имя текущего листа, а остальное просто снимает скобки.

Вопрос: как на дизеле определить количество листов всего?

нашел вот что
Код:
[Выделить все]
(vla-get-count (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))))
, но как написать тоже самое на дизеле сообразить не могу. помогите плз.
Просмотров: 5004
 
Непрочитано 28.12.2006, 08:23
#2
Кулик Алексей aka kpblc
Moderator

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


Я не знаю, может, сработает нечто наподобие
Код:
[Выделить все]
(LENGTH (LAYOUTLIST))
:?:
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.12.2006, 11:24
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


В дизеле нет возможности вычислить лисп функцию, но можно запомнить результат в переменной.
1. Имеем кнопку, которая запоминает количество листов в переменной USERI1
Код:
[Выделить все]
(setvar "USERI1" (length(layoutlist)))
2. Собственно поле
Код:
[Выделить все]
%<\AcDiesel $(substr, $(getvar, ctab), 3, $(-, $(strlen, $(getvar, ctab)), 3))-$(getvar,USERI1)>%
Вариант для Modemacro
Код:
[Выделить все]
(setvar "modemacro" "$(substr, $(getvar, ctab), 3, $(-, $(strlen, $(getvar, ctab)), 3))-$(getvar,USERI1)")

Последний раз редактировалось VVA, 21.11.2022 в 12:50.
VVA вне форума  
 
Автор темы   Непрочитано 28.12.2006, 12:09
#4
master_vlad


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


Спасибо
актуальнее кажется
Код:
[Выделить все]
%<\AcDiesel $(getvar,USERI1)>%
master_vlad вне форума  
 
Непрочитано 21.11.2022, 12:45
#5
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


Приветствую, использую переменную USERI1 для подсчета количества листов в чертеже и отображаю их текстом в ячейке "Листов" через поле %<\AcVar USERI1>%
Номер листа в тексте указываю полем через Дизель выражение $(substr,$(getvar,CTAB),1,2)
Как составить выражение с функцией "если": если количество листов один не отображать номер листа.
$(if, (>, AcVar USERI1, 1), $(substr,$(getvar,CTAB),1,2) [, '']) - не заработала
Sta1917 вне форума  
 
Непрочитано 21.11.2022, 12:46
1 | #6
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
$(if, $(>, $(getvar,CTAB), 1), $(substr,$(getvar,CTAB),1,2) [, ''])
:?:
Не проверял
P.S. Второй вариант, тоже без проверок
Код:
[Выделить все]
$(if, $(>, $(getvar,CTAB), 1), $(substr,$(getvar,CTAB),1,2) , "")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.11.2022, 18:21
#7
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


Вместо считывания номера, поставил переменную USERI1

Код:
[Выделить все]
 $(if, $(>, $(getvar,USERI1), 1), $(substr,$(getvar,CTAB),1,2), )
Sta1917 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Счетчик листов

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

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