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

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

Чистка dwg чертежа Архикада в соответсвии со стандартом

Ответ
Поиск в этой теме
Непрочитано 11.12.2011, 18:41 #1
Чистка dwg чертежа Архикада в соответсвии со стандартом
Botan
 
непонятно
 
Регистрация: 28.01.2008
Сообщений: 471

Здравствуйте.
Подскажите пожалуйста как привести впорядок файл экспортированный из Архикада.
Пример файла прилагаю.
У меня стоит Автокад 2012. Меня интересует объединение текстовых стилей, размерных стилей, слоев... и т.д. и т.п. В общем хотелось бы получить максимальный объем информации по адаптации такого чертежа. Может можно что-то в архикаде настроить...
++ файл "оригинальный", утилитами не обрабытавался

Вложения
Тип файла: dwg
DWG 2010
план кровли.dwg (119.3 Кб, 1377 просмотров)

__________________
Если ты что-то сделал без труда, то ты сделал это неправильно!
Лишь та ошибка, что не исправляеТСЯ!
Просмотров: 4653
 
Непрочитано 11.12.2011, 19:15
#2
РастОК

Конструктор-Проектировщик
 
Регистрация: 24.12.2008
Сообщений: 2,588


Я тоже мучаюсь с переводом файла из Архикада в Автокад. Самая большая проблема по моему мнению, это большое количество размерных и текстовых стилей, которые появляются при конвертации файла. В вашем файле я смотрю мало этих стилей, поэтому адаптациря будет не сложной. В Архикаде больше вы не настроите чем уже настроили. Если что-то вам не подходит, обращайтесь, чем сможем - поможем.
РастОК вне форума  
 
Автор темы   Непрочитано 11.12.2011, 19:36
#3
Botan

непонятно
 
Регистрация: 28.01.2008
Сообщений: 471
<phrase 1=


Ну это лишь пример. Чертеж то крохотный, а "побочных" объектов очень много.
Расскажу что я нашел:
1. Транслятор слоев. Из множества слоев по маске в имени слоя или вручную можно несколько слоев соединить в один ( стена1+стена2+стена3+...=Стена). Вроде всё просто, но непонятна логика назначения слоев объектам Архакадом. Мне то нужны например только несущие стены, окна, перегородки, размеры, подписи, а тут 5 слоев Exterior Walls (в переводе "наружные стены"), а на этих слоях ни одной наружной стены не изображено. Т.е. Инструмент есть, но для арчика не походит.
2. Настрока стандартов, он же нормоконтроль. Вроде как раз таки то что нужно. Создается эталонный файл, согласно которого производится проверка и корректировка, затрагиваются и текстовые и размерные стили, и слои, но использование затрудняется из-за см п.1 (тут 5 слоев Exterior Walls (в переводе "наружные стены"), а на этих слоях ни одной наружной стены не изображено). Т.е. сначала нужно изолировать каждый слой, на листочке писать конечный слой, а дальше используя либо п.1, либо п.2 производить слияние.
3. Вроде простой способ переноса текста и размеров на нужный слой. Выделяем - в панели свойств выбираем нужные объекты - изменяем слой. Но размеры могут быть взорваны, соответсвенно номер не прокатит.
4. Воспользоваться быстрым выбором. Но тут перенос объектов возможен только по графическим признакам, а не по функционалу (стена к стене, окна к окну...) А нужен именно функционал.
++
5. Воспользоваться изоляцией слоя. Выбираем нужный объект - изолируем слой объекта - выделяем все объекты на этом слое - переносим на другой слой - отключаем изоляцию - повторяем...
__________________
Если ты что-то сделал без труда, то ты сделал это неправильно!
Лишь та ошибка, что не исправляеТСЯ!

Последний раз редактировалось Botan, 11.12.2011 в 19:55.
Botan вне форума  
 
Автор темы   Непрочитано 16.12.2011, 20:22
#4
Botan

непонятно
 
Регистрация: 28.01.2008
Сообщений: 471
<phrase 1=


И снова здравствуйте! Меня интересует один маленький вопрос.
Как заменить текст на блок.
P.S. не сочтите за лень искать или топик ап, но данный вопрос очен жестко связан с этой темой

Пока никто не ответил - добавлю. Помимо просто замены блока хотелось бы услышать как выбрать только нужный мне текст в модели. Например, есть марка окна О-2, написанная текстом, её нужно заменить на блок О-2, и вообще было бы замечательно если будет возможность указывать область внутри которой будет замена.
__________________
Если ты что-то сделал без труда, то ты сделал это неправильно!
Лишь та ошибка, что не исправляеТСЯ!

Последний раз редактировалось Botan, 16.12.2011 в 20:40.
Botan вне форума  
 
Непрочитано 16.12.2011, 20:52
1 | #5
VVA

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


Цитата:
Сообщение от Botan Посмотреть сообщение
Как заменить текст на блок.
Замена ряда одних объектов другими
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 16.12.2011, 21:17
#6
Botan

непонятно
 
Регистрация: 28.01.2008
Сообщений: 471
<phrase 1=


Спасибо огромное! Попутно узнаю еще много нового))))
А без лиспа стандартными средствами не обойтись ?!?!
Против лиспа ничего против не имею...


Решение проблемы на LISP (да простит меня VVA за перепост)
http://www.caduser.ru/forum/index.ph...#message118801

Код:
[Выделить все]
 (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 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)
    (progn
      (initget "Yes No")
      (setq ask (getkword "\nRemove destination object [Yes/No] <No>:"))
      (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)
    (_kpblc-ent-properties-copy obj copObj)
    (vla-put-Layer copObj curLay)
    (vla-put-Lock objLay olaySt)
    (if (= ask "Yes")(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/viewto...4&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/viewto...4&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")
__________________
Если ты что-то сделал без труда, то ты сделал это неправильно!
Лишь та ошибка, что не исправляеТСЯ!

Последний раз редактировалось Botan, 17.12.2011 в 20:01.
Botan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Чистка dwg чертежа Архикада в соответсвии со стандартом

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документация Проектировщику на Torrents DEM Разное 262 24.02.2024 17:19
Перевод конвертация из PDF в DWG (DXF) oootvman AutoCAD 127 30.09.2022 10:03
Чистка чертежа от совпадающих линий Savuk Программирование 9 29.04.2015 13:11
Можно ли мне избежать искажения чертежа при конвертации из Архикада в Автокад? Storyteller ArchiCAD 3 19.07.2011 14:46
Оцифровка чертежа в dwg gadjster AutoCAD 12 23.11.2008 11:46