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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > AutoCAD Civil. Программно (COM, AutoIT) поменять путь у изображения в чертеже.

AutoCAD Civil. Программно (COM, AutoIT) поменять путь у изображения в чертеже.

Ответ
Поиск в этой теме
Непрочитано 20.08.2013, 18:42 #1
AutoCAD Civil. Программно (COM, AutoIT) поменять путь у изображения в чертеже.
ALLIGATOR_
 
Регистрация: 17.08.2013
Сообщений: 5

Доброго времени!
Скажите пожалуйста как поменять путь у изображения на чертеже программно, также как это делается вручную, только программно
Пример (так я вручную меняю):


А так я пытаюсь поменять программно:
Код:
[Выделить все]
#include "IE.au3"

Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")

Global $oAutoCADCivil = ObjGet("", "AutoCAD.Application.18")
If Not IsObj($oAutoCADCivil) Then
    MsgBox(0, "", "Не удалось подключиться к AutoCAD Civil")
    Exit (-1)
EndIf

For $AcadBlock In $oAutoCADCivil.ActiveDocument.ModelSpace
	If $AcadBlock.ObjectName == "AcDbRasterImage" Then
		;$AcadBlock.ImageFile("D:\2.jpg")
		$AcadBlock.ImageFile(__IEStringToBstr("D:\2.jpg"))
	EndIf
Next

Func _ErrFunc($oError)
    MsgBox(0, "", "err.number is: " & @TAB & $oError.number & @CRLF & _
            "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            "err.description is: " & @TAB & $oError.description & @CRLF & _
            "err.source is: " & @TAB & $oError.source & @CRLF & _
            "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            "err.retcode is: " & @TAB & $oError.retcode & @CRLF & @CRLF)
EndFunc
На что вылазиет ошибка: "Операции с семействами не поддерживаются"
Просмотров: 3898
 
Непрочитано 20.08.2013, 18:45
#2
Кулик Алексей aka kpblc
Moderator

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


http://www.google.ru/cse?cx=partner-...%B2&gsc.page=1
http://forum.dwg.ru/showthread.php?t=92544
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.08.2013, 19:18
#3
ALLIGATOR_


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


Понятно, нужно изменить внешнюю ссылку. Не могли бы подсказать где они находятся в объектной модели автокада, эти внешние ссылки?
ALLIGATOR_ вне форума  
 
Непрочитано 20.08.2013, 19:28
#4
Кулик Алексей aka kpblc
Moderator

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


ALLIGATOR_, пройди по ссылкам, решений масса. У меня, к сожалению, нет времени на подробные объяснения.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.08.2013, 19:35
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ALLIGATOR_ Посмотреть сообщение
Пример (так я вручную меняю):
И что, хочешь сказать, что ты вручную менял путь к изображению прямо в окне свойств, через помеченное тобой свойство, несмотря на то, что оно доступно только для чтения? Да ты волшебник... Я думал, что вручную это делается в окне External References через свойство Found At.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 20.08.2013, 19:49
#6
ALLIGATOR_


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


Цитата:
Сообщение от hwd Посмотреть сообщение
И что, хочешь сказать, что ты вручную менял путь к изображению прямо в окне свойств
Цитата:
Сообщение от hwd Посмотреть сообщение
Да ты волшебник...
Ох, ты, точно! не получается изменить. Но... я как-то менял, и вроде не из окна внешних ссылок, я уже не помню точно, это было несколько месяцев назад.
ALLIGATOR_ вне форума  
 
Непрочитано 20.08.2013, 19:53
#7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Offtop:
Цитата:
Сообщение от ALLIGATOR_
Но... я как-то менял, и вроде не из окна внешних ссылок, я уже не помню точно, это было несколько месяцев назад.
Как это Мэри Поппинс пела:
Цитата:
Сообщение от Мэри Попинс
Это было прошлым летом,
В середине января.
В тридесятом королевстве,
там где нет в помине короля...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 20.08.2013, 21:14
#8
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,993


ALLIGATOR_
Сложно будет с помощью AutoIT это сделать.
Он для других целей предназначен, тут проще на vb или на лиспе....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 21.08.2013, 07:33
#9
trir


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


AcadExternalReference.path

Цитата:
String; read-only (read-write for the ExternalReference and Block objects)
The path of the application, document, or external reference.
trir вне форума  
 
Непрочитано 21.08.2013, 11:22
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,697
Отправить сообщение для Do$ с помощью Skype™


Задам пару наводящих вопросов, возможно, поможет избежать велосипедостроения:
1. С относительными путями для внешних ссылок знакомы?
2. С диспетчером внешних ссылок знакомы?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 21.08.2013, 11:28
#11
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Do$ Посмотреть сообщение
Задам пару наводящих вопросов
@ALLIGATOR_,
Если на эти вопросы будут ответами "нет", то возможно имеет смысл просмотреть мультики: первый и второй - это своего рода быстрый ликбез по теме работы с xref.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 21.08.2013, 18:23
#12
ALLIGATOR_


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


Offtop: Дурацкий редактор сообщений на форуме, при правке затирает старое содержимое, приходится копировать прежде чем отредактировать.
В общем пробегаюсь по всем блокам по документу и ни один не является XRef-ом. Условия: создан документ, вставлено изображение перетаскиванием мышкой, документ не сохранён.
Код:
Код:
[Выделить все]
For $AcadBlock In $oAutoCADCivil.ActiveDocument.Blocks
    _ArrayAdd($avArray, $AcadBlock.IsXRef & " - " & $AcadBlock.ObjectName)
    For $AA In $AcadBlock
        _ArrayAdd($avArray, "   " & $AcadBlock.IsXRef & " - " & $AA.ObjectName)
    Next
Next
Делал, основываясь на этом коде:
http://entercad.ru/acadauto.en/ex_xrefdatabase.htm

Последний раз редактировалось ALLIGATOR_, 21.08.2013 в 18:36.
ALLIGATOR_ вне форума  
 
Непрочитано 21.08.2013, 18:34
#13
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Вот, глянь.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 21.08.2013, 18:51
#14
ALLIGATOR_


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


Цитата:
Сообщение от hwd Посмотреть сообщение
Вот, глянь.
если я правильно понял, это означает:
Цитата:
Сообщение от DEM Посмотреть сообщение
Сложно будет с помощью AutoIT это сделать.
... тут проще на vb или на лиспе....
Ну т.е. это не так как я себе представлял:
• пробежаться по коллекции
• найти нужное изображение
• найти в коллекции внешних ссылок, запись относящуюся к моему изображению (ну как-нибудь по ID они связаны или ещё по чему)
• вызвать метод .SetFilePath("NewImage.jpg")
• Profit.
ALLIGATOR_ вне форума  
 
Непрочитано 21.08.2013, 18:54
#15
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Тебе нужно работать с объектами RasterImageDef и RasterImage, что и продемонстрировано в коде по ссылке. Как ты это будешь делать (LISP\C++\.NET\etc) - это уже твоё дело.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 21.08.2013, 19:02
#16
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,697
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от ALLIGATOR_ Посмотреть сообщение
• найти в коллекции внешних ссылок, запись относящуюся к моему изображению (ну как-нибудь по ID они связаны или ещё по чему)
А нет их там. Это в интерфейсе они в одном диспетчере сидят. А в объектной модели внешние ссылки и изображения - разные по сути объекты.
Через COM к изображениям можно добраться двумя путями, насколько я знаю:
1. Через словари.
2. Тупо перебирая объекты в чертеже.
Поиск в гугле по словам image path autocad vba или image path autocad lisp.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 24.08.2013, 18:26
1 | #17
skkkk


 
Регистрация: 20.03.2008
Московская область
Сообщений: 2,470


Offtop:
Цитата:
Сообщение от ALLIGATOR_ Посмотреть сообщение
Offtop: Дурацкий редактор сообщений на форуме, при правке затирает старое содержимое, приходится копировать прежде чем отредактировать.
http://forum.dwg.ru/showpost.php?p=1...postcount=4589
Эта настройка находится: Мой кабинет->Опции
skkkk на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > AutoCAD Civil. Программно (COM, AutoIT) поменять путь у изображения в чертеже.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно настроить AutoCAD Krieger Программирование 14 10.12.2012 12:31
Привязка внешней ссылки (файл civil 2012) к файлу autocad 2007 koca AutoCAD 1 26.05.2012 21:07
Какой AutoCAD использовать ? denes AutoCAD 55 12.09.2011 14:29
Проблема отображения вставленного изображения в чертеже AutoCad 2011 (rus) v4dEr AutoCAD 5 12.05.2011 11:05
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59