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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Инструменты поддержки CAD Cтандарта предприятия

Инструменты поддержки CAD Cтандарта предприятия

Закрытая тема
Поиск в этой теме
Непрочитано 05.10.2009, 13:33 #1
Инструменты поддержки CAD Cтандарта предприятия
kheylan
 
Екатеринбург
Регистрация: 24.05.2009
Сообщений: 86

Чтобы CAD Cтандарт Предприятия работал помимо инструкций и руководств, необходимо инструменты с помощью которых он быстро и эффективно выполнялся. Предлагаю собрать здесь ссылки на эти команды, макросы и т.д. Первое, что приходится приводить к стандарту текст, размеры, слои, типы линий и многое остальное. С остального и начну.
У нас на предприятии одно из условий выполнения стандарта, можно использовать точки только во время проектирования, при подготовке в архив все точки должны быть удалены.
Если просто удалить точки в чертеже, то можно использовать такой макрос:
^C^C^P(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "POINT")))) (sssetfirst selset selset)));(mfunc);_all;;_erase;^H
А как удалить точки в блоках, вставленные в чертеж???-> Смотри пост №12
Установить список масштабов согласно ГОСТа -> Смотри пост №27
Задать объектам свойства ПоСлою -> Смотри пост №33
Единый текстовой стиль - всему чертежу-> Смотри пост №37

Последний раз редактировалось kheylan, 07.10.2009 в 07:23.
Просмотров: 9117
 
Непрочитано 05.10.2009, 13:41
#2
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Offtop: Недавно, что-то слово-в-слово уже читал. Галлюцинации или назойливая муха?
__________________
Я дарю не рыбу, а удочку и море.
www.zodchii.ws,
Библиотеки электронных книг
Download
BM60 вне форума  
 
Непрочитано 05.10.2009, 13:54
#3
Profan


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


Причем тут CAD стандарты? Обычная задача по программированию.
Profan вне форума  
 
Непрочитано 05.10.2009, 14:01
#4
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от BM60 Посмотреть сообщение
Offtop: Недавно, что-то слово-в-слово уже читал. Галлюцинации или назойливая муха?
Offtop: Было в "Корпоративных стандартах".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.10.2009, 14:05
#5
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Просто в CAD Стандарте Предприятия у нас прописано, чтобы не было точек, а так, конечно, это задача по программированию, т.е. поддержка последнего
kheylan вне форума  
 
Непрочитано 05.10.2009, 14:20
#6
Profan


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


Мало ли, что у вас прописано. У нас, например, точки фактически не используются (проектирование объектов здравохранения), разве только при использовании команд "Поделить" да "Разметить". И ни в какой СТП нет нужды вводить подобное требование. Поэтому и надо эту тему попросту переименовать.
А если попробовать функцию (entnext) применительно к блокам?

Последний раз редактировалось Profan, 05.10.2009 в 14:54.
Profan вне форума  
 
Непрочитано 05.10.2009, 18:58
#7
VVA

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


Цитата:
А как удалить точки в блоках, вставленные в чертеж???
Код:
[Выделить все]
(defun mip:del-ObjectbyName ( ObjectName / *error*  tmp cnt pcnt)
  ;;; ObjectType - Имя удаляемого объекта, возвращаемое vla-get-ObjectName
  ;;;              например "AcDbPoint"
  ;;;(mip:del-ObjectbyName "AcDbPoint")
  (defun *error* (msg)(princ msg)(mip:layer-status-restore)(princ))
  (vl-load-com)
  (setq ObjectName (strcase ObjectName) pcnt 0)
  (mip:layer-status-save)
  (vlax-for item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
    (if (= (vla-get-IsXRef item) :vlax-false)
      (progn
	(setq cnt 0 tmp (strcat "Inspected: " (vla-get-name item)))
	(grtext -1 tmp)
	(vlax-for   sub_item item
	  (terpri)(princ (vla-get-ObjectName sub_item))
	  (setq cnt (1+ cnt))
	  (if (zerop(rem cnt 10))(grtext -1 (strcat tmp " : " (itoa cnt))))
	  (vl-catch-all-apply
	    '(lambda()
	       (if (= (strcase(vla-get-ObjectName sub_item)) ObjectName)
		 (progn
		   (vla-delete sub_item)
		   (setq pcnt (1+ pcnt))
		   )
		 )
	       )
     )
   ) ;_ end of vlax-for
   )
      ) ;_ end of if 
    ) ;_ end of vlax-for 
  (mip:layer-status-restore)
  (vl-cmdf "_.Regenall")
  (alert (strcat (itoa pcnt) " point deleted"))
  (princ)
  )
  (defun mip:layer-status-restore () 
    (foreach item *MIP_LAYER_LST*
      (if (not (vlax-erased-p (car item))) 
        (vl-catch-all-apply 
          '(lambda () 
             (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
             (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
             ) ;_ end of lambda 
          ) ;_ end of vl-catch-all-apply 
        ) ;_ end of if 
      ) ;_ end of foreach
    (setq *MIP_LAYER_LST* nil)
    ) ;_ end of defun 

  (defun mip:layer-status-save ()
    (setq *MIP_LAYER_LST* nil)
    (vlax-for item (vla-get-layers *kpblc-activedoc*) 
      (setq *MIP_LAYER_LST* (cons (list item 
                                  (cons "freeze" (vla-get-freeze item)) 
                                  (cons "lock" (vla-get-lock item)) 
                                  ) ;_ end of cons 
                            *MIP_LAYER_LST* 
                            ) ;_ end of cons 
            ) ;_ end of setq 
      (vla-put-lock item :vlax-false)
      (if (= (vla-get-freeze item) :vlax-true)
      (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
      ) ;_ end of vlax-for
    ) ;_ end of defun
Вызов
Код:
[Выделить все]
^C^C(mip:del-ObjectbyName "AcDbPoint");
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 05.10.2009, 20:16
#8
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


VVA почему-то получается вот так
Команда: (mip:del-ObjectbyName "AcDbPoint")
неверный тип аргумента: VLA-OBJECT nil
хотя все вроде правильно делал, сохранил первую часть как del-ObjectbyName.lsp, подгрузил, ввел команду
kheylan вне форума  
 
Непрочитано 05.10.2009, 20:25
#9
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


А нельзя-ли просто поменять стиль точки на такой, которой не видно? (вторая в окне стилей). И вообще странно, что у вас массовое применение точек, а пользователь не умеет привести точку к невидимой. Вероятно вашему Cad manager попался чертеж с огромными крестами.
Vova вне форума  
 
Автор темы   Непрочитано 05.10.2009, 20:34
#10
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


>>>Vova
Просто мы работаем на субподряде с разными организациями и приходится приводить их чертежи в порядок, а стиль точки неизвестно как у заказчика отзовется или в головной конторе, куда мы отсылаем dwg
kheylan вне форума  
 
Непрочитано 05.10.2009, 21:05
#11
Profan


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


Плохо ваши авторы CAD Стандарта Предприятия знают AutoCAD. Отображение точки в AutoCAD'е определяется переменной PDMODE, а размер отображения - переменной PDSIZE. Обе эти переменные сохраняются в чертеже и поэтому совершенно неважно, как отображается точка в чертежах ДРУГИХ организаций.
Profan вне форума  
 
Автор темы   Непрочитано 06.10.2009, 05:12
#12
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


>>>VVA
Спасибо! Поклон до земли!
Нашел в чем причина
надо заменить *kpblc-activedoc* на (vla-get-activedocument (vlax-get-acad-object))
Программа работает! Ура!
Макрос на кнопку:
Удалить все точки
^C^C^P(if (null mip:del-ObjectbyName)(load "del-ObjectbyName"));^P(mip:del-ObjectbyName "AcDbPoint");
Вложения
Тип файла: lsp del-ObjectbyName.LSP (2.5 Кб, 72 просмотров)
Тип файла: dwg
DWG 2007
Удалить точки.dwg (165.3 Кб, 918 просмотров)

Последний раз редактировалось kheylan, 07.10.2009 в 06:42.
kheylan вне форума  
 
Непрочитано 06.10.2009, 08:07
#13
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Profan Посмотреть сообщение
Плохо ваши авторы CAD Стандарта Предприятия знают AutoCAD. Отображение точки в AutoCAD'е определяется переменной PDMODE, а размер отображения - переменной PDSIZE. Обе эти переменные сохраняются в чертеже и поэтому совершенно неважно, как отображается точка в чертежах ДРУГИХ организаций.
А если часть чертежа вместе с точками будет скопирована в другой файл?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.10.2009, 08:10
#14
Profan


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


Ты тоже AutoCAD не знаешь?
Profan вне форума  
 
Непрочитано 06.10.2009, 08:14
#15
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от wetr Посмотреть сообщение
А если часть чертежа вместе с точками будет скопирована в другой файл?
Ну Profan же и говорит, что они будут отображаться в зависимости от настроенного в том чертеже стиля точек. Если в исходном были крестики, а в приемном настроено на квадратики, значит будут квадратики.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 06.10.2009, 08:20
#16
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Продолжим тему инструменты CAD Стандарта, который на основе AutoCAD 2009. Что делать с чужим чертежом, который необходим тебе для работы?!
После прихода чертежа со стороны, он сначала проходит обработку в два этапа

Первая кнопка (1), назовем ее - Выбрать все в буфер обмена,
ее функции - Очистка чертежа от мусора, копирование его в буфер обмена, открытие нового чертежа для вставки его в среду CAD Стандарта
^C^C^P(if(not(member "explodeproxy2007.arx" (arx)))(arxload "explodeproxy2007.arx"));EXPLODEALLPROXY;REMOVEALLPROXY;_Y;_AUDIT;_Y;_LAYERP;_LAYERP;_-Purge;_All;;_N;_.convert;;; _ai_selall;_Copyclip;_Qnew;
Часть команд взято отсюда http://forum.dwg.ru/showthread.php?t=14455 , большое спасибо автору.
Т.е. сохраняем оригинал и получаем содержимое модели в буфере обмена

Вторая кнопка (2), назовем ее - Вставить из буфера обмена,
ее функции - Вставить все из буфер обмена в новый чертеж и показать все в пределах чертежа
^C^C_pasteorig;'_.zoom _e
Т.е. получаем содержимое модели в нашем шаблоне

Третий этап делаем вручную, с помощью Центра Управления перетаскиваем листы

Вопрос: Реально все это объединить в одну команду или как это происходит у Вас!?
kheylan вне форума  
 
Непрочитано 06.10.2009, 08:49
#17
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Krieger Посмотреть сообщение
Ну Profan же и говорит, что они будут отображаться в зависимости от настроенного в том чертеже стиля точек. Если в исходном были крестики, а в приемном настроено на квадратики, значит будут квадратики
Я имею ввиду такую ситуацию:
Автор отправляет чертеж с точками, настроенными на "невидимость" PDMODE=1. Тамошние проектировщики копируют часть чертежа себе в файл, с настройками PDMODE=100. Получаются козюльки и автору темы объявляют выговор.
Вот поэтому точки и удаляют
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.10.2009, 08:55
#18
Кулик Алексей aka kpblc
Moderator

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


kheylan, а зачем так геморройно? Можно (примерно) так:
Код:
[Выделить все]
(defun clear-dwg (/ adoc err *error*)
                 ;|
*    Очистка файла
|;

  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (not (wcmatch "explodeproxy*.arx"
                    ((lambda (/ lst)
                       (setq lst (arx)
                             lst (strcase (strcat (car lst) (apply 'strcat (mapcar '(lambda (x) (strcat x ",")) (cdr lst)))) t)
                             ) ;_ end of setq
                       ) ;_ end of lambda
                     )
                    ) ;_ end of wcmatch
           ) ;_ end of not
    (if (vl-catch-all-error-p
          (setq err
                 (vl-catch-all-apply
                   (function
                     (lambda (/ cadver)
                       (setq cadver (atoi (vl-string-trim "VISUALP " (strcase (ver)))))
                       (arxload (findfile "explodeproxy2007.arx"))
                       (vlax-for blk_def (vla-get-blocks adoc)
                         (if (equal (vla-get-isxref blk_def) :vlax-false)
                           (explodeallproxyinblock (vla-get-name blk_def))
                           ) ;_ end of if
                         ) ;_ end of vlax-for
                       (if (<= cadver 2010)
                         (command "removeallproxy")
                         (command "removeallproxy" "_y")
                         ) ;_ end of if
                       ) ;_ end of lambda
                     ) ;_ end of function
                   ) ;_ end of vl-catch-all-apply
                ) ;_ end of setq
          ) ;_ end of vl-catch-all-error-p
      (princ (strcat "Ошибка при работе с разбивкой прокси : " (vl-catch-all-error-message err)))
      ) ;_ end of if
    ) ;_ end of if
  (repeat 3 (vla-purgeall adoc))
  (vla-auditinfo adoc :vlax-true)
  (vla-purgeall adoc)
  (vlax-for app (vla-get-registeredapplications adoc)
    (vl-catch-all-apply
      (function
        (lambda ()
          (vla-delete app)
          ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
    ) ;_ end of vlax-for
  (vla-endundomark adoc) ; забыл вставить
  (princ) ; забыл вставить
  ) ;_ end of defun
Код особо не гонял.
P.S. Тему все же переименуй
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 06.10.2009 в 11:08.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.10.2009, 08:59
#19
Profan


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


Для wetr.
С какой стати они будут объявлять выговор? Точка ("Point") - стандартный объект AutoCAD'а. Этак можно по куче позиций надавать выговоров тем, у кого берешь чертеж и который не соответствует твоим понятиям о "правильности" чертежа. Точка может использоваться, например, как уникальный объект для привязки. Но ты можешь про себя изрыгать сколько угодно проклятий, но не имеешь права мне объявлять выговор. Не нравится точка или не умеешь поменять ее отображение - воспользуйся приведенной здесь программой.

А вот ко мне пришли чертежи, сделанные в CorelDRAW. Я пойду и объявлю авторам анафему.
Profan вне форума  
 
Непрочитано 06.10.2009, 09:15
#20
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Profan Посмотреть сообщение
Плохо ваши авторы CAD Стандарта Предприятия знают AutoCAD. Отображение точки в AutoCAD'е определяется переменной PDMODE, а размер отображения - переменной PDSIZE. Обе эти переменные сохраняются в чертеже и поэтому совершенно неважно, как отображается точка в чертежах ДРУГИХ организаций.
Для Profan.
Зачем вы так? Вы ведь даже не знаете этих "авторов CAD Стандарта Предприятия". Не знаете ситуации, в которой они находятся и что именно их побудило заняться удалением точек.

Пример привел лишь для того, чтоб вы не были так категоричны. Повторюсь: ситуации бывают разные.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.10.2009, 09:30
#21
Beginer

проектировщик ж/б, ОиФ
 
Регистрация: 21.04.2006
Санкт-Петербург
Сообщений: 1,115


А для чего вообще в чертежах исользуют точки? Или специфика какая? Спрашиваю потому, что сам ими никогда не пользовался.
Beginer вне форума  
 
Непрочитано 06.10.2009, 09:37
#22
Profan


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


wetr, ты пойми, автор темы делает СТП для себя, для своей организации. Но он не может насаждать свои правила другим организациям. У себя он может удалить точки, но ведь в другой организации точки все равно останутся. Он не может удалить точки "как класс". И не надо думать за чужую контору, они сами сообразят, надо им точки удалять или не надо.
А по поводу СТП вообще - скажу так: сама идея подобных СТП ущербна, поскольку не имеет под собой законодательной базы.
А сами точки ("Point") могут использоваться, например, при создании высотных отметок, по которым потом строятся горизонтали. Я раньше применял точки в 3D-построениях для удобной привязки "УЗЕЛ" ("NODE").
Profan вне форума  
 
Автор темы   Непрочитано 06.10.2009, 10:51
#23
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Кулик Алексей aka kpblc , насчет кода
осмелюсь так сказать (if (<= cadver 2007) вместо (if (<= cadver 2010) и со строки(repeat 3 (vla-purgeall adoc))
программа работает некорректно,
т.е. не выполняет нормально AUDIT и PURGE
А так класс! Да хорошо бы пристегнуть переменную DEMANDLOAD!
А насчет темы, точки - это частности! Главное инструменты, помогающие жить, неважно как их назовешь.
kheylan вне форума  
 
Непрочитано 06.10.2009, 11:22
#24
Кулик Алексей aka kpblc
Moderator

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


Код в #18 подправил. Немного.
Насчет if и прочего: код вообще-то сделан для конкретной ситуации (например, explodeproxy2007.arx находится в путях поддержки AutoCAD), универсальный будет намного длиннее. В 2010 версии команда removeallproxy имеет немного другой формат, поэтому я там и сделал подобную проверку.
Вот еще вариант (уже более гибкий, т.к. будет работать во всех версиях, где возможна подгрузка explodeproxy.arx); сам файл explode*.arx может находиться в любом уровне вложенности путей поддержки:
Код:
[Выделить все]
(defun clear-dwg (/ adoc err *error* fun_conv-string-to-list fun_files-in-directory)
                 ;|
*    Очистка файла
|;

  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (defun fun_conv-string-to-list (string separator / i)
                                 ;|
*    Функция разбора строки. Возвращает список либо точечную пару.
*    Параметры вызова:
*	string		разбираемая строка
*	separator	символ, используемый в качестве разделителя частей
*    Примеры вызова:
(fun_conv-string-to-list "1;2;3;4;5;6" ";")	;'(1 2 3 4 5 6)
(fun_conv-string-to-list "1;2" ";")		;'(1 2)
*    За основу взяты уроки Евгения Елпанова по рекурсиям
|;
    (cond
      ((= string "") nil)
      ((setq i (vl-string-search separator string))
       (cons (substr string 1 i)
             (fun_conv-string-to-list
               (substr string (+ (strlen separator) 1 i))
               separator
               ) ;_ end of fun_conv-string-to-list
             ) ;_ end of cons
       )
      (t (list string))
      ) ;_ end of cond
    ) ;_ end of defun

  (defun fun_files-in-directory (directory pattern /)
                                ;|
*    Возвращает список файлов находящаяся в заданной
* директории
*    Автор : Зуенко Виталий (ZZZ)
*  Параметры:
*    directory  путь к папке например "D:\\Мои документы\\ZEF\\Lisp"
*    pattern    шаблон  список '("*.dwg" "*.dxf")
* Пример вызова:
|;
    (apply
      (function append)
      (append
        (mapcar
          (function
            (lambda (_pattern)
              (mapcar (function (lambda (f) (strcat directory "\\" f)))
                      (vl-directory-files directory _pattern 1)
                      ) ;_ list
              ) ;_ end of lambda
            ) ;_ end of function
          pattern
          ) ;_ mapcar
        (mapcar
          (function
            (lambda (d)
              (fun_files-in-directory
                (strcat directory "\\" d)
                pattern
                ) ;_ end of fun_files-in-directory
              ) ;_ end of lambda
            ) ;_ end of function
          (vl-remove
            "."
            (vl-remove ".."
                       (vl-directory-files directory nil -1)
                       ) ;_ end of vl-remove
            ) ;_ vl-remove
          ) ;_ mapcar
        ) ;_ append
      ) ;_ end of apply
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (not (wcmatch "explodeproxy*.arx"
                    ((lambda (/ lst)
                       (setq lst (arx)
                             lst (strcase (strcat (car lst) (apply 'strcat (mapcar '(lambda (x) (strcat x ",")) (cdr lst)))) t)
                             ) ;_ end of setq
                       ) ;_ end of lambda
                     )
                    ) ;_ end of wcmatch
           ) ;_ end of not
    (if (vl-catch-all-error-p
          (setq err
                 (vl-catch-all-apply
                   (function
                     (lambda (/ cadver file_lst)
                       (foreach file (setq cadver   (atoi (vl-string-trim "VISUALP " (strcase (ver))))
                                           file_lst (vl-remove-if-not
                                                      (function
                                                        (lambda (x)
                                                          (wcmatch (strcase (vl-filename-base x)) "EXPLODE*")
                                                          ) ;_ end of lambda
                                                        ) ;_ end of function
                                                      (apply
                                                        (function append)
                                                        (mapcar
                                                          (function
                                                            (lambda (x)
                                                              (fun_files-in-directory x '("*.arx"))
                                                              ) ;_ end of lambda
                                                            ) ;_ end of function
                                                          (fun_conv-string-to-list
                                                            (vla-get-supportpath
                                                              (vla-get-files (vla-get-preferences (vlax-get-acad-object)))
                                                              ) ;_ end of vla-get-SupportPath
                                                            ";"
                                                            ) ;_ end of fun_conv-string-to-list
                                                          ) ;_ end of mapcar
                                                        ) ;_ end of apply
                                                      ) ;_ end of vl-remove-if-not
                                           ) ;_ end of setq
                         (vl-catch-all-apply
                           (function
                             (lambda ()
                               (arxload file_lst)
                               ) ;_ end of lambda
                             ) ;_ end of function
                           ) ;_ end of vl-catch-all-apply
                         ) ;_ end of foreach
                       (vlax-for blk_def (vla-get-blocks adoc)
                         (if (equal (vla-get-isxref blk_def) :vlax-false)
                           (explodeallproxyinblock (vla-get-name blk_def))
                           ) ;_ end of if
                         ) ;_ end of vlax-for
                       (if (<= cadver 2010)
                         (command "removeallproxy")
                         (command "removeallproxy" "_y")
                         ) ;_ end of if
                       ) ;_ end of lambda
                     ) ;_ end of function
                   ) ;_ end of vl-catch-all-apply
                ) ;_ end of setq
          ) ;_ end of vl-catch-all-error-p
      (princ (strcat "Ошибка при работе с разбивкой прокси : " (vl-catch-all-error-message err)))
      ) ;_ end of if
    ) ;_ end of if
  (repeat 3 (vla-purgeall adoc))
  (vla-auditinfo adoc :vlax-true)
  (vla-purgeall adoc)
  (vlax-for app (vla-get-registeredapplications adoc)
    (vl-catch-all-apply
      (function
        (lambda ()
          (vla-delete app)
          ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Этот код я вообще не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.10.2009, 16:14
#25
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Кулик Алексей aka kpblc
Насчет вот этого не понял, поправите, если не так
Цитата:
В 2010 версии команда removeallproxy имеет немного другой формат, поэтому я там и сделал подобную проверку.
Так это относится к редактированию масштабов, а масштабы у нас появились с 2008, да и сам автор говорит http://www.caduser.ru/forum/index.ph...#message257587
так что будет уместней
(<= cadver 2007)
А так за основу взял код из поста №24 и макрос на первую кнопку из поста №16 будет такой
^C^C^P(if(not clear-dwg)(load"clear-dwg"));^P(clear-dwg);_ai_selall;_copyclip;_qnew;
переменную DEMANDLOAD наверно скриптом прикрутить к ярлыку запуска AutoCAD?
А как объединить 1 со 2 кнопкой из поста №16 + листы?
Вложения
Тип файла: lsp clear-dwg.LSP (5.3 Кб, 63 просмотров)
kheylan вне форума  
 
Непрочитано 06.10.2009, 16:25
#26
Кулик Алексей aka kpblc
Moderator

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


В 2008:
Код:
[Выделить все]
Command: removeallproxy <enter>
Command:
В 2010:
Код:
[Выделить все]
Command: removeallproxy <enter>
Очистить список масштабов [Да / Нет] <Да> _y <enter>
Command:
C формулировкой могу ошибаться, но дополнительный вопрос у меня появлялся именно на 2010 версии (сейчас она не установлена, проверить точно не могу).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.10.2009, 16:58
#27
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


В 2009 по крайней мере
Команда: removeallproxy
Очистить список масштабов? [Да/Нет] <Да>:
Но это первая чистка масштабов, основной инструмент - это
приведение списка масштаба согласно ГОСТу, спасибо автору VVA http://forum.dwg.ru/showpost.php?p=302360&postcount=75
вот файл SetScale.LSP, где внесены эти масштабы
Вложения
Тип файла: lsp SetScale.LSP (2.9 Кб, 78 просмотров)
kheylan вне форума  
 
Непрочитано 06.10.2009, 17:01
#28
Кулик Алексей aka kpblc
Moderator

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


kheylan, у меня 2009 нет. Значит, в проверке надо либо устанавливать (<= cadver 2009), либо вообще отказываться от этой штукенции и пытаться выполнить удаление прокси-объектов самостоятельно (весьма неблагодарное дело на самом деле)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.10.2009, 17:41
#29
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Кулик Алексей aka kpblc
извини за назойливость. но я всегда понимал, что
(if <текст-выражение> <выражение-тогда> [<выражение-иначе>])
(if (<= cadver 2007) (command "removeallproxy")
(command "removeallproxy" "_y")
) ;_ end of if
выражение будет выполняться для 2007,2006 и тд истина <выражение-тогда>
а 2008, 2009, 2010, если ложь <выражение-иначе>
kheylan вне форума  
 
Непрочитано 06.10.2009, 18:14
#30
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


Цитата:
Сообщение от Beginer Посмотреть сообщение
А для чего вообще в чертежах исользуют точки?
Я использовал в случах, когда надо что-то моделировать и передавать в стороннюю программу, которая требует именно точки.
Ещё у геодезистов разных специализаций (топосъемка, гоеметрия объекта) многим вспомогательным программам (или LISP'ам) надо скармливать точечные массивы. И которые отдают данные тоже в точках.
В обычной работы вместо точки, как правило, просто рисуешь (п)линию нулевой длины :)

P.s. Боярин, попроси автора перименовать-таки тему. Я думал, тут что-то вкусненькое, а тут какое-то уныние.
__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Непрочитано 06.10.2009, 20:19
#31
Кулик Алексей aka kpblc
Moderator

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


Александр Бауск, его уже 2 раза просили. Третья просьба будет уже более "жесткой": или переименовывается тема, или она закрывается через 12 часов.
kheylan, в 2008 версии запроса на восстановление списка масштабов нет. Учитывая, что в 2009 теоретически загружается такая же версия arx, что и в 2007-2008, там ожидать запроса бесполезно. Поэтому если версия AutoCAD до 2009 включительно, то выполнять explodeproxy. Если выше - с подтверждением очистки списка масштабов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.10.2009, 20:36
#32
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Более продуктивно было-бы рассказать как, например, нажатие на кнопку Линейный размер (не штатную кнопку, а самодельную) приводит к созданию стиля, пригодного для данного масштаба, слоя, в который размер устанавливается, оба становятся текущими и следует запрос, мол, давай, размерь. Потом восстанавливаются текущими то, что было до взятия команды. Как это сделать на макросах описано в книге Язык макрокоманд и создание кнопок. Но с тех пор много воды утекло. Появились аннотации. Хорошо-бы сделать подобное под них, да на лиспе. Алексей как модератор может закрыть тему, но как программист мог-бы ее и развить, в этом-ли направлении, или в подобном. Да и стоит-ли закрывать? Появится, возможно, другой автор и продолжит тему. Да и топикстартер не сказал последнего слова. Пусть считает мой пост направлением для размышления. Точки это действительно мелко для такого броского названия
Vova вне форума  
 
Автор темы   Непрочитано 06.10.2009, 21:34
#33
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Да, точки - это, конечно мелко, но это было нужно на тот момент. Но в шапке темы было написано: Предлагаю собрать здесь ссылки на команды, макросы и т.д., которые необходимы для поддержки стандарта.
Я думал народ поделится или посоветует что-нибудь!
Примерно, вот в таком стиле:
С 2008 появилась переменная SETBYLAYERMODE с помощью которой можно легко задать всем объектам свойства ПоСлою и варьировать ею задавая отдельные свойства ПоСлою. У нас свойства ПоСлою - один из постулатов стандарта.
Свойства ПоСлою
Нажмите кнопку. Свойства всех объектов будут ПоСлою
^C^C^P(setvar "setbylayermode" 127);_ai_selall;_setbylayer;;;
Цвет ПоСлою
Выберите объекты, чтобы задать Цвет ПоСлою выбранным объектам
^C^C^P(setvar "setbylayermode" 97);_select;\_setbylayer;_previous^M;;;
ТипЛинии ПоСлою
Выберите объекты, чтобы задать ТипЛинии ПоСлою выбранным объектам
^C^C^P(setvar "setbylayermode" 98);_select;\_setbylayer;_previous^M;;;
Вес ПоСлою
Выберите объекты, чтобы задать Вес ПоСлою, выбранным объектам
^C^C^P(setvar "setbylayermode" 100);_select;\_setbylayer;_previous^M;;;
Вложения
Тип файла: dwg
DWG 2007
ПоСлою.dwg (142.2 Кб, 600 просмотров)

Последний раз редактировалось kheylan, 06.10.2009 в 21:41.
kheylan вне форума  
 
Непрочитано 06.10.2009, 21:42
#34
Кулик Алексей aka kpblc
Moderator

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


kheylan, почти убедил. Но именно "почти". Самое главное: через месяц найти что-либо полезное в этой теме не сможет никто (если тема будет развиваться). И прежде всего саму эту тему никто не найдет.
В правилах, конечно, не прописано "один вопрос - одна тема", но это не зря рекомендуют. Одно дело - сносить объекты точек; другое - устанавливать параметры объектам; третье - создавать стили и т.п. Мешать все в одну кучу не есть гуд.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.10.2009, 21:53
#35
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


Vova, а зачем вообще создавать отдельный стиль под каждый масштаб? Dim scale overall исчерпывает эту проблему.

__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Непрочитано 07.10.2009, 04:20
#36
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Привожу пример из доаннотейского периода. Пусть есть несколько ВЭ с разными масштабами. Соответствующие куски модели надо заполнять внемасштабными элементами, в том числе и размерами. У нас делается так: сначала надо нажать кнопку масштаба. Скажем, 1:50. Затем все, что рисуется с кнопок нашего меню, исходит из мышки нужной величины. В том числе размеры. В проставляемый размер программа вкладывает нужный overall, при этом образуется стиль, в имя которого входит цифра 50. Образуется также слой, в имя которого входит 50. Только что образованным стилем в только что созданном слое (без всяких шаблонов и стандартов предприятия) проставляется первый и последующие размеры данного масштаба. При нажатии масштабной кнопки, допустим, 1:100 при нажатии затем разных кнопок вставки внемасштабного блока, текста, размеров, штриховок, типов линии все повторяется, образуются, если надо, новые стили и слои.
Ты предлагаешь вместо разных стилей для размеров иметь один, но много раз Style Overrides. Слои все равно надо плодить, иначе не получится отключить ненужное, если один и тот-же кусок попадает в разномасштабные ВЭ.
Так тоже можно. программа при этом не упростится, количество стилей уменьшится до одного, но пользователям стремно видеть Style overrides. Все хотят с ним бороться, не понимая сути. Много стилей не напрягают, в отличие от Style Overrides

Последний раз редактировалось Vova, 07.10.2009 в 04:38.
Vova вне форума  
 
Автор темы   Непрочитано 07.10.2009, 07:20
#37
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Наверно тему нужно было начинать с основных пунктов проверки чертежа - это текстовые и размерные стили.
Начнем с текстовых стилей и приведение их к единому.
Здесь у нас основной инструмент, хвала автору VVA
http://forum.dwg.ru/attachment.php?a...9&d=1228383759 , на базе которого создан макрос
ISO
Сначала выбираем ISO, потом выбираем стили которые будем приводить в соответствие со стилем ISO (Совет- выбрать все)
^C^C_AUDIT;_Yes;^C^C_-style;ISO;isocpeur;0;0.8;0;_N;_N;^C^C^P(if (null C:CTS)(load "ChangeTextStyles"));CTS;(cts:layer-status-save);(ru-textstyle-update "*");TSUP;TEXTSTYLE;ISO;^H
ISO - это наш стиль, ваш стиль может быть, который вашему сердцу мил. Жизнь нас заставила использовать этот инструмент, когда к нам стали приходить такие чертежи как "Невидимый текст"
Вложения
Тип файла: dwg
DWG 2007
Невидимый текст.dwg (76.0 Кб, 608 просмотров)
Тип файла: lsp ChangeTextStyles.LSP (32.2 Кб, 72 просмотров)
kheylan вне форума  
 
Непрочитано 07.10.2009, 07:39
#38
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


удалено
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 07.10.2009, 08:06
#39
Кулик Алексей aka kpblc
Moderator

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


kheylan, тебе достаточно было снять использование BigFont в описаниях стилей, а потом выполнить регенерацию. Это так, в качестве альтернативного решения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Инструменты поддержки CAD Cтандарта предприятия