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

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

ObjectARX. Расчленение и удаление proxy-объектов

Ответ
Поиск в этой теме
Непрочитано 25.10.2007, 12:08 5 |
ObjectARX. Расчленение и удаление proxy-объектов
Profan
 
Москва
Регистрация: 25.12.2005
Сообщений: 13,627

Оригинал темы находится на форуме caduser.ru.

Автор программы Александр Ривилис.

Команда EXPLODEALLPROXY:
Разбивает вообще все proxy-объекты, неважно, где они лежат.
Команда REMOVEALLPROXY:
Удаляет все proxy-объекты и proxy-примитивы. Ее удобно выполнять
после EXPLODEALLPROXY — тогда она удалит все то, что не удалось расчленить.
================================================================================
Для вызова из VisualLisp:
(ExplodeProxyEntity ent)
ent — имя примитива вида <entity name: 321456465465465>. Расчленяет только этот
примитив, даже если он входит в блок.
Например: (explodeproxyentity (car (nentsel)))
(ExplodeAllProxyInBlock "имя блока")
Этой функции можно передавать не только имя блока, но и имя примитива внутри блока.
Например: (explodeallproxyinblock (car (nentsel)))
расчленит все прокси в блоке, на который указали.
Функции возвращают следующие значения:
0 success — успешное завершение
-1 parmerr — ошибка передачи параметра
-2 openerr — ошибка открытия proxy-объекта
-3 explerr — ошибка разбития proxy
-4 appenderr — ошибка добавления "состава" proxy в файл dwg.
-5 eraseerr — ошибка удаления исходного объекта.
Во всех случаях, кроме success и appenderr, требуется провести _AUDIT для файла.
arx-файлы для AutoCAD 2004...2021 находятся здесь: https://adn-cis.org/assets/files
Важно! Перед применением обязательно читайте README.TXT - он существует не просто так и несет в себе необходимую информацию!

Последний раз редактировалось Кулик Алексей aka kpblc, 20.11.2020 в 19:42.
Просмотров: 558432
 
Непрочитано 15.03.2018, 15:15
#201
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


sklart,
Здесь есть достаточно исходников для того, чтобы попытаться воспроизвести это в BricsCAD, если конечно его API позволит это сделать: http://adn-cis.org/forum/index.php?topic=1060.0
Александр Ривилис вне форума  
 
Непрочитано 15.03.2018, 15:18
#202
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
В ходе тестирования выяснилось, что команда rmScales аварийно завершает работу BricsCAD.
http://bushman-andrey.blogspot.ru/20...eallproxy.html
trir вне форума  
 
Непрочитано 08.05.2018, 17:48
#203
Кулик Алексей aka kpblc
Moderator

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


Столкнулся с очень странной проблемой по программной загрузке ExplodeAllProxy.
  1. Скачал соответствующий архив
  2. Снял признак "заблокированности"
  3. Распаковал

Используется ACAD2016x64Eng , DEMANDLOAD = 2. Программно (лиспом) копирую файл в %appdata%\<...>\arx\2016x64\ExplodeProxy2015x64.arx
А вот теперь самое интересное - если я выполняю команду _.appload и указываю на этот скопированный файл, то все хорошо, arx загружается.
Если же в ком.строку ввести
Код:
[Выделить все]
(arxload "ПолныйПутьДоArx")
, как получаю сообщение:
Код:
[Выделить все]
; error: ARXLOAD failed
Где я ошибаюсь и что я неправильно делаю?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.05.2018, 18:23
#204
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Где я ошибаюсь и что я неправильно делаю?
Ну я бы заподозрил, что путь неправильный.

Последний раз редактировалось Александр Ривилис, 08.05.2018 в 18:31.
Александр Ривилис вне форума  
 
Непрочитано 09.05.2018, 00:26
#205
Кулик Алексей aka kpblc
Moderator

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


Да как бы я его программно получаю. При ручном варианте, естественно, заменяю двойные слеши на одинарные.
Ок, приведу код:
Код:
[Выделить все]
 (defun test (/ souce dest copy)
  (if (and (setq source (getfiled "arx" "" "arx" 4))
           (or (findfile
                 (setq dest (strcat (vl-string-right-trim "\\" (getenv "appdata"))
                                    "\\"
                                    (strcat (itoa (atoi (vl-string-trim "VISUALP " (strcase (ver)))))
                                            "x"
                                            (if (and (getvar "platform") (wcmatch (strcase (getvar "platform")) "*X64*"))
                                              "64"
                                              "32"
                                              ) ;_ end of if
                                            ) ;_ end of strcat
                                    ) ;_ end of strcat
                       ) ;_ end of setq
                 ) ;_ end of findfile
               (vl-mkdir dest)
               ) ;_ end of or
           ) ;_ end of and
    (progn (vl-file-copy source
                         (setq copy (strcat (vl-string-right-trim "\\" dest) "\\" (vl-filename-base source) (vl-filename-extension source)))
                         ) ;_ end of vl-file-copy
           (if (findfile copy)
             (arxload copy)
             ) ;_ end of if
           ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 09.05.2018 в 22:59.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.05.2018, 00:46
#206
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Кулик Алексей aka kpblc,
Код:
[Выделить все]
Command: (getenv"appdata") "C:\\Users\\Rivilis-AN\\AppData\\Roaming"
Command: APPLOAD 22.lsp successfully loaded.
Command:
Command:
Command: (test) "C:\\Users\\Rivilis-AN\\AppData\\Roaming\\2016x64ExplodeProxy2015x64.arx"
Но что-то путь мне не нравится. Каталог создался: C:\Users\Rivilis-AN\AppData\Roaming\2016x64
Но файл не в нём, а C:\Users\Rivilis-AN\AppData\Roaming\2016x64ExplodeProxy2015x64.arx
Александр Ривилис вне форума  
 
Непрочитано 09.05.2018, 22:30
#207
Кулик Алексей aka kpblc
Moderator

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


Сейчас, посмотрю. Я код писал, вырезаю куски из рабочего, и не проверил.

----- добавлено через ~51 мин. -----
Код подправил. Нашел источник проблемы - он был в моей доп.функции копирования файлов. Я, чтобы не увеличивать объем кода, здесь ее исключил. Так вот, при использовании vl-file-copy все срабатывает корректно. При использовании FileSystemObject почему-то получается ошибка. Как только исключил свою обработку - все заработало вполне нормально.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.05.2018, 10:20
#208
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Так вот, при использовании vl-file-copy все срабатывает корректно. При использовании FileSystemObject почему-то получается ошибка.
Возможно не происходит своевременное закрытие файла (или сброс буферов ввода/вывода).
Александр Ривилис вне форума  
 
Непрочитано 07.06.2018, 12:17 Проблема с удалением объектов АРХ
#209
tubus1975


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


Здравствуйте.
Имеется следующая проблема
Есть файл dwg с proxy объектами. Провожу чистку командами EXPLODEALLPROXY REMOVEALLPROXY _AUDIT. Сохраняю в формате 2000 (у меня автокад 2009) Вместо 172 Мб, файл становится 0,9 Мб. Всё замечательно. Отдаю инженеру в работу (у него стоит автокад LT 2007), инженер открывает, всё замечательно работает, но. Как только сохраняет файл - его емкость снова становится 172-173 Мб, файл начинает тормозить из за размера. И снова, я открываю в своём автокаде 2009 , чищу, файл снижается до 0,9-1,0 Мб, . Но при открытии на другом компьютере и пересохранении, файл нагружается объектамиАРХ.. Может дело в настройках автокадов на сторонних компьютерах?
tubus1975 вне форума  
 
Непрочитано 08.06.2018, 13:06
#210
wepp

Инжиниринг
 
Регистрация: 16.09.2011
Тюмень
Сообщений: 224


Цитата:
Сообщение от tubus1975 Посмотреть сообщение
Есть файл dwg с proxy объектами
а файл-то где?
wepp вне форума  
 
Непрочитано 16.08.2018, 05:21
#211
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


придумал костыль для загрузки arx, работает при условии, что путь к файлам прописан
Код:
[Выделить все]
 
(defun C:loadExpProxy nil
  ((lambda (y b)
     (if (and y b)
	 (vl-catch-all-apply
	   'arxload
	   (list (strcat "ExplodeProxy"
			 y
			 (if (> (atof y) 2007)
			   b
			   ""
			 ) ;_ end of if
		 ) ;_ end of strcat
	   ) ;_ end of list
	 ) ;_ end of vl-catch-all-apply
     ) ;_ end of if
   ) ;_ end of lambda
    (cdr (assoc	(atof (getvar 'ACADVER))
		'((23.0 . "2019")
		  (22.0 . "2018")
		  (21.0 . "2017")
		  (20.1 . "2015")
		  (20.0 . "2015")
		  (19.1 . "2013")
		  (19.0 . "2013")
		  (18.2 . "2010")
		  (18.1 . "2010")
		  (18.0 . "2010")
		  (17.2 . "2009")
		  (17.1 . "2007")
		  (17.0 . "2007")
		  (16.2 . "2006")
		 )
	 ) ;_ end of assoc
    ) ;_ end of cdr
    (if	(WCMATCH (getvar 'PLATFORM) "*x64*")
      "x64"
      "x32"
    ) ;_ end of if
  )
  (princ)
) ;_ end of defun

Последний раз редактировалось G-RAV, 16.08.2018 в 08:47.
G-RAV вне форума  
 
Непрочитано 16.08.2018, 08:29
#212
VVA

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


G-RAV, А в чем проблема грузить arx?
Мой вариант. Он более универсален. Не привязан к конкретным версиям Автокада.
Файл должен называется ExplodeProxyГГГГxRR, где ГГГГ - год, RR - разрядность
Загружае любые arx, название файлов которых соответствует вышеприведенным правилам
Цитата:
ExplodeProxy2009x32.arx
ExplodeProxy2009x64.arx
ExplodeProxy2010x32.arx
ExplodeProxy2010x64.arx
ExplodeProxy2013x32.arx
ExplodeProxy2013x64.arx
ExplodeProxy2015x32.arx
ExplodeProxy2015x64.arx
ExplodeProxy2017x32.arx
ExplodeProxy2017x64.arx
ExplodeProxy2018x32.arx
ExplodeProxy2018x64.arx
Ну и код
Код:
[Выделить все]
(defun mip_load_arx ( name aver)
  ;;; Загрузка arx модулей по Name для Автокада версии AVer
  ;;; Arx модуль должен иметь имя NameAVERx64 или NameAVERx32
  ;;;Например ExplodeProxy2009x64.arx или ExplodeProxy2009x32.arx
  ;;; Возвращает t модуль найден и загружен или nil
  ;;; Вызов
  ;;; (mip_load_arx "ExplodeProxy" (whatAcadVer)) 

  (if (Acad64Bit-version)
    (setq name (strcat name (VL-PRINC-TO-STRING aver) "x64.arx"))
    (setq name (strcat name (VL-PRINC-TO-STRING aver) "x32.arx"))
    )
  (arxload name nil)
  )
(defun Acad64Bit-version ()
;;;http://forum.dwg.ru/showthread.php?t=31568
;;; Return T if Acad x64 or nil if Acad x32  
;;;Функция возвращает T если Автокад 64 разрядный
;;;Функция возвращает NIL если Автокад 32 разрядный
  (vl-load-com)
  (> (strlen (vl-prin1-to-string (vlax-get-acad-object))) 40)
)
(defun whatAcadVer ( / Aver)
;;;Ф-ция возвращает версию Автокада ввиде 2004 2005 2006 2007 2008 2009
;;;Get from Elpanov Evgeniy http://www.theswamp.org/index.php?topic=36606.msg416187
  (atoi (substr (ver) 13))
 )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 16.08.2018 в 08:37.
VVA вне форума  
 
Непрочитано 16.08.2018, 08:46
#213
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


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

Последний раз редактировалось G-RAV, 16.08.2018 в 08:58.
G-RAV вне форума  
 
Непрочитано 16.08.2018, 09:10
#214
Кулик Алексей aka kpblc
Moderator

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


VVA, а твой код загрузит arx для ACAD2016? Я почему-то в этом не уверен...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.08.2018, 10:56
#215
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Код:
[Выделить все]
 (defun getver (y)
  (if(> y 2005)
    (if	(member	y
		'(2006 2007 2009 2010 2013 2015 2017 2018 2019)
	) ;_ end of member
      y
      (getver (1- y))
    ) ;_ end of if
  ) ;_ end of if
) ;_ end of defun

Последний раз редактировалось G-RAV, 16.08.2018 в 16:36.
G-RAV вне форума  
 
Непрочитано 16.08.2018, 12:56
#216
frostmourn


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


G-RAV, главное, не пытаться это использовать в каком-нибудь 2000-м акаде.
frostmourn вне форума  
 
Непрочитано 16.08.2018, 13:04
#217
VVA

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


Кулик Алексей aka kpblc, Если arx написан для нескольких версий, то нужно сделать копии файла для каждой
Цитата:
ExplodeProxy2015x32.arx
ExplodeProxy2015x64.arx
ExplodeProxy2016x32.arx
ExplodeProxy2016x64.arx
ExplodeProxy2017x32.arx
ExplodeProxy2017x64.arx
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.08.2018, 13:29
#218
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от frostmourn Посмотреть сообщение
G-RAV, главное, не пытаться это использовать в каком-нибудь 2000-м акаде.
это да! долго придется ждать...
надо условие добавлять типа (if(>y 2006..
поправил

Последний раз редактировалось G-RAV, 16.08.2018 в 16:38.
G-RAV вне форума  
 
Непрочитано 16.08.2018, 16:36
#219
frostmourn


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


Offtop: Уверен, даже во времена 2000-го долго ждать бы не пришлось
frostmourn вне форума  
 
Непрочитано 24.08.2018, 14:00 Помогите расчленить Proxy-объекты
#220
Павел Константинов


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


Друзья! Помогите пожалуйста расчленить прокси-объекты в файле...
Заранее спасибо!
Вложения
Тип файла: dwg
DWG 2010
Добровольческая,29.dwg (940.9 Кб, 38 просмотров)
Павел Константинов вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > ObjectARX. Расчленение и удаление proxy-объектов

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление объектов из пространства листа paradoxvaha Программирование 9 24.08.2007 14:25
Удаление объектов, сделанных недоступным ObjectARX-прил. жертва нашизма AutoCAD 11 25.07.2006 09:37
Удаление дублируюшихся объектов Арлинг AutoCAD 2 25.04.2004 13:56