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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как масштабировать картинку без её известных изначальных размеров?

Как масштабировать картинку без её известных изначальных размеров?

Ответ
Поиск в этой теме
Непрочитано 01.08.2019, 03:26 #1
Как масштабировать картинку без её известных изначальных размеров?
Raven_guard
 
Регистрация: 01.08.2019
Сообщений: 15

Здравствуйте!
Имеется следующая задача.
1. В Google-карте выбирается участок (квадрат/прямоугольник/etc) с размерами n x m.
2. В автокаде рисуется участок с размерами n x m, перенесёнными в масштабе (к примеру, 1:500).
3. Картинка вставляется в автокад в виде OLE-объекта или в другом формате.
4. Квадрат на картинке совмещается с нарисованным квадратом в автокаде за счет увеличения основного перенесённого изображения (масштабируем подложку, чтобы квадрат на подложке совпал с квадратом в автокаде).

Вопрос в том, как это можно реализовать с помощью лиспа. Мне известно, как ввести размеры и построить по ним прямоугольник. Но вот как совместить квадрат на картинке с квадратом-объектом на рабочем поле - загадка. Первое, что приходит на ум - отметить одну из сторон квадрата на рисунке двумя точками, построить между ними отрезок. Затем соединить в один блок эту картинку/подложку с отрезком, совместить отрезок с квадратом-объектом одной общей точкой и изменить размер отрезка под размер стороны квадрата так, чтобы вместе с размером отрезка изменилась и картинка, получив соответствующий масштаб. Возможность проверки такого варианта упирается в моё незнание команд лиспа.

Реальна ли предложенная мной схема, сталкивался ли кто-либо с подобной задачей, знает ли кто-то команды, подходящие под предложенную задачу?
Заранее спасибо.
Просмотров: 2586
 
Непрочитано 01.08.2019, 08:18
#2
Alex.gomel


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


_.align
Alex.gomel вне форума  
 
Непрочитано 01.08.2019, 08:26
#3
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Зачем? В SAS.Planet сохраняем растр с привязкой и вставляем его в AutoCAD Map 3D

Цитата:
Картинка вставляется в автокад в виде OLE-объекта
facepalm
так точно ничего не получится!

Цитата:
перенесёнными в масштабе (к примеру, 1:500)
так делать нельзя!!! Рисуем всегда 1:1!
trir вне форума  
 
Непрочитано 01.08.2019, 09:11
#4
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


масштабирование ole по ширине квадрата (полилиния<-команда rect) и перенос ole в нижний левый угол квадрата.
Код:
[Выделить все]
 
(defun c:OLE_to_Rectangle ()
	(vl-load-com)
	(setq
		  image_to_Fit (vlax-ename->vla-object (cdar (entget(car(entsel "Select Image to fit to Rectangle")))))
		  rect_to_Match (vlax-ename->vla-object (cdar (entget (car (entsel "Select Rectangle to match to")))))
		  rect_Coordinates (vlax-get rect_to_Match 'Coordinates)
		  ll_X (min (nth 0 rect_Coordinates) (nth 2 rect_Coordinates) (nth 4 rect_Coordinates) (nth 6 rect_Coordinates))
		  ll_Y (min (nth 1 rect_Coordinates) (nth 3 rect_Coordinates) (nth 5 rect_Coordinates) (nth 7 rect_Coordinates))
		  ur_X (max (nth 0 rect_Coordinates) (nth 2 rect_Coordinates) (nth 4 rect_Coordinates) (nth 6 rect_Coordinates))
		  ur_Y (max (nth 1 rect_Coordinates) (nth 3 rect_Coordinates) (nth 5 rect_Coordinates) (nth 7 rect_Coordinates))
		  rect_width (- ur_X ll_X)
	)
	(vla-put-width image_to_Fit rect_width)
	(vla-put-insertionpoint image_to_Fit (vlax-3d-point ll_X ll_Y))
	(command "_draworder" (vlax-vla-object->ename image_to_Fit) "" "b")
	(princ)
)
koMon вне форума  
 
Непрочитано 01.08.2019, 09:22
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


koMon, вот этот код сначала на lisp переведи - а потом я попробую объяснить, почему "квадратная" картинка станет трапецией...
и почитай ГОСТ 32453-2013
trir вне форума  
 
Непрочитано 01.08.2019, 09:23
#6
Нюк

ЖД
 
Регистрация: 18.04.2013
Сообщений: 200


1. SASplanet решает эти вопросы гораздо лучше
2. OLE не возможно повернуть и он имеет свойство обваливаться (открываешь очередной раз или на другой машине - OLE объект есть но не одержит данных. Лучше внешней ссылкой
Нюк вне форума  
 
Непрочитано 01.08.2019, 09:25
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
Лучше внешней ссылкой
на самом деле - лучше через FDO
trir вне форума  
 
Непрочитано 01.08.2019, 11:26
#8
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от Raven_guard Посмотреть сообщение
2. В автокаде рисуется участок с размерами n x m
а система координат какая? условная или референцная?
Vov.Ka вне форума  
 
Непрочитано 01.08.2019, 20:04
#9
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Trir, я совершенно не против, что предложенный мной вариант не пригодится автору. И поскольку мы тут не кандидатскую защищаем и ты сб не председатель совета, относись проще к чужому, возможно и неправильном совету/решению)

----- добавлено через ~12 мин. -----
Да и кстати, подобныей вопрос уже обсуждался, видимо в автокаде, скорее всего и ты там участвовал. И там доходчиво все изъяснялись. Возможно автору стоит сходить туда. Что касаемо лиспа, чисто теоретически всё же можно при получении определённых данных вычислять масштабный коэффициент для оле и использовать его для дальнейшей так сказать работы. IMHO.

Последний раз редактировалось koMon, 01.08.2019 в 20:17.
koMon вне форума  
 
Непрочитано 01.08.2019, 21:27
#10
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
всё же можно при получении определённых данных вычислять масштабный коэффициент для оле
никто с этим не спорит с этим кажется и _.align справляется, только толку от этого нет

на самом деле есть старый fas для импорта растров с привязкой, только он СК не пересчитывает - но при желании и это можно реализовать, код я привёл...
не то, но подобное https://www.cadstudio.cz/georefimg
то http://geodesist.ru/threads/podgruzk...33/#post-68392

в принципе proj есть и на lisp'е
https://github.com/lisp-mirror/cl-proj
https://github.com/trebb/phoros/blob.../proj4-sh.lisp

Последний раз редактировалось trir, 01.08.2019 в 21:41.
trir вне форума  
 
Автор темы   Непрочитано 04.08.2019, 10:26
#11
Raven_guard


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


Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
а система координат какая? условная или референцная?
Условная
Raven_guard вне форума  
 
Непрочитано 07.08.2019, 23:17
#12
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от Raven_guard Посмотреть сообщение
Условная
жаль
если используется какая-либо широко распространенная референцная СК, то можно автоматически загрузить растр из онлайн карт-сервисов в чертеж
Vov.Ka вне форума  
 
Непрочитано 08.08.2019, 07:08
#13
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Цитата:
Условная
Так ещё кто то делает?
Нафиг она такая нужна??
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как масштабировать картинку без её известных изначальных размеров?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение размеров анкерной плитки в базах колонны vlasctelin Металлические конструкции 6 11.07.2016 16:47
Какие свойства размеров чаще всего задаются пользователями? АлексЮстасу AutoCAD 11 18.02.2015 03:22
Значения размеров нанесенных поверх видового экрана меняют свой масштаб Jenec AutoCAD 3 02.10.2014 11:17
Как масштабировать 3D объекты тела, чтобы подогнать их по вертикале под размер 103 mm. По X и Z изменения не важны. Тима777 AutoCAD 7 25.07.2014 10:53
программное создание размеров в dxf файле _Oleg_ Программирование 4 01.02.2011 16:36