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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как оптом обнулить UCS во всех файлах?

Как оптом обнулить UCS во всех файлах?

Ответ
Поиск в этой теме
Непрочитано 12.10.2006, 01:12 #1
Как оптом обнулить UCS во всех файлах?
kha
 
BIM, С#, AutoCAD, LISP
 
Дуброво
Регистрация: 15.03.2006
Сообщений: 657

Есть такой вот трабл: когда-то на заре моей профессиональной деятельности я игрался с UCS. Привело это к вот таким вот результатам:
[ATTACH]1160601175.jpg[/ATTACH]

при копировании из старого файла в новый вставляемый объект отображается не у курсора, а чёрти где. Так вот эта зараза каим-то образом перенеслась и на новые файлы. Лечится переводом UCS в "World"

Вопрос: как можно перевести значение UCS во всех моих файлах в значение "world"?
__________________
"Молодой человек, Вы не представляете всей широты поставленной перед Вами задачи." © Панкратова Г.Е.
Просмотров: 2319
 
Непрочитано 12.10.2006, 07:37
#2
T-Yoke

Артиллерист - вертолётчик. Дипломированный инженер-механик. Technologist
 
Регистрация: 29.11.2004
Где-то около Москвы
Сообщений: 16,753
Отправить сообщение для T-Yoke с помощью Skype™


Сталкивался с такой фигней, когда чужие файлы приходилось использовать. Правда до пакетной обработки не доходило, поскольку намаявшись несколько раз, стал перед использованием чужих файлов всегда проверять, начало координат, лимиты и наличие Z-координаты.
Если находил сразу убивал Z-координату, ( Flatten.lsp из папки Express ) перемещал, объект в нулевую точку и ставил лимиты по границам объекта.
Здесь придеться таким же образом! Но вот если таких файлов много!!!
Тогда сочувствую. Ничего посоветовать не могу.
T-Yoke вне форума  
 
Непрочитано 12.10.2006, 10:50
#3
VVA

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


Код:
[Выделить все]
;| Основной код взят с
  CADALYST 03/05 Tip2023: PurgeFiles.lsp	Directory Clean Up	(c) Andrzej Gumula
  [c]2004 Andrzej Gumula, Katowice, Poland
  e-mail: a.gumula@wp.pl|;
(vl-load-com)
;;;Ф-ция работы с обрабатываемым файлом
;;;curDOC - Vla указатель на обрабатываемый документ
;;; типа (vla-get-activedocument (vlax-get-acad-object))
  (defun dofile ( curDOC / xdir ydir ucss ucs)
    (setq xdir (vlax-3d-point '(1.0 0.0 0.0)))
    (setq ydir (vlax-3d-point '(0.0 1.0 0.0)))
    (setq ucss (vlax-get-property curDOC 'UserCoordinateSystems))
    (setq ucs (vlax-invoke-method ucss 'add (vlax-3d-point '(0.0 0.0 0.0)) xdir ydir "LIKE-WORLD"))
    (vla-SetVariable curDOC "UCSFOLLOW" 1)
    (vla-put-ActiveUCS curDOC ucs)
    (vlax-release-object ucss)
    (vlax-release-object ucs)
    (princ " обработан!") 
 )

(defun c:SetUCS (/ FilesList SubDir Files File)
  (defun GetFolder (/ Dir Item Path)
    (cond
      ((setq Dir (vlax-invoke (vlax-get-or-create-object "Shell.Application")
	   'browseforfolder 0 "Select folder with DWG files:" 1 ""))
       (cond
	 ((not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke-method (list Dir 'Items))))
	  (setq	Item (vlax-invoke-method (vlax-invoke-method Dir 'Items) 'Item))
	  (setq Path (vla-get-path Item))
	  (if (not (member (substr Path (strlen Path) 1) (list "/" "\\")))
	     (setq Path (strcat Path "\\"))))))) Path)
  (defun vl-findfile (Location / DirList Path AllPath)
    (MakeDirList Location)
    (setq DirList (cons Location DirList))
    (foreach Elem DirList
      (if (setq Path (vl-directory-files Elem "*.dwg"))
	(foreach Item Path
	 (setq AllPath (cons (strcat Elem "/" Item) AllPath)))))
    (reverse AllPath))
  (defun MakeDirList (Arg / TmpList)
    (setq TmpList (cddr (vl-directory-files Arg nil -1)))
    (cond (TmpList
       (setq DirList (append DirList
		   (mapcar '(lambda (z) (strcat Arg "/" z)) TmpList)))
       (foreach Item TmpList (MakeDirList (strcat Arg "/" Item))))))
  (setq *ERR-LIST* nil)
  (if (not FileSystemObject)
    (setq FileSystemObject (vla-getInterfaceObject(vlax-get-acad-object)
	  "Scripting.FileSystemObject")))
  (cond
    ((= (getvar "SDI") 0)
     (cond
       ((setq DwgPath (GetFolder))
	(initget 1 "Yes No")
	(setq Subdir (cond ((getkword "\nОбрабатывать поддиректории? [Yes/No]: "))(T "Yes")))
	(if (equal SubDir "Yes")
	 (setq Files (vl-findfile (substr DwgPath 1 (1- (strlen DwgPath)))))
	 (setq Files (mapcar '(lambda (x) (strcat dwgpath x)) (vl-directory-files DwgPath "*.dwg" 1))))
	(setq Files (mapcar 'strcase Files))
	(cond
	  (Files
	   (vlax-for & (vla-get-documents (vlax-get-acad-object))
	     (setq FilesList (cons (strcase (vla-get-fullname &)) FilesList)))
	   (foreach & Files
	     (cond
	       ((not (member & FilesList))
		(cond
		  ((/= (logand (vlax-get-property (vlax-invoke-method FileSystemObject 'getfile
			&) 'Attributes) 1) 1)
		   (cond
		     ((setq File (vla-open (vla-get-documents(vlax-get-acad-object)) &))
		      (prompt (strcat "\nОбработка файла " & ". Подождите..."))
;;;             Вызываем ф-цию работы с файлом FILE - Vla указатель на документ
		      (dofile FILE)
		      (prompt (strcat "\nSave and close " &))
		      (vla-save File)(vla-close File)
		      (vlax-release-object File))
		     (T (prompt (strcat "\nCannot open " &
			  "\nDrawing file was created by an incompatible version. ")))))
		  (T (prompt (strcat & " is read-only. Purge canceled. ")))))
	       (T (prompt (strcat & " is open now. Purge canceled. "))))))
	  (T (prompt "\nNothing files found to purge. "))))
       (T (prompt "\nNothing selected. "))))
    (T (prompt "\nThe routine is not available in SDI mode. ")))
  (princ))
(prompt "\n===   Команда загружена. Наберите SetUCS  ===")(princ)
Создается UCS c именем LIKE-WORLD идентичная МСК (WORLDUCS=1). Это связано с тем, что необходимо использовать только vla-функции

Последний раз редактировалось VVA, 19.09.2015 в 20:47.
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как оптом обнулить UCS во всех файлах?