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

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

Помогите, нужен макрос масштабирования размеров

Ответ
Поиск в этой теме
Непрочитано 31.07.2012, 08:59 #1
Помогите, нужен макрос масштабирования размеров
Малявка
 
Егорьевск Моск.обл.
Регистрация: 28.02.2007
Сообщений: 206

Здравствуйте! В прилагаемом примере три образмеренных квадрата. На левом квадрате - исходные размеры. Допустим, шеф дал указание увеличить значения на размерах (для лучшей читабельности). В панели свойств изменение глобального масштаба размеров в итоге даёт средний квадрат. Значения "съезжают" на границы квадрата. Помогите с макросом, чтобы выносные линии тоже удлиннялись на величину масштабирования, как на правом квадрате. (или, наоборот, укорачивались, если уменьшаю глобальный масштаб).
Предполагаю такой алгоритм:
- выделяю все размеры (рамкой или qselect)
- указываю коэффициент масштабирования в ком. строке
- макрос сканирует поочерёдно каждый размер, запоминает его начальную и конечную точки (в моём примере на углах квадрата)
- макрос изменяет размер (аналог scale), беря за базовую точку начальную точку размера. При этом конечная точка размера занимает новое положение и меняется значение размера.
- макрос изменяет размер (глобальный масштаб). При этом изменяется высота текста размера.
- макрос протягивает конечную точку из нового положения в прежнее, на угол квадрата. При этом восстанавливается правильное значение размера.
- макрос переходит к обработке следующего размера.
Спасибо.
p.s. Работаю в AutoCAD 2008 rus. Мне нужны лишь повёрнутые и параллельные размеры.
p.p.s мне это надо потому, что такие команды от шефа поступают, как правило, когда все фундаменты уже образмерены, и он просматривает готовый чертёж.

Вложения
Тип файла: dwg
DWG 2007
Пример.dwg (147.0 Кб, 1316 просмотров)


Последний раз редактировалось Малявка, 31.07.2012 в 09:14.
Просмотров: 6161
 
Непрочитано 31.07.2012, 09:10
#2
Lymus

разбираюсь
 
Регистрация: 20.03.2008
Москва
Сообщений: 437
<phrase 1= Отправить сообщение для Lymus с помощью Skype™


Сделайте свой собственный размерный стиль, высота текста гостирована, для читабельности высоты в 3мм хватает за глаза, ну и изначально выбирайте читабельный масштаб.
__________________
:read:
Lymus вне форума  
 
Автор темы   Непрочитано 31.07.2012, 09:21
#3
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Фишка в том, что это не проекты, а исполнительные схемы, в них гораздо меньше ГОСТовских ограничений. Мы делаем их даже не в масштабе, отчего и весь сыр-бор: когда-то надо сделать на А4, а когда то же самое - на А3. Только уже с меньшими масштабами. И потом, шефу не прикажешь: сказал, сделать так, ну и делаешь. А бывает, что сама прозеваю: образмерю почти весь чертёж, а в конце работы обнаружу, что надо в одном месте поставить несколько ма-а-а-сеньких размеров. Приходится все уже проставленные редактировать.

Последний раз редактировалось Малявка, 31.07.2012 в 09:22. Причина: исправление грамматики
Малявка вне форума  
 
Непрочитано 31.07.2012, 09:53
#4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Поиск по словам "аннотативность", "аннотативные размеры" поможет. В 2008 эта фишка уже есть.
kp+ вне форума  
 
Непрочитано 31.07.2012, 10:11
#5
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Малявка, действительно, аннотативность поможет, но не с линиями размеров. Вот для этих целей попробуй:
Код:
[Выделить все]
 (defun c:dimlinescale  (/ k eget c10 c14 rasst)
  (setq eget  (entget (car (entsel)))
	k (getreal "\nВведите коэф-т масштабирования: ")
	c10   (cdr (assoc 10 eget))
	c14   (cdr (assoc 14 eget))
	rasst (distance c10 c14))
  (entmod (subst (cons 10 (polar c14 (angle c14 c10) (* k rasst))) (assoc 10 eget) eget))
  )
5hev вне форума  
 
Автор темы   Непрочитано 31.07.2012, 10:20
#6
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


kp+, ой, каак я не люблю аннотации!!! Понимаю, что это потому, что не умею, но разобраться не могу. (блондинка, наверное)
5hev[ru], спасибо, выносные линии масштабируются как надо. Осталось ещё "прикрутить" фишку, чтобы и само значение размера меняло высоту согласно коэффициенту масштабирования.
Ну, в принципе, я смогу высоту текста менять в окне свойств (глобальный масштаб)
__________

А можно сделать так, чтобы выделять все размеры рамкой, а то макрос принимает только один размер к обработке.
Причём, чтобы выделять рамкой вообще все примитивы стадом, а макрос бы реагированл только на размеры.

Последний раз редактировалось Малявка, 31.07.2012 в 10:31.
Малявка вне форума  
 
Непрочитано 31.07.2012, 10:32
#7
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Цитата:
Сообщение от Малявка Посмотреть сообщение
А можно сделать так, чтобы выделять все размеры рамкой, а то макрос принимает только один размер к обработке.
Причём, чтобы выделять рамкой вообще все примитивы стадом, а макрос бы реагированл только на размеры.
Можно
5hev вне форума  
 
Автор темы   Непрочитано 31.07.2012, 10:38
#8
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


5hev[ru], типа, юмор...
Малявка вне форума  
 
Непрочитано 31.07.2012, 10:57
#9
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Малявка, угу
Код:
[Выделить все]
 (vl-load-com)
(defun c:dimlinescale  (/ k ss sname eget c10 c14 rasst)
  (setq	ss (ssget '((0 . "DIMENSION")))
	k  (getreal "\nВведите коэф-т масштабирования: "))
  (while (setq sname (ssname ss 0))
    (if	(wcmatch (vla-get-ObjectName (vlax-ename->vla-object sname))
		 "*Aligned*,*Rotated*")
      (progn
	(setq eget  (entget sname)
	      c10   (cdr (assoc 10 eget))
	      c14   (cdr (assoc 14 eget))
	      rasst (distance c10 c14))
	(entmod	(subst (cons 10 (polar c14 (angle c14 c10) (* k rasst)))
		       (assoc 10 eget)
		       eget))
	)
      )
    (ssdel sname ss)
    )
  )
5hev вне форума  
 
Автор темы   Непрочитано 31.07.2012, 11:03
#10
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


5hev[ru], И-и-и-и-и-и-и !!!! Типа визжу от восторга. Спасибо большое! Чмоки тя в разные приятные места.
(а нельзя, чтобы и значения меняли свою высоту и отступ от размерной линии? Ну, как "глобальный масштаб" в свойствах)
Малявка вне форума  
 
Непрочитано 31.07.2012, 11:09
#11
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Малявка, можно... Так?
Код:
[Выделить все]
  (vl-load-com)
(defun c:dimlinescale  (/ k ss sname vlname eget c10 c14 rasst)
  (setq	ss (ssget '((0 . "DIMENSION")))
	k  (getreal "\nВведите коэф-т масштабирования: "))
  (while (setq sname (ssname ss 0))
    (if	(wcmatch (vla-get-ObjectName (setq vlname (vlax-ename->vla-object sname)))
		 "*Aligned*,*Rotated*")
      (progn
	(setq eget  (entget sname)
	      c10   (cdr (assoc 10 eget))
	      c14   (cdr (assoc 14 eget))
	      rasst (distance c10 c14))
	(entmod	(subst (cons 10 (polar c14 (angle c14 c10) (* k rasst)))
		       (assoc 10 eget)
		       eget))
	(vla-put-ScaleFactor vlname (* k (vla-get-ScaleFactor vlname)))
	)
      )
    (ssdel sname ss)
    )
  )
5hev вне форума  
 
Автор темы   Непрочитано 31.07.2012, 11:17
#12
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


5hev[ru], Всё! Можно считать, что день удался! Огромное спасибо на лиспик.
Не в качестве наглости, но в качестве бонуса (а вдруг понадобится?) - добавь, пожалуйста, такую же обработку и на размеры радиуса и диаметра. Хотя я ими пользуюсь редко и, в принципе, могу обработать и "ручками".
Ещё раз спасибо!
Малявка вне форума  
 
Непрочитано 31.07.2012, 12:57
#13
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


на вкладке Fit в конкретном стиле есть поле для ввода масштаба и у каждого конкретного размера можно менять его "Dim scale overall" - масштабирует все элементы размера. Как это переводится в локализованном автокаде - не знаю

Последний раз редактировалось bargool, 31.07.2012 в 13:34. Причина: Протупил с DIMSCALE
bargool вне форума  
 
Непрочитано 31.07.2012, 14:40
#14
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


bargool, да, но проблема была с линиями-выносками, которые не удлиняются судя по моему опыту, при смене масштаба аннотаций (выделил жирным). Если есть решение без лиспа - буду только рад!
5hev вне форума  
 
Непрочитано 31.07.2012, 16:51
#15
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


разбирайтесь, что у вас не так. образмерил прямоугольник размерами со стандартным стилем. скопировал и у правых размеров выставил "Dim scale overall" в свойствах в 3. Отмасштабировались все элементы размера, см. приложение. Такой же эффект будет и изменении этого значения у стиля.
Миниатюры
Нажмите на изображение для увеличения
Название: dimensions.JPG
Просмотров: 59
Размер:	41.0 Кб
ID:	84747  
bargool вне форума  
 
Непрочитано 31.07.2012, 17:32
#16
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


bargool, однако расстояние от опорных точек выносных линий размеров до точки касания стрелками выносных линий то же!
5hev вне форума  
 
Непрочитано 31.07.2012, 17:34
#17
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


это да. но бесконтрольно увеличивать это расстояние я бы не стал - может куда не надо наехать и проч.
bargool вне форума  
 
Автор темы   Непрочитано 31.07.2012, 19:08
#18
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Народ, не спорьте! Я получила симпатичный макросик, он меня очень даже устраивает. Может быть, в общем случае и с точки зрения программиста, он и сыроват где-нибудь, но для моих частных целей - самое то!
Малявка вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помогите, нужен макрос масштабирования размеров

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен макрос для AutoCAD, экспортирующий список деталей в текстовый файл technos Программирование 20 24.10.2015 18:11
помогите написать макрос на сочетание Ctrl+ буковка ssn AutoCAD 31 04.06.2009 01:53
Помогите сделать макрос для автокада Sky_cool Программирование 8 17.01.2009 03:04
Нужен макрос (поворот на 90 предварительно выделенного) dextron3 Программирование 20 10.07.2007 21:36
координаты Excel->_line x,y x,y для Acad. нужен макрос на VictorSM Программирование 9 22.01.2006 18:41