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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Есть ли переменная содержащая количество листов (layouts)?

Есть ли переменная содержащая количество листов (layouts)?

Ответ
Поиск в этой теме
Непрочитано 25.11.2008, 11:27 #1
Есть ли переменная содержащая количество листов (layouts)?
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Нужно полем вставить количество листов содержащихся в файле. Есть ли для этого переменная?
__________________
Блог
Просмотров: 25850
 
Непрочитано 25.11.2008, 13:20
#2
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Переменной нет. Но есть "коллекции" различных объектов. Получить количество объектов, их списки, свойства и прочее можно обратившись к коллекции.

Например, количество Layouts:
Код:
[Выделить все]
 
(vla-get-count (vla-get-layouts  (vla-get-activedocument (vlax-get-acad-object))))
Это один из вариантов написания. Можно сделать и через имена свойств

Код:
[Выделить все]
 
(vlax-get-property (vlax-get-property  (vlax-get-property  (vlax-get-acad-object) 'Activedocument) 'Layouts)'Count)
Первый вариант более компактен, но заточен конкретно для AutoCAD. Второй вариант более правильный теоретически для работы с любыми COM-объектами.
ShaggyDoc вне форума  
 
Непрочитано 25.11.2008, 13:43
#3
Кулик Алексей aka kpblc
Moderator

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


Да, но в полях, по-моему, невозможно использовать лисповые функции...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.11.2008, 14:49
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Да, но в полях, по-моему, невозможно использовать лисповые функции...
В каких "полях", не понял? "Поле" - это Property, свойство?
Есть функция vlax-get-property, которой надо передать имя свойства в виде строки. Типа 'Layouts или "Layouts". Наверное его можно и функцией сконструировать, но не пробовал.

А "более правильно" потому что для любого языка подходит и более соотносится с концепцией ООП - работать с объектами через их свойства, и не влезать в потроха с помощью функций. Когда Autodesk сделала функции типа vla-get-layouts, это сделали черный ход. Типа, для пролетариата удобней, чем через парадное.

Насколько помню, при появлении COM в R14 таких дырок не было.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 25.11.2008, 16:40
#5
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


ShaggyDoc,
Поле это field. Нужно чтобы количество листов можно было вставить как field в атрибут или мтекст.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 25.11.2008, 22:11
#6
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Ах, "ви в ЭТОМ смысле" (С). Виноват, не разглядел, что в исходном вопросе было про "поле".

Я бы не заморачивался с тем, чтобы в единственном месте в штамп автоматически вставлять единственную цифру, если речь о заполнении основной надписи.
ShaggyDoc вне форума  
 
Непрочитано 25.11.2008, 23:38
#7
Кулик Алексей aka kpblc
Moderator

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


Red Nova, попробуй все же сделать подшивку и с ней поиграться.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.11.2008, 03:51
#8
ACAD


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


Как перенести чертёж из "Лист" в "Модель"?
Сейчас в "Модели" пусто.
ACAD вне форума  
 
Непрочитано 26.11.2008, 08:26
#9
Кулик Алексей aka kpblc
Moderator

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


ACAD, а ты ничего не перепутал? Например, с топиком...
P.S. chspace тебе в руки
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.11.2008, 09:29
#10
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,327


удалил

Последний раз редактировалось Хмурый, 29.11.2008 в 23:47.
Хмурый вне форума  
 
Непрочитано 26.11.2008, 12:46
#11
Zouss


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


варианты ShaggyDoc дают число на единичку больше - ярлычок модели тоже считается
от себя добавлю еще один вариант получения количества листов
Код:
[Выделить все]
(length (layoutlist))
только в поле это дело затолкать не получается
Zouss вне форума  
 
Непрочитано 26.11.2008, 13:11
#12
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Код:
[Выделить все]
(setvar "USERI1" (length(layoutlist)))
ЗЫ Взято отсюда
Makswell вне форума  
 
Автор темы   Непрочитано 26.11.2008, 16:58
#13
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Так понял что в поле засунуть количество листов нереально. Чтож, и так бывает.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 27.11.2008, 09:07
#14
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


В файл acaddoc.LSP добавь код из поста #12

Код для поля будет такой:
Код:
[Выделить все]
%<\AcVar USERI1>%
Makswell вне форума  
 
Автор темы   Непрочитано 27.11.2008, 09:35
#15
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Makswell,
У меня АutoCAD 2009, файла acaddoc.LSP не нашел
__________________
Блог
Red Nova вне форума  
 
Непрочитано 27.11.2008, 09:42
#16
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Тогда создай его и помести в папку, находящуюся в одном из путей поддержки.
Или же наоборот - помести его в какую-нибудь папку и добавь в путь к ней в список путей поддержки.
Makswell вне форума  
 
Непрочитано 27.11.2008, 09:45
#17
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,327


C:\Program Files\AutoCAD 2009\Support\acad2009doc.lsp
Хмурый вне форума  
 
Непрочитано 27.11.2008, 09:47
#18
Zouss


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


Red Nova, здесь посмотрите про эти файлы, второй пост особенно хорош
Zouss вне форума  
 
Автор темы   Непрочитано 27.11.2008, 10:01
#19
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Спасибо за подсказки. Нашел

Makswell, А
Код:
[Выделить все]
%<\AcVar USERI1>%
надо вписать ка дизель, или как? Ато у меня не вышло, говорит
invalid field code
__________________
Блог
Red Nova вне форума  
 
Непрочитано 27.11.2008, 10:05
#20
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Просто скопируй этот код в буфер обмена и вставь это в текст, мтекст и т.п.
Makswell вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Есть ли переменная содержащая количество листов (layouts)?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная содержащая имя листа deConstructor AutoCAD 6 11.11.2007 17:57
Есть ли такая системная переменная? {Smirnoff} Программирование 6 19.08.2005 12:11
Количество листов в layout AleXYZ AutoCAD 6 06.05.2004 17:40