|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
24.11.2010, 10:47 | #1 | |
Как на VBA определить, есть ли в активном чертеже выделенные примитивы?
Инженер
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,686
|
||
Просмотров: 9478
|
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Тогда сразу по второй части.
Давным давно (in a galaxy far, far away...) мне крыс помог решить этот вопрос. Как ты понимаешь на лиспе. Код:
Если тебе такой способ подходит, приведу свой пример загрузки и вызова из vba. Возможно можно подкоректировать лисп под твои требования. Последний раз редактировалось Vildar, 25.11.2010 в 10:45. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
Код:
А еще интересно, можно ли такую функцию определить и выполнить через комстроку.. Ну, что б можно было не подгружать лисп файл, а зарядить весь код в строковую переменную, и передать этим самым сендкоммандом автокаду.. Нельзя наверное..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! Последний раз редактировалось AlexV, 26.11.2010 в 11:29. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Цитата:
Код:
***Добавлено Вот ф-ция с измененными названиями переменных Код:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 26.11.2010 в 17:56. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
Код:
cм. например здесь http://through-the-interface.typepad...ques_for_.html |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
что хочу, то и делаю Регистрация: 30.06.2014
Сообщений: 119
|
Цитата:
Dim sel as AcadSelectionSet Set sel=ThisDrawing.SelectionSets.Add("temp") sel.SelectOnScreen когда становится не нужным удаляем sel.Delete ЗЫ: нет под рукой vba, возможны не точности кода |
|||
|
||||
Регистрация: 11.10.2014
Сообщений: 24
|
Может кто-то подсказать. Пишу VBA команду :
ThisDrawing.SendCommand "(progn(defun ss-gripset (/ SS SR SSN I)(vl-load-com)(setq SS(vla-get-selectionsets(vla-get-activedocument (vlax-get-acad-object))))(setq SSN(vla-item SS "TestSelectionSetFilter3"))(setq SR(ssadd))(vlax-for I SSN (ssadd(vlax-vla-object->ename I)SR))(sssetfirst nil SR)(princ))(ss-gripset))\n" Выдает ошибку - complete error: end of statemen. Выделяем название в кавычках. (Autocad 2018 64bit) |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
mel2, нда... я бы порекомендовал Вам прочитать про конкатенацию строк в VBA вообще и про использование кавычек при этом в частности, а так же обратить внимание на команду Chr().
Думаю после этого, у Вас все получиться. |
|||
|
||||
Регистрация: 11.10.2014
Сообщений: 24
|
Спасибо. Только разбираюсь с VBA. С кавычками вроде бы разобрался. VBA ошибок не выдает, код запускается, но в командой строке выдает ошибку скобок:
------------------------------------------------------------------ : (progn(defun c:selset-gripset ( / selSets selres selSpdsNode item)(vl-load-com)(setq selSets (vla-get-SelectionSets (vla-get-ActiveDocument (vlax-get-acad-object))))(setq selSpdsNode (vla-item selSets "test5"))(setq selres (ssadd)) (vlax-for item selSpdsNode (ssadd (vlax-vla-object->ename item) selres) ) (sssetfirst nil selres) (princ))(selset-gripset))\n ; ----- Error around expression ----- (PRINC) ; ; error : extra right parenthesis on input ------------------------------------------------------------------ Но если подгрузить .lsp файл с этой же строкой : ------------------------------------------------------------------ (defun c:selset-gripset ( / selSets selres selSpdsNode item)(vl-load-com)(setq selSets (vla-get-SelectionSets (vla-get-ActiveDocument (vlax-get-acad-object))))(setq selSpdsNode (vla-item selSets "test4"))(setq selres (ssadd)) (vlax-for item selSpdsNode (ssadd (vlax-vla-object->ename item) selres) ) (sssetfirst nil selres) (princ)) ------------------------------------------------------------------ То все работает. В чем может быть причина? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Во-первых, строка не такая же. Во-вторых, а наборы с такими именами точно есть?
----- добавлено через 38 сек. ----- В-третьих, ты определяешь функцию или команду?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 11.10.2014
Сообщений: 24
|
Прошу не кидать сильно камнями. Многого не понимаю еще... Просто пытаюсь организовать выделение подсвеченных объектов выборки на чертеже, как предложено в этой теме. Других вариантов, как это можно сделать, к сожалению, не нашел. Буду благодарен, если подскажите, как правильно (лучше) это сделать...
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,046
|
Цитата:
А из сторонних программы нужна лишь бесплатная студия. Но тут возникает вопрос - пишете код официально или пытаетесь упростить себе жизнь неофициально? Если официально - напрямую или через начальника отдела служебку на имя сисадмина. Если неофициально - зависит от того, насколько вась-вась с сисадмином) |
|||
|
||||
Регистрация: 11.10.2014
Сообщений: 24
|
Цитата:
да, но легко внедряется. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA Есть ли возможность графики в VBA на форме (PictureBox)? | Alexey_02 | Программирование | 8 | 13.02.2013 14:08 |
Есть ли программа для присвоения примитивам в чертеже свойства аннотативности? | Chapter | Программирование | 12 | 08.07.2010 00:30 |
Получения списка кривых на чертеже (VBA) | Тензор | Программирование | 3 | 12.12.2009 19:39 |
Запись макросов VBA в ACAD`e; возможность есть? | ssv22 | Программирование | 9 | 19.02.2009 20:22 |
примитивы в VBA... | Хотабыч | Программирование | 1 | 22.08.2005 13:10 |