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

Вернуться   Форум DWG.RU > Программное обеспечение > Вертикальные решения на базе AutoCAD > Возможно ли преобразовать МПолигон?

Возможно ли преобразовать МПолигон?

Ответ
Поиск в этой теме
Непрочитано 10.07.2012, 14:59 #1
Возможно ли преобразовать МПолигон?
LiSa
 
Регистрация: 11.03.2008
Сообщений: 234

Подскажите, пожалуйста, имею в чертеже огромное количество МПолигонов. Возможно ли автоматически преобразовать МПолигон в замкнутую полилинию и заливку с цветом МПолигона? Спасибо.
Просмотров: 11844
 
Непрочитано 11.07.2012, 14:13
#2
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от LiSa Посмотреть сообщение
Подскажите, пожалуйста, имею в чертеже огромное количество МПолигонов. Возможно ли автоматически преобразовать МПолигон в замкнутую полилинию и заливку с цветом МПолигона? Спасибо.
МПолигон мне вообще ни чего не говорит. Это может быть просто полилиния, 2Дполилиния или 3дролилиния и есть ещё мультилиния. Судя по вопросу это не полилиния, что тогда из оставшихся? Про блоки штриховки и Солид я не говрю но бывает всякое.
Valery Brelovsky вне форума  
 
Автор темы   Непрочитано 11.07.2012, 15:03
#3
LiSa


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


Прикладываю файл.
Вложения
Тип файла: dwg
DWG 2007
Чертеж4.dwg (905.8 Кб, 1635 просмотров)
LiSa вне форума  
 
Непрочитано 11.07.2012, 15:51
#4
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Первое это сделано возможно в MAP 3d. И нужно работать с этим файлом там. Так постпрашивал, кто знаком с этой программой, они сказали что там есть возможность сохранить файл как для Автокада. При это есть там настройки условий сохранения. У меня нет этой программы, я с ней не работаю.
Valery Brelovsky вне форума  
 
Автор темы   Непрочитано 11.07.2012, 15:56
#5
LiSa


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


Да, Валерий, этот чертеж сделан в AutoCad Map. Точнее переконвертирован туда. Да можно сохранить чтобы МПолигон стал просто замкнутой полилинией. Но мне нужно сохранить цвет МПолигона. Спасибо!
LiSa вне форума  
 
Непрочитано 11.07.2012, 16:54
#6
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


В общем изначально стоит оговорить программу. Может даже стоит сейча изменить название темы и добавит туда название программы.
Valery Brelovsky вне форума  
 
Непрочитано 12.07.2012, 14:35
#7
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Вообще, эта тема дублирует такую же, на другом форуме: Как разбить МПолигоны

Там же я опубликовал решение:
Код:
[Выделить все]
 (defun c:mp2p (/ L LL LST P V)
  ;; by ElpanovEvgeniy
  ;; convert MPolygon to Lwpolyline
  ;; version 0.2
  ;; 2012.07.11
  ;; mailto: [email protected]
  ;; web:    elpanov.com
  (if (setq v (ssget "_x" '((0 . "MPOLYGON"))))
    (foreach e (mapcar (function cadr) (ssnamex v))
      ;;(setq e(car(entsel)))
      (setq e   (entget e)
            v   (cons 0 (mapcar (function -) (cdr (assoc 11 e)) (cdr (assoc 10 e))))
            l   (vl-remove nil
                           (list '(0 . "LWPOLYLINE")
                                 '(100 . "AcDbEntity")
                                 (assoc 67 e)
                                 (assoc 410 e)
                                 (assoc 8 e)
                                 (if (assoc 63 e)
                                   (cons 62 (cdr (assoc 63 e)))
                                 )
                                 (if (assoc 421 e)
                                   (cons 420 (cdr (assoc 421 e)))
                                 )
                                 '(100 . "AcDbPolyline")
                           )
                )
            lst e
            ll  nil
      )
      (defun f (l i)
        (if (> i 0)
          (cons (mapcar (function +) (car l) v) (f (cdr l) (1- i)))
        )
      )
      (while (setq lst (member (assoc 93 (cdr lst)) (cdr lst)))
        (setq p  (f (cdr lst) (cdar lst))
              ll (append ll (list '(92 . 7) '(72 . 0) '(73 . 1) (car lst)) p '((97 . 0)))
        )
        (entmakex (vl-remove nil (append l (list (cons 90 (cdar lst)) '(70 . 1)) p (list (assoc 210 e)))))
      )
      (entmakex (vl-remove nil
                           (append (list '(0 . "HATCH")
                                         '(100 . "AcDbEntity")
                                         (assoc 410 l)
                                         (assoc 8 l)
                                         (assoc 62 l)
                                         (assoc 420 l)
                                         '(100 . "AcDbHatch")
                                         (assoc 10 e)
                                         (assoc 210 e)
                                         '(2 . "SOLID")
                                         (assoc 70 e)
                                         (assoc 71 e)
                                         (assoc 91 e)
                                   )
                                   ll
                                   (list '(75 . 0)
                                         '(76 . 1)
                                         '(47 . 1.)
                                         '(98 . 2)
                                         '(10 0. 0. 0.0)
                                         '(10 0. 0. 0.0)
                                         '(450 . 0)
                                         '(451 . 0)
                                         '(460 . 0.0)
                                         '(461 . 0.0)
                                         '(452 . 0)
                                         '(462 . 0.0)
                                         '(453 . 2)
                                         '(463 . 0.0)
                                         '(63 . 256)
                                         '(463 . 1.0)
                                         '(63 . 256)
                                         '(470 . "LINEAR")
                                   )
                           )
                )
      )
    )
  )
  (princ)
)


Если кому нибудь интересно - тестируйте...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 10.12.2020, 16:42
#8
wepp

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


Здравствуйте! На другом форуме поднимали вопрос обратной конвертации, остановились на том, что из штриховок в мполигоны возможно только с апроксимацией, т.к. в штриховках могут быть дуги, которые не поддерживаются мполигонами. Вопрос, в итоге решение для обратной конвертации существует или нет? Обыскал кучу ресурсов, и русско- и англоговорящих.

Вообще, ноги задачи растут из того, что команда mapexport в Civil/Map не выгружает штриховки в формат Mapinfo (хотя при конвертации другим софтом из них создаются полигоны). Я полагаю, что раз уж mapexport выгружает мполигоны и они дружественны штриховкам, то можно пойти таким путём.

Я попытался собрать что-нибудь из вашего кода, но возникает ошибка.
Код:
[Выделить все]
 (defun c:h2mp (/ L LL LST P V)
  ;; by ElpanovEvgeniy
  ;; convert MPolygon to Lwpolyline
  ;; version 0.2
  ;; 2012.07.11
  ;; mailto: [email protected]
  ;; web:    elpanov.com
  (if (setq v (ssget "_x" '((0 . "HATCH"))))
    (foreach e (mapcar (function cadr) (ssnamex v))
      (defun f (l i)
        (if (> i 0)
          (cons (mapcar (function +) (car l) v) (f (cdr l) (1- i)))
        )
      )
      (while (setq lst (member (assoc 93 (cdr lst)) (cdr lst)))
        (setq p  (f (cdr lst) (cdar lst))
              ll (append ll (list '(92 . 7) '(72 . 0) '(73 . 1) (car lst)) p '((97 . 0)))
        )
        (entmakex (vl-remove nil (append l (list (cons 90 (cdar lst)) '(70 . 1)) p (list (assoc 210 e)))))
      )
      (entmakex (vl-remove nil
                           (append (list '(0 . "MPOLYGON")
                                         '(100 . "AcDbEntity")
                                         (assoc 410 l)
                                         (assoc 8 l)
                                         (assoc 62 l)
                                         (assoc 420 l)
                                         '(100 . "AcDbMPolygon")
                                         (assoc 10 e)
                                         (assoc 210 e)
                                   )
                                   ll
                                   (list '(2 . "_SOLID")
                                         '(67 . 0)
                                         '(70 . 1)
										 '(71 . 1)
										 '(91 . 1)
										 '(92 . 2)
										 '(73 . 0)
										 '(72 . 0)
										 '(93 . 5)
                                         '(10 0. 0. 0.0)
                                         '(10 0. 0. 0.0)
                                         '(76 . 1)
                                         '(63 . 256)
                                         '(99 . 0)
                                         '(450 . 0)
                                         '(451 . 0)
                                         '(460 . 0.0)
                                         '(461 . 0.0)
                                         '(452 . 0)
                                         '(462 . 0.0)
                                         '(453 . 0)
                                         '(470 . "")
                                   )
                           )
                )
      )
    )
  )
  (princ)
)
wepp вне форума  
 
Непрочитано 10.12.2020, 18:24
#9
trir


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


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

Есть такая команда - Сформировать границу, после неё у тебя будут контуры которые можно экспортировать

Последний раз редактировалось trir, 10.12.2020 в 18:32.
trir вне форума  
 
Непрочитано 11.12.2020, 09:18
#10
wepp

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


Цитата:
Сообщение от trir Посмотреть сообщение
брехня
Хм, действительно. Проверил сейчас, Civil делает мполигон из полилиний, в которых есть дуги.

Цитата:
Сообщение от trir Посмотреть сообщение
Есть такая команда - Сформировать границу, после неё у тебя будут контуры которые можно экспортировать
HatchGenerateBoundary, знаю её, она и в обычном Акаде есть. Во время mapexport я могу включить опцию, чтобы замкнутые полилинии конвертировались в полигоны, но это работает, если в штриховках нет островков. Если есть, то они уйдут просто отдельными полигонами с наложением.

На её основе пытаюсь со своим никаким знанием лиспа собрать алгоритм - берётся одна штриховка, для неё формируется граница, после этого выделяем все получившиеся полилинии (вместе с островками) и делаем мполигон. И так перебираем все штриховки.
wepp вне форума  
 
Непрочитано 11.12.2020, 09:23
#11
trir


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


проще на c# сделать прямой экспорт в tab/mif
trir вне форума  
 
Непрочитано 15.12.2020, 09:20
#12
wepp

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


Цитата:
Сообщение от trir Посмотреть сообщение
проще на c# сделать прямой экспорт в tab/mif
Возможно, если на это будут ресурсы (человеческие или временные), то что-нибудь такое и придумаем. Пока вопрос решился через Safe FME. Мощная штука, при этом достаточно понятная по работе.
wepp вне форума  
 
Непрочитано 15.12.2020, 11:53
| 1 #13
trir


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


Цитата:
Пока вопрос решился через Safe FME
и ценик хороший
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Вертикальные решения на базе AutoCAD > Возможно ли преобразовать МПолигон?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли уменьшение толщины фундаментной плиты ? лесник 2009 Основания и фундаменты 57 30.05.2016 13:09
Возможно ли использоваие многострочных атрибутов в 2007 автокаде? JokerrSergh AutoCAD 2 17.01.2011 12:47
Возможно ли на этом участке разместить здание без конкретной технологии в 2эт и какой площади uztoz Архитектура 9 15.08.2009 20:22
Глобально задать стили возможно? Marv AutoCAD 9 24.06.2009 11:08
Сэндвич-панели как легкосбрасываемая кровля. Возможно? @$K&t[163RUS] Конструкции зданий и сооружений 19 15.06.2009 06:12