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

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

Масштабирование одинаковых примитивов

Ответ
Поиск в этой теме
Непрочитано 02.06.2020, 17:34 #1
Масштабирование одинаковых примитивов
merkur1y
 
дороги
 
СПб
Регистрация: 12.07.2019
Сообщений: 134

довольно частая задача наверняка
необходимо привести в необходимый масштаб условный знак
каждый объект является просто примитивом - полилинией
надо относительно вершины (вершины угла) данного условного знака (уклон) уменьшить в два раза
был бы блок - всё просто, как действовать с примитивом?

Вложения
Тип файла: dwg
DWG 2010
масштабирование одинаковых примитивов.dwg (348.5 Кб, 11 просмотров)

Просмотров: 1383
 
Непрочитано 02.06.2020, 18:56
1 | 1 #2
skkkk


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


Только программно. Но тут, можно сказать, универсальных решений нет - каждый случай уникален. Именно для полилиний из примера базовая точка - вторая вершина - суть параметр кривой со значением 1 (0 - первая вершина, 1 - вторая и т.д.). Далее всё просто: определяем в цикле у каждой полилинии координаты второй вершины и масштабируем. Главное - не ошибиться в выборе примитивов, а то такого можно намасштабировать!)
Код:
[Выделить все]
 (defun C:SCALE_PL ( / ss scl i en pt) 
	(setq ss (ssget '((0 . "LWPOLYLINE"))))
	(if ss (setq scl (getreal "Масштабный коэффициент: ")))
	(if (and ss scl)
		(repeat (setq i (sslength ss))
			(setq en (ssname ss (setq i (1- i)))
				  pt (vlax-curve-getPointAtParam en 1)
				  
			)
			(if (and en pt) (vla-ScaleEntity (vlax-ename->vla-object en) (vlax-3D-point pt) scl))
		)
	)
)

Последний раз редактировалось skkkk, 02.06.2020 в 21:29.
skkkk вне форума  
 
Автор темы   Непрочитано 02.06.2020, 19:37
#3
merkur1y

дороги
 
Регистрация: 12.07.2019
СПб
Сообщений: 134


благодарю! волшебно просто ))
merkur1y вне форума  
 
Непрочитано 02.06.2020, 19:42
1 | #4
skkkk


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


Offtop:
Цитата:
Сообщение от skkkk Посмотреть сообщение
Последний раз редактировалось Кулик Алексей aka kpblc
Алексей, а чего, прикольно же было, если в названии тэга More написать пробел. Получился такой себе код Шредингера: и есть, и нет его . Тем более, что тема в разделе Автокад.


Предлагаю тему перенести в "Программирование" и подобные вопросы можно будет решать тут.
До кучи у меня есть лисп (из библиотеки "одноразовых"), который масштабирует по схожему принципу окружности (относительно их центров) и тексты, если они есть внутри окружностей:
Код:
[Выделить все]
 (defun scale_crcles&texts ( / ss i en vl pt ptBottomLeft ptTopRight ss1)
	(setq ss (ssget '((0 . "CIRCLE"))))
	(vl-cmdf "_.ZOOM" "_A")
	(repeat (setq i (sslength ss))
		(setq en (ssname ss (setq i (1- i))))
		(setq vl (vlax-ename->vla-object en))
		(setq pt (vlax-safearray->list (vlax-variant-value (vla-get-Center vl))))
		(vla-GetBoundingBox vl 'minp 'maxp)
		(setq ptBottomLeft (trans (vlax-safearray->list minp) 1 0))
		(setq ptTopRight (trans (vlax-safearray->list maxp) 1 0))
		(setq ss1 (ssget "_C" ptBottomLeft ptTopRight '((0 . "CIRCLE,*TEXT"))))
		(vl-cmdf "_scale" ss1 "" "_none" pt 0.5)
	)
	(vl-cmdf "_.ZOOM" "_P")
)

Последний раз редактировалось skkkk, 02.06.2020 в 22:17.
skkkk вне форума  
 
Непрочитано 02.06.2020, 21:05
1 | #5
Кулик Алексей aka kpblc
Moderator

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


И кто мешает использовать vla-ScaleEntity?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.06.2020, 22:16
1 | #6
skkkk


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


Кто-кто? Лень! Намекаешь на грабли? Согласен. В первом коде применил vla-ScaleEntity, а во втором поленился и схитрил
skkkk вне форума  
 
Автор темы   Непрочитано 03.06.2020, 13:17
#7
merkur1y

дороги
 
Регистрация: 12.07.2019
СПб
Сообщений: 134


код с окружностями может и понадобится когда-нибудь
но с ними проще обращаться, т.к. в моём конкретном случае на геологических разрезах все окружности создаются расчётной программой с одинаковыми радиусами, поэтому "масштабирование" происходит через их изменение...
но всё равно спасибо =)
merkur1y вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Масштабирование одинаковых примитивов

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP / Быстрый выбор примитивов по образцу TararykovDG LISP 18 21.01.2021 12:35
Преобразование одинаковых груп примитивов в блок casaatik Динамические блоки 11 27.01.2015 22:45
LISP / AutoCAD2008 / Как программно снять выделение у примитивов, не используя sssetfirst TararykovDG LISP 7 14.01.2011 10:48
LISP для поиска групп (наборов) одинаковых примитивов и замена их блоком ElectroBOG LISP 20 23.07.2010 16:00
Как создать массив для группы примитивов в Bricscad? Tonic Программирование 8 19.12.2007 09:22