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

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

Тройной Explode???

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

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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от 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,996


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


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


Вот такая программа у меня сработала (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
С.-Петербург
Сообщений: 40,450


Код не обрабатывает прокси объекты. Из обработки исключаются внешние ссылки.
Код:
[Выделить все]
(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,626


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,996


Цитата:
Сообщение от 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 Кб, 915 просмотров)
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 Кб, 915 просмотров)
vade вне форума  
 
Непрочитано 20.08.2010, 23:54
#33
Дима_

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


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

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


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,839


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

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


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


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