Тема: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

Здравствуйте! Может кто чем сможет помочь в решении вопроса.
Автокад 2008.
Блок со штампом чертежа. Содержимое штампа меняется часто. Поэтому внутрь блока делается ссылка на внешний файл, изменение которого вызывает изменение во всех штампах на чертежах, где он использован. Но когда надо отослать чертеж заказчику, желательно чертеж с таким штампом (блоком, содержащий внешнюю ссылку) сделать независимым от внешней ссылки. Чтобы убрать внешнюю ссылку из такого чертежа, необходимо зайти в редактор блока штампа и вставить/внедрить через палитру внешних ссылок.

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

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

Находишь блок ссылки и биндишь его  ;)

objAcadBlock.Bind

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

да трудность в том, что не знаю как его "зацепить" (ссылка с именем "БШ1")

 Public xfSS As AcadSelectionSet
    Public object As AcadEntity

Private Sub CommandButton1_Click()
Dim objectxref As AcadBlockReference
ref.Hide

Set xfSS = ThisDrawing.PickfirstSelectionSet
xfSS.SelectOnScreen
For Each object In xfSS
If TypeOf object Is AcadBlockReference Then

[S]Set objectxref = object.Blocks.Item("БШ1")[/S]

objectxref.Bind
End If

Next object

End Sub

не могу понять, как достать блок вложенный в другой блок.

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

Все. нашел.
Set objectxref = ThisDrawing.Blocks("БШ1")

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

Алгоритмов несколько.

1. Если известно имя блока ссылки! То находишь его в коллекции блоков чертежа и биндишь.

ThisDraving.Blocks("Имя файла ссылки").Bind

Все, ссылка будет внедрена, во всех ее вхождениях.

2. Как найти вхождение блока(назовем его blRefNested) вставленного в другой блок(blRef).
Находишь описание блока blRef

dim objBlock as AcadBlock
objBlock = ThisDrawing.Blocks(blRef.Name)

если это дин.блок, то используй EffectiveName.
Далее перебираешь обекты в этом блоке, и находишь внешнюю ссылку.

Dim ent As AcadEntity      
      For Each ent In objBlock               
         If TypeOf ent Is AcadExternalReference Then            
            Dim blXref As AcadBlock
            Set blXref = ThisDrawing.Blocks(ent.Name)            
         End If               
      Next


Ну и бинд

blXref.Bind bPrefix

В итоге ссылка убьется во всех ее вхождениях и исчезнет из палитры ссылок.

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

Спасибо!

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

Вильдар пишет:

  

Set blXref = ThisDrawing.Blocks(ent.Name)

   

Наверное тут все-таки

Set blXref = ThisDrawing.Blocks.Item(ent.Name)


Код убивающий ссылки в чертеже у меня получился такой :

Dim ent As AcadBlock
For Each ent In ThisDrawing.Blocks 
If ent.IsXRef Then ThisDrawing.Blocks.Item(ent.Name).Bind False
Next

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

KyCOK пишет:

Set blXref = ThisDrawing.Blocks(ent.Name) 

Наверное тут все-таки

КодSet blXref = ThisDrawing.Blocks.Item(ent.Name)

А ты попробуй ;)

KyCOK пишет:

Код убивающий ссылки в чертеже у меня получился такой :


Чтож ты сразу так не сделал :D

Re: Внутри блока внешняя ссылка. Как оставить ее в описании блока без ссылки ?

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

(у тетенек был отработан механизм по составлению схемы из внешних ссылок - почему они не пользовались блоками? Ясно дело - они про такое вообще не знали - им показали про внешние ссылки, они и делали внешними ссылками. Во внешних ссылках был указан абсолютный путь на диск С:. Короче караул.)

Оставалось туда только плюшечку добавить, чтобы ссылки убивались. :D
Вот и взялся сгоряча.