VBA. Программная вставка внешней ссылки. Ошибка в A2012..
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Программная вставка внешней ссылки. Ошибка в A2012..

VBA. Программная вставка внешней ссылки. Ошибка в A2012..

Ответ
Поиск в этой теме
Непрочитано 29.08.2012, 12:54 #1
VBA. Программная вставка внешней ссылки. Ошибка в A2012..
AlexV
 
Инженер
 
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,692

Собственно, вот оно код, вставляющий нужный мне файл внешней ссылкой, "биндящий" его, и после удаляющий блок и описание блока..
Код:
[Выделить все]
...
Dim I_Point(0 To 2) As Double
  I_Point(0) = 0: I_Point(1) = 1: I_Point(2) = 0
  Dim Block_P As AcadExternalReference
  If ThisDrawing.FullName <> path Then
    Set Block_P = ThisDrawing.ModelSpace.AttachExternalReference(path, "ёклмн", I_Point, 1, 1, 1, 0, False)
    ThisDrawing.Blocks.Item(Block_P.Name).Bind True
    Block_P.Delete
    ThisDrawing.Blocks.Item("ёклмн").Delete
End If
Не берусь судить, насколько правильно написан, но в 2008 работает нормально, в 2012 тормозит на строке Block_P.Delete, ругаясь вот такими окнами:


Может, кто знает, где собака зарылась?

Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 637
Размер:	10.3 Кб
ID:	86220  

__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
Просмотров: 9136
 
Непрочитано 30.08.2012, 09:18
#2
hwd

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


Не VBA, но по комментам разобраться не составит труда. Код протестирован в AutoCAD 2013 Enu x64.
Код:
[Выделить все]
using System;
using System.IO;
using acad = Autodesk.AutoCAD.ApplicationServices.Application;
using AcApp = Autodesk.AutoCAD.ApplicationServices;
using AcDb = Autodesk.AutoCAD.DatabaseServices;
using AcGm = Autodesk.AutoCAD.Geometry;
using AcRtm = Autodesk.AutoCAD.Runtime;

[assembly: AcRtm.CommandClass(typeof(XReferenceSamples.Class1))]

namespace XReferenceSamples
{
    public class Class1
    {
        [AcRtm.CommandMethod("XAttach-From-CSharp", AcRtm.CommandFlags.Modal)]
        public void XAttach_From_CSharp()
        {
            AcApp.Document doc = acad.DocumentManager.MdiActiveDocument;
            AcDb.Database db = doc.Database; 
            //Подключаем DWG файл в качестве внешней ссылки
            AcDb.ObjectId xRefId = db.AttachXref(Path.Combine(Environment.GetFolderPath(
                Environment.SpecialFolder.MyDocuments), "XRef.dwg"), "myXref");
            using (AcDb.Transaction tr = db.TransactionManager.StartTransaction())
            {
                //Создаём экземпляр вхождения блока для подключенной ссылки
                AcDb.BlockReference br = new AcDb.BlockReference(new AcGm.Point3d(0, 0, 0), xRefId);
                AcDb.BlockTable blockTable = (AcDb.BlockTable)tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead);
                //Вставлять вхождение блока будем в пространстве Model
                AcDb.BlockTableRecord modalSpace = (AcDb.BlockTableRecord)
                    tr.GetObject(blockTable[AcDb.BlockTableRecord.ModelSpace], AcDb.OpenMode.ForWrite);
                modalSpace.AppendEntity(br);
                tr.AddNewlyCreatedDBObject(br, true);                                             
                tr.Commit();
            }
            //Внедряем содержимое ссылки в чертёж
            //ВНИМАНИЕ!
            //Следующий фрагмент кода должен находиться ПОСЛЕ блока "using", т.к. должен быть выполнен 
            //после строки кода tr.Commit(); (т.е. когда изменения будут зафиксированы в базе данных)
            AcDb.ObjectIdCollection ids = new AcDb.ObjectIdCollection();            
            ids.Add(xRefId); 
            db.BindXrefs(ids, true);  
        }
    }
}
Заметь: в отличие от тебя, я не вызываю в коде никакого удаления поскольку в этом нет необходимости...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.08.2012 в 09:27.
hwd вне форума  
 
Непрочитано 30.08.2012, 18:52
#3
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Если эта махинация нужна для получения блоков из другого чертежа, то может использовать CopyObjects?
Сейчас немного не в теме, но помню делал так же именно для этого), и сейчас не могу вспомнить почему не использовал CopyObjects.
Vildar вне форума  
 
Автор темы   Непрочитано 03.09.2012, 12:28
#4
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Vildar Посмотреть сообщение
Если эта махинация нужна для получения блоков из другого чертежа, то может использовать CopyObjects?
Сейчас немного не в теме, но помню делал так же именно для этого), и сейчас не могу вспомнить почему...
Vildar, если не ошибаюсь, когда-то этот способ я тебе и посоветовал..
Цитата:
Сообщение от hwd Посмотреть сообщение
Не VBA, но по комментам разобраться не составит труда...
hwd, спасибо, конечно... Но не VBA! Я, увы, в свете Net до сих пор человек темный... Offtop: "ты не мудри, ты пальцем покажи!" Код я рассматриваю как аналог выполнения последовательности "обычных" команд автокада, не вникая в сущность работы с базой данных объектов чертежа. То есть, - вставил нужный файл внешней ссылкой, внедрил, получил вхождение блока. Потом удалил - сначала вхождение блока, затем описание. Вот и вся вроде бы нехитрая любовь, - описания блоков из "вставляемого" файла переносятся в текущий. Способ, может, не лучший, но простой. Почто в А2008 работает, в А2012 нет?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.09.2012, 12:41
#5
hwd

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


Цитата:
Сообщение от AlexV Посмотреть сообщение
Потом удалил - сначала вхождение блока, затем описание.
Что-то я не пойму тебя... Тебе нужен Bind для внешней ссылки, или что-то иное? Зачем ты сначала "биндишь", а потом удаляешь созданные при биндинге вхождения блока и их определения? Какая-то странная у тебя "любовь" (с)...
Если тебе всего лишь нужно из др. чертежа импортировать определения интересующих тебя блоков (или стилей/типов линий/слоёв), то это делается совсем иначе (и проще), безо всяких там биндингов. По указанной ссылке - код на C#. Примеры на VBA ищи сам.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 03.09.2012 в 12:49.
hwd вне форума  
 
Автор темы   Непрочитано 03.09.2012, 12:54
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от hwd Посмотреть сообщение
Что-то я не пойму тебя... Тебе нужен Bind для внешней ссылки, или что-то иное? Зачем ты сначала "биндишь", а потом удаляешь созданные при биндинге вхождения блока и их определения? Какая-то странная у тебя "любовь" (с)...
Вся эта "странная любовь" - имеет целью перенос описаний блоков из одного файла в другой.. Сам блок, созданный при биндинге, убивается, а "пять тыщ восемсот" блоков, живших во "вставляемом" файле, сохраняются..
Я понимаю, что это можно сделать совсем иначе, "правильней" и так далее.. Но работало же!
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.09.2012, 12:55
#7
hwd

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


Цитата:
Сообщение от AlexV Посмотреть сообщение
Вся эта "странная любовь" - имеет целью перенос описаний блоков из одного файла в другой.. Сам блок, созданный при биндинге, убивается, а "пять тыщ восемсот" блоков, живших во "вставляемом" файле, сохраняются..
ещё раз прочти мой предыдущий msg (я там позднее добавил информацию - наверное ты её не увидел). Не забывай, что биндинг тебе помимо определений блоков внедряет и стили/слои/типы линий. Т.е. кучу того, что тебе может быть совершенно не нужно.

UPD
Цитата:
Я понимаю, что это можно сделать совсем иначе, "правильней" и так далее.. Но работало же!
Не тот ли это случай, когда работало в AutoCAD 2008 x86, а перестало в AutoCAD 2012 x64?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 03.09.2012 в 13:04.
hwd вне форума  
 
Автор темы   Непрочитано 03.09.2012, 13:05
#8
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от hwd Посмотреть сообщение
ещё раз прочти мой предыдущий msg (я там позднее добавил информацию - наверное ты её не увидел). Не забывай, что биндинг тебе помимо определений блоков внедряет и стили/слои/типы линий. Т.е. кучу того, что тебе может быть совершенно не нужно.
hwd, да я знаю. Лишних стилей/слоев/типов линий там нет, - файл используется именно как "хранилище" блоков. Метод мой, конечно, не профессиональный, - но использовал я его во всех своих прогах, где нужно перекинуть описания блоков из одного "архивного" файла в рабочий.
Цитата:
Не тот ли это случай, когда работало в AutoCAD 2008 x86, а перестало в AutoCAD 2012 x64?
Для А2012/2013 не работает как в 64b, так и в 32b. Для А2010 - работает и там, и там...
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 03.09.2012 в 13:23.
AlexV вне форума  
 
Непрочитано 03.09.2012, 13:06
#9
hwd

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


Цитата:
Сообщение от AlexV Посмотреть сообщение
hwd, да я знаю. Лишних стилей/слоев/типов линий там нет, - файл используется именно как "хранилище" блоков. Метод мой, конечно, не профессиональный, - но использовал я его во всех своих прогах, где нужно перекинуть описания блоков из одного "архивного" файла в рабочий.
и снова см. предыдущий "UPD".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 03.09.2012, 13:25
#10
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от hwd Посмотреть сообщение
Не тот ли это случай, когда работало в AutoCAD 2008 x86, а перестало в AutoCAD 2012 x64?
Цитата:
Сообщение от hwd Посмотреть сообщение
и снова см. предыдущий "UPD".
повторюсь:
Для А2012/2013 не работает как в 64b, так и в 32b. Для А2010 - работает и там, и там... А2008 - под 32 работает, под 64 нету у меня такого..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.09.2012, 13:55
#11
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от AlexV Посмотреть сообщение
когда-то этот способ я тебе и посоветовал..
Да. Тему бы надо найти, чем там дело кончилось, интересно.

Так что думаешь про CopyObjects?
По ссылке на блог KEAN WALMSLEY, которую Андрей дал, используется WblockCloneObjects, а его аналог на VBA как раз CopyObjects, ЕМНИП!
Vildar вне форума  
 
Автор темы   Непрочитано 03.09.2012, 14:33
#12
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Vildar Посмотреть сообщение
Да. Тему бы надо найти, чем там дело кончилось, интересно.
Так что думаешь про CopyObjects?
По ссылке на блог KEAN WALMSLEY, которую Андрей дал, используется WblockCloneObjects, а его аналог на VBA как раз CopyObjects, ЕМНИП!
Да я на работе работу работаю, так что по ссылкам меня можно послать только на dwg.ru. Не знаю, когда-то давно, когда искал способы переноса описаний блоков, "внешней ссылкой" оказался наиболее доступным моему пониманию и простым. А CopyObjects,- он не предпологает необходимости открывать исходный файл?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.09.2012, 14:55
#13
Кулик Алексей aka kpblc
Moderator

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


Предполагает, насколько я помню. Через ObjectDBX придется идтить
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.09.2012, 14:55
#14
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от AlexV Посмотреть сообщение
А CopyObjects,- он не предпологает необходимости открывать исходный файл?
Да нужно открыть. Но, можно открывать через dbx (без gui).
Vildar вне форума  
 
Автор темы   Непрочитано 03.09.2012, 15:05
#15
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Предполагает, насколько я помню. Через ObjectDBX придется идтить
Вот, в том то и дело.. Когда я начал пытаться программировать, мне тоже говорили: нужно пойти туда, не знаю куда, принести то, не знаю что.. А с внешней ссылкой - бац, и в дамки, никаких заморочек, никаких ошибок.. до поры до времени. Мне этот вариант показался проще не бывает. Само собой, когда нужно таскать заранее неизвестно что неизвестно откуда неизвестно куда - он не очень хорош, - весь возможный мусор каждый раз ловить. А если файл архива один и вычищен от лишнего, то все окей.
И тем не менее, в чем ошибка-то для А2012? Какой "базы данных нет"?
Кстати, справка по VBA исчезла из А2012, да и вообще, какая-то убогая она стала..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.09.2012, 15:06
#16
hwd

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


Не путайте его, он и сам запутается
Цитата:
он не предпологает необходимости открывать исходный файл?
Он не предполагает создания объекта Document, который визуально у тебя будет представлен как чертёж. Но он предполагает создание объекта Database, путём считывания содержимого базы данных того чертежа, в котором ты хранишь описание своих блоков.
Цитата:
Вот, в том то и дело.. Когда я начал пытаться программировать, мне тоже говорили: нужно пойти туда, не знаю куда, принести то, не знаю что.. А с внешней ссылкой - бац, и в дамки, никаких заморочек, никаких ошибок.. до поры до времени. Мне этот вариант показался проще не бывает. Само собой, когда нужно таскать заранее неизвестно что неизвестно откуда неизвестно куда - он не очень хорош, - весь возможный мусор каждый раз ловить. А если файл архива один и вычищен от лишнего, то все окей.
И тем не менее, в чем ошибка-то для А2012? Какой "базы данных нет"?
Вместо того, чтобы упереться в эту проблему, ты бы лучше разобрался в том, как это следует делать. И для себя будет полезно на будущее, и проблема будет решена. А принципиально уперевшись в вопрос
Цитата:
в чем ошибка-то для А2012? Какой "базы данных нет"?
ты так будешь сидеть долго и безрезультатно, потому как вряд ли кто-то захочет тратить своё время на решение проблемы, обусловленной нежеланием/неумением использования того подхода, который для этого предназначен.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 03.09.2012 в 15:12.
hwd вне форума  
 
Автор темы   Непрочитано 03.09.2012, 16:28
#17
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от hwd Посмотреть сообщение
Вместо того, чтобы упереться в эту проблему, ты бы лучше разобрался в том, как это следует делать. И для себя будет полезно на будущее, и проблема будет решена. А принципиально уперевшись в вопрос...ты так будешь сидеть долго и безрезультатно, потому как вряд ли кто-то захочет тратить своё время на решение проблемы, обусловленной нежеланием/неумением использования того подхода, который для этого предназначен.
Это все понятно, я уяснил про Offtop: "черти в масштабе 1:1... программируй в правильном стиле... позвони родителям... не пей из копытца, козленочком станешь...", но автокад же предпологает массу вариантов и подходов для решения одной и той же задачи, почему же в программировании нельзя? Да и название темы-то как раз о конкретной ошибке в конкретном коде, а не о правильных методах перенесения описаний блоков из файла в файл.
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.09.2012, 17:24
#18
Кулик Алексей aka kpblc
Moderator

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


AlexV, у меня сейчас башка другим забита, поэтому сильно ногами прошу не пинать. А если сделать сначала Bind, потом объекту Explode, и только потом уже Erase на вхождение блока и Delete на описание?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.09.2012, 17:28
#19
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


фигню написал
Vildar вне форума  
 
Автор темы   Непрочитано 03.09.2012, 17:35
#20
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
AlexV, у меня сейчас башка другим забита, поэтому сильно ногами прошу не пинать. А если сделать сначала Bind, потом объекту Explode, и только потом уже Erase на вхождение блока и Delete на описание?
Пробовал, эксплодить тоже не дает.. "неприменимо", понимаешь.. Была мысля попробовать ThisDrawing.SendCommand ("_ERASE _P"), ведь командами автокада нормально блок и взрывается, и стирается... Только как сослаться на этот блок в командной строке?
На самом деле, с этим объектом, который опосля Bind живет в "Block_P", вообще ни хрена не сделать обычными для "AcadExternalReference" методами через VBA. Ни copy, ни move, - ничего его не берет.
Видно, много чего поменялось в объектной модели автокада 2012..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 03.09.2012 в 17:44.
AlexV вне форума  
 
Непрочитано 03.09.2012, 17:37
#21
hwd

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
AlexVА если сделать сначала Bind, потом объекту Explode, и только потом уже Erase на вхождение блока и Delete на описание?
гы. если ты его уже взорвал, то какое может быть вхождение?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 03.09.2012, 17:43
#22
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Может это какой-то частный случай?
На другом примере попробуй проделать то же самое.
Попробовал простой пример, по типу с 1 поста, все нормально работает. Автокад 2013 правда.
Vildar вне форума  
 
Непрочитано 03.09.2012, 17:48
#23
hwd

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


2 топикстартер
Подозреваю, что под "базой данных" подразумевается объект Database. Проверь у Block_P значение свойств ObjectId.IsValid, а так же проверь у него значение свойства ObjectId.Database.
Цитата:
Пробовал, эксплодить тоже не дает.. "неприменимо", понимаешь..
а "эксплодить" внешнюю ссылку в принципе невозможно. "Эксплодить" можно результат биндинга - вхождения блоков.
Цитата:
Видно, много чего поменялось в объектной модели автокада 2012..
я всё же склоняюсь к версии, что проблема в том, откуда растут руки как нацарапан код.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 03.09.2012 в 17:54.
hwd вне форума  
 
Автор темы   Непрочитано 03.09.2012, 17:50
#24
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от hwd Посмотреть сообщение
гы. если ты его уже взорвал, то какое может быть вхождение?
Ну да.. я пробовал, -
Код:
[Выделить все]
...
Dim explodedObjects As Variant
explodedObjects = Block_P.Explode
...
вхождение не стирать, а взорвать (тем более, в нем по факту нету ни одного примитива),- но не дается, зараза... ни взрываться, ни перемещаться, ни копироваться не желает. Хотя командами автокада все это - без проблем.

Цитата:
"а "эксплодить" внешнюю ссылку в принципе невозможно. "Эксплодить" можно результат биндинга - вхождения блоков... я всё же склоняюсь к версии, что проблема в том, откуда растут руки как нацарапан код."
Ну да, руки растут безнадежно не оттуда, и вообще бессистемно как сорняки.. Но учитывая, что руки одни и те же, а код в предыдущих версиях работает, то все таки и внутри автокада чой-то переставили с места на место..

свойств ObjectId.IsValid и ObjectId.Database я у Block_P не обнаружил...

P.S. Проблема криво, но решилась...
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 03.09.2012 в 18:24.
AlexV вне форума  
 
Непрочитано 03.09.2012, 22:31
#25
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от hwd Посмотреть сообщение
гы. если ты его уже взорвал, то какое может быть вхождение?
Применение метода Explode к вхождению блока не удаляет само вхождение.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.09.2012, 23:04
#26
hwd

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Применение метода Explode к вхождению блока не удаляет само вхождение.
Полез в справку, попробовал на практике: да, так и есть. Честно говоря, я был уверен, что метод Explode будет работать аналогично команде _EXPLODE, а оно в .NET работает иначе, как оказалось... Спасибо за инфу, буду знать теперь Там два метода представляют собой интерес: ExplodeToOwnerSpace и Explode.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 04.09.2012, 10:12
#27
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от hwd Посмотреть сообщение
Полез в справку, попробовал на практике: да, так и есть. Честно говоря, я был уверен, что метод Explode будет работать аналогично команде _EXPLODE
Offtop: Я тоже как-то на этом попался
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 04.09.2012, 12:53
#28
Do$

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


А зачем через внешнюю ссылку, если файл библиотеки можно вставить как блок? То есть использовать не AttachExternalReference+Bind а InsertBlock. После вставки удаляем этот блок, удаляем его описание, а описания всех вложенных блоков останутся в чертеже.
Do$ вне форума  
 
Непрочитано 04.09.2012, 12:58
#29
hwd

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
А зачем через внешнюю ссылку, если файл библиотеки можно вставить как блок?
А зачем через внешнюю ссылку, когда вообще можно сделать банальный импорт нужных определений блоков? Ответ автор указал выше: потому что по др. он не умеет, а иные способы осваивать не хочет.
Но он там выше где-то отметил, что проблема у него уже отвалилась.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 04.09.2012, 13:29
#30
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Do$ Посмотреть сообщение
А зачем через внешнюю ссылку, если файл библиотеки можно вставить как блок? То есть использовать не AttachExternalReference+Bind а InsertBlock. После вставки удаляем этот блок, удаляем его описание, а описания всех вложенных блоков останутся в чертеже.
Do$, и правда.. однако, блин,- стереотипы мышления! Элементарная вроде мысля, а в голову не пришла..
Цитата:
Сообщение от hwd Посмотреть сообщение
А зачем через внешнюю ссылку, когда вообще можно сделать банальный импорт нужных определений блоков? Ответ автор указал выше: потому что по др. он не умеет, а иные способы осваивать не хочет.
Ну почему же не хочу, хочу.. Если их преимущество очевидно, а затраты времени на изучение невелики. Вот Do$ подсказал способ - на доступном мне уровне, - я сразу побежал AttachExternalReference на InsertBlock править.. (у меня проблема отвалилась, но гораздо более дурным способом..)
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Программная вставка внешней ссылки. Ошибка в A2012..



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите узнать номер строки в котрой произошла ошибка в программе на VBA МишаИнженер Программирование 3 27.05.2012 23:27
VBA: Вставка блока - ошибка файлера (filer error) vlalexey Программирование 4 09.11.2010 12:13
Несоответствие результатов в Лире s.vas Лира / Лира-САПР 19 11.11.2009 07:31
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47