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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Решение проблемы с единицами блоков в Автокад

Решение проблемы с единицами блоков в Автокад

Ответ
Поиск в этой теме
Непрочитано 28.10.2019, 05:46
Решение проблемы с единицами блоков в Автокад
Nikilin
 
Регистрация: 28.10.2019
Сообщений: 57

Здравствуйте товарищи, столкнулся с проблемой в единицах блоков и чертежа.
В общем суть проблемы в следующем допустим есть чертеж куда необходимо вставить блоки. Параметры у данного чертежа следующие:
INSUNITS = 4 (мм)
INSUNITSDEFSOURCE = 4 (мм)
INSUNITSDEFTARGET = 4 (мм)
DIMLFAC = 1
DIMALTF = 0.0394 (метрические единицы)
настройки единиц у блоков аналогичные.
При вставки блоков в чертеж одни вставляют с масштабом в 25.4 раза больше, другие в нормальном размере.
Через свойства блок определен в мм.
Вопрос с чем это связано? если еще переменные влияющие на вставку блока в чертеж.
Блоки делал безразмерными, не помогло.
Для большей простоты понимания сути проблемы прикрепляю два блока.

Прогонял блоки и чертеж через _dwgunits везде идентичные настройки.

Вложения
Тип файла: dwg
DWG 2010
Blok_Gl.dwg (270.7 Кб, 36 просмотров)
Тип файла: dwg
DWG 2010
Возраст слоя.dwg (149.2 Кб, 26 просмотров)


Последний раз редактировалось Nikilin, 30.10.2019 в 05:26. Причина: Дополнение
Просмотров: 8563
 
Автор темы   Непрочитано 20.11.2019, 08:23
#21
Nikilin


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


Товарищи необходима помощь.
Как изменить DWGUNITS в блоках в чертеже пакетно.
Есть ли такой способ??? В общем мне не хватает знаний и понимание для решения следующие ситуации с блоками.
Суть ситуации такова: Есть чертеж, там собрано около 698 блоков различной направленность, в основном геодезических. Блоки безразмерные. Вынес пару блоков на палитру и в результате тестов оказалось что блоки вставляется в 25.4 раза больше чем надо. Думаю что в настройках блоков DWGUNITS дюймовый, но как изменить не соображу. Возможно я не прав в своих суждениях и все не так.
Есть конечно вариант выгрузить все блоки, и поменять в каждом через программки пакетно, но это слишком геморно, особенно отсортировать все это.
Настройки самого чертежа следующие:
Код:
[Выделить все]
 
Команда: _-DWGUNITS
Единицы чертежа:
  1. дюймы
  2. футы
  3. миллиметры
  4. сантиметры
  5. дециметры
  6. метры
Единицы длины <3>: 3
Форматы единиц чертежа:
  1. Научный
  2. Десятичный
Формат линейных единиц <2>: 2
Точность линейных единиц <3>: 3
Масштабировать объекты других чертежей при вставке? [Да/Нет] <Да>: да
Сопоставить INSUNITS с единицами чертежа? [Да/Нет] <Нет>: да
Команда: _INSUNITS
Новое значение INSUNITS <4>: 4
Команда: _INSUNITSDEFSOURCE
Новое значение INSUNITSDEFSOURCE <4>: 4
Команда: _INSUNITSDEFTARGET
Новое значение INSUNITSDEFTARGET <4>: 4
Команда: _DIMLFAC
Новое значение DIMLFAC <1.0000>: 1
Команда: _DIMALTF
Новое значение DIMALTF <0.0394>: 0.0394
Команда: _MEASUREMENT
Новое значение MEASUREMENT <1>: 1
Команда: _DIMALT
Новое значение DIMALT <Откл>: Откл
Команда:  DIMALT

Последний раз редактировалось Nikilin, 20.11.2019 в 08:51. Причина: Уточнение
Nikilin вне форума  
 
Непрочитано 29.11.2019, 16:19
1 | #22
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Могу только программное решение предложить (используется функция get-block-name от Lee Mac):
Код:
[Выделить все]
 (defun C:CHANGEBLOCKSUNIT ( / *error* adoc oldDYNMODE ss blck_units)
	(defun *error* (msg) 
		(if oldDYNMODE (setvar "DYNMODE" oldDYNMODE))
	)
	(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
		  oldDYNMODE (getvar "DYNMODE")
		  ss (ssget '((0 . "INSERT")))
	)
	(setvar "DYNMODE" 3)
	(initget 128)
	(setq blck_units 
		(getkword 
			(strcat 
				"["
				"0 Безразмерный/"
				"1 Дюймы/"
				"2 Футы/"
				"3 Мили/"
				"4 Миллиметры/"
				"5 Сантиметры/"
				"6 Метры/"
				"7 Километры/"
				"8 Микродюймы/"
				"9 Милы/"
				"10 Ярды/"
				"11 Ангстремы/"
				"12 Нанометры/"
				"13 Микроны/"
				"14 Дециметры/"
				"15 Декаметры/"
				"16 Гектометры/"
				"17 Гигаметры/"
				"18 Астрономические единицы/"
				"19 Световые годы/"
				"20 Парсеки"
				"]"
			)
		)
	)
	(setvar "DYNMODE" oldDYNMODE)
	(cond 
	  (	(and 
			blck_units 
			(= (type (atoi blck_units)) 'INT)
			(>= (atoi blck_units) 0)
			(<= (atoi blck_units) 20)
		)
		(repeat (setq i (sslength ss))
			(vla-put-Units 
				(vla-Item (vla-get-Blocks adoc) (get-block-name (ssname ss (setq i (1- i)))))
				(atoi blck_units)
			)
		)
		
	  )
	)
)
(defun get-block-name ( blockentity / name repbtag )
;;; (C) Lee Mac LM:EffectiveName
;;; http://www.theswamp.org/index.php?topic=37493.0
;;; http://forum.dwg.ru/showthread.php?t=65082
;;; blockname EffectiveName динамические блоки
  (if (= (type blockentity) 'VLA-OBJECT)
	(setq blockentity (vlax-vla-object->ename blockentity))
  )
  (if (wcmatch (setq name (cdr (assoc 2 (entget blockentity)))) "`**")
    (if
      (and
        (setq repbtag
          (cdadr
            (assoc -3
              (entget
                (cdr
                  (assoc 330
                    (entget (tblobjname "BLOCK" name))
                  )
                )
               '("AcDbBlockRepBTag")
              )
            )
          )
        )
        (setq repbtag (handent (cdr (assoc 1005 repbtag))))
      )
      (setq name (cdr (assoc 2 (entget repbtag))))
    )
  )
  name
)
(princ "\nC:CHANGEBLOCKSUNIT")
(princ)
При вызове команды последует запрос выбора объектов, затем запрос выбора нужных единиц. Среди всех выбранных рамкой объектов выберутся только блоки, и при нажатии Enter/правой кнопки мыши их единицы преобразуются в выбранные.

Если нужно во всем чертеже без выбора рамкой, то строку
Код:
[Выделить все]
		  ss (ssget '((0 . "INSERT")))
нужно заменить на строку
Код:
[Выделить все]
		  ss (ssget "_X" '((0 . "INSERT")))
Ненужные единицы (парсеки там всякие) можно удалить из кода, но номера менять нельзя - они соответствуют номеру переменной, которая отвечает за единицы.
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Решение проблемы с единицами блоков в Автокад

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lira. помогите решить проблему с нереалными единицами измерения в результатах расчета. перемещения более 500м radik pgs Лира / Лира-САПР 5 14.06.2017 13:36
Странный выбор блоков рамкой в Автокад 2014 VAV AutoCAD 9 04.06.2015 10:14
Влияет ли разрядность операционной системы и АвтоКАДа на допустимые имена блоков и на их редактирование? Archeo AutoCAD 38 14.08.2013 15:29
автокад 2004 проблемы с тонированием гореавтокадчик AutoCAD 2 11.01.2007 18:59