|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Помогите начинающему разобраться с блоками
промышл проектант
Изовсехщелей
Регистрация: 26.05.2005
Сообщений: 323
|
||
Просмотров: 9764
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Тебе именно через dxf надо? Если через activex покатит, см. http://www.arcada.com.ua/forum/viewtopic.php?t=981
А так-то можно добираться примерно так, наверное: Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
промышл проектант Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323
|
Спасибо - буду разбираться дальше.
Через activex не покатит - так как не разобрался в простом а более сложное еще впереди. А нельзя ли в 2-х словах описать принцип получения значений атрибутов? Т.е описать что механизм действия вашего примера? Если не сложно конечно ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Ну в общем-то сначала проверяется, является ли block блоком с атрибутами:
Код:
Код:
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Можно и одним словом - команда (tblobjname "block" "<Имя блока>") - на выходе получаем имя примитива блока (ename), потом как обычно можно использовать (entnext ename) получая имена примитивов внутри блока, пока не вернёт nil.
А Крыс - молоток, именно эту команду и пропустил!!! ![]() Нехватает перед (while... такой строки Код:
(Кстати Крысу совет - append в таком варианте тоже будет сильно тормозить программу) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
> Евгений А.: Я не люблю dxf, кроме тех случаев, когда его использование удобно (в частности, получение наборов). Все остальное я настолько давно делаю через vla, что dxf вспоминается с трудом (особливо под BricsCAD).
В любом варианте сорри за хреновый код.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Помогите начинающему разобраться с удалением блоков.
AutoCAD 2006, без довесков. В новом пустом файле создаем два простейших блока "а" и "b", невзрываемых, сохраняем этот файл под именем 1.dwg в любое удобное место. Получается файл-библиотека блоков. Далее вставляем блоком эту библиотеку в другой новый файл, и удаляем блоки следующим методом: Код:
Что такое нужно сделать, чтобы все блоки убирались с первого захода? Только не предлагайте использовать _PURGE, от него-то и пытаюсь избавиться. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А блок а случаем не входит в блок b (ну или наоборот)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Еслибы.
А почему он тогда удаляется после закрытия-открытия файла? И пургенится? Прицеплю тестовый файл заодно |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
У меня кад сошел с ума сегодня, поэтому без проверок:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 20.12.2007 в 17:00. Причина: Добавил (vl-load-com) |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Можно копировать блоки через objectDBX
Как пример DBXImportBlock Fatty
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
Алексей, с небольшими поправками программа работает, вот только блоки не удаляет. При пошаговом выполнении выдает ошибку в строке (lambda () ....), все то же "Object is referenced".
Свойство effectivename стоит проверять для всех блоков или только для динамических или с атрибутами? Пока пытался выяснить куда еще информация о вставленных блоках пишется, нашел решение проблемы. Самое идиотское, еслиб случайно не получилось, никогда не догадался бы. В файле-библиотеке у меня есть не только записи о блоках, но и вхождения этих блоков (в модели, чтобы знать какие блоки есть в файле). Удалил один блок из библиотеки и забыл выполнить зачистку. Так после вставки файла-библиотеки в другой файл именно этот блок удалился без вопросов. В принципе решение найдено, только неудобно, что в библиотеке не видно входящих в неё блоков. Да и вопрос, что куда пишется при вставке, остается открытым. И что происходит при закрытии-открытии файла, после чего ранее "неубиваемые" блоки спокойно удаляются? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Чертовщина какая-то. Я ж удаляю вставку библиотеки... В качестве уточнения: "тестовый пример" в #13 это библиотека или "результат вставки"? Если второе - выложи саму библиотеку. Тогда смогу погонять код более какчественно )
effectivename требуется для дин.блоков (у них (vla-get-name) вернет нечто типа "*Uxxx").
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Вот еще ссылочка
Копирование блоков из чертежа в чертеж
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
VVA, ObjectDBX очень удобен, но не гарантирует 100% работы
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 308
|
>> Кулик Алексей aka kpblc
Вот и я о том же - фигня какая-то наблюдается ![]() Файл "1.dwg"из №13 это именно библиотека. В нем два блока "а" и "b" находящиеся в модели. Также там присутствуют описания этих блоков в символьной таблице BLOCK, назовем их "a_i" и "b_i". Вставляем этот файл-библиотеку как блок в другой файл (ну хоть в "Drawing1"): Код:
Удаляем блок "1" и его описание "1_i" из "Drawing1": Код:
Действие №полтора: сохраняем "Drawing1", закрываем, открываем снова. Записи "a_i" и "b_i" спокойно удаляются vla-Delete'ом. Вот что, спрашивается, исправил автокад во время закрытия файла? Действие №2. В исходном файле-библиотеке удаляем блоки "а" и "b" из модели, остаются только их описания "a_i" и "b_i". Пусть теперь этот файл зовется "2.dwg". Вставляем его в новый файл "Drawing2" - теперь в нем есть блок "2" и описания блоков "2_i", "a_i", "b_i". Так вот в этом случае функцией vla-Delete можно удалять "a_i" и "b_i", не удаляя перед этим "2" и "2_i"! В принципе я разобрался что делать, код тестировать наверное больше не нужно. Вот если сможешь сказать какие еще записи остаются в первом случае... >> VVA Спасибо за ссылки. Программы пригодятся. Жаль только в ObjectDBX не разбираюсь, с ходу понять не получится ![]() |
|||
![]() |