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

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

Хитрая задачка по автокаду

Ответ
Поиск в этой теме
Непрочитано 31.07.2007, 11:30
Хитрая задачка по автокаду
Бали
 
Инженер
 
Уфа
Регистрация: 23.03.2007
Сообщений: 197

У меня возникла такая задача, даже две. Возможно это уже обсуждалось, но я не видел
Задумка, состоит в том, чтобы доставить проблемы тем, кто не желает приводить свои чертежи к удобоизменяемости. Может поймут что такое автокад :twisted:
Дано: Чертеж с н-ным кол-вом слоев, текстовых и размерных стилей, все красиво и цивильно.
Задача 1: Преобразовать чертеж так, чтобы визуально он остался таким же (цвет, толщина, тип линий, свойства текстов и размеров), но кол-во слоев уменьшилось до одного стандартного, к примеру слой "0", также кол-во текстовых и размерных стилей соответственно тоже до одного стандартного.
Задача 2: Все по тому же принципу, только вместо одного слоя или стиля, перевести каждый элемент в свой собственный стиль и слой, в итоге получится красивый снаружи, но уродливый внутри монстр.
Переделывать преобразованные таким образом чертежи, для людей, поверхностно знающих автокад, думаю будет неудобно или даже сложновато, для чуваков же, вроде вас, это будет проще пареной репы.
PS: Возникла эта задача при переделке(не оформительская, а конструктивная, чето там неправильно было, а чел который все это наваял отсутствовал) мною кривых чертежей, принадлежащих людям, которые не знаю почему не пользуются ни слоями, ни текстовыми, ни размерными стилями.
Просмотров: 9075
 
Автор темы   Непрочитано 31.07.2007, 12:46
#21
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>Ander822
Не понял, почему сам себе противоречу?
Бали вне форума  
 
Непрочитано 31.07.2007, 12:49
#22
Ander822


 
Регистрация: 16.07.2007
Minsk
Сообщений: 84


Цитата:
Сообщение от Бали
>Ander822
Не понял, почему сам себе противоречу?
Ну ты хочешь все объекты поместить на один слой, поубирать все слои, размерные и текстовые стили. При этом хочешь чтобы тебе было удобно с этим чертежем работать.
На мой взгляд это взаимоисключает друг друга.
Ander822 вне форума  
 
Непрочитано 31.07.2007, 12:56
#23
ASLYS

Delineante
 
Регистрация: 26.12.2006
Ростов-на-Дону/Madrid
Сообщений: 396
<phrase 1=


если серьезно, то можно использовать .dwt или .dws
ASLYS вне форума  
 
Автор темы   Непрочитано 31.07.2007, 12:59
#24
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>Ander822
Еще раз повторю, я хочу шоб всё было на одном слою но с разными, принудительно измененными цветами, толщинами (какие были шоб остались). Я ж говорю проблема в том что эти параметры послою стоят, если бы они были изначально не послою, то было бы всё просто.
Бали вне форума  
 
Непрочитано 31.07.2007, 13:00
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Бали
Исправил ошибку (всетаки 13 пост ).
Код остался там же
VVA вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:01
#26
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от ASLYS
если серьезно, то можно использовать .dwt или .dws
А по условию, не могёт народ?
Бали вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:06
#27
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от VVA
>Бали
Исправил ошибку (всетаки 13 пост ).
Код остался там же
Круто вы однако разобрались!!
А теперь с текстами и размерами такую же замануху могёте.
И если не трудно ЗАДАЧА2 тоже
Бали вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:23
#28
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Ау, народ! Ну почти добили же задачу, чуть чуть осталось.
VVA - вы реально прикольную прогу написали, хотелось бы остальное так же просто разрулить.
Бали вне форума  
 
Непрочитано 31.07.2007, 13:31
#29
Кулик Алексей aka kpblc
Moderator

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


VVA, ты попал...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.07.2007, 13:33
#30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Код:
[Выделить все]
(defun C:ПЛЮЩИТЬВСЕ ( / Doc lays tempObjType ColCnt RowCnt StyName count) 
(vl-load-com)
(setq StyName "Standard" count 0)
(setvar "CLAYER" "0")  
(setq Doc (vla-get-ActiveDocument(vlax-get-Acad-object))) 
(vla-StartUndoMark Doc)
(vla-put-ActiveTextStyle  Doc (vla-item (vla-get-TextStyles Doc) StyName))
(vlax-for lay (setq lays (vla-get-Layers Doc)) 
  (if (eq (vla-get-Lock lay) :vlax-true) 
    (vla-put-Lock Lay :vlax-false)) 
  (if (eq (vla-get-freeze lay) :vlax-true) 
    (vla-put-Freeze Lay :vlax-false) 
    ) 
  ) 
(vlax-for Blk (vla-get-Blocks Doc)
 (if (= (vla-get-IsXref Blk) :vlax-false) 
  (vlax-for Obj Blk
   (grtext -1 (strcat "Элемент N " (itoa (setq count (1+ count))))) 
   (setq lay (vla-get-Layer Obj)) 
   (setq lay (vla-item lays lay)) 
   (if (= (vla-get-color obj) acByLayer) 
     (vla-put-color obj (vla-get-color lay))) 
   (if (= (vla-get-LineWeight obj) acLnWtByLayer) 
     (vla-put-LineWeight obj (vla-get-LineWeight lay))) 
   (if (= (vla-get-Linetype obj) "ByLayer") 
     (vla-put-LineType obj (vla-get-LineType lay))) 
    (vla-put-layer Obj "0")
    (setq tempObjType (vla-get-ObjectName Obj))
    (cond
    ((vl-position tempObjType '("AcDbText" "AcDbMText" "AcDbAttributeDefinition"))
     (vla-put-StyleName Obj StyName)
    )
    ((wcmatch tempObjType "AcDb*Dimension")
     (vla-put-TextStyle Obj StyName)
    )
    ((= tempObjType "AcDbBlockReference")
     (foreach Att (vlax-invoke Obj 'GetAttributes)
      (vla-put-StyleName Att StyName)
     )
     (foreach Att (vlax-invoke Obj 'GetConstantAttributes)
      (vla-put-StyleName Att StyName)
     )
    )
    ((= tempObjType "AcDbTable")
     (setq ColCnt 0)
     (repeat (vla-get-Columns Obj)
      (setq RowCnt 0)
      (repeat (vla-get-Rows Obj)
       (vlax-invoke Obj 'SetCellTextStyle RowCnt ColCnt StyName)
       (setq RowCnt (1+ RowCnt))
      )
      (setq ColCnt (1+ ColCnt))
     )
    )
   )
  ) 
 ) 
) 
(repeat 3  (vla-purgeall Doc)) 
(vla-EndUndoMark Doc)(princ) 
)
Цитата:
И если не трудно ЗАДАЧА2 тоже
Если у меня в среднем порядка 30000 элементов в чертеже, предлагашь создать 30000 слоев? AutoCAD такого не простит, а мне сним дружить хочется.
VVA вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:45
#31
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>VVA
Чё то хуже вроде вышло, только один из трех текстовых стилей убрался, тексты поползли немного (вроде Мтексты), да и размеры тоже.
Задача2 признаю немного туповата её делать не имеет смысла.
В принципе первый вариант VVA-ской проги канает. Всем спасибо, я удовлетворен, но если вам интересно можете все-таки решить до конца.
Бали вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:51
#32
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>VVA
Все таки мне хочется увидеть решение задачи1 до конца, вручную попробовал-получается, думаю програмно тоже можно решить, не откажите
Бали вне форума  
 
Автор темы   Непрочитано 31.07.2007, 14:16
#33
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Ау! Вопрос всё ещё висит!
мОзги-програмеры, снизойдите, а то я в лиспе ни болта не рублю.
Бали вне форума  
 
Непрочитано 31.07.2007, 14:19
#34
Ander822


 
Регистрация: 16.07.2007
Minsk
Сообщений: 84


Есть такая идея:
Пишется лиспик, который создает файлик где для каждого объекта чертежа прописаны все его свойства (слой, цвет, вес...)
потом каждому объекту присваиваются значения цвета, веса линии которые были у соответсвующих слоев, а сами объекты переносятся на 0-й слой.

Если надо потом вернуть все в нормальный вид, то для каждого объекта из файлика считываются его прежние свойства, и обект возращается туда где он раньше был.
Ander822 вне форума  
 
Автор темы   Непрочитано 31.07.2007, 14:23
#35
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>Ander822
Хорошая идея, но сначала давайте разрулим задачу1
Бали вне форума  
 
Непрочитано 31.07.2007, 14:25
#36
Admin
Administrator


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


>>Бали
Цитата:
Ау! Вопрос всё ещё висит!
мОзги-програмеры, снизойдите, а то я в лиспе ни болта не рублю.
Прекращай создавать искусственный интерес и поддергивать топик каждые пол-часа, а то совсем закрою.
Admin вне форума  
 
Непрочитано 31.07.2007, 14:26
#37
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


То что тектсты (размеры) поползут - это нормально, в стиле ведь могут быть забиты разные текстовые шрифты: один шире или уже другого.
У меня текстовые стили удаляет.
Может текстовый стиль забит за стилем таблицы?
VVA вне форума  
 
Автор темы   Непрочитано 31.07.2007, 14:46
#38
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>VVA
Высылаю то что получилось с мтекстом
[ATTACH]1185878762.dwg[/ATTACH]
Бали вне форума  
 
Непрочитано 31.07.2007, 15:25
#39
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Так что здесь странного?
У тебя бал стиль Russo R со шрифтом romans.shx степень сжатия 0.8 и наклоном 10, а стал Standard со шрифтом txt.shx
Назначь стилю Standard шрифт romans.shx степень сжатия 0.8 и наклон 10 и будет то же самое
VVA вне форума  
 
Автор темы   Непрочитано 31.07.2007, 15:28
#40
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


>VVA
Так не канает, потому что на одном чертеже степень сжатия может быть разной. ???
Бали вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Хитрая задачка по автокаду

Реклама i