|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Программная вставка динамических блоков
инженер
Владивосток
Регистрация: 09.08.2006
Сообщений: 1,536
|
||
Просмотров: 10289
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А предупредить о формате файла что мешало?
Посмотри аттач - оно?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Немного не то. Тут получается вставка блока - указываешь точку вставки, а затем угол задаешь. А я хочу чтобы указанием двух точек вставлялся. Т.е. ситуация: нарисовал два сечения стержня, а потом надо вставить шпильку(из файла пример.dwg) указанием центров сечений. Тут наверное надо использовать твою функцию http://www.caduser.ru/cgi-bin/f1/board.cgi?t=36637zq только насколько я понял, не получится сделать 1 универсальный лисп, для всех блоков
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Сейчас, наверное, скажу глупость, но... По-моему, такое невозможно.
Все, что приходит в голову, и так достаточно очевидно - установить индексируемые свойства в значения "по умолчанию", повторная вставка по пробелу и т.п.,- и вдобавок все равно не решает поставленной задачи ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
http://dwg.ru/f/showthread.php?t=132...ight=brakeline
пост 36. Здесь Krieger решал подобную задачу... Я попробовал - именно так как надо! Но для другого блока. И еще: не работает в 2008 каде, в 2006 и 2007 работает...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 28.02.2008 в 12:55. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Да в принципе понятно как делать-то, но мне не удается твой блок с функцией Крыса объеденить - а в дин. блоки самому лезть - это на долго.
(defun c:shp ( / p1 p1 ang) (setq p1 (getpoint "Первая точка ") p2 (getpoint p1 " Вторая ") ang (angle p1 p2)) (command "_-insert" "Шпилька_2" p1 1 (* (/ ang pi) 180.0)) (_kpblc-block-dyn-change-values (entlast) (list ("Длина*" . (dist p1 p2)) )); не хочет растягивать, по правде еще точку вставки в соответствии с блоком чуть подправить надо - но это не проблема. )
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Все въехал:
(запускать командой shp, блок шпильки уже должен быть в рисунке) Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Кулик Алексей aka kpblc, 29.02.2008 в 11:51. Причина: Тэги [code] не забывай... |
|||
![]() |
|
||||
Дима_, кланяюсь в ноженьки!
Все так как надо! А как мне настроить другие блоки, чтобы тоже их можно было вставлять. Я попробовал просто поменять имя блока в лиспе - вставляет, только повернуто на 90градусов!
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Либо в блоке поверни, либо в строке где имя менял исправь (* (/ ang pi) 180.0) на (+ (* (/ ang pi) 180.0) ХХХ) где ХХХ - количество градусов на которое надо повернуть.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Что-то у меня ручки кривые.
Повернул в редакторе блоков - стало вставлять но со смещением... Переделал лисп как ты говоришь - вставляет указанием 2 точек, а затем просит указать угол, вставленному блоку... Попробовал переделать лисп под третий блок(изменил имя блока в лиспе) - так автокад на меня матюгнулся и вылетел...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 02.03.2008 в 15:32. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
В общем надо блоки под один стандарт подогнать (можно конечно и лиспы под каждый блок свои писать - но по моему это не правильно) - блок по умолчанию должен быть горизонтальным, точка вставки совпадает с левой ручкой растяжения (ну либо ручки вообще нет), тогда никаких проблем - (command "_-insert" "Имя_блока" p1 1 (* (/ ang pi) 180.0)), растягиваемый параметр - "Длина".
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Ну в общем так - лисп я немного переделал - можешь добавлять любые блоки сделанные подобным образом (с параметром), а акад вылетает судя по всему из-за командного метода вставки блока, то есть программа вместо параметров начинает пытаться изменить еще не вставленный блок - к сожалению, как это исправить я слабо представляю, по поводу совмещения точки вставки и ручек - смотри приложенный dwg - то что указанно стрелками надо объединить и тогда все будет правильно, да обрати внимание - немного исправил имена блоков (назвал их попроще иначе выборка может ошибаться - это на случай если новые решишь добавлять).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Я извиняюсь, за беспокойство, но у меня тоже есть сходная проблема с вставкой блоков. Может и вас заинтересует.
Я и еще два товарища, сидящих в разных уголках страны, а то и в разных странах одновременно делаем одну 3D модель. Я делаю одну часть, второй товарищ - другую и третий свою естественно. Но видеть мы должны все элементы модели, поскольку не охота наехать своими элементами на чужие. Связь мы поддерживаем через СКАЙП. У нас у троих в модели абсолютно одинаковые базы блоков. Не хватает только сведений, какие блоки куда должны быть вставлены и какие свойства у них должны быть установлены (если они динамические). Блоки, которые я вставляю автоматически помечаются в атрибуте моим именем их блоки имеют свое значение этого атрибута. Периодически я нажимаю кнопку типа регенерации и макрос автоматически создает ini файл, в котором описаны все мои вхождения блоков, а чужие ini файлы с подобным описанием с начала проверяет на предмет наличия этих блоков в самой модели и если они там есть, то либо перемещает элемент по новым координатам, либо оставляет на месте. Если такого элемента нет, то он его вставляет из базы блоков. Забыл сказать. Имя блока *Unnn дублируется во второй атрибут, поскольку на другой машине оно будет другим. Передать ini файл - секунда и у тебя построен новый кусок модели. Всю модель туда-сюда не погоняешь. По таким ini файлам можно модель заново собирать в новом файле. Правда его базу блоков надо будет заново загружать библиотекой. С Kpblc-ом мы такую штуку на внешние ссылки делали, но не доделали. Кто хочет поучаствовать в этой затее? |
||||
![]() |
|
||||
Все те же на манеже
![]() Задача та же - вставка блока КМ-ЭЛЕМЕНТ (vcBlockPos_KM-1) а-ля рисование элементов. Дима_, твой последний вариант лиспа сделанный с помощью entmakex, вообще не видит атрибуты у блока. Т.е. когда вставляем блок "шпилька" все ОК! Но при вставке блока "vcBlockPos_KM-1" все атрибуты просто отсекаются. Такое ощещение, что entmakex создает блок, а не вставляет его вхождение. Кстати это имя блока "vcBlockPos_KM-1" - уникально. Его менять нежелательно, т.к. на него завязан VetCAD (для автоматического создания спецификаций). Но если испльзовать такое сложное имя блока, то автокад вылетает. Первый вариант лиспа, где вставка с помощью command, работает нормально если вставка значений атрибутов по умолчанию (ATTREQ=0). Если ATTREQ=1, то кад вылетает с ошибкой. Т.е. опять атрибуты... Как решить эти проблемы?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Толком я не понял что у тебя отсекает но в чем там проблема сказать могу ...
В варианте Дима_ выбор вставленного блока для модификации дин свойств производится функцией Цитата:
Чтобы это побороть нужно переписать лисп с учетом этой темы, обрати внимание что там тоже было через Цитата:
Вообщем задача у тебя мне не очень понятна, но попробуй вдруг заработает: Код:
|
|||
![]() |
|
||||
Задачу вставки блока КМ-ЭЛЕМЕНТ вроде решить удалось. Не все гладко, но уже похоже на то что нужно.
Код:
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 05.02.2009 в 07:47. |
||||
![]() |
|
||||
У меня возникла несколько иная ситуация, но по той же тематике. Имею блок (не динамический). Блок находится в тул палетке. Требуется вставить его в чертеж так, чтобы затем указывались сперва угол вставки а затем и scale блока (причем scale не вводится в ком строке а указывается реал тайм, то есть точками на чертеже). Если объяснил не очень ясно, то смотрите аттач.
__________________
Блог |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Руководство по созданию динамических блоков | tanushka_ch | Динамические блоки | 20 | 25.11.2015 20:46 |
подсчет динамических блоков | AAI | Программирование | 37 | 25.06.2012 15:05 |
Проблема вставки Динамических блоков | Владимир М | Программирование | 11 | 12.09.2007 15:42 |
Библиотека динамических блоков | Коробейников Алексей | Динамические блоки | 2 | 05.04.2005 16:08 |