|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.02.2006, 11:16 | #1 | |
размерные стили
Регистрация: 15.06.2005
Сообщений: 184
|
||
Просмотров: 8333
|
|
||||
Хочу быть фотографом :) Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
|
Назад исправить - опять вбить <>
А мне наоборот интересно, как можно ТАК сделать.. желательно для кучи размеров (всех в чертеже). Может кто знает?)
__________________
Камень на камень, кирпич на кирпич.. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Если не проверять заблокированность и замороженность слоев, то
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Хех, только про слои не забудь... Или вот вариант, все то же самое, но не даст (насколько мне помнится) выбрать объекты на заблокированных слоях:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Хочу быть фотографом :) Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
|
Наоборот для того, чтобы отдать потом человеку, который второй раз в жизни видит автокад и будет менять масштаб чертежа (с помощью scale, конечно ))))
Кстати, вашу проблему решить очень просто так: выбрать все размеры, в properties открыть вкладку text и в поле text override вбить <> Разве нет?..
__________________
Камень на камень, кирпич на кирпич.. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Ну раз уж так хочется и обратное телодвижение сделать, хватайте
Код:
--- P.S. кого-кого из меня сделали?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Ребята, но нельзя-же на все даже редко встречающиеся случаи иметь лиспы. Это какая-же у вас коллекция получится-в ней-же все забудется, что для чего. Моя коллекция около сотни, так она уже требует список на бумаге, краткое описание, что каждый делает и каким словом вызывается. Я очень осторожно добавляю сюда новенькое. Для KPBLC, понятно, практика, его ночью разбуди -напишет между снами, но большинство подобных лиспов-однодневки. Стоит-ли поощрять такие желания?
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
> Vova : так их я не вызываю с клавы - помрешь же колотить (_kpblc-layer-create-and-activate '(("name" . "ЭО-Оборудование") ("ltype" . "ЭО") ("lw" . "25))). Сделана кнопка в своем меню и в toolpalette болтается нструмент, оно и делает все, чего надо.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 15.06.2005
Сообщений: 184
|
kpblc
я тоже пытаюсь освоить программирование. просмотрел твои программки, возник такой вопрос откуда взялось vla-startundomark и что она делает vla-put-textoverride тут вроде понятно, что сист. пер. присваиваем пустую строку "" - чтобы размеры корректно отображались. но тоже вопрос почему в хелпе и в книгах по программированию нет таких ф-ций? с vlax-ename->vla-object тоже вроде все понятно. сначала взяли vla-объект, преобразовали его в обычный, изменили кое-что, а потом уже измененный преобразовали опять в vla-объект. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Стоп, давай чуть-чуть сначала, гуд?
1. (vlax-ename->vla-object) - Это преобразование примитива в vla-указатель на него. Например, по (entsel) ты получаешь нечто типа (<Entity name: 7ef7dcb0> (1462.45 887.959 0.0)) - т.е. список из указателя на примитив и точки выбора. (car (entsel)) в таком случае вернет <Entity name: 7ef7dcb0>. Добраться до состава примитива даже в таком варианте можно, используя (entget(car(entsel))): ((-1 . <Entity name: 7ef7dcb0>) (0 . "LINE") (330 . <Entity name: 7ef63cf8>) (5 . "266") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (48 . 100.0) (100 . "AcDbLine") (10 738.717 83.8527 0.0) (11 1636.39 1080.45 0.0) (210 0.0 0.0 1.0)) Покопавшись в DXF Reference, можно увидеть, что это список из точечных пар, описывающий обычный отрезок со всеми (или почти всеми) его свойствами. В частности, здесь нет 62 группы - цвет "ByLayer". Преобразование (entget) в vla-указатель просто дает чуть-чуть более удобный интерфейс доступа туда же. Иногда надо провернуть обратное - из vla-указателя получить нечто типа <Entity name>. Тогда используется либо (vlax-vla-object->ename), либо через функцию (handent (vla-get-handle vla_object)) - второе, в частности, требуется при программировании по LT при условии использования LT Extender - там зачастую некорректно такие штуки преобразовываются. 2. (vla-put-textoverride) - она не меняет никаких системных переменных, ты чего? Пойдем "от руды". Нарисуй линейный размер, к примеру, и в vlide сделай Код:
Код:
Преобразовываем ent в vla: Код:
Код:
Здесь же есть свойство TextOverride. Получить его значение можно либо как Код:
Код:
Код:
Код:
3. (vla-startundomark) и (vla-endundomark) ставят метки начала и конца "отмены". Т.е. тебе понадобится только один раз нажать _undo, и отменится сразу все действия, лежащие между этими кусками - не надо жать сотни раз. --- Добавлено: Если выполнить (vlax-dump-object vla_ent t), то в списке будут еще и методы, доступные для этого объекта. Более подробно все описано в справке, только в VBA-шной Т.е. приходится немного ее править для использования в лиспе - вперед ставить vla-, потом указывать объект, а потом уже все как там написано. Не забывая про необходимость преобразования параметров...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Ну в общем-то да. Только проверять свойство на доступность надо. Например, у отрезка есть свойство startpoint, а у полилинии - фигушки.
Проверку на доступность можно проверять через (vlax-property-available-p) или напрямую через (vl-catch-all-error-p).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,192
|
Я думал тут про стили...а тут ликбез по vlisp.
kpblc как у тебя вообще времени хватает на все это? VOVA Цитата:
но с библиотечными функциями это быстро делается. Одна проблема - сбиблиотечными на форум выложить проблема. вот кстати библиотечная моя функция для получения свойства: Код:
а кто коллекционирует всякие маленькие "фишки" на лиспе, имхо - самое удобное это toolpalettes, там и описание есть куда забить |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Цитата:
|
|||
|
||||
свободный проектировщик Регистрация: 01.11.2005
Омск
Сообщений: 3
|
-> kpblc
Надеюсь вы ещё следите за этой темой. Вопросик в следующем: функция drest переписывает все подряд размеры. а если там уже есть переписаные вручную размеры, да ещё и со всякими значками... (Пример: 2x900=<>) Не хотелось бы эти значения терять... Могли бы вы это учесть в коде?
__________________
ACAD -дело тонкое... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Цитата:
Хотя... Если в text override размера точно есть <>, то можно поставить ему префикс и суффикс, например. Или эти параметры тоже переназначаются?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||