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

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

Замена ряда одних объектов другими

Ответ
Поиск в этой теме
Непрочитано 23.03.2009, 21:44 #1
Замена ряда одних объектов другими
bgrade
 
Регистрация: 27.02.2009
Сообщений: 32

Возможно ли в Автокаде заменить одни одинаковые объекты на другие? Что-то вроде "найти-заменить" в тексте...
Просмотров: 39051
 
Непрочитано 23.03.2009, 21:52
2 | #2
Кулик Алексей aka kpblc
Moderator

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


Возможно. http://www.caduser.ru/forum/index.ph...D=44&TID=21135
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.03.2009, 22:43
#3
bgrade


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


Всё отлично. Классное подспорье. Только я не понял, как сохранить свойства (в частности угол поворота) заменяемых объектов..
кто-нибудь может пошаговую инструкцию дать на простом примере... Как заменить отрезки, расположенные под разными углами, стрелочкой под теми же углами..
Вложения
Тип файла: dwg
DWG 2007
Пример.dwg (61.2 Кб, 5270 просмотров)

Последний раз редактировалось bgrade, 24.03.2009 в 00:15.
bgrade вне форума  
 
Непрочитано 27.05.2009, 23:53
#4
noiseless


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


Немного не мопнял принцип замены вышеназванного лиспа.
Сперва укадываешь объект-заменитель, затем то что нужно заменить.
Например у меня в чертеже много квадратов, я хочу заменить их на круг(прямоугольник, ромб и тп.) Выделяю круг->Enter->выделяю квадрат, происходит замена только выделенного квадрата(тоесть лисп не сканирует чертеж)
Если же я, при выборе заменяемых объектов, укажу рамкой весь чертеж, все объекты чертежа заменяться на круг. Такое и ручками проделать можно...

А вот такую функцию уже кто-нибудь придумал?:
Указывается заменяемый объект, набор объектов, указывается объект-заменитель, происходит сканирование чертежа и замена указанного объекта(набора объектов) на заменитель
noiseless вне форума  
 
Непрочитано 28.05.2009, 00:35
#5
skkkk


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


noiseless, а если выделять нужные объекты Быстрым выбором (_qselect)? Тут об этом подробнее
skkkk вне форума  
 
Непрочитано 28.05.2009, 13:17
#6
VVA

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


noiseless,
Цитата:
Например у меня в чертеже много квадратов, я хочу заменить их на круг(прямоугольник, ромб и тп.) Выделяю круг->Enter->выделяю квадрат, происходит замена только выделенного квадрата(тоесть лисп не сканирует чертеж)
Команда FRTO (последняя версия) поддерживает предварительный выбор.
1. Выбираешь предварительно квадраты ( _Qselect, SelSim или просто рамкой)
2. Вызываешь FRTO
3. Указываешь объект-заменитель
Цитата:
А вот такую функцию уже кто-нибудь придумал?:
Указывается заменяемый объект, набор объектов, указывается объект-заменитель, происходит сканирование чертежа и замена указанного объекта(набора объектов) на заменитель
LISP для поиска групп (наборов) одинаковых примитивов и замена их блоком
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.05.2009, 13:36
#7
Profan


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


Цитата:
Сообщение от noiseless Посмотреть сообщение
Если же я, при выборе заменяемых объектов, укажу рамкой весь чертеж, все объекты чертежа заменяться на круг. Такое и ручками проделать можно...
Интересно, как это ты проделаешь ручками?
Profan вне форума  
 
Непрочитано 06.06.2009, 09:45
#8
Рин

Проектируем
 
Регистрация: 03.04.2008
Sever Kavkaza
Сообщений: 122


В первые столкнулся с командой SelSim очень хорошая примочка, но как можно её использовать для отдельного фрагмента а не для всего файла
Рин вне форума  
 
Непрочитано 06.10.2016, 13:22
#9
vikusiha


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


день добрый. может кто может подсказать. использовалась утилита frto на акаде 2011. прекрасная утилита. и все хорошо работало. пока не установили новый акад. 2015. теперь если берешь более 100 объектов случается фалэррор(((
vikusiha вне форума  
 
Непрочитано 09.10.2016, 13:09
#10
VVA

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


vikusiha, будет лучше, если к вопросу приложишь dwg файл со 101 объектом, вызывающим фатал error
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 02.02.2017, 09:27
#11
ILIYA

Проектант или Вечный ученик
 
Регистрация: 06.05.2011
Сообщений: 802


Господа такая же петрушка, как у vikusiha, с одним объектом работает на ура со множеством просто вылетае на фатал еррор.
Пытаюсь заменить слой "ОТМЕТКИ (ВРЕМ), на слой "66_Точки".
Выбор того что надо заменить работает нормально но, как только выбираю объект которым заменить необходимо, машина зависает а потом вообще вылет.
проверил на маленьком количестве 57 объектов -работает, 447 - ошибка. Всего под 6000 объектов которые надо поменять. Меняемые объекты это блоки, но если их расчленить до примитивов то петрушка тоже повторяется. и такое ощущение что именно количество объектов влияет. попробовал меньше 100 и ровно 100 заменяет чуть больше сотни вылет с ошибкой.

Версия 15 года, 64 разрядная.

Последний раз редактировалось ILIYA, 02.02.2017 в 09:56.
ILIYA вне форума  
 
Непрочитано 02.02.2017, 09:40
#12
Кулик Алексей aka kpblc
Moderator

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


Файл чистил? Проверял на ошибки? И вообще, где образец?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2017, 09:45
#13
ILIYA

Проектант или Вечный ученик
 
Регистрация: 06.05.2011
Сообщений: 802


Чистил, проверял, и вообще вот.
А так это выкинуто из какой-то геодезической программы точного названия не помню, и беда наверно заключается в этом.
Вложения
Тип файла: dwg
DWG 2010
Оригинал (переделать).dwg (4.84 Мб, 32 просмотров)
ILIYA вне форума  
 
Непрочитано 02.02.2017, 14:38
#14
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,374


ILIYA, а Вы пробовали перейти из пространства модели в лист, а потом обратно? Попытайтесь, очень удивитесь.
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 02.02.2017, 14:41
#15
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от ILIYA Посмотреть сообщение
Пытаюсь заменить слой "ОТМЕТКИ (ВРЕМ), на слой "66_Точки".
_.rename не катит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2017, 16:40
#16
ILIYA

Проектант или Вечный ученик
 
Регистрация: 06.05.2011
Сообщений: 802


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
_.rename не катит?
необходимо и объекты поменять на другие в первую очередь, немного коряво отписался в своем сообщении.
ILIYA вне форума  
 
Непрочитано 02.02.2017, 16:53
#17
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,374


ILIYA, в чертеже не просто "косяк", а какой-то "глобальный косяк". При манипуляции перехода (см.#14) все объекты пропадают. Во всяком случае у меня (AutoCAD Civil 3D 2012).
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 02.02.2017, 17:06
1 | #18
Кулик Алексей aka kpblc
Moderator

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


В файле присутствует то ли 2, то ли 3 ординатных размера, привязанных к 0.
P.S. переход модель-лист-модель совсем не обязательно делает _zoom _e
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2017, 17:52
#19
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,374


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
переход модель-лист-модель совсем не обязательно делает _zoom _e
Да, именно это меня и ввергло в ступор. При выполнении Ctrl+A в панели свойств абсолютная пустота.
Миниатюры
Нажмите на изображение для увеличения
Название: Image 5.png
Просмотров: 136
Размер:	67.1 Кб
ID:	182980  
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 02.02.2017, 18:33
#20
ILIYA

Проектант или Вечный ученик
 
Регистрация: 06.05.2011
Сообщений: 802


Цитата:
Сообщение от sertor Посмотреть сообщение
в чертеже не просто "косяк", а какой-то "глобальный косяк". При манипуляции перехода (см.#14) все объекты пропадают. Во всяком случае у меня (AutoCAD Civil 3D 2012).
Хорошо, спасибо за помощь завтра пойду к топографам которые данный план дали, но они его в Civile точно не делали, поэтому думаю им вообще не стоит открывать. А слои переименовываю и меняю знаки для удобства (и заказчик вредный требует так чтоб его в электронной версии все устраивало, дал образцы всего и будь добр сделать как он хочет) для подготовки ППТ.
ILIYA вне форума  
 
Непрочитано 02.02.2017, 18:39
#21
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,374


Цитата:
Сообщение от ILIYA Посмотреть сообщение
Хорошо, спасибо за помощь завтра пойду к топографам
По этому моменту ходить не нужно, разъяснение дано Кулик Алексей aka kpblc.
Цитата:
В файле присутствует то ли 2, то ли 3 ординатных размера, привязанных к 0.
----- добавлено через ~2 мин. -----
Offtop: И в который раз сокрушаюсь, что почему-то недоступна опция редактирования сообщения. Надо бы подкорректировать, но увы...
__________________
Как-то так.
sertor вне форума  
 
Непрочитано 02.02.2017, 22:00
#22
ILIYA

Проектант или Вечный ученик
 
Регистрация: 06.05.2011
Сообщений: 802


Цитата:
Сообщение от sertor Посмотреть сообщение
По этому моменту ходить не нужно, разъяснение дано Кулик Алексей aka kpblc.
Цитата:
В файле присутствует то ли 2, то ли 3 ординатных размера, привязанных к 0.
Мне это не о чем не говорит, я не настолько прошарен как Вы и Кулик Алексей aka kpblc.
ILIYA вне форума  
 
Непрочитано 07.09.2019, 10:57
#23
allar8


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Большое спасибо!
allar8 вне форума  
 
Непрочитано 16.11.2020, 16:06
#24
wepp

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


Может быть кто-то подскажет, что я делаю не так. В коде лиспа FRTO пытаюсь заменить выбор source object с выбора на экране на ввод имени блока (нужно, чтобы лисп работал в скрипте). Я так понимаю, мне нужно поменять способ выбора объекта при назначении переменной extSet.
Было:
Код:
[Выделить все]
   (setq extSet(ssget "_I"))
 (while (not (setq toObj(entsel "\n+++ Select source object -> ")))
   (princ "\nSource objects isn't selected!"))
  (if(not extSet)
    (progn
      (princ "\n+++ Select destination objects and press Enter <- ")
      (setq extSet(ssget "_:L")))); end if
  (if(not extSet)(princ "\nDestination objects isn't selected!")); end if
  (if (and extSet toObj)
Стало:
Код:
[Выделить все]
 (setq nb (getstring T "\nВведите имя блока: "))
	(setq extSet (ssget "_X" '((0 . "INSERT")(2 . nb))))
	   (while (not (setq toObj(entsel "\n+++ Select source object -> ")))
   (princ "\nSource objects isn't selected!"))
  (if(not extSet)
    (progn
      (princ "\n+++ Select destination objects and press Enter <- ")
      (setq extSet(ssget "_:L")))); end if
  (if(not extSet)(princ "\nDestination objects isn't selected!")); end if
  (if (and extSet toObj)

Стало изм.1:
Код:
[Выделить все]
 (setq extSet (getstring T "\nВведите имя блока: "))
		   (while (not (setq toObj(entsel "\n+++ Select source object -> ")))
   (princ "\nSource objects isn't selected!"))
  (if(not extSet)
    (progn
      (princ "\n+++ Select destination objects and press Enter <- ")
      (setq extSet(ssget "_:L")))); end if
  (if(not extSet)(princ "\nDestination objects isn't selected!")); end if
  (if (and extSet toObj)
При таком раскладе получаю: неверный тип аргумента: VLA-OBJECT nil

Может быть ошибка где-то в другом месте, вот код целиком (от изначального ещё сделал корректировки):
Offtop:
Код:
[Выделить все]
 ;;; http://www.caduser.ru/forum/index.php?PAGE_NAME=message&FID=44&TID=21135&MID=118777#message118777
;;; http://www.cadtutor.net/forum/showthread.php?p=340865#post340865
;;;Программа меняет набор примитивов на выбранный примитив.
;;;Примеры применения:
;;;Замена одних блоков другими.
;;;Замена точек блоками или окружностями.
;;;Замена одних надписей другими.
;;;
;;;УДАЛЯЕТ исходные примитивы без запроса
;;;
;;;Сначала надо выбрать образец, затем указать заменяемые объекты. Вставка производится в центр ограничевающего
;;;(габаритного) прямоугольника старых объектов. Новые объекты вставляются в слои которые к которым пренадлежали старые объекты.
;;;Поддерживается предварительный выбор.

;;; Command changes the set of primitives for the selected primitive. 
;;; Examples: 
;;; Replacement of some other blocks. 
;;; Replacement blocks or dots circles. 
;;; Replacement of some other titles. 
;;; 
;;; First you need to select a sample, and then specify replaceable objects. Box is in the center is restricted (bounding) rectangle of old objects. New objects are inserted into the layers that Belonged to which the old objects. 
;;; Supports pre-selection.
(defun c:frto(/ ACTDOC COPOBJ ERRCOUNT EXTLST
       EXTSET FROMCEN LAYCOL MAXPT CURLAY
       MINPT OBJLAY OKCOUNT OLAYST
       SCLAY TOCEN TOOBJ VLAOBJ *ERROR* ASK)
  (vl-load-com)
  (defun *ERROR*(msg)
    (if olaySt (vla-put-Lock objLay olaySt)); end if
    (vla-EndUndoMark actDoc)(princ)); end of *ERROR*

  (defun GetBoundingCenter(vlaObj / blPt trPt cnPt)
  (vla-GetBoundingBox vlaObj 'minPt 'maxPt)
      (setq blPt(vlax-safearray->list minPt)
      trPt(vlax-safearray->list maxPt)
      cnPt(vlax-3D-point
      (list
            (+(car blPt)(/(-(car trPt)(car blPt))2))
            (+(cadr blPt)(/(-(cadr trPt)(cadr blPt))2))
            (+(caddr blPt)(/(-(caddr trPt)(caddr blPt))2)) ;_<<< Заменили
            )))); end of GetBoundingCenter
	(setq nb (getstring T "\nВведите имя блока: "))
	(setq extSet (ssget "_X" '((0 . "INSERT")(2 . nb))))
	   (while (not (setq toObj(entsel "\n+++ Select source object -> ")))
   (princ "\nSource objects isn't selected!"))
  (if(not extSet)
    (progn
      (princ "\n+++ Select destination objects and press Enter <- ")
      (setq extSet(ssget "_:L")))); end if
  (if(not extSet)(princ "\nDestination objects isn't selected!")); end if
  (if (and extSet toObj)
    (progn
       (setq actDoc (vla-get-ActiveDocument(vlax-get-Acad-object))
      layCol (vla-get-Layers actDoc)
      extLst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp
                     (mapcar 'cadr(ssnamex extSet))))
      vlaObj (vlax-ename->vla-object(car toObj))
      objLay (vla-Item layCol (vla-get-Layer (vlax-ename->vla-object(car toObj))))
      olaySt (vla-get-Lock objLay)
     fromCen (GetBoundingCenter vlaObj)
      errCount 0  okCount 0); end setq
      (vla-StartUndoMark actDoc)
      (foreach obj extLst
        (setq toCen (GetBoundingCenter obj)
              scLay (vla-Item layCol (vla-get-Layer obj)));end setq
  (if(/= :vlax-true(vla-get-Lock scLay))
    (progn
    (setq curLay(vla-get-Layer obj))
    (vla-put-Lock objLay :vlax-false)
    (setq copObj(vla-copy vlaObj))
    (vla-Move copObj fromCen toCen)
    (_kpblc-ent-properties-copy obj copObj)
    (vla-put-Layer copObj curLay)
    (vla-put-Lock objLay olaySt)
    (vla-Delete obj)
    (setq okCount(1+ okCount))
    ); end progn
    (setq errCount(1+ errCount))
    ); end if
  ); end foreach
      (princ (strcat "\n" (itoa okCount) " were changed. "
    (if(/= 0 errCount)(strcat (itoa errCount) " were on locked layer! ")  "")))
      (vla-EndUndoMark actDoc)); end progn
    (princ "\nSource object isn't selected! ")
    ); end if
  (princ)); end of c:frto
;|=============================================================================
*    Функция копирования настроек примитивов
*    Параметры вызова:
*   source   примитив-источник (vla)
*   dest   примитив-получатель (vla)
*    Выполняется копирование всех настроек (кроме точек, координат и т.п.), если
* это возможно. Копирование радиусов дуг и окружностей не выполняется.
*    Контроль и преобразование параметров не выполняется.
*    Примеры вызова:
(_kpblc-ent-properties-copy (vlax-ename->vla-object (car (entsel))) (vlax-ename->vla-object (car (entsel))))
*    URL http://www.arcada.com.ua/forum/viewtopic.php?t=504&start=15
=============================================================================|;
(defun _kpblc-ent-properties-copy (source dest)
 (foreach prop   '("Angle" "Layer" "Linetype" "LinetypeScale" "Lineweight"
        "Normal" "PlotStyleName" "Thickness" "Color" "Visible"
        "Closed" ;|"ConstantWidth" ; не копируется|; "Elevation" "LinetypeGeneration"
        "LinetypeScale" ;|"StartAngle" "EndAngle" ; не копируются|; "Alignment"
        "Backward" "Height" "ObliqueAngle" "Rotation" "ScaleFactor" "StyleName"
        "TextGenerationFlag"  "TextHeight"  "UpsideDown"  "AttachmentPoint" "BackgroundFill"
        "DrawingDirection"  "LineSpacingDistance" "LineSpacingFactor" "LineSpacingStyle"  "Width"
        "XScaleFactor" "YScaleFactor" "ZScaleFactor" ;| Viewport|; "ArcSmoothness" "CustomScale"
        "Direction" "DisplayLocked"  "GridOn" "LensLength" "ModelView" "ShadePlot" "SheetView"
        "SnapBasePoint" "SnapOn" "SnapRotationAngle" "StandardScale" "Target"  "TwistAngle"
        "UCSIconAtOrigin"   "UCSIconOn"     "UCSPerViewport" "ViewportOn")
 (if (and (vlax-property-available-p source prop)(vlax-property-available-p dest prop t))
  (_kpblc-error-catch
    '(lambda ()(vlax-put-property dest prop (vlax-get-property source prop))) nil)))) ;_ end of defun
;|=============================================================================
*    Оболочка отлова ошибок.
*    Параметры вызова:
*   protected-function   — "защищаемая" функция
*   on-error-function   — функция, выполняемая в случае ошибки
*    URL http://www.arcada.com.ua/forum/viewtopic.php?t=504&start=15
=============================================================================|;
(defun _kpblc-error-catch
       (protected-function on-error-function / catch_error_result)
  (setq catch_error_result (vl-catch-all-apply protected-function))
  (if (and (vl-catch-all-error-p catch_error_result) on-error-function)
    (apply on-error-function
      (list (vl-catch-all-error-message catch_error_result)))
    catch_error_result)) ;_ end of defun
(princ "\nType FRTO in command line")

Последний раз редактировалось wepp, 16.11.2020 в 16:32. Причина: поменял код
wepp вне форума  
 
Непрочитано 11.12.2020, 14:15
#25
Shadow_elf1979


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


Скажите, а есть что вроде frto, но работающее на автокаде mep '19 и более поздних? Все варианты, которые я нашел не фурычат...
Shadow_elf1979 вне форума  
 
Непрочитано 13.12.2020, 21:21
#26
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Скажите, а есть что вроде frto, но работающее на автокаде mep '19 и более поздних? Все варианты, которые я нашел не фурычат...
https://www.caduser.ru/forum/post118801.html#p118801
Что именно, как не "фурычат"?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 14.12.2020, 14:39
#27
Shadow_elf1979


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Что именно, как не "фурычат"?
Никак не фурычит. Т.е. этапы выделения объектов и заменяемых и назначения он проводит, но после этого ничего не происходит. Даже сообщения об ошибке нет. Если что - стоит AutoCAD MEP 2019.

Цитата:
"Command: FRTO
+++ Select distination objects and press Enter <-
Select objects: Regenerating model.
Specify opposite corner: 6 found
Select objects:
+++ Select source object ->
Command:"
Shadow_elf1979 вне форума  
 
Непрочитано 14.12.2020, 15:13
#28
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Т.е. этапы выделения объектов и заменяемых и назначения он проводит, но после этого ничего не происходит.
Т.е. фурычит, но без результата.
Видимо, у Вас какое-то исключение. Без модельного примера данных не обойтись. Давайте dwg.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 14.12.2020, 15:18
#29
Shadow_elf1979


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Т.е. фурычит, но без результата.
Видимо, у Вас какое-то исключение. Без модельного примера данных не обойтись. Давайте dwg.

Файл, как видите, самый простой, на блоках пока не обкатывал.
Вложения
Тип файла: dwg
DWG 2013
Drawing1.dwg (693.1 Кб, 5 просмотров)
Shadow_elf1979 вне форума  
 
Непрочитано 14.12.2020, 16:41
#30
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Файл, как видите, самый простой
Без проблем заменил там прямоугольники на окружность:
Цитата:
Command:
Command: FRTO
+++ Select source object ->
+++ Select destination objects and press Enter <-
Select objects: Specify opposite corner: 6 found
Select objects:
Remove destination object [Yes/No] <No>:Y
6 were changed.
Command:
Заменял приложенным лиспом. Не знаю, откуда, какая версия, но работает.
Вложения
Тип файла: lsp frto.lsp (6.4 Кб, 44 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 14.12.2020, 16:52
#31
Shadow_elf1979


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Без проблем заменил там прямоугольники на окружность:

Заменял приложенным лиспом. Не знаю, откуда, какая версия, но работает.
Не получилось пока... В чем может быть проблема?

Цитата:
Command: FRTO
+++ Select source object ->
+++ Select destination objects and press Enter <-
Select objects: Specify opposite corner: 6 found
Select objects:
Remove destination object [Yes/No] <No>:n
no function definition: VLA-ENDUNDOMARK
Command:

Последний раз редактировалось Shadow_elf1979, 14.12.2020 в 17:20.
Shadow_elf1979 вне форума  
 
Непрочитано 14.12.2020, 17:57
1 | #32
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Remove destination object [Yes/No] <No>:n
Все-таки с моей версией лиспа у Вас хотя бы эта строка появилась.
Попробуйте ответить не "No", а "Yes", как я. Хотя, у меня и с "No" работает.
Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
no function definition: VLA-ENDUNDOMARK
Видимо, ответ могут дать только программисты...

Можно, конечно, тупо попробовать выйти из Автокада, и зайти снова.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 14.12.2020, 18:29
#33
Shadow_elf1979


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Попробуйте ответить не "No", а "Yes", как я. Хотя, у меня и с "No" работает.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно, конечно, тупо попробовать выйти из Автокада, и зайти снова.
Пробовал. Результат неизменен ((. В любом случае большое спасибо за помощь.

Лично я грешу то ли на 19 год издания, то ли на MEP - возможно что-то из этого мешает работать с лиспом старых образцов. А если откомпилировать этот лисп в arx на рабочем автокаде?
Shadow_elf1979 вне форума  
 
Непрочитано 15.12.2020, 11:53
#34
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Лично я грешу то ли на 19 год издания, то ли на MEP...
Autocad MEP? Мне не послышалось?
А что на что поменять хотите? В нём большие возможности в этом плане!
VitalyAF вне форума  
 
Непрочитано 15.12.2020, 12:38
#35
Shadow_elf1979


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


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
Autocad MEP? Мне не послышалось?
А что на что поменять хотите? В нём большие возможности в этом плане!
Не послышалось ))
Конкретно хотел поменять блоки, импортированные из DIALux 4.13 сторонним пользователем на собственные блоки с параметрами. 1 к одному, без изысков.

Если более широко - есть расстановка светильников полученная импортом из DIALux. Я хочу привести ее в соответствие с ГОСТ21.608, используя в качестве УГО собственные блоки с параметром "мощность". Собственно средства MEP как САПР по инженерке я пока не использую, поскольку этот файл мне еще передавать человеку, который MEP не использует.
Shadow_elf1979 вне форума  
 
Непрочитано 15.12.2020, 13:11
2 | #36
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,458


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Конкретно хотел поменять блоки, импортированные из DIALux 4.13 сторонним пользователем на собственные блоки с параметрами. 1 к одному, без изысков.
Когда-то для собственных нужд написал простенький лиспик. Может, сгодится?

Код:
[Выделить все]
 ;-------------------------------------------------------
;Программа для замены блока другим по выбору на чертеже
;Работает и с прочими объектами
;-------------------------------------------------------
(defun c:change_objekt ()
	(setq v_repl_1 (getstring "\nУдалить объекты - Enter, оставить - 1"))
	(setq pr_1 (car (entsel "\n Выберите исходный объект")))
	(setq pr_1_ (cdr (assoc '0 (entget pr_1))))
	(setq t_2 (cdr (assoc '10 (entget pr_1))))
	(prompt "\n Выберите объекты, которые планируете заменить")
	(setq nab (ssget))
	(setq kol (sslength nab))
	(setq nab1 (ssadd))
	(setq n -1)
	(repeat kol
		(setq n (+ n 1))
		(setq pr_i (ssname nab n))
		(setq t_1 (cdr (assoc '10 (entget pr_i))))
			(setq lr_1 (assoc '8 (entget pr_i)))
		(setq ang_1 (assoc '50 (entget pr_i)))
		(command "_copy" pr_1 "" t_2 t_1)
		(setq pr_ (entget (entlast)))
			(setq lr_ (assoc '8 pr_))
		(setq ang_ (assoc '50 pr_))
			(setq pr_ (subst lr_1 lr_ pr_))
			(entmod pr_)
		(setq pr_ (subst ang_1 ang_ pr_))
		(entmod pr_)
		(ssadd pr_i nab1)
	)
	(if (= v_repl_1 "") (command "_erase" nab1 ""))
)
Oleg T вне форума  
 
Непрочитано 15.12.2020, 13:45
#37
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Конкретно хотел поменять блоки, импортированные из DIALux 4.13 сторонним пользователем на собственные блоки с параметрами. 1 к одному, без изысков.
собственные блоки - "Блоки" Autocad?
VitalyAF вне форума  
 
Непрочитано 15.12.2020, 13:52
#38
Shadow_elf1979


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


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
собственные блоки - "Блоки" Autocad?
Да. Своими руками. Пара примитивов и параметр.

----- добавлено через ~11 мин. -----


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Когда-то для собственных нужд написал простенький лиспик. Может, сгодится?
Работает! Спасибо!
Shadow_elf1979 вне форума  
 
Непрочитано 15.12.2020, 14:19
#39
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Shadow_elf1979 Посмотреть сообщение
Да. Своими руками. Пара примитивов и параметр.
Т.е. один блок заменить на другой нужен лиспик...!?
И MEP вы используете как Autocad...
А вообще из Диалюкс импортируется в MEP сразу в устройства Device со свойствами, к-рые сразу можно включать в цепи MEP, причём их можно "включить", отрендерить, получить картинку и таблицу...

Последний раз редактировалось VitalyAF, 15.12.2020 в 14:32.
VitalyAF вне форума  
 
Непрочитано 15.12.2020, 14:32
#40
Shadow_elf1979


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


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
Т.е. один блок заменить на другой нужен лиспик...!?
Т.е. есть туева хуча (около 2000) блоков с разными именами (специфика DIALux), не подающиеся поиску (имя типа "*U997", где "*" - это просто символ), ни какой-либо корректировке. Так что replace тут ни разу не канает. И надо их все на единообразный блок.
Shadow_elf1979 вне форума  
 
Непрочитано 15.12.2020, 14:36
#41
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Требуйте следующий раз от стороннего пользователя STF файл, который как раз для обмена м-ду Dialux и MEP, см выше.
VitalyAF вне форума  
 
Непрочитано 16.12.2020, 01:36
#42
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Когда-то для собственных нужд написал простенький лиспик. Может, сгодится?
Может быть выложить его в раздел готовых программ?
Пока заметил, что заменяет на блок не все указанные элементы типа полилиний, окружностей, а только один из выбранных.
Блоки заменяет все. И явный плюс по сравнению с FRTO, что заменяет в точках вставки.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 16.12.2020, 08:14
#43
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,458


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Может быть выложить его в раздел готовых программ?
Пока заметил, что заменяет на блок не все указанные элементы типа полилиний, окружностей, а только один из выбранных.
Блоки заменяет все. И явный плюс по сравнению с FRTO, что заменяет в точках вставки.
Может, выложу. Писал для блоков, на другие объекты внимания не обращал, для них нуждается в доработке.
А что касаемо точки вставки, главное, чтобы она не находилась в парсеках от примитивов блока, бывает и такое )).
Oleg T вне форума  
 
Непрочитано 16.12.2020, 12:19
#44
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


а если усложнить задачу, и заменять выбранные примитивы на несколько заменяющих…
Вложения
Тип файла: rar replace_selected.fas.rar (6.6 Кб, 32 просмотров)

Последний раз редактировалось koMon, 22.12.2020 в 10:56.
koMon вне форума  
 
Непрочитано 16.12.2020, 15:03
#45
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от koMon Посмотреть сообщение
а если усложнить задачу, и заменять выбранные примитивы на несколько заменяющих…
Любопытно...
1. Хорошо бы подсвечивать выбранные заменяемые элементы.
2. Хорошо бы предусмотреть и вариант сохранения заменяемых элементов.
3. Почему-то расстояние между заменяющими элементами уменьшилось вдвое.
Миниатюры
Нажмите на изображение для увеличения
Название: до_замены_прямоугольника.png
Просмотров: 22
Размер:	22.3 Кб
ID:	232727  Нажмите на изображение для увеличения
Название: после_замены_прямоугольника.png
Просмотров: 22
Размер:	12.1 Кб
ID:	232728  
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 17.12.2020, 12:25
#46
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
1. Хорошо бы подсвечивать выбранные заменяемые элементы.
ручками?
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
3. Почему-то расстояние между заменяющими элементами уменьшилось вдвое.
эмм…, противоречит задуманному алгоритму замены. но бывает же всякое. надо проверить.
koMon вне форума  
 
Непрочитано 17.12.2020, 13:36
#47
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от koMon Посмотреть сообщение
ручками?
Можно так, как "Эффект просмотра выбранных объектов".
Цитата:
Сообщение от koMon Посмотреть сообщение
противоречит задуманному алгоритму замены.
Да, противоречит ожидаемому пользователем.
Миниатюры
Нажмите на изображение для увеличения
Название: Выбранные_объекты.png
Просмотров: 54
Размер:	60.5 Кб
ID:	232756  
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 22.12.2020, 11:01
1 | #48
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно так, как "Эффект просмотра выбранных объектов".
это же системная настройка. она распространяется на множественный выбор примитивов в пределах одной функции.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Да, противоречит ожидаемому пользователем.
да уж)

апдейтнул 44
koMon вне форума  
 
Непрочитано 22.12.2020, 15:07
#49
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от koMon Посмотреть сообщение
апдейтнул 44
Вроде бы теперь без вопросов.
(Это сейчас нет реальной задачи ).

Решил проверить, как будет с 3Д объектами (3Д полилиниями, солидами). Заменяет, но без учета Z и объемов, т.е. заменяет 3д полилинии на высоте 0 и солиды относительно их оснований.

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
И явный плюс по сравнению с FRTO, что заменяет в точках вставки.
Я бы сделал замену блоков и на блоки относительно их точек вставки.
Я понимаю, что мнения разные, но блоки, несмотря ни на что, все-таки точечные объекты, и их положение определяется именно точкой вставки...
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 22.12.2020 в 17:52.
АлексЮстасу вне форума  
 
Непрочитано 23.12.2020, 16:49
#50
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
как будет с 3Д объектами
2d (плоская) замена и планировалась. более того, заменяющие примитивы наследуют свойства заменяемых. и если например заменяемый примитив имеет уровень 0 или вообще не имеет, а заменяющий наоборот имеет, то в результате заменяющий примитив потеряет (обнулит) свой уровень. если проигнорировать наследование свойств (или усложнить механизм наследования), тогда все или отсутствующие свойства заменяющего примитива можно сохранить. в случае с 3d солидами, видимо нужно производить замену по центроидам.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Я бы сделал замену блоков и на блоки относительно их точек вставки.
если заменяющий примитив - один блок, то наверное да, а если их несколько и нужно сохранить их взаимное расположение, то тогда этот вариант не очень подойдёт.
koMon вне форума  
 
Непрочитано 23.12.2020, 17:07
#51
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от koMon Посмотреть сообщение
если заменяющий примитив - один блок, то наверное да, а если их несколько и нужно сохранить их взаимное расположение, то тогда этот вариант не очень подойдёт.
Так и взаимное расположение блоков или блоков относительно элементов других типов определяется же точками вставки блоков.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Замена ряда одних объектов другими

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FILTER / фильтр BM60 Справочник команд 0 08.07.2008 15:35