Как вставить картинку в автокад чтобы она не исчезала на другом компьютере
← →
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 в командной строке).
За вставку первыми двумя методами то, што вставляемое изображение можно масштабировать в соответствующих единицах измерения:
средства->формат->единицы.
удачи
правда именно этот раздел у меня по-аглицки, но у меня достаточно старенькая
← →
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;
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]
Спасибо за помощь. А теперь дело техники.
Скачать с ютуб Как вставить картинку (изображение) в Автокад
В этом видео Максим Фартусов (https://vk.com/maksimfartusov) — создатель сайта AutoCAD-просто.ру (http://autocad-prosto.ru) — показывает, как вставлять картинки в Автокад и затем их редактировать.
Из видео Вы узнаете:
— Как вставить изображение в Автокад
— Как затемнить фон картинки
— Как повернуть изображение в Автокаде
— как убрать рамку (контур) картинки в Автокаде
— как подрезать картинку, вставленную в Автокад
— как сделать, чтобы картинка никогда не пропала
Официальный канал образовательного проекта AutoCAD-Просто.ру (Видео обучение AutoCAD), создателем которого является Максим Фартусов.
Этот канал создан для того, чтобы сделать обучение программе Автокад доступным и понятным для каждого желающего научиться чертить.
Наши курсы и видео уроки AutoCAD наглядно и без лишней воды научат Вас проектировать. Без самоучителей и книг, самостоятельно Вы добьетесь результата!
Другие бесплатные уроки в Автокаде
Чтобы справиться с данной задачей, достаточно произвести следующие простые действия. — Выделяем блок и вводим в командную строку.
— Может не работать по причине отключения режима предварительного выбора. Чтобы его включить – зайдите в OPTIONS, далее выберите свиток Selection и в разделе.
Расширение DWG — это бинарный формат являющимся основным для сохранения информации для систем автоматизированного проектирования (САПР).
F3 – включить/выключить объектную привязку; F8 — включить/выключить ортогональную привязку; F10 — включить/выключить полярную привязку.
Решение
Wolfhound234, ситуация следующая:
в файлах «Схематический план» и «двухнитка» чертежи начерчены с помощью блоков (поиск: работа с блоками в автокаде)
Блоки в разных файлах имеют одинаковые имена, но содержимое блоков разное.
Одних только блоков с названием вида BLOCK_000000 в чертеже около 1000 шт. (BLOCK_000000-BLOCK_000979), и 600 штук из них имеют дубликат во втором файле.
Когда вы копируете блок например с именем BLOCK_000333 в файл «Лист 1» из «Схематический план», то блок выглядит как в «Схематическом плане». Когда вы содержимое из файла «двухнитка», BLOCK_000333 там уже другой, но при вставке в «Лист 1» новый блок игнорируется, и вставляется как уже имеющийися, то есть этот блок будет выглядеть не так, как в файле «духнитка», а так, как в файле «Схематический план».
Если короче, то в одном файле не может быть двух разных блоков с одинаковым именем, это все равно что два мобильных телефона с одним номером в сети, или два одинаковых ИНН.
Какие могут быть решения:
1. Взорвать все блоки командой ._explode, а лучше ._burst из express tools (она сохранит атрибуты как текст). Нет блоков, нет проблем.
2. В лист 1 файлы вставить целиком в виде внешней ссылки (xref), через команду ._xref (поиск: работа с xref в автокаде)
Затем обе xref вставить в чертеж через тот же диалог xref, по контекстному меню используя Bind, (но не insert ни в коем случае). Как это в русской версии переведено — не знаю. Соответственно, внешняя ссылка превратится в блок, а все блоки внутри этой ссылки будут переименованы (а вам именно это и нужно).
3. переименовать все названия блоков в одном из файлов можно используя код VBA типа такого:
После этого блоки пересекаться не будут.
Результат способа №3 приложен к сообщению.
Готов ответить на конкретные вопросы.