Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

Вставка изображения в AutoCad   Найти похожие ветки 

 
DimMih ©   (2005-08-15 11:54) [0]

Процедура рисует таблицу заданных размеров и записывает её в MetaFile. Когда вставляю MetaFile в AutoCad, размеры таблицы отличаются от заданных. Не могу понять почему так. Помогите разобраться


 
DimMih ©   (2005-08-15 13:27) [1]

"Спасибо за помощь....."


 
GLFox ©   (2005-08-15 13:47) [2]

Если работаешь через OLE и вставляешь при помощи метода Import, то проверь параметр ScaleFactor. Да и после вызова этого метода получаешь ссылку на BlockReference, размеры которого можешь подправить сам.


 
DimMih ©   (2005-08-15 15:14) [3]

Всё гораздо проще. Я работаю не через OLE. Процедура создаёт MetaFile, потом этот MetaFile я отправляю в буфер обмена, а в  AutoCad-е я вставляю "Специальной вставкой"


 
k2 ©   (2005-08-16 06:28) [4]

1)при вставке "специальной вставкой" выберите формат "растровое изображение", тогда сможете управлять масштабом через редактор свойств в том числе;
2)есть какие-то веские причины метафайл отправлять в буфер обмена и проч., если автокад нормально принимает метафайлы через вставка->wmf... ? в итоге получится ссылка на блок опять таки с масштабом;
3)если таки нужно вставлять через "специальную вставку" в формате изображение(метафайл): стандартный редактор свойств никаких данных о вставленном объекте не показывает
после вставки выберите объект,по правой кнопке в контекстном меню выберите "свойства" и установите нужный масштаб(или через olescale в командной строке).

За вставку первыми двумя методами то, што вставляемое изображение можно масштабировать в соответствующих единицах измерения:
средства->формат->единицы.
удачи
<offtopic>а расстраиваться што никто не отвечает не надо,все тоже самое вы могли и в справке прочитать,благо у автокада она хорошая русифицированная,
правда именно этот раздел у меня по-аглицки, но у меня достаточно старенькая</offtopic>


 
DimMih ©   (2005-08-16 10:21) [5]

Уважаемый k2, что касается первого пункта, то если я вставляю как растровое изображение, то при распечатке появляется фон, поэтому этот вариант не подходит.
Веских причин отпарвлять метафайл в буфер обмена нет. Дело в том, что "вставка->wmf" да и "специальная вставка->AutoCad Entities" работает, но изображение вставляется не в истинном размере. Смасштабировать его я могу, но мне нужно избежать ручного масштабирования, чтобы сэкономить время на вычисление коэффициента масштаба и собственно самой операции.


 
k2 ©   (2005-08-16 10:49) [6]

Уважаемый DimMih, было бы хорошо выложить пример wmf файла (небольшой), куда-нибудь на www.webfile.ru например и какие размеры должны быть, может што и найдем, умозрительно сложно рассуждать


 
DimMih ©   (2005-08-16 11:11) [7]

Файл найдёте по адресу http://www.webfile.ru/461367 Ширина таблицы должна быть 185mm


 
k2 ©   (2005-08-16 13:08) [8]

to DimMih ©   (16.08.05 11:11) [7]
К сожалению порадовать нечем, кроме как заниматься поиском коэффициента масштабирования никак решить не удалось, метафайлы искажаются :( Автодеск впрочем и не скрывает этого, и предлагает следующее решение:
"Для связывания и внедрения данных из других приложений через буфер обмена в рисунок AutoCAD используется команда ВСТСПЕЦ. При этом, если данные буфера обмена можно преобразовать в формат AutoCADто объекты вставляются в виде вхождений блоков. Для редактирования вставленных таким образом блоков следует расчленить их в местах вхождений на отдельные объекты. Во время преобразования графики, хранимой в буфере обмена, из формата метафайла Windows в формат AutoCAD может произойти некоторая потеря точности масштабирования. Для избежания этого недостатка объекты из буфера обмена следует сохранять в виде блока в отдельном рисунке (ПБЛОК), а затем вставлять их в AutoCAD с помощью команды ВСТАВИТЬ."
К сожалению у меня и таким образом ничего не вышло :(
ещё думаю стоит поспрошать на специализированных сайтах, автокад.ру, кто-то может добился
удачи


 
dimmih ©   (2005-08-16 13:36) [9]

Спасибо за информацию.  На автокад.ру пока тоже не дали ответа...
Я думаю эту тему можно закрыть.


 
k2 ©   (2005-08-17 08:04) [10]

Можно и закрыть :) хотя через оле это настолько легко решаемо:

...
uses
 comobj, AutoCAD_TLB;
...
procedure TForm1.Button1Click(Sender: TObject);
var
 acad: IAcadApplication;
 doc: IAcadDocument;
 ent: IAcadEntity;
 i: integer;
 p1, p2: OleVariant;
 dist, need_width, scale: Double;
begin
 need_width := 185;
 acad := GetActiveOleObject("AutoCAD.Application")as IAcadApplication;
 doc := acad.ActiveDocument;
 doc.Import("c:\specyfic.wmf", VarArrayCreate([0, 2], varDouble), 1);
 ent := doc.ModelSpace.Item(pred(doc.ModelSpace.Count));
 ent.GetBoundingBox(p1, p2);
 dist := p2[0] - p1[0];
 scale := need_width / dist;
 ent.ScaleEntity(p1, scale);
 acad.Update;
 {Memo1.Lines.Add(IntToStr(doc.ModelSpace.Count));
 for i := 0 to pred(doc.ModelSpace.Count) do begin
   Memo1.Lines.Add("***");
   Memo1.Lines.Add(doc.ModelSpace.Item(i).EntityName);
   ent := doc.ModelSpace.Item(i);
   ent.GetBoundingBox(p1, p2);
   Memo1.Lines.Add(IntToStr(p1[0])+""+IntToStr(p1[1]));
   Memo1.Lines.Add(IntToStr(p2[0])+""+IntToStr(p2[1]));
 end;  
 }
end;


в акаде создать кнопочку для вставки метафайлов через свою процедуру, подключить примерно так:
^C^C(startapp "c:/MyProjects/MyProgramName.exe")

расширить свою формочку: добавить диалог для выбора файла, добавить ввод параметра необходимой ширины объекта, соответственно переписать обработчик, вот и все


 
DimMih ©   (2005-08-18 11:18) [11]

Попробовал процедуру - вставка работает, но всё равно нужную ширину не выдаёт


 
k2 ©   (2005-08-18 11:42) [12]

ээ стрянно :((( я пробовала с вашим файлом все нормально было :(((( вообще не масштабируется или неточно?


 
DimMih ©   (2005-08-18 11:52) [13]

Масштабируется, но не точно....


 
k2 ©   (2005-08-18 12:32) [14]

в коэффициенте масштабирования тут ошибиться трудно, я проверяла с вашим файлом, а насколько неточно?

Ещё один вариант решения: если вид всех спецификаций один и тот же, было бы правильнее начертить точный шаблон в автокаде, а из вашей программы через оле заполнять вашими данными


 
DimMih ©   (2005-08-18 13:00) [15]

Не могу понять???? Вставлял разные файлы. В некоторых ширина была 183..185, что меня устраивало, а некоторые 164, 176... Только что дошло. Дело в том, что в некоторых спецификациях текст в поле "Примечание" выходит за границы таблицы => коорд. р2 принимает некорректное значение =>ширина 185 - это ширина вместе с текстом, выходящим за границы таблицы. Так что процедура работает правильно и коэффициент вычисл. тоже правильно....


 
k2 ©   (2005-08-18 13:10) [16]

ура :)
и все-таки последний предложенный вариант более предпочтителен, в том числе и тем, што шаблон в акаде будет точным, плюс будут соблюдены всякие требования вроде толщины линий или формата шрифта
вот теперь с чистой совестью можно тему закрыть :) удачи


 
DimMih ©   (2005-08-18 13:20) [17]

Спасибо за помощь. А теперь дело техники.



Страницы: 1 вся ветка

Форум: "Corba";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.056 c
6-1147857716
alb67
2006-05-17 13:21
2006.10.08
Ошибка при пинге


15-1158209832
cyborg
2006-09-14 08:57
2006.10.08
линейки памяти DDR3


1-1156160268
alexaken
2006-08-21 15:37
2006.10.08
Компонент меню как в Office 2003 для BDS 2006 VCL


5-1140704344
AlexF
2006-02-23 17:19
2006.10.08
Поиграем с PageCjontrol


2-1159118001
Gloomer
2006-09-24 21:13
2006.10.08
Доступ к файлу, занятому другим процессом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский