![]() |
Здравствуйте, гость ( Вход | Регистрация )
- Стандарт НП «АВОК» 7.11-2024 «Рекомендации по проектированию инженерных систем дошкольных образовательных организаций» |
АВОК в соц. сетях
![]() ![]() ![]() ![]() |
ИНН: 7714824045 | erid: 2VtzqwzKQiU |
|
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
ОБНОВЛЕНИЕ 13.12.07
продолжаю потихоньку доделывать по мере сил, возможности и желания... Набор программ (моя програмка на ВБА, а остальное (различного рода програмки из нета) в основном лисп) Всё это легко можно найти на просторах сети, просто это вариант малость упорядоченный и не такой сложный в установке. Я работаю на Автокаде 2006 не локализованном, вроде все работает. Набор выкладываю как есть, т.е. не обязательно всё Вам должно понравиться... ![]() Спасибо всем кто пишет для Автокада на лиспе. Не свои коды я оставил без изменений, по этому вроде как их авторы не должны бы на меня обижаться за то, что я пытаюсь нести их творчесво в массы. Запустить саморазорхивирующийся файл, указать место установки, и прочитать (если Вы не сильны в запуске ВБА приложений) указания по установке. Что нового: v 4.7 + исправлено то, о чем говрилось тут (чуть ниже) + довалнена функция проставления высотных отметок (применяются дин блоки, только для акад 2006 и выше). можно конечно выполнить простым блоком с атрибутом, но это уж кому надо, исправить не сильно долго. кнопка располагается в блоке "дополнения" v 4.8 + добавлена фунцкия проставления разрыва труб + добавлена функция проставления штриховки труб на разрезах Сообщение отредактировал ssn - 29.12.2007, 16:18
Прикрепленные файлы
|
|
|
Гость_OVKT_* |
![]()
Сообщение
#2
|
Guest Forum ![]() |
Вот список лиспов. Да, некоторые нужны каждый день. Вижу, что есть те, которые скачивал когда-то.
Сообщение отредактировал OVKT - 1.8.2007, 12:47
Прикрепленные файлы
|
|
|
![]()
Сообщение
#3
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Несколько замечаний:
- напрочь проигнорированы пользователи версий "до 2005 включительно". - впрямую прописаны пути к картинкам: Код - <MenuMacro UID="MMU_0054"> - <Macro type="Any"> <Revision MajorVersion="16" MinorVersion="2" UserVersion="1" /> <Name xlate="true" UID="XLS_1725">Выпрямление линий по осям</Name> <Command>^C^C^P(if (not C:L_ALIGN_XY) (load "l_align_xy")) L_ALIGN_XY</Command> <HelpString xlate="true" UID="XLS_1726">Выравнивает линии вертикально или горизонтально</HelpString> <SmallImage Name="C:\Program Files\AutoCAD 2006\Support\оформление\l_align_xy.BMP" /> <LargeImage Name="C:\Program Files\AutoCAD 2006\Support\оформление\l_align_xy.BMP" /> </Macro> </MenuMacro> У меня, конечно, установлен 2006, да только ADT. А что делать, если установлен 2007 и дальше? - для "большой пуржилки" лучше использовать вариант http://jtbworld.com/lisp/purger.htm - там очистки больше. - посмотрите "Довески" Геннадия Поспелова (http://www.cadhlp.kulichki.com/). - вместо mlength.lsp посмотрите на тему http://dwg.ru/forum/viewtopic.php?t=953 - там вариантов немеряно было. Это на первый взгляд. Сообщение отредактировал kpblc - 2.8.2007, 12:16 |
|
|
![]()
Сообщение
#4
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
2 kpbIc
спасибо за замечания... я не претендовал на нечто необычное... просто собирал для себя и у меня все работает... вот, решил поделиться тем что есть с народом я лисп не знаю, но часто читаю Ваши посты, и ещё раз вам спасибо за Ваши наработки в области програмирования. НА сколько я понял это листинг файла меню... А если пользователь поместит папку не туда, то путь к этой папке всёравно пропишетсяв путях потдержки, и мне кажется, всеравно картинка найдётся... (по карйней мере у меня на работе ставили многие, вроде как проблем не было) По поводу ранних версий (2005 и ниже), дак не мне Вам объяснить что там файл меню не так устроен, а разветвлять установке не хотелось (да и не к чему, у нас уже все на 2006 сидят) А вот что будет при установке на 2007 мне и самому интересно ![]() а посмотри "Довески" Геннадия Поспелова (http://www.cadhlp.kulichki.com/), из них я тоже кое что дёргал, и ему большой спасибо Сообщение отредактировал ssn - 2.8.2007, 11:42 |
|
|
![]()
Сообщение
#5
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
У меня на 2006 ADT не встало, может, портит дело тот зоопарк, который у меня на машине (стоят в разных ипостасях от AutoCAD'ы 2005 до 2008 включительно). Сейчас попробую почистить и поставить "с нуля". Может, и заработает.
|
|
|
![]()
Сообщение
#6
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
Скачало 26 человек. Оно хоть встало на Автокад или действительно не напрасны опасения уважаемого програмиста - kpbIc
на самом деле там и вставать то не чему... просто сохранён фалй меню, и установочный макрос его подгружает. можно ручками просто этот фалй меню подгрузить и всё и ещё раз скажу, что очень необычного там ничего нет, просто макросы натасканы с нета и объединены в одну кучу Сообщение отредактировал ssn - 2.8.2007, 11:58 |
|
|
![]()
Сообщение
#7
|
|
Группа: Участники форума Сообщений: 1587 Регистрация: 24.1.2005 Из: Чита Пользователь №: 384 ![]() |
Цитата(ssn @ 2.8.2007, 18:57) [snapback]152278[/snapback] Скачало 26 человек. Оно хоть встало на Автокад или действительно не напрасны опасения уважаемого програмиста - kpbIc Автору спасибо за труд и вклад в развитие раздела. Набор программ установился без проблем на AutoCAD 2006 (русский). На первый взгляд всё работает. |
|
|
![]()
Сообщение
#8
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
ADT 2006 RUS + SP1 - мимо (рабочая и домашняя)
AutoCAD 2007 Eng + SP 1 - мимо (домашняя) ADT 2007 Rus + SP1 - мимо (рабочая и домашняя) AutoCAD 2008 Eng - мимо (рабочая и домашняя) То бишь встать встало, но вместо картинок - знаки вопроса. Функции (в смысле кнопки) работают. P.S. Нечто наподобие readme.txt делать не планируется? |
|
|
![]()
Сообщение
#9
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
а папочку с макросами в пути потдержки?
просто если ручками подгрузить файл меню, то надо и ручками прописать в пути потдержки папку (макрос подгружал и прописывал), и тогда, как мне кажется, кнопки дожны найтись... я как то писал readme.txt по своему ВБА... это ещё можно добавить... а вот чужие наработки, вроде как не совсем коррректно... вот такое описание: ===================================================== Данная програмка написана на VBA. Код программы открыт. Программа может (вернее конечно можете Вы при помощи программы...): Кнопочка 1. проставление обозначений сварных соединений по ЕСКД (с набором типов сварок основных ГОСТов). Обозначение получается из простого набора примитивов Кнопочка 2. работа с листами. создание форматок и их дальнейшая распечатка. вычисление массы детали (при наличии 3Д модели конечно...) Применён не очень стандартный подход, но мне нравится... Кнопочка 3. блок маленьких дополнений: 3.1 проставление позиций 3.2 вычисление основных харрактеристик сечений W, J (при расчётах всякого рода на прочность, короче просто конструктор сечений без выхода из Акада) 3.3 функция переопределения свойств примитивов на значения (ленотип скейл=1; цвет, толщина, ленотип - по слою) Бывает необходимо при экпорте объектов из других приложений, например оттисков из Инвентора. 3.4 проставление осей между любыми линиями (двумя) и центров на окружностях с выведением линий осей за края окружности (окружности можно выбирать не по одному, а маской) Ничего нового, реализовано много где... 3.5 построение аксонометрической диметральной проекции (для энергетиков) при наличии 3Д разводки осей трубопроводов программа не претендует ни на какие звания и регалии и вполне возможно не оправдает ваших надежд! ![]() В момент начала её написания я только начал изучать VBA и скорее всего знающий человек найдёт реализацию алгоритмов отвратительной. Тем не менее, программа рабочая я больших косяков за ней замечено не было... Спасибо. ЗЫ: То чего программа точно не сможет сделать - каким либо образом навредить. 100%. ============================================================ Сообщение отредактировал ssn - 3.8.2007, 7:38 |
|
|
![]()
Сообщение
#10
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Цитата а папочку с макросами в пути потдержки? Ну не дурнее паровоза же... Ессно, было сделано. Для обеспечения "тепличных" условий вообще в новом профиле запускал. Насчет того, чтобы макрос устанавливал - да, устанавливает. Только ситуацию это не меняет никоим образом.
Прикрепленные файлы
|
|
|
![]()
Сообщение
#11
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
2 kpbIc
мдя... не красиво... а как сделать что бы было красиво? (всмысле не прописывать путь к картинкам жёстко?) Вообще, вопрос потерянных картинок на кнопках в автокаде довольно таки интересен. Мне, например, не понятна логика работы программы с ними. Как впрочем и файл меню... Что бы создать этот файл меню мне пришлось повозиться... У каждой кнопки есть свой номер. Если создавать кнопки подряд, за один заход, всё нормально... каждой новой кнопке присваивается следующий порядковый номер. Но вот если начинать добавлять кнопки в уже существующие панели, тут какая то фигня начинается... кнопкам присваиваются уже существующие номера и соответственно всё начинает косячить... Т.е. надо было вести список использованных номеров... Может это просто проблема именно моего автокада конечно же. Да и вообще, ну создал я своё меню, в нем создал панели и на панелях кнопки с нумерацией (как раз что то вроде MenuMacro UID="MMU_0054"). А если намашине уже была ранее создана какая то пользовательская панель, то вероятно нумерация может быть занята (хотя конечно же логично было бы что бы она продолжилась). Но ведь у меня в меню нумерация прописана жестко... Вообщем, не понимаю я до конца этого механизма. (но об этом я писал сразу, что программа может и не встать) Сообщение отредактировал ssn - 3.8.2007, 9:14 |
|
|
![]()
Сообщение
#12
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Ну, лично я вижу несколько вариантов.
Первый, самый тупой и нетворческий - руками попробовать "пройтись" по cui-файлу, снеся в нем все прямые пути. Плюсы: достаточно быстро и не задумываясь. Минусы: это может понадобиться делать после каждого изменения cui-файла (если его, конечно, предполагается предоставлять "на сторону"). И достаточно большое количество работы. Второй, немного позабавнее - сделать mnu-файл, в котором прописывать стандартные кнопки и панели инструментов. Потом его [полу]автоматически сконвертировать в cui. Помимо прочего, пользователи 2002-2005 тоже не будут чувствовать себя обделенными ![]() ![]() Третий, самый "продвинуто-задвинутый". На машину ставится либо Visual Studio 6.0, либо Delphi, в этой среде разработки собирается dll с ресурсами (рисунками кнопок), этой dll-ке дается имя как у файла меню. Эта dll кладется рядом с mnu / mns / cui файлом; файл меню правится - сносятся имена файлов, и вместо них устанавливаются имена ресурсов. dll не регистрируется в системе. Плюсы: кнопки никто, кроме разработчика, поменять не может; предоставляется всего один файл вместо нескольких десятков маленьких bmp. Минусы: для каждого добавления кнопки надо перекомпилировать dll; это решение не исключает, что понадобится применять один из предыдущих вариантов. Ессно, всю дорогу ИМХО. |
|
|
![]()
Сообщение
#13
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
ну наверно все же первый...
открыть в блокноте, а потом найти и заменить... |
|
|
![]()
Сообщение
#14
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Э! Адын мамэнт, да?
Блокнот для правки .cui файла есть зло и породитель ошибок и суицида с применением ограждающих конструкций! Дело в том, что cui-файл идет в кодировке UTF-8, что блокнот благополучно хавает, но в результате файл может быть сохранен в кодировке Win-1251:!: Поэтому лучше искать notepad++ (Хотя чего его искать: http://notepad-plus.sourceforge.net/ru/site.htm) - оно фришное, на русском, работать в нем - сплошное удовольствие. Ну или ruSourceExplorerR4 (http://dwg.ru/dnl/2548) - тоже отличная штукенция. Сообщение отредактировал kpblc - 3.8.2007, 9:27 |
|
|
![]()
Сообщение
#15
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
а по поводу автонумерации кнопок (чуть выше писал) что можно сказать?
|
|
|
![]()
Сообщение
#16
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Тогда начинаем исследовательскую работу
![]() Открываем cui в том же notepad++ и ищем первое вхождение, например, MMU_0001: Код <MenuMacro UID="MMU_0001"> <Macro type="Any"> <Revision MajorVersion="16" MinorVersion="2" UserVersion="1" /> <Name xlate="true" UID="XLS_1703">сварные швы</Name> <Command>^C^C_.-vbarun оформление.dvb!Module1.сварные_швы</Command> <HelpString xlate="true" UID="XLS_1704">Проставление обозначения сварного шва</HelpString> <SmallImage Name="C:\Program Files\AutoCAD 2006\Support\оформление\сварные_швы.bmp" /> <LargeImage Name="C:\Program Files\AutoCAD 2006\Support\оформление\сварные_швы.bmp" /> </Macro> </MenuMacro> Ага, пути до картинок снесем, но слегка попозже. Следующее вхождение будет уже в Код <ToolbarRoot> И больше их нет. ЯТД, это просто аналог ID в mnu-файле. А вот XLS_* и TBBU_* отдельно посмотрим (но потом).<Toolbar ToolbarOrient="floating" ToolbarVisible="show" xval="200" yval="200" rows="1" UID="TBU_0001"> <Revision MajorVersion="16" MinorVersion="2" UserVersion="1" /> <Alias>Toolbar1</Alias> <Name xlate="true" UID="XLS_0001">Risovanie</Name> <ToolbarButton IsSeparator="false" UID="TBBU_0032"> <Revision MajorVersion="16" MinorVersion="2" UserVersion="1" /> <Name xlate="true" UID="XLS_1783">сварные швы</Name> <MenuItem> <MacroRef MenuMacroID="MMU_0001" /> </MenuItem> </ToolbarButton> Меняем MNU_0001, допустим, по правилам таким: Код ID_<Author>_<Doing> То есть сначала ставим ID_, потом имя автора меню (ssn), затем чего кнопарь делает. Получим, например: Код ID_SSN_WELD_SEAM_POS Судя по всему (я просто, если честно, все время пишу mnu-файл, и с cui стараюсь без особой нужды не связываться - кто его знает, чего я там порушу своими экспериментами;)), XLS_* - это указатель на владельца (toolbar) кнопки. Для чего и кем используется TBBU_*, не очень понятно - прямого повтора я не нашел. Но, поскольку оно тоже нумеруется, можно и ему сделать уникальный ID: Код TBBU_SsM_WELD_SEAM_POS Можно попробовать сделать mnu-файлик и его конвертнуть. А потом в нем поковыряться. К примеру, такой: Код // преобразовывается в аттач.// AutoCAD menu file // ***MENUGROUP=kpblc-CAD ***TOOLBARS **KPBLC-CAD_ОБЩИЕ **TB_KPBLC-CAD_ОБЩИЕ **TB_CADWARE_ОБЩИЕ [_Toolbar("CADWare Общие", _Bottom, _Show, 1, 1, 1)] ID_CADWARE_WHE_orderup [_Button("Перенос объекта на самый верх", "16_order", "32_order")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-layer-front nil));cadware; ID_CADWARE_WHE_TubeMark [_Button("Обозначение трубопровода", "16_tube", "32_tube")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-block-insert-tube-mark));cadware; ID_CADWARE_WHE_TubeCross [_Button("Визуальное перекрестие труб", "16_tubecover", "32_tubecover")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-block-insert-tube-cutter));cadware; [--] ID_CADWARE_WHE_UKLON [_Button("Обозначение уклона", "16_gradient", "32_gradient")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-insert-gradient));cadware; ID_CADWARE_COMMON_Level [_Button("Отметка", "16_level", "32_level")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-block-level-insert nil));cadware; ID_CADWARE_COMMON_LEVEL_PLAN [_Button("Отметка, план", "16_level_plan", "16_level_plan")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-block-level-insert t));cadware; **KPBLC-CADC_МАСШТАБЫ **TB_KPBLC-CADC_МАСШТАБЫ **TB_CADWARE_МАСШТАБЫ [_Toolbar("CADWare Масштабы", _Bottom, _Show, 4, 1, 1)] ID_CADWARE_SCALE_1 [_Button("1:1", "16_SC_1_001", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 1) (princ));cadware; ID_CADWARE_SCALE_5 [_Button("1:5", "16_SC_1_005", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 5) (princ));cadware; ID_CADWARE_SCALE_10 [_Button("1:10", "16_SC_1_010", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 10) (princ));cadware; ID_CADWARE_SCALE_25 [_Button("1:25", "16_SC_1_025", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 25) (princ));cadware; ID_CADWARE_SCALE_50 [_Button("1:50", "16_sc_1_050", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 50) (princ));cadware; ID_CADWARE_SCALE_100 [_Button("1:100", "16_sc_1_100", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 100) (princ));cadware; ID_CADWARE_SCALE_200 [_Button("1:200", "16_sc_1_200", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 200) (princ));cadware; Смотрим и анализируем. Например, ID_CADWARE_SCALE_100 : Код <MenuMacro UID="ID_CADWARE_SCALE_100"> Промежуток нам сейчас неинтересен, идем дальше.<Macro type="Any"> <Revision MajorVersion="16" MinorVersion="2" UserVersion="1" /> <Name xlate="true" UID="XLS_0025">1:100</Name> <Command>^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 100) (princ));cadware; </Command> <SmallImage Name="16_sc_1_100" /> <LargeImage Name="ICON_16_BLANK" /> </Macro> </MenuMacro> Код <ToolbarButton IsSeparator="false" UID="TBBU_0013"> <Revision MajorVersion="16" MinorVersion="2" UserVersion="1" /> <Name xlate="true" UID="XLS_0026">1:100</Name> <MenuItem> <MacroRef MenuMacroID="ID_CADWARE_SCALE_100" /> </MenuItem> </ToolbarButton> Как видно, XLS_* и TBBU_* приняли значения по умолчанию, а вот MenuMacro UID приняло те значения, которые прописаны были в mnu. При этом конвертация проводилась в 2006 и 2007, результаты лично у меня получились аналогичные (цифры только менялись и все). Добавление / удаление кнопок проблем (пока?) не вызывало.
Прикрепленные файлы
|
|
|
![]()
Сообщение
#17
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
ааа... ну вот, вроде тогда понятно из за чего могут быть косяки...
надо обязательно менять нумерацию MenuMacro UID на какую-то индивидуальную. хотя бы тот же MMU на SSN и опять же, запоминать их и при добавлении новых кнопок учитывать уже имеющиеся.... Хотя это, конечно же, как мне кажется, косяк Автокада. получается, если кто то уже у себя создавал менюшки и кнопки на них, есть реальный шанс пересечений нумерации кнопок. Хотя это и звучит по крайней мере странно.... |
|
|
![]()
Сообщение
#18
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Этот "глюк" в каде тянется как минимум с 2002 версии. но там проще было редактировать файлы меню.
ИМХО: старайтесь избегать числовых значений в описаниях UID, кроме самых необходимых случаев. Кроме того, имена UID и прочему лучше все же давать на английском - проблем меньше (даже в официально локализованных версиях). Сообщение отредактировал kpblc - 3.8.2007, 10:19 |
|
|
![]()
Сообщение
#19
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
а функция _kpblc-scale-set что делает?
давно интересует возможность рисовать сразу в масштабе (вернее сказать дорисовывать виды, переодически возникает такая необходимость, вид смасштабирован, а надо кое что подправить... и приходиться все команды вводить с делением, типа скопировать линию на 50 мм - КОПИ 50/масшаб... ну не очень удобно...) Про то что надо рисовать 1:1 можно не рассказывать, знаю ![]() |
|
|
![]()
Сообщение
#20
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Еще раз перечитал собственный пост, понял, что всех запутал. Текст поменял.
Так вот, показан кусок меню, которое используется в моей собственной системе (т.н. CADWare). Функция _kpblc-scale-set используется для изменения масштаба отображения оформительских элементов (на данный момент размеров, штриховок и блоков форматки). Но на данный момент она не нужна, и роли никакой ее наличие или отсутствие не играет - важно было разобраться с файлами меню. К вопросу о копировании / перемещении и прочем, выполняемом с учетом текущего масштаба. Теоретически можно попытаться решить эту проблему так называемыми командными реакторами, но только гарантировать правильность работы такого решения лично я не в силах. Сообщение отредактировал kpblc - 3.8.2007, 12:52 |
|
|
![]()
Сообщение
#21
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
2 Алексей
ну собственно нет дак нет.... будем делать как делаем... Я вот в СПДС видел одну очень полезную функцию, которую переодически возникает желание создать самому. И тут такая мысль - может это уже где то есть (кроме СПДС): функция проставления отметок на разрезах. как это видиться мне: 1 есть динамические блоки обозначений высотных отметок (4 штуки) с тянущимся хвостиком 2 есть возможность выбрать стартовую отметку, относительно которой будут считаться высоты (не обязательно ноль) для данного разреза в зависимости от введённого масштаба (можно его брать например с размера на разрезе, ну либо ручками вводить) 3 возможность маской выбирать высоты и обновлять их при изменении стартовой отметки (вручную). Т.е. выбираем разрез, задаём известную отметку (хотя это можно и потом делать, когда все высоты проставлены, выбрать их все и обновить), далее выбираем точку на разрезе, высота которой интересна, далее клик вправо или влево вверх или вниз (какой из четырёх блоков нужен с выбором положения значка отметки по оси Х), потом программа вычисляет высоту и заносит её в атрибут блока. вот так. Может уже где то есть такое? |
|
|
![]()
Сообщение
#22
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Насчет отметок - думаю, я правильно угадал, что нужны отметки для разрезов? Если да, по посмотрите то, что есть на dwg.ru в разделе download - может, что и подойдет. Лично мне пришлось отказаться от использования динамических блоков, поскольку основная аудитория пользователей сидит на 2005 или 2002.
|
|
|
Гость_OVKT_* |
![]()
Сообщение
#23
|
Guest Forum ![]() |
А я тоже отказался от изучения динамичеких блоков, остановился на обыкновенных, даже без атрибутов, зато применяю их по тысяче штук на листе.
Может быть, блоки с аттрибутами и динамические круто, но мне не нужно и не вижу в дальнейшем чтобы возникла потребность в интеллектуальных блоках... Сижу на Автокаде 2004, без надстроек, только со своими 30 кнопками. |
|
|
![]()
Сообщение
#24
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Откровенно говоря, достаточно странная позиция. Я больше чем уверен, что из всех тех блоков (по-моему, их около сотни) можно обойтись 20-30, поставив им всего лишь атрибуты. А добавив в описания блоков всякие хитрости, можно еще больше упростить себе жизнь.
|
|
|
![]()
Сообщение
#25
|
|
выпускник ТГВ г.Саратов, теперь в Москве Группа: Участники форума Сообщений: 2645 Регистрация: 5.5.2006 Из: Саратов-Москва Пользователь №: 2819 ![]() |
сколько проектировщиков столько мнений
каждый имеет к томуже свой стиль оформления и чужой стиль мне за редким исключением кажется коряво-убогим это я о простых блоках. О дин блоках - а почему вы отказались от них? Ведь ими пользоваться нужно при создании чертежа на 2006м а смежнику можно будет этот чертеж точно также открыть и работать с ним в 2004м АКАДЕ только блоки утратят свою функцию динамичности тоесть из динамических станут просто блоками. Или я не прав? |
|
|
![]()
Сообщение
#26
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
При открытии файла с дин.блоками в предыдущих версиях, которые их не поддерживают, они (в смысле дин.блоки) отображаются как анонимные и, естественно, теряют свою "вкусность". Аналогичная ситуация с таблицами.
Сообщение отредактировал kpblc - 7.8.2007, 22:55 |
|
|
![]()
Сообщение
#27
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
просто интересно...
кто нить пользует функцию создания и печати форматок из данного набора? |
|
|
![]()
Сообщение
#28
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
Цитата(kpblc @ 2.8.2007, 9:17) [snapback]152160[/snapback] - для "большой пуржилки" лучше использовать вариант http://jtbworld.com/lisp/purger.htm - там очистки больше. попытался применить этот лисп, у меня его запустить не получилось... Я конечно не разбираюсь в лиспе, но этот лисп вроде как не является оконченной программой, а лишь заготовкой, которую можно исплоьзовать при написании своей программы... или я не прав? |
|
|
![]()
Сообщение
#29
|
|
CAD Developer Группа: Участники форума Сообщений: 409 Регистрация: 6.2.2006 Из: C.-Петербург, Россия Пользователь №: 2062 ![]() |
Ну не то чтобы совсем прав или неправ... Это и то и другое. Там несколько функций, каждая из которых выполняет свою часть работы (о чем в описании и сказано).
Если надо отпургенить (ох, простите, очистить) файл по полной программе, то можно сделать так (код привожу сразу весь, чтобы избежать вопросов о последовательности и методике загрузки): Код (defun c:full-purge (/ ax:purge-block ax:purge-layer ax:purge-all-layers ax:purge-layers ax:purge-no-echo deletelayerfilters deletelayerfilters2 deletelayerstates lmankill deleteallpagesetups purgeanonymgroups purgeallgroups delacad_vba purgeappid ) (vl-load-com) ;;; PURGER.LSP ;;; ;;; Various purge functions with no command line echo ;;; ;;; By Jimmy Bergmark ;;; Copyright (C) 1997-2004 JTB World, All Rights Reserved ;;; Website: www.jtbworld.com ;;; E-mail: info@jtbworld.com ;;; 2000-02-12 - First release ;;; 2003-01-09 - More added ;;; 2004-05-23 - Added support to delete filters in 2005 ;;; Written for AutoCAD 2000, 2000i, 2002, 2004, 2005 ;;; ;;; Purge named block ;;; Example: (ax:purge-block (vla-get-activedocument (vlax-get-acad-object)) ;;; "testblock") ;;; Argument: doc {document} ;;; name {a block name} ;;; Return values: T if successful, nil if not successful (defun ax:purge-block (doc name) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list (vl-catch-all-apply 'vla-item (list (vla-get-blocks doc) name) );_ end of vl-catch-all-apply );_ end of list );_ end of vl-catch-all-apply );_ end of vl-catch-all-error-p nil; name cannot be purged or doesn't exist t; name purged );_ end of if );_ end of defun ;;; Purge named layer ;;; Example: (ax:purge-layer (vla-get-activedocument (vlax-get-acad-object)) ;;; "testlayer") ;;; Argument: doc {document} ;;; name {a layer name} ;;; Return values: T if successful, nil if not successful (defun ax:purge-layer (doc name) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list (vl-catch-all-apply 'vla-item (list (vla-get-layers doc) name) );_ end of vl-catch-all-apply );_ end of list );_ end of vl-catch-all-apply );_ end of vl-catch-all-error-p nil; name cannot be purged or doesn't exist t; name purged );_ end of if );_ end of defun ;;; Purge all layers ;;; Example: (ax:purge-all-layers (vla-get-activedocument ;;; (vlax-get-acad-object))) ;;; Argument: doc {document} (defun ax:purge-all-layers (doc) (vlax-for item (vla-get-layers doc) (purge-layer (vla-get-name item)) );_ end of vlax-for );_ end of defun ;;; Purge all layers except those in list ;;; Example: (ax:purge-layers (vla-get-activedocument (vlax-get-acad-object)) ;;; '("DIM" ;;; "LAYER1")) ;;; Argument: doc {document} ;;; name {a layer name list} (defun ax:purge-layers (doc except) (vlax-for item (vla-get-layers doc) (setq ln (vla-get-name item)) (if (not (member (strcase ln) except)) (purge-layer ln) );_ end of if );_ end of vlax-for );_ end of defun ;;; Purge all with no echo to command window ;;; Example: (ax:purge-no-echo (vla-get-activedocument ;;; (vlax-get-acad-object))) ;;; Argument: doc {document} (defun ax:purge-no-echo (doc / getkeys getdictname massoc) ;;; Returns a list of keynames from the specified dictionary (defun getkeys (dictname / tmp) (if (setq tmp (dictsearch (namedobjdict) dictname)) (massoc 3 tmp) );_ end of if );_ end of defun ;;; Retrieves the entity name of the specified dictionary (defun getdictname (dictname) (if (setq tmp (dictsearch (namedobjdict) dictname)) (cdr (assoc -1 tmp)) );_ end of if );_ end of defun ;;; Utility function to get multiple group code CDRs (defun massoc (key alist / x nlist) (foreach x alist (if (eq key (car x)) (setq nlist (cons (cdr x) nlist)) );_ end of if );_ end of foreach (reverse nlist) );_ end of defun (vlax-for item (vla-get-blocks doc) (vl-catch-all-apply 'vla-delete (list item)) );_ end of vlax-for (vlax-for item (vla-get-dimstyles doc) (vl-catch-all-apply 'vla-delete (list item)) );_ end of vlax-for (vlax-for item (vla-get-linetypes doc) (vl-catch-all-apply 'vla-delete (list item)) );_ end of vlax-for (vlax-for item (vla-get-plotconfigurations doc) (vl-catch-all-apply 'vla-delete (list item)) );_ end of vlax-for ; textstyles (vlax-for item (vla-get-textstyles doc) (if (= (cdr (assoc 70 (entget (vlax-vla-object->ename item)))) 0) (vl-catch-all-apply 'vla-delete (list item)) );_ end of if );_ end of vlax-for ; shapes (vlax-for item (vla-get-textstyles doc) (if (= (cdr (assoc 70 (entget (vlax-vla-object->ename item)))) 1) (vl-catch-all-apply 'vla-delete (list item)) );_ end of if );_ end of vlax-for (setq li (getkeys "ACAD_MLINESTYLE")) (setq len (length li)) ; one style has to be left (foreach na (cdr li) (delrecord "ACAD_MLINESTYLE" na) );_ end of foreach (setq li (getkeys "ACAD_MLINESTYLE")) (setq len (length li)) (if (> len 1) (delrecord "ACAD_MLINESTYLE" (car li)) );_ end of if (vlax-for item (vla-get-layers doc) (vl-catch-all-apply 'vla-delete 'item) );_ end of vlax-for nil );_ end of defun ;;; Purge/delete all layer filter or filters ;;; Example: (DeleteLayerFilters) (defun deletelayerfilters () (vl-catch-all-apply '(lambda () (vla-remove (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)) );_ end of vla-Get-Layers );_ end of vla-GetExtensionDictionary "ACAD_LAYERFILTERS" );_ end of vla-Remove );_ end of lambda );_ end of vl-Catch-All-Apply (princ) );_ end of defun ;;; Purge/delete all layer filter or filters compatible with 2005 or later ;;; Example: (DeleteLayerFilters2) (defun deletelayerfilters2 () (vl-catch-all-apply '(lambda () (vla-remove (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)) );_ end of vla-Get-Layers );_ end of vla-GetExtensionDictionary "AcLyDictionary" );_ end of vla-Remove );_ end of lambda );_ end of vl-Catch-All-Apply (princ) );_ end of defun ;;; Purge/delete all layer states ;;; Example: (DeleteLayerStates) (defun deletelayerstates () (vl-catch-all-apply '(lambda () (vla-remove (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object) );_ end of vla-Get-ActiveDocument );_ end of vla-Get-Layers );_ end of vla-GetExtensionDictionary "ACAD_LAYERSTATES" );_ end of vla-Remove );_ end of lambda );_ end of vl-Catch-All-Apply (princ) );_ end of defun ;;; Purge/delete all Express Tool layer states ;;; Example: (LmanKill) (defun lmankill (/ lyr ent cnt) (setq cnt 0) (while (setq lyr (tblnext "layer" (not lyr))) (setq ent (entget (tblobjname "layer" (cdr (assoc 2 lyr))) '("RAK"))) (if (and ent (assoc -3 ent)) (progn (setq ent (subst '(-3 ("RAK")) (assoc -3 ent) ent)) (entmod ent) (setq cnt (1+ cnt)) );_ end of progn );_ end of if );_ end of while (princ) );_ end of defun ;;; (deleteAllPageSetups) (defun deleteallpagesetups (/ pc) (vlax-for pc (vla-get-plotconfigurations (vla-get-activedocument (vlax-get-acad-object)) );_ end of vla-get-plotconfigurations (vla-delete pc) );_ end of vlax-for );_ end of defun (defun purgeanonymgroups (/ grplist index grp) (setq grplist (dictsearch (namedobjdict) "ACAD_GROUP")) (setq index 1) (while (setq grp (nth index grplist)) (if (= (car grp) 3) (progn (if (= (chr 42) (substr (cdr grp) 1 1)) (entdel (cdr (nth (+ index 1) grplist))) );_ end of if );_ end of progn );_ end of if (setq index (+ 1 index)) );_ end of while (princ) );_ end of defun (defun purgeallgroups (/ grplist index grp) (setq grplist (dictsearch (namedobjdict) "ACAD_GROUP")) (setq index 1) (while (setq grp (nth index grplist)) (if (= (car grp) 3) (entdel (cdr (nth (+ index 1) grplist))) );_ end of if (setq index (+ 1 index)) );_ end of while (princ) );_ end of defun (defun delacad_vba () (dictremove (namedobjdict) "ACAD_VBA") (princ) );_ end of defun ; Purges all RegApp or RegApp's. (defun purgeappid (/ appid) (vl-load-com) (vlax-for appid (vla-get-registeredapplications (vla-get-activedocument (vlax-get-acad-object) );_ end of vla-get-activedocument );_ end of vla-get-registeredapplications (vl-catch-all-apply 'vla-delete (list appid)) );_ end of vlax-for (princ) );_ end of defun ;; Последовательность можно менять, а также добавлять или сносить ненужное. ;; Лично я пользуюсь этими частями (delacad_vba) (lmankill) (deletelayerstates) ;; Следующие 2 строки очень давно заменены на программу от vk по удалению фильтров слоев ;; но найти ее сейчас я не могу. (deletelayerfilters) (deletelayerfilters2) (repeat 3 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))) );_ end of defun --- Добавлено: P.S. Вызывать как full-purge Сообщение отредактировал kpblc - 28.5.2008, 10:51 |
|
|
![]()
Сообщение
#30
|
|
проектировщик ТМ (фриланс) Группа: Участники форума Сообщений: 4032 Регистрация: 13.3.2005 Из: Череповец - СПБ - Воронеж - Геленджик Пользователь №: 543 ![]() |
я тут поправил всё о чём говорилось выше
+ добавил функцию проставления высотной отметки на разрезах (динамический блок с вычисляемым значением отметки) если есть интерес, можно выложить моё творение... |
|
|
![]() ![]() |
|
![]() |
Текстовая версия | Сейчас: 17.9.2025, 5:31 |
Политика ООО ИИП «АВОК-ПРЕСС» в отношении обработки персональных данных |