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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Тройной Explode???

Тройной Explode???

Ответ
Поиск в этой теме
Непрочитано 24.01.2005, 10:45 #1
Тройной Explode???
VVS
 
проектирование автоматизированных систем управления и диспетчеризации на базе LonWorks
 
Санкт-Петербург
Регистрация: 24.01.2005
Сообщений: 16

Делаю кнопочный макрос, выполняющий следующую последовательность действий:
1) Изменение текстого стиля чертежа
2) Тройное разбивание блоков во всем чертеже
3) Копирование всего в буфер
Не понятно как реализовать второй пункт!!!
^C^C_AI_Selall;_explode; вот так я делаю одинарный explode, добавление последовательности _AI_Selall;_explode; приводит к непонятному результату.
Может кто-нить написать, как сделать 3X
Просмотров: 9093
 
Непрочитано 24.01.2005, 11:29
#2
Lenich

Опер дир
 
Регистрация: 28.04.2004
Москва
Сообщений: 291


Цитата:
Сообщение от VVS
Не понятно как реализовать второй пункт!!!
Я бы не заморачивался и сделал так:
Код:
[Выделить все]
^C^Cexplode;all;explode;all;explode;all;
Lenich вне форума  
 
Непрочитано 24.01.2005, 11:45
#3
Кулик Алексей aka kpblc
Moderator

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


Не катит. Даже
Код:
[Выделить все]
^C^C_Explode;_All;;_Explode;_All;;_Explode;_All;;
не работает.
Код:
[Выделить все]
^C^C_Select;_All;;_Explode;;;
Может и сработает - сейчас не проверить.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.01.2005, 12:11
#4
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


А не пробовал вставить между explode redrawall ?
может поможет
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 24.01.2005, 12:15
#5
Кулик Алексей aka kpblc
Moderator

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


Геннадий (надеюсь, так обращаться можно?), там основная проблема в том, что Explode некорректно воспринимает выделение. И при повторном вызове требует выделения. Скорее всего, надо комбинировать команды _explode;_All; И _select;_All;_Explode;
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.01.2005, 12:39
#6
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Должно быть так (если использовать внутреннюю команду):
Код:
[Выделить все]
^C^C_.explode;_All;_.explode;_All;_.explode;_All;
P.S. Попробовал в нескольких файлах: часть - нормально, часть - с ошибкой... Надо искать разницу...
Alaspher вне форума  
 
Непрочитано 24.01.2005, 12:49
#7
Lenich

Опер дир
 
Регистрация: 28.04.2004
Москва
Сообщений: 291


[quote="kpblc"]Не катит.[quote]
Да действительно.
Тогда так:
Код:
[Выделить все]
^C^C_AI_Selall;explode;;^C^C_AI_Selall;explode;;^C^C_AI_Selall;explode;
Lenich вне форума  
 
Непрочитано 24.01.2005, 12:54
#8
maif

мосты
 
Регистрация: 21.01.2005
78
Сообщений: 51


памоему нада дабавить _С_С.... пару раз.
maif вне форума  
 
Непрочитано 24.01.2005, 12:58
#9
Lenich

Опер дир
 
Регистрация: 28.04.2004
Москва
Сообщений: 291


Кстати что это за зверь: _AI_Selall
Lenich вне форума  
 
Непрочитано 24.01.2005, 13:08
#10
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Можно попробовать так:
Код:
[Выделить все]
^C^C(repeat 3 (vl-cmdf "_.explode" "_All" ""));
не уверен, что не будет проблем, но отрабатвыать это должно.
Alaspher вне форума  
 
Непрочитано 24.01.2005, 13:12
#11
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


^C^C_Explode;_All;^C^C_Explode;_All;^C^C_Explode;_All;
я такую строку использовал, но заметил следующее:
У меня последовательно блок а1 и 2 квадратика создают блок а2,
а2 и квадратик создают блок а3
так вот разложились блоки а3 и а2, а1 - нет
также работает и
^C^C_Explode;_All;_Explode;_All;_Explode;_All;
это ведь одно и тоже
короче
^C^C_Explode;_All;;_All;;_All;;_All;
когда вставил 4-ый explode все равно блок а1 не расчленился
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 24.01.2005, 13:13
#12
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Lenich
Кстати что это за зверь: _AI_Selall
Одновременное нажатие Ctrl + A.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.07.2010, 16:02
#13
Zaghim


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


Как понимаю, вопрос так и не решился...
Zaghim вне форума  
 
Непрочитано 08.07.2010, 16:26
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от Lenich Посмотреть сообщение
Кстати что это за зверь: _AI_Selall
Посмотри файл acad20**doc.lsp в составе AutoCAD.
Profan вне форума  
 
Непрочитано 08.07.2010, 16:31
#15
Кулик Алексей aka kpblc
Moderator

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


Profan, последнему посту (перед Zaghim, который и поднял тему - будто своей мало про burst) - уже 5 с лишним лет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.07.2010, 16:37
#16
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А неважно. Многие и сейчас не знают, что это за зверь и вообще, что такое команды, начинающиеся на ai_.
Profan вне форума  
 
Непрочитано 08.07.2010, 16:50
#17
Zaghim


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


С бёрстом вроде все понятно, а вот после него хочу сделать взрыв всех объектов, а он не выполняется...если делать в каде, то все ок.
Что искать в том файле, ai_selall?
Не пойму как ей пользоваться...так?
(ai_selall)
(command "_explode" "") или нет?

Последний раз редактировалось Zaghim, 08.07.2010 в 17:01.
Zaghim вне форума  
 
Непрочитано 08.07.2010, 17:25
#18
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


В коде программы на AutoLisp эта комада (функция) вызывается так:
Код:
Profan вне форума  
 
Непрочитано 08.07.2010, 17:33
#19
Zaghim


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


Не согласен вообще. Это не вшитые команды, а написанные отдельно и подгруженные аплоадом, поэтому вызывать нужно просто в скобках, можешь попробовать.... как сделать эксплод лучше скажи после того, как сделал аи_селалл
Zaghim вне форума  
 
Непрочитано 08.07.2010, 17:41
#20
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Ишь ты, не согласен. А это что:
Код:
[Выделить все]
Команда: ai_selall Выбор объектов...готово.

Команда: (C:ai_selall)
Выбор объектов...готово.

Команда: (ai_selall)
no function definition: AI_SELALL
 Аварийное завершение команды!
Profan вне форума  
 
Непрочитано 08.07.2010, 17:42
#21
VVA

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


Цитата:
Сообщение от Zaghim Посмотреть сообщение
а вот после него хочу сделать взрыв всех объектов, а он не выполняется.
Из справки по команде _explode
Цитата:
Note If you're using a script or an ObjectARX® function, you can explode only one object at a time.
Отсюда решение
Код:
[Выделить все]
(defun C:EXPALL ( / ss)
 (sssetfirst nil ss)
(setq ss (ssget "_X" (list
            (cons 0  "INSERT")
            (cons 410 (getvar "CTAB"))
            )
          )
      )
(repeat (setq n (sslength ss))
  (command "_.Explode" (ssname ss (setq n (1- n))))
  )
)
Не могу взорвать набор блоков
Как разбить блоки?
(vl-cmdf "_.explode" (ssget))
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 09.07.2010 в 10:23.
VVA вне форума  
 
Непрочитано 08.07.2010, 17:49
#22
Zaghim


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


Я говорю про лисп... там нужно писать так.
Со взрывом поможешь?

уже пробовал так...нихрена не получается
(setq p1 (list -100000000000000000000000 -100000000000000000000000))
(setq p2 (list 100000000000000000000000 100000000000000000000000))
(command "_explode" "w" p1 p2 "")

так тоже

(ai_selall)
(command "_explode" "")
Zaghim вне форума  
 
Непрочитано 08.07.2010, 17:59
#23
VVA

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


Цитата:
Сообщение от Zaghim Посмотреть сообщение
Я говорю про лисп... там нужно писать так.
Я говорю про тоже самое
Судя по твоим координатам ты хочешь взорвать все.
Пример в #21 был дан для тебя. Попробуй, поможет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.07.2010, 18:01
#24
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Вот такая программа у меня сработала (5 блоков и 5 полилиний):
Код:
[Выделить все]
(defun C:eexp ( / )
(C:AI_SELALL)
(command "_EXPLODE")
(princ)
)

Последний раз редактировалось Profan, 08.07.2010 в 21:43.
Profan вне форума  
 
Непрочитано 08.07.2010, 20:56
#25
Кулик Алексей aka kpblc
Moderator

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


Код не обрабатывает прокси объекты. Из обработки исключаются внешние ссылки.
Код:
[Выделить все]
(vl-load-com)

(defun c:triple-explode (/ adoc lst_layer err_count)

  (setq err_count 0)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for item (vla-get-layers adoc)
    (setq lst_layer
           (cons (cons item
                       (mapcar
                         (function
                           (lambda (x / res)
                             (setq res (cons x (vlax-get-property item x)))
                             (vl-catch-all-apply
                               (function
                                 (lambda ()
                                   (vlax-put-property item x :vlax-false)
                                   ) ;_ end of lambda
                                 ) ;_ end of function
                               ) ;_ end of vl-catch-all-apply
                             res
                             ) ;_ end of lambda
                           ) ;_ end of function
                         '("freeze" "lock")
                         ) ;_ end of mapcar
                       ) ;_ end of cons
                 lst_layer
                 ) ;_ end of cons
          ) ;_ end of setq
    ) ;_ end of vlax-for

  (repeat 3
    (vlax-for blk_def (vla-get-blocks adoc)
      (if (equal (vla-get-isxref blk_def) :vlax-false)
        (progn
          (vlax-for ent blk_def
            (if (vlax-method-applicable-p ent 'explode)
              (if (vl-catch-all-error-p
                    (vl-catch-all-apply
                      (function
                        (lambda ()
                          (vla-explode ent)
                          (vla-erase ent)
                          ) ;_ end of lambda
                        ) ;_ end of function
                      ) ;_ end of vl-catch-all-apply
                    ) ;_ end of vl-catch-all-error-p
                (setq err_count (1+ err_count))
                ) ;_ end of if
              ) ;_ end of if
            ) ;_ end of vlax-for
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of repeat

  (foreach item lst_layer
    (foreach prop (cdr item)
      (vl-catch-all-apply
        (function
          (lambda ()
            (vlax-put-property (car item) (car prop) (cdr prop))
            ) ;_ end of lambda
          ) ;_ end of function
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of foreach
    ) ;_ end of foreach
  (if (/= err_count 0)
    (princ (strcat "\nНе удалось разбить " (vl-princ-to-string err_count) " примитивов"))
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Код особо не гонял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.07.2010, 21:38
#26
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


VVA, правильно ли ты интерпретировал справку по команде _EXPLODE? В русской версии написано так:
Цитата:
Примечание Если используется какой-либо пакет или функция ObjectARX®, то за один раз можно выполнить расчленение только одного объекта.
Здесь ничего не написано про AutoLisp.
Profan вне форума  
 
Непрочитано 09.07.2010, 09:55
#27
Zaghim


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


В общем ничего не помогло (((
Порядок действий у меня такой:
1) создаю слой xref
2) выполняю команду burst 2 раза (в соотв. теме было решение как сделать что бы однократном выборе она делалась 2 раза)
3) затем мне нужно сделать взрыв всего
4) опять команда burst 2 раза
5) перенос всего в слой xref
6) команда purge

Еще вначале нужно сделать анлок всех слоев, делаю через команду -layer и нифига не выходит.

почему так, потому что куча вложений блоков в блоки...берстом делаю, что бы сохранить все скрытые атрибуты и тд в блоках, при простом взрыве они вылазят наружу, после 2 берстов остаются блоки их нужно взорвать и опять сделать берст что бы уже все точно разбилось на примитивы. Взрыв не делается никак)))

Предложение профана пишет следующее
Command: Selecting objects...done.
_EXPLODE 32 found
-
Select object: _.explode

*Invalid selection*
Expects a point or Last/ALL/Group
error: Function cancelled

Я думаю, что это из-за того, что Автокад выдает алерт, что блоков дофига и это может занять кучу времени...как это аллерт подтвердить или убрать вовсе?

Последний раз редактировалось Zaghim, 09.07.2010 в 10:24.
Zaghim вне форума  
 
Непрочитано 09.07.2010, 10:22
#28
VVA

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


Цитата:
Сообщение от Profan Посмотреть сообщение
VVA, правильно ли ты интерпретировал справку по команде _EXPLODE? В русской версии написано так:
Цитата:
Примечание Если используется какой-либо пакет или функция ObjectARX®, то за один раз можно выполнить расчленение только одного объекта.
Здесь ничего не написано про AutoLisp.
Правильно. LISP как и пакет (scr) предварительно проходят через интерпритатор. Поэтому в данном случае можно сказать так LISP=пакет
>Zaghim
А что пишет предложение VVA #21? (На всякий случай код #21 оформил ввиде команды)
Тоже, только вид сбоку
Код:
[Выделить все]
(defun C:EXPALL ( / ss )
(vl-load-com)
(if  
(setq ss (ssget "_X" (list
            (cons 0  "INSERT")
            (cons 410 (getvar "CTAB"))
            )
          )
      )
(progn
  (setvar "PICKFIRST" 1)
  (sssetfirst nil ss)
  (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "_.EXPLODE\n")
)
)
(princ)
)
*** Добавлено ***
Цитата:
Я думаю, что это из-за того, что Автокад выдает алерт, что блоков дофига и это может занять кучу времени...как это аллерт подтвердить?
поробовать команду из #21
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.08.2010, 20:18 Расчленить
#29
vade


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


Кто-нибудь помогите расчленить блоки. Что ни пробывал не помогает
Вложения
Тип файла: dwg
DWG 2004
Блок.dwg (130.9 Кб, 911 просмотров)
vade вне форума  
 
Непрочитано 20.08.2010, 20:25
#30
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


А кто сказал что это блок?
Загляни в Свойства, там наверху написано, что это
Vova вне форума  
 
Непрочитано 20.08.2010, 20:40
#31
Neutrino

Конструктор
 
Регистрация: 31.10.2007
СПб
Сообщений: 199


Offtop: Explode Explodович Explodов.. Простите, не удержался.
__________________
П(ривет)
Городам и
Сёлам!
Neutrino вне форума  
 
Непрочитано 20.08.2010, 22:53 подкорректировал
#32
vade


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


Извиняюсь, убрал лишнее.
Лучше помогли бы
Вложения
Тип файла: dwg
DWG 2004
Блок то что выделено.dwg (129.5 Кб, 912 просмотров)
vade вне форума  
 
Непрочитано 20.08.2010, 23:54
#33
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Зайди в свойства блока и выбери для масштаба z коэффицент 1, (информация о длинне утеряеться), но потом можно будет взорвать и вытянуть солид.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 21.08.2010, 00:11
#34
Кулик Алексей aka kpblc
Moderator

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


explmode
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.08.2010, 00:40
#35
vade


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


EXPLMODE не помогает на 2010 CADe.
С z коэффицент 1 понятно, но потом нужно повторно вытягивать в то, что нужно было получить в посте 29.
Т.е. в посте 29 то что нужно расчленить в 3Д Солид, оставив на месте все объекты в том же положении. Расчленение это нужно для дальнейшей обработки командой т-профиль (или аналогичной).
vade вне форума  
 
Непрочитано 21.08.2010, 00:41
#36
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
explmode
В данном случае (с 3д солидами) не прокатит
Цитата:
Расчленение это нужно для дальнейшей обработки командой т-профиль (или аналогичной).
В данном случае ИХМО используй просто виды без проекций.
Оставив блоки остаються и возможности по дальнейшей автоматизации (подсчету спецификации) в автомате. А рисовать блокаит чтоб их потом взорвать, лучше тогда и не заморачиваться.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 21.08.2010 в 00:46.
Дима_ вне форума  
 
Непрочитано 21.08.2010, 00:48
#37
vade


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


Спасибо за помощь
vade вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Тройной Explode???

Размещение рекламы