|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Программная вставка динамических блоков
инженер
Владивосток
Регистрация: 09.08.2006
Сообщений: 1,537
|
||
Просмотров: 10356
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А предупредить о формате файла что мешало?
Посмотри аттач - оно?
__________________
Моя библиотека 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,450
|
Сейчас, наверное, скажу глупость, но... По-моему, такое невозможно.
Все, что приходит в голову, и так достаточно очевидно - установить индексируемые свойства в значения "по умолчанию", повторная вставка по пробелу и т.п.,- и вдобавок все равно не решает поставленной задачи ![]()
__________________
Моя библиотека 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 не вводится в ком строке а указывается реал тайм, то есть точками на чертеже). Если объяснил не очень ясно, то смотрите аттач.
__________________
Блог |
||||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Код:
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
|
||||
Дима_,
Нужно чтобы запросы на поворот и размер выходили тут же, а дин. блок нужно сперва вставить, а потом тянуть его за гриспы, нудно... ![]() Krieger, Спасибо, Почти работает. Только вот проблема возникла. Я скопировал файл в дирректорию прописанную в акаде, переименовал его в 1.dwg (так требует -insert). Но Блок вставляется только если в файле уже вставляли блок под именем "1", иначе пишет Код:
(Тока чур не надо про его вредоносность ![]() Твой макрос натолкнул меня на создание вот какого лиспа. Блок сварного катета можно создавать прямо в файле, и потом вставлять его куда угодно, таким образом можно избежать трудностей возникших у меня. Когда-то VVA дал мне пару похожих уроков. Щас попробую навоять.
__________________
Блог |
||||
![]() |
|
||||
Блин. Забыл самую элементарную вешь. Как создать набор объектов в лиспе?
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
ssget тебе в помощь
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc,
Спасибо, пока ждал ответа сам докопался. ![]() Вот какой лиспик получился. Код:
1. Напомните плиз что написать вмето (setq pt0 (getpoint)) чтобы выходил запрос "Укажите точку вставки" 2. Еще надо бы подумать как сделать так, чтобы когда указываешь размер блока сам блок уже висел на курсоре.
__________________
Блог Последний раз редактировалось Red Nova, 05.01.2009 в 00:39. |
||||
![]() |
|
||||
Блок на курсор вроде как повесил, хотя не сказать что это идеальный вариант, ведь при указании курсором размера блок всегда занимает одно положение а курсор иногда нужно направить в другую строну. Вот если бы был вариант чтобы при скейле блок еще и поворачивался с курсором было бы супер. А пока получилось вот так
Код:
__________________
Блог Последний раз редактировалось Red Nova, 05.01.2009 в 00:39. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
Цитата:
http://dwg.ru/dnl/2527 Кстати, обновлю сегодня.
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
|
||||
Krieger,
Цитата:
Кулик Алексей aka kpblc, Почитал, но быстро заблудился. Дай пожалуйста ссылку на конкретный пост.
__________________
Блог |
||||
![]() |
|
||||
Krieger,
Покопался в твоей программе. Понравилося твой алгоритм вставки катета шва. Хотелось бы приспособить его к моему блоку. Я не имею понятия о расширении vlx, если есть в простом lsp выложи плиз.
__________________
Блог |
||||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
VLX это компилированный лисп. Никому не показываю, т.к. на нем учится не стоит, очень примитивный. Однако работает, а переписывать в лом. Отправил тебе в ЛС.
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
|
||||
Спасибо. Я думал что скомпилированный lsp это только fas... Попытаюсь разобраться в твоем коде.
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Krieger, а можно тоже полюбопытствовать?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Сообщение получил, спасибо. Понял, что мой вариант менее гибок для повседневной работы
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Почему? Самому не очень нравится, но оставил, так как в одном файле этих треугольничков может быть ну очень много. Вот сейчас произволно открыл один файл малюсенького КМ, посчитал эти блоки, получилось 289. Чуть посложнее и за полтыщи перевалит, но там уже и кад не ворочается, приходится разбивать по файлам...
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Руководство по созданию динамических блоков | 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 |