|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.10.2004, 17:35 | #1 | |
Спрошу про блоки
Москва
Регистрация: 20.01.2004
Сообщений: 154
|
||
Просмотров: 13704
|
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
;FixBlock.lsp [December 31, 1997]
; ; Copyright 1996, 1997 ManuSoft Computer Services ; ; Freeware by: ; ManuSoft Computer Services ; http://www.manusoft.com ; ; Load function, then enter FIXBLOCK to redefine selected blocks ; so that all entities are on layer '0', color 'BYBLOCK'. ; (defun C:FixBlock (/ ss cnt blkname donelist Grp Update) (defun Grp (gc el) (cdr (assoc gc el))) (defun Update (bname / ename elist) (setq ename (tblobjname "BLOCK" bname)) (while ename (setq elist (entget ename '("*")) elist (subst '(8 . "0") (assoc 8 elist) elist) elist (if (assoc 62 elist) (subst '(62 . 0) (assoc 62 elist) elist) (append elist '((62 . 0))))) (entmake elist) (setq ename (entnext ename))) (if (/= "ENDBLK" (Grp 0 elist)) (entmake '((0 . "ENDBLK") (8 . "0") (62 . 0)))) ) (if (> (logand (Grp 70 (tblsearch "layer" "0")) 1) 0) (princ "\nLayer 0 must be thawed before running FIXBLOCK!\n") (progn (if (progn (princ "\nPress <Enter> to fix all defined blocks\n") (setq ss (ssget '((0 . "INSERT"))))) (progn (setq cnt (sslength ss)) (while (>= (setq cnt (1- cnt)) 0) (if (not (member (setq blkname (Grp 2 (entget (ssname ss cnt)))) donelist)) (progn (Update blkname) (setq donelist (cons blkname donelist))))) (setq cnt (sslength ss))) (progn (setq cnt 0) (while (setq blkname (Grp 2 (tblnext "BLOCK" (not blkname)))) (Update blkname) (setq cnt (1+ cnt))))) (princ (strcat "\n" (itoa cnt) " block" (if (= cnt 1) "" "s") " redefined\n")))) (princ) ) ;End-of-file После этого команда Regen |
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
У меня тоже есть вопросик касательно блоков: - Создаю значится блок, присваиваю ему имя, аккуратненько заполняю description, сохраняюсь, затем вдруг захотелось поменять или дополнить имя или описание, -так description виден только в DesignCenter, в свойствах даже и не упоминается и ничем другим не читается, refedit позволяет редактировать сам блок, но не имя и описание.
Пока борюсь с этим EXPLODE>EDIT>MAKE BLOCK, может кто подскажет более простой путь, и как оперативно просмотреть DESCRIPTION? |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Если будешь пользоваться убери из листинга фразу:
Цитата:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Пришлось немного усовершенствовать и подправить поскольку сам работаю с архитектурными чертежами и этот ЛИСП мне не лишний. Прога делает блоки "правильными" т. е. 1) все составляющие примитивы в слое "0" 2) цвет "ByBlock". Сами блоки остаются в своем слое и им присваивается цвет "ByLayer". Заблокированные слои на время работы программы разблокируются и потом восстанавливают состояние.
Код:
|
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
http://www.kurganobl.ru/cad/book.jsp...=272&tn=main#b |
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
Fantomas
Огромное спасибо за помощь, оба LISPa как раз в тему, правда мне приходится работать с элетронными компонентами и библиотека накопилась довольно приличная. Жаль конечно, что разработчики не решили этот вопрос, хотя он напрашивается сам собой :roll: |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
У меня на этот счет есть идея. Можно ведь использоваь атрибуты блоков причем невидимые. Мне несложно написать лиспик который вставил бы в каждый блок ваших библиотек этот невидимый атрибут соответствующий Description блока.
Будет просмотр и редактирование по двойному щелчку ну и соответственно все все остальное с атрибутами связанное 8) Делаете свои библиотеки по привычке заполняя Description, затем запускаете прогу и она автоматом вставляет во все блоки невидимые атрибуты. Если к примеру вы используете "чужой" блок без Description, то атрибут тоже будет создаваться но к примеру с прочерком "-". А если в Description использовать по договоренности служебные знаки к примеру $1$Locheed-Martin$1$ $2$Laser Gun$2$ $3$SLG-134$3$ $4$10000000 USD$4$ то в блоке могут создаваться несколько атрибутов: Manufacturer: Locheed-Martin Devise: Space Laser Gun Model: SLG-134 Price: 10000000 USD Что то я разошелся... |
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
Цитата:
|
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
Цитата:
Цитата:
Цитата:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Лиспик "синхронизирующий" Description и соответствующий атрибут блока напишу. Насчет "$1$"тоже не слишком сложно, но хочется знать насколько нужно и если нужно то какие пункты? Цитата:
|
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
Цитата:
Цитата:
Manufacturer: Model: Part. N: |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Код:
(ru-block-set-description "<имя блока>" "<новое описание>") По уму, надо делать оболочку с вопросами или диалогом, но для этого надо представлять, что хочется в итоге. |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
В теме http://dwg.ru/forum/viewtopic.php?t=...c802e4c620efee Startrek уже ответил, как отредактировать/добавить описание к блоку штатными средствами и без LISP. Из списка блоков окна Block Defenition выбери свой и заполни Description
Эдуард> Твой LISP все блоки чертежа одновременно переопределяет так чтобы все его элементы оказались в слое 0, свойства же их сохраняются. Между тем в HELP сказано: If you want.. retain original properties create objects in any layer but 0 (zero). То есть если надо оставить, например, цвет оригинальным, не переноси объект в 0. Несмотря на это, как будто все работает, даже и если 0. Но HELP недаром так дает. Видимо, что-то есть. (См в HELP на слове bylayer статью Control the color...). Видимо, в лиспе должен быть выбор, по какому варианту из 3-х (см. указанный хелп) чинить блоки. По этой же причине нельзя все сразу блоки ремонтировать, надо поименно или выбором рамкой. Fantomas> Опция All изменит все блоки в модели и в листе, а это опасно. Чем в таком случае твой лисп отличается от того, что дал я? |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
|
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
Цитата:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Vova
Цитата:
Код:
Цитата:
Цитата:
Переопределение блока действительно работает "криво". Vova! Убедительная просьба! Когда вставляете код, польуйтесь тегами . Иначе тяжело читать и сбиваются скобки. >Lamer Может завтра а скорее в понедельник постараемся решить проблеммы. Код уже в голову не идет, спать хочется... |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Цитата:
Fantomas> спасибо, что подправил мой любимый старый лисп. Хотя я не жаловался, в 2004 он работал. Хотя, как будто, что-то замечал. Kак и ты, использую его для перекраски архитектурных чертежей в наши подосновы. В цвет №8, а в плотстиле он еще и 80% яркости. Этот файл не чинит внутренние блоки. Приходится заходить сначала в Refedit. А если еще глубже блок? Можно ли "углубить" программу? |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Vova
Цитата:
Как говориться с понедельника начнем. Вчера после обеда накрылся загрузочный сектор на диске (хорошо что хоть файлы остались). Так что я только переустановкой компа и занимался... |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
По совету Vova улучшил лисп для "исправления" блоков.
1) Убрал опцию All потому что действительно нехорошо что программа обрабатывает все блоки в Модели и Листах. При желании можно все отметить рамкой. 2) Ввел опцию определяющую цвет блоков после обработки: по Слою, по Блоку или Текущий цвет блока. >Vova Я не стал переделывать твой лисп на предмет обработки вложенных блоков, поскольку мой их и так обрабатывает. Код:
Перехожу к программе с атрибутами. |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Lamer
Написал функцию ВСТАВКИ/УДАЛЕНИЯ невидимых атрибутов. Запускать можно написав небольшие функции: Код:
Проблемма о которой я спрашивал в другом топике уже снята Код:
|
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Цитата:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Цитата:
|
|||
|
||||
Регистрация: 18.10.2004
Odessa
Сообщений: 226
|
Цитата:
|
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Изменение Description, тоже напишу, но не сегодня, много работы. Тем более что с функцией подкинутой Alaspher эьо пустяк |
|||
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
|
Цитата:
А самогоноварение процветает? |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Цитата:
Все пора работать :? |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Пара непрограммных неточностей/опечаток:
Цитата:
Цитата:
|
|||
|
||||
Регистрация: 23.10.2007
Сообщений: 2
|
Вопрос такой - про блоки!
Подскажите, пожалуйста, такую весчь - при создании блока в 2004 автокаде. его редактировать можно в самом рабочем поле автокада, при этом все остальное становиться нередактируемым - что очень удобно, ибо виден весь чертеж.. а вопрос в следующем, поставила я себе 2007 автокад, а там - на тебе отдельное окошко... я не вижу чертежа - как следствие не понимаю, что мне редактировать.. выскакивает редактор только самого блока!!! что делать???? есть ли эта опция в 2007 и просто завуалирована, либо в 2007 это нафик убрали?? помогите!! |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
Правый пинок и в конт.меню "Редактировать на месте"
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Не так много воды утекло от 2004, и уже в след. версии-06, появились дин. блоки, а вместе с ними новый их редактор. Что-же ты не интересуешься новинками в автокаде? На форумах и в коридорах, наверное, всю плешь проели, перемалывая дин. блоки, и это прошло мимо...
Ах, да, ты новичек на форуме. Будешь регулярно здесь тусоваться, не упустишь очередные новинки. Тебе задание: сделать простой динамический блок. Четырехугольник, который можно растянуть за одну грипсу |
|||
|
||||
Вопросики такие есть:
1. Можно ли так сделать чтобы свойства одного д.блока копировались в другой? Если можно то как? На лисе есть динамический блок (например КБЛОК1) у него есть параметр видимости (например 1,2,3,4,5) На этом же листе есть другой д. блок (например МБЛОК1) с параметром видимости (те же 1,2,3,4,5). Задача такая: я выбираю в блоке КБЛОК1 параметр видимости например "2". потом например тыкаю кнопку которая выполняет лисп и МБЛОК1 меняет автоматом свой параметр видимости (например с 3) на "2" соответственно. КБЛОК1 и МБЛОК1 имеют разную геометрию но суть у них одинаковая. 2. А если этих блоков 500 и больше? (т.е. уже нужно при нажатии кнопки чтобы блоки например начинающиеся (в названии блока) на "К" сверились и изменили если необходимо свои свойства в блоках начинающиеся на букву "М")
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
Немного подумал что конкретно хочется... наверно идея немного и не такая... и так не получится...
более подробно в суть: Есть поле (ПОЛЕ "К") с ячейками(80х90 например) все выглядит как морской бой А4, Б15, К56 и т.д.В каждой ячейке есть какой-то блок со свими свойствами со своими атрибутами (он может повторяться в других ячейках) И есть другое поле (ПОЛЕ "М") по сути с теми же блоками (вид у них другой) поля и ячейки стандартные и заморожены (не редактируются воопсще) . Я заполняю блоками поле "К", редактирую в блоках атрибуты, меняю свойства (только свойство видимости). А теперь хочеться сделать такую фантастическую штуку: чтобы поле "М" зеркально заполнилось в соответствии с полем "К", причем скопировало все свойства и атрибуты.
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
|
||||
|
||||
Shoorup,
В параллельной теме, я показал структуру соответствий описаний динамических блоков в файле... Вчера я проверял, дополнительные словари (если их пока не существует) можно создать, а так же все поддается модификации! Другими словами, если забыть о вла функциях, то можно рулить всеми объектами из лиспа. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||