Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизВставка изображения в 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 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.063 c