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

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

Замена примитивов другими примитивами, в определенной последовательности

Ответ
Поиск в этой теме
Непрочитано 09.06.2014, 18:24 #1
Замена примитивов другими примитивами, в определенной последовательности
Konstruktiv54
 
Новосибирск
Регистрация: 31.01.2007
Сообщений: 1,040

Вот есть отличный макрос, за авторством {Smirnoff}.
Возможно его доработать таким образом, что бы новые элементы создавались в определённой последовательности (к примеру с лева на права и с верху в низ) не важно в какой, главное в последовательности.
Надо сильно сильно...

Код:
[Выделить все]
 (defun c:FRTO(/ ACTDOC COPOBJ ERRCOUNT EXTLST
        EXTSET FROMCEN LAYCOL MAXPT CURLAY
        MINPT OBJLAY OKCOUNT OLAYST
        SCLAY TOCEN TOOBJ VLAOBJ *ERROR*)
  (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))
          0.0
            ); end list
      ); end vlax-3D-point
     ); end setq
  ); end of GetBoundingCenter
  (if(not(setq extSet(ssget "_I")))
    (progn
      (princ "\n+++ Select distination objects and press Enter <- ")
      (setq extSet(ssget))
      ); end progn
    ); end if
  (if(not extSet)
    (princ "\nDistination objects isn't selected!")
    ); end if
  (if
    (and
    extSet
    (setq toObj(entsel "\n+++ Select source object -> "))
    ); and and
    (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 vlaObj))
       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)
     (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! ")
        ""
        ); end if
      ); end strcat
   ); end princ
      (vla-EndUndoMark actDoc)
      ); end progn
    (princ "\nSource object isn't selected! ")
    ); end if
  (princ)
  ); end of c:FRTO

Изображения
Тип файла: jpg Скад.jpg (132.4 Кб, 232 просмотров)

Просмотров: 3656
 
Непрочитано 09.06.2014, 18:52
#2
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596


5000р
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 09.06.2014, 21:14
#3
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а не слипнется... 5 килорублей за сортировку набора?
gomer вне форума  
 
Непрочитано 09.06.2014, 21:59
#4
Кулик Алексей aka kpblc
Moderator

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


Offtop: Учитывая отстутствие внятного набора правил, как бы swell{d} не продешевил
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.06.2014, 22:09
#5
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Вот это по взрослому, вот это от души! Хотя там всякое может быть, тз то туманно.
Boxa вне форума  
 
Непрочитано 09.06.2014, 22:11
#6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Что ж не понятного, сортировать вдоль, ну или поперек...
gomer вне форума  
 
Непрочитано 09.06.2014, 22:44
#7
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596


Offtop: Мне для комфортной жизни надо 100к в месяц. Разделим на 22 рабочих дня - получим 4500р день. Работы там на полдня (с учётом составления договора и т.п.), т.е. 2250р. 10% на налоги, итого 2500р. С учётом, что человек заплатит аванс 50%, а на остаток скорее всего кинет - цена 5кр. Всё обоснованно.
А кто считает, что я зажрался, пусть сделает бесплатно.
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 09.06.2014, 22:47
#8
Кулик Алексей aka kpblc
Moderator

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


gomer, вспомни про вариант "сортировать отрезки, окружности и блоки". По каким параметрам будешь делать?
Автору: настоятельно рекомендую сузить варианты и скорректировать запросы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.06.2014, 23:14
#9
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Меня интересуют только линии (отрезки).
Цель - упорядочить нумерацию стержневых элементов в СКАДе (план свай, план колонн) при иморте из dxf.
Известно, что в автокаде при создании элемента ему присваивается какой-то порядковый номер, и при импорте в СКАД все элементы будут пронумерованы точно в этой же последовательности.
Идея в том, что бы нарисованный план свай или колонн, перерисовать исходя из этих соображений, но соблюдением какой-либо координатной последовательности. При этом вновь отрисованные элементы должны сохранять информацию (слой, цвет) о своём предшественнике. Это уже не имеет особого значения. Важна только геометрия.

Вот к примеру такая схемка
Вложения
Тип файла: dwg
DWG 2013
xxx.dwg (59.7 Кб, 952 просмотров)

Последний раз редактировалось Konstruktiv54, 10.06.2014 в 10:35.
Konstruktiv54 вне форума  
 
Непрочитано 12.06.2014, 11:12
#10
Andryleon


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


я для таких вещей пользуюсь Утилитой небольшой. Вот ветка на форуме.
http://forum.dwg.ru/showthread.php?t=110889
Она позволяет в Автокад выводить планы колонн, свай, разрезы по схеме прямо в Автокад, без dxf.
При этом есть поддержка проги, писал им - они подстраивали некоторые вещи по моим запросам...
Так что советую, мне помогает очень )
Вложения
Тип файла: dwg
DWG 2010
Пример Свайного поля Импортированного из SCAD.dwg (273.4 Кб, 876 просмотров)
Andryleon вне форума  
 
Непрочитано 17.06.2014, 18:52
1 | #11
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596


эх, не дали денег заработать =(
http://youtu.be/-ew2unlAjSM
П.С. Под автокад запиливаем самостоятельно, ибо "санкции".
Вложения
Тип файла: zip Книга1.zip (15.2 Кб, 62 просмотров)
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Автор темы   Непрочитано 17.06.2014, 19:06
#12
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Огромное спасибо Дим! )
Konstruktiv54 вне форума  
 
Непрочитано 17.06.2014, 19:16
#13
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,596


запустил на файлике из #9, вот результат:
Миниатюры
Нажмите на изображение для увеличения
Название: 2014-06-17_19-15.PNG
Просмотров: 59
Размер:	117.2 Кб
ID:	130514  
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замена примитивов другими примитивами, в определенной последовательности



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена ряда одних объектов другими bgrade AutoCAD 50 23.12.2020 17:07
Как изменить цвет выбранных примитивов? Замена цвета объектов в autocad (с помощью autolisp). Halfback LISP 8 24.12.2018 20:52
LISP для поиска групп (наборов) одинаковых примитивов и замена их блоком ElectroBOG LISP 20 23.07.2010 16:00