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

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

Выполнение команды внутри блока

Ответ
Поиск в этой теме
Непрочитано 18.06.2015, 14:38 #1
Выполнение команды внутри блока
Mozgunov
 
Начинающий проектировщик
 
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443

Уважаемые форумчане, подскажите пожалуйста, можно ли применить команду к примитиву который находится внутри блока? Имя примитива получить удалось, но вот действия командным методом над ним выполнить не получается (в моем случае нужно расчленить СПДС-овский объект на примитивы Autocad). Подскажите что я делаю неправильно. Спасибо!

P.S. Ниже листинг из командной строки. Примитив находится внутри блока.
Код:
[Выделить все]
 
Command: !hh
<Entity name: 7ffff859180>
Command: (command "_spex" hh "")
_spex
Command: <Bad Entity name: FF859180>
Просмотров: 4498
 
Непрочитано 18.06.2015, 17:27
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Вряд ли это так работать будет. Для редактирования блока автокад, по сути, открывает его как отдельный чертеж. И тогда уже можно и взрывать и прочее. А тут попытка применить команды редактирования напрямую к объекту внутри блока. Надо по-другому как-то, ятд.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 18.06.2015, 17:39
#3
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


мб. Нашел такую функцию. Она удаляет примитив из блока не открывая его как отдельный чертеж. Может быть конечно можно только удалить или добавить примитив в описание блока, а редактировать нельзя.
Код:
[Выделить все]
 
;;; Удаляет указанные примитивы из определения блока
;;; Аргументы: имя примитива как элемента в определении блока
;;; Возвращает: оставшееся число элементов в определении блока
;;; Для того чтобы изменения стали видимыми, необходимо регенерировать чертеж
(defun ax:DeleteObjectFromBlock	(ent / doc blk)
  (setq	doc (vla-get-ActiveDocument (vlax-get-acad-object))
	ent (vlax-ename->vla-object ent)
	blk (vla-ObjectIdToObject doc (vla-get-OwnerID ent))
  )
  (vla-Delete ent)
  (vla-get-Count blk)
)
Mozgunov вне форума  
 
Непрочитано 18.06.2015, 20:19
#4
VVA

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


А если попробовать такую конструкцию?
Код:
[Выделить все]
 (command "_-bedit" "<имя блока>")
(command "_spex" hh "")
(command "_blose")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.06.2015, 21:03
#5
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


VVA, Спасибо! Так сработает, но если много блоков и в них много примитивов, то надолго затянется) Ну как я понял это единственный выход. Стандартная команда spexplodeall СПДС расчленяет как-то все свои объекты в чертеже не заходя в блоки.
Mozgunov вне форума  
 
Непрочитано 18.06.2015, 23:11
#6
Кулик Алексей aka kpblc
Moderator

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


Не менее стандартная ExplodeAllProxy тоже расчленяет все объекты. Да и альтернативы тоже.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.06.2015, 23:50
#7
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Да, спасибо Кулик Алексей aka kpblc, видел эти команды. Но нужно Автокад перезапускать перед использованием.
Вы об этом говорили тут
Mozgunov вне форума  
 
Непрочитано 19.06.2015, 08:50
#8
Кулик Алексей aka kpblc
Moderator

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


Mozgunov, так Александр все объяснил предельно ясно ) Соответственно другого варианта не существует.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.06.2015, 09:49
#9
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Mozgunov Посмотреть сообщение
Нашел такую функцию. Она удаляет примитив из блока не открывая его как отдельный чертеж.
Ну попробуйте вместо vla-Delete функцию vla-Explode, может получится. Или еще в экспрессах есть какая-то взрывалка (acet-explode вроде).
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 19.06.2015, 10:53
#10
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


vla-Explode-полилинии вроде только взрывает.

Попробовал заменить vla-Delete на acet-explode
Код:
[Выделить все]
 
(acet-explode(vlax-vla-object->ename ent))
Автокад зависает с концами (

Спасибо всем. Наверное лучший вариант в моем случае просто заходить в каждый блок.
Миниатюры
Нажмите на изображение для увеличения
Название: qqq.png
Просмотров: 33
Размер:	32.6 Кб
ID:	151881  
Mozgunov вне форума  
 
Непрочитано 19.06.2015, 11:23
#11
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Mozgunov Посмотреть сообщение
vla-Explode-полилинии вроде только взрывает.
Кто сказал?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.06.2015, 11:50
#12
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Код:
[Выделить все]
 
Command: (vla-Explode (vlax-ename->vla-object (car(entsel))))
Select object: ; error: ActiveX Server returned the error: unknown name: Explode
Это при выборе СПДС объекта. Полилинию или блок нормально разбивает. Но мне надо именно СПДС-овский разбить объект.
Mozgunov вне форума  
 
Непрочитано 19.06.2015, 12:01
#13
Кулик Алексей aka kpblc
Moderator

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


Гидрит твою... СПДС какой? СПДС GraphiCS? SPDS Extension? Самопальный СПДС?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.06.2015, 13:00
#14
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


СПДС GraphiCS у меня. Там есть команда spexplodeall, но после нее нужно кнопочку подтверждения нажимать. Есть вариант вызывать exeшник, который будет окно по имени искать и кнопочку нажимать, а есть вариант просто пройтись по всем объектам которые попали в (ssget "A") и по блокам и обработать их командой spex, которая не требует подтверждения кликом. Вот я по 2 варианту хотел пройти.
Mozgunov вне форума  
 
Непрочитано 19.06.2015, 13:01
#15
VVA

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


Цитата:
Сообщение от Mozgunov Посмотреть сообщение
(vla-Delete ent)
Цитата:
Сообщение от Mozgunov Посмотреть сообщение
Стандартная команда spexplodeall СПДС расчленяет как-то все свои объекты в чертеже не заходя в блоки
Сделай
Код:
[Выделить все]
 (vlax-dump-Object ent t)
и посмотри перечень поддерживаемых методов.
Может там есть метод типа SPDSConvertToAutocadEntities
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 19.06.2015, 14:10
#16
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Неа(
Код:
[Выделить все]
 
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
Mozgunov вне форума  
 
Непрочитано 04.07.2015, 00:43
#17
GGarry


 
Регистрация: 06.06.2007
Il
Сообщений: 87


Привет, всем!!!
Кто-нибудь может мне помочь?
Мне нужна меленькая программка для перевода всех примитивов в блоке не входя в блок:
- цвет по слою;
- стереть все точки;
- перевести все размеры в размерный стиль ААА;
- все линии типа center перевести на слой ВВВ.
Заранее спасибо!!!
__________________
Пьер был светский человек и поэтому мочился духами.
GGarry вне форума  
 
Непрочитано 04.07.2015, 11:34
1 | #18
VVA

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


Тема LISP. Нормализация блоков текущего файла.
Берешь лисп и допиливаешь под свои нужды
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.07.2015, 23:52
#19
GGarry


 
Регистрация: 06.06.2007
Il
Сообщений: 87


Цитата:
Сообщение от VVA Посмотреть сообщение
Тема LISP. Нормализация блоков текущего файла.
Берешь лисп и допиливаешь под свои нужды
Спасибо за помощь!!!
__________________
Пьер был светский человек и поэтому мочился духами.
GGarry вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выполнение команды внутри блока

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
свойство динамичного блока в его атрибуте Pave1 AutoCAD 14 29.12.2011 20:31
Изменение параметров дин блока ch-viktor Программирование 5 23.05.2008 21:38
Выполнение acaddoc.lsp - частичное отображение опций команды Автокада Makswell LISP 18 26.03.2008 18:35
Прозрачные команды Vova AutoCAD 17 21.06.2006 05:33