Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2VtzqucPabn
IPB IPB
Проектирование, монтаж, наладка, сервис

Здравствуйте, гость ( Вход | Регистрация )

- Рекомендации АВОК 5.5.1-2023
«Системы противодымной вентиляции жилых и общественный зданий»

- Рекомендации АВОК 7.8.3-2023
«Проектирование инженерных систем лабораторий»

- Рекомендации АВОК 7.10-2023
«Здания жилые и общественные. Защита от шума и вибрации инженерного оборудования»

АВОК в соц. сетях
ИНН: 7714824045

> AutoCAD for HVAC

Данный раздел создан по просьбам участников Форума для сбора на сайте коллекции реальных работ чертежей for HVAC.

При присоединении файла, пожалуйста, указывайте следующую информацию:
Автор (Информация об авторе.)
Размер файла (максимальный размер присоединяемого файла 15 Мб)
Описание работы

Вся информация принимается и распространяется бесплатно.
Выполняет исключительно информационную функцию.
Администрация не несет ответственности за содержание представленной документации.
При обнаружении ошибок или неточностей просим вас прислать свои замечания на e-mail: ibforum@abok.ru.

2 страниц V   1 2 >  
Добавить ответ в эту темуОткрыть тему
> Набор прикладных программ для Автокада 2006, Мои и сторонние разработки
ssn
сообщение 1.8.2007, 11:37
Сообщение #1


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



ОБНОВЛЕНИЕ 13.12.07

продолжаю потихоньку доделывать по мере сил, возможности и желания...

Набор программ (моя програмка на ВБА, а остальное (различного рода програмки из нета) в основном лисп)
Всё это легко можно найти на просторах сети, просто это вариант малость упорядоченный и не такой сложный в установке.
Я работаю на Автокаде 2006 не локализованном, вроде все работает.
Набор выкладываю как есть, т.е. не обязательно всё Вам должно понравиться... smile.gif
Спасибо всем кто пишет для Автокада на лиспе.
Не свои коды я оставил без изменений, по этому вроде как их авторы не должны бы на меня обижаться за то, что я пытаюсь нести их творчесво в массы.
Запустить саморазорхивирующийся файл, указать место установки, и прочитать (если Вы не сильны в запуске ВБА приложений) указания по установке.

Что нового:
v 4.7
+ исправлено то, о чем говрилось тут (чуть ниже)
+ довалнена функция проставления высотных отметок (применяются дин блоки, только для акад 2006 и выше). можно конечно выполнить простым блоком с атрибутом, но это уж кому надо, исправить не сильно долго. кнопка располагается в блоке "дополнения"

v 4.8
+ добавлена фунцкия проставления разрыва труб
+ добавлена функция проставления штриховки труб на разрезах

Сообщение отредактировал ssn - 29.12.2007, 16:18
Прикрепленные файлы
Прикрепленный файл  оформление_v_4.8.rar ( 1,76 мегабайт ) Кол-во скачиваний: 2817
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_OVKT_*
сообщение 1.8.2007, 12:32
Сообщение #2





Guest Forum






Вот список лиспов. Да, некоторые нужны каждый день. Вижу, что есть те, которые скачивал когда-то.

Сообщение отредактировал OVKT - 1.8.2007, 12:47
Прикрепленные файлы
Прикрепленный файл  knopki.doc ( 82,5 килобайт ) Кол-во скачиваний: 1060
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 2.8.2007, 8:17
Сообщение #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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 2.8.2007, 11:39
Сообщение #4


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



2 kpbIc
спасибо за замечания...
я не претендовал на нечто необычное... просто собирал для себя и у меня все работает...
вот, решил поделиться тем что есть с народом
я лисп не знаю, но часто читаю Ваши посты, и ещё раз вам спасибо за Ваши наработки в области програмирования.
НА сколько я понял это листинг файла меню...
А если пользователь поместит папку не туда, то путь к этой папке всёравно пропишетсяв путях потдержки, и мне кажется, всеравно картинка найдётся... (по карйней мере у меня на работе ставили многие, вроде как проблем не было)
По поводу ранних версий (2005 и ниже), дак не мне Вам объяснить что там файл меню не так устроен, а разветвлять установке не хотелось (да и не к чему, у нас уже все на 2006 сидят)
А вот что будет при установке на 2007 мне и самому интересно smile.gif
а посмотри "Довески" Геннадия Поспелова (http://www.cadhlp.kulichki.com/), из них я тоже кое что дёргал, и ему большой спасибо

Сообщение отредактировал ssn - 2.8.2007, 11:42
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 2.8.2007, 11:45
Сообщение #5


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



У меня на 2006 ADT не встало, может, портит дело тот зоопарк, который у меня на машине (стоят в разных ипостасях от AutoCAD'ы 2005 до 2008 включительно). Сейчас попробую почистить и поставить "с нуля". Может, и заработает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 2.8.2007, 11:57
Сообщение #6


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



Скачало 26 человек. Оно хоть встало на Автокад или действительно не напрасны опасения уважаемого програмиста - kpbIc

на самом деле там и вставать то не чему...
просто сохранён фалй меню, и установочный макрос его подгружает.
можно ручками просто этот фалй меню подгрузить и всё
и ещё раз скажу, что очень необычного там ничего нет, просто макросы натасканы с нета и объединены в одну кучу

Сообщение отредактировал ssn - 2.8.2007, 11:58
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Bers
сообщение 3.8.2007, 1:05
Сообщение #7





Группа: Участники форума
Сообщений: 1587
Регистрация: 24.1.2005
Из: Чита
Пользователь №: 384



Цитата(ssn @ 2.8.2007, 18:57) [snapback]152278[/snapback]
Скачало 26 человек. Оно хоть встало на Автокад или действительно не напрасны опасения уважаемого програмиста - kpbIc

Автору спасибо за труд и вклад в развитие раздела. Набор программ установился без проблем на AutoCAD 2006 (русский). На первый взгляд всё работает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 1:35
Сообщение #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 делать не планируется?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 3.8.2007, 7:32
Сообщение #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Д разводки осей трубопроводов

программа не претендует ни на какие звания и регалии и вполне возможно не оправдает ваших надежд! smile.gif
В момент начала её написания я только начал изучать VBA и скорее всего знающий человек найдёт реализацию алгоритмов отвратительной. Тем не менее, программа рабочая я больших косяков за ней замечено не было...

Спасибо.

ЗЫ: То чего программа точно не сможет сделать - каким либо образом навредить. 100%.
============================================================

Сообщение отредактировал ssn - 3.8.2007, 7:38
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 8:01
Сообщение #10


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Цитата
а папочку с макросами в пути потдержки?

Ну не дурнее паровоза же... Ессно, было сделано. Для обеспечения "тепличных" условий вообще в новом профиле запускал.
Насчет того, чтобы макрос устанавливал - да, устанавливает. Только ситуацию это не меняет никоим образом.
Прикрепленные файлы
Прикрепленный файл  notes.jpg ( 199,69 килобайт ) Кол-во скачиваний: 443
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 3.8.2007, 9:02
Сообщение #11


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



2 kpbIc
мдя... не красиво...
а как сделать что бы было красиво? (всмысле не прописывать путь к картинкам жёстко?)
Вообще, вопрос потерянных картинок на кнопках в автокаде довольно таки интересен. Мне, например, не понятна логика работы программы с ними.
Как впрочем и файл меню... Что бы создать этот файл меню мне пришлось повозиться... У каждой кнопки есть свой номер. Если создавать кнопки подряд, за один заход, всё нормально... каждой новой кнопке присваивается следующий порядковый номер. Но вот если начинать добавлять кнопки в уже существующие панели, тут какая то фигня начинается... кнопкам присваиваются уже существующие номера и соответственно всё начинает косячить... Т.е. надо было вести список использованных номеров... Может это просто проблема именно моего автокада конечно же.
Да и вообще, ну создал я своё меню, в нем создал панели и на панелях кнопки с нумерацией (как раз что то вроде MenuMacro UID="MMU_0054"). А если намашине уже была ранее создана какая то пользовательская панель, то вероятно нумерация может быть занята (хотя конечно же логично было бы что бы она продолжилась). Но ведь у меня в меню нумерация прописана жестко... Вообщем, не понимаю я до конца этого механизма. (но об этом я писал сразу, что программа может и не встать)

Сообщение отредактировал ssn - 3.8.2007, 9:14
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 9:16
Сообщение #12


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну, лично я вижу несколько вариантов.
Первый, самый тупой и нетворческий - руками попробовать "пройтись" по cui-файлу, снеся в нем все прямые пути. Плюсы: достаточно быстро и не задумываясь. Минусы: это может понадобиться делать после каждого изменения cui-файла (если его, конечно, предполагается предоставлять "на сторону"). И достаточно большое количество работы.
Второй, немного позабавнее - сделать mnu-файл, в котором прописывать стандартные кнопки и панели инструментов. Потом его [полу]автоматически сконвертировать в cui. Помимо прочего, пользователи 2002-2005 тоже не будут чувствовать себя обделенными wink.gif Плюсы: расширение аудитории wink.gif Минусы: конвертация mnu в cui в среде 2006 без установленного ServicePack'a выполняется некорректно; прописывать надо весь файл (то есть работы больше чем в первом варианте получается).
Третий, самый "продвинуто-задвинутый". На машину ставится либо Visual Studio 6.0, либо Delphi, в этой среде разработки собирается dll с ресурсами (рисунками кнопок), этой dll-ке дается имя как у файла меню. Эта dll кладется рядом с mnu / mns / cui файлом; файл меню правится - сносятся имена файлов, и вместо них устанавливаются имена ресурсов. dll не регистрируется в системе. Плюсы: кнопки никто, кроме разработчика, поменять не может; предоставляется всего один файл вместо нескольких десятков маленьких bmp. Минусы: для каждого добавления кнопки надо перекомпилировать dll; это решение не исключает, что понадобится применять один из предыдущих вариантов.
Ессно, всю дорогу ИМХО.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 3.8.2007, 9:20
Сообщение #13


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



ну наверно все же первый...
открыть в блокноте, а потом найти и заменить...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 9:24
Сообщение #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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 3.8.2007, 9:28
Сообщение #15


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



а по поводу автонумерации кнопок (чуть выше писал) что можно сказать?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 9:54
Сообщение #16


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Тогда начинаем исследовательскую работу smile.gif
Открываем 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>
        <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>
И больше их нет. ЯТД, это просто аналог ID в mnu-файле. А вот XLS_* и TBBU_* отдельно посмотрим (но потом).
Меняем 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, результаты лично у меня получились аналогичные (цифры только менялись и все). Добавление / удаление кнопок проблем (пока?) не вызывало.
Прикрепленные файлы
Прикрепленный файл  temp_2007_08_03_10_4948.rar ( 3,02 килобайт ) Кол-во скачиваний: 150
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 3.8.2007, 10:16
Сообщение #17


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



ааа... ну вот, вроде тогда понятно из за чего могут быть косяки...
надо обязательно менять нумерацию MenuMacro UID на какую-то индивидуальную. хотя бы тот же MMU на SSN и опять же, запоминать их и при добавлении новых кнопок учитывать уже имеющиеся.... Хотя это, конечно же, как мне кажется, косяк Автокада.
получается, если кто то уже у себя создавал менюшки и кнопки на них, есть реальный шанс пересечений нумерации кнопок. Хотя это и звучит по крайней мере странно....
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 10:19
Сообщение #18


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Этот "глюк" в каде тянется как минимум с 2002 версии. но там проще было редактировать файлы меню.
ИМХО: старайтесь избегать числовых значений в описаниях UID, кроме самых необходимых случаев. Кроме того, имена UID и прочему лучше все же давать на английском - проблем меньше (даже в официально локализованных версиях).

Сообщение отредактировал kpblc - 3.8.2007, 10:19
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 3.8.2007, 10:33
Сообщение #19


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



а функция _kpblc-scale-set что делает?
давно интересует возможность рисовать сразу в масштабе (вернее сказать дорисовывать виды, переодически возникает такая необходимость, вид смасштабирован, а надо кое что подправить... и приходиться все команды вводить с делением, типа скопировать линию на 50 мм - КОПИ 50/масшаб... ну не очень удобно...)
Про то что надо рисовать 1:1 можно не рассказывать, знаю smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 3.8.2007, 10:39
Сообщение #20


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Еще раз перечитал собственный пост, понял, что всех запутал. Текст поменял.
Так вот, показан кусок меню, которое используется в моей собственной системе (т.н. CADWare). Функция _kpblc-scale-set используется для изменения масштаба отображения оформительских элементов (на данный момент размеров, штриховок и блоков форматки). Но на данный момент она не нужна, и роли никакой ее наличие или отсутствие не играет - важно было разобраться с файлами меню.
К вопросу о копировании / перемещении и прочем, выполняемом с учетом текущего масштаба. Теоретически можно попытаться решить эту проблему так называемыми командными реакторами, но только гарантировать правильность работы такого решения лично я не в силах.


Сообщение отредактировал kpblc - 3.8.2007, 12:52
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 5.8.2007, 12:25
Сообщение #21


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



2 Алексей
ну собственно нет дак нет.... будем делать как делаем...
Я вот в СПДС видел одну очень полезную функцию, которую переодически возникает желание создать самому. И тут такая мысль - может это уже где то есть (кроме СПДС):
функция проставления отметок на разрезах.
как это видиться мне:
1 есть динамические блоки обозначений высотных отметок (4 штуки) с тянущимся хвостиком
2 есть возможность выбрать стартовую отметку, относительно которой будут считаться высоты (не обязательно ноль) для данного разреза в зависимости от введённого масштаба (можно его брать например с размера на разрезе, ну либо ручками вводить)
3 возможность маской выбирать высоты и обновлять их при изменении стартовой отметки (вручную).
Т.е. выбираем разрез, задаём известную отметку (хотя это можно и потом делать, когда все высоты проставлены, выбрать их все и обновить), далее выбираем точку на разрезе, высота которой интересна, далее клик вправо или влево вверх или вниз (какой из четырёх блоков нужен с выбором положения значка отметки по оси Х), потом программа вычисляет высоту и заносит её в атрибут блока. вот так.
Может уже где то есть такое?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 5.8.2007, 14:40
Сообщение #22


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Насчет отметок - думаю, я правильно угадал, что нужны отметки для разрезов? Если да, по посмотрите то, что есть на dwg.ru в разделе download - может, что и подойдет. Лично мне пришлось отказаться от использования динамических блоков, поскольку основная аудитория пользователей сидит на 2005 или 2002.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_OVKT_*
сообщение 7.8.2007, 20:00
Сообщение #23





Guest Forum






А я тоже отказался от изучения динамичеких блоков, остановился на обыкновенных, даже без атрибутов, зато применяю их по тысяче штук на листе.
Может быть, блоки с аттрибутами и динамические круто, но мне не нужно и не вижу в дальнейшем чтобы возникла потребность в интеллектуальных блоках...
Сижу на Автокаде 2004, без надстроек, только со своими 30 кнопками.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 7.8.2007, 21:27
Сообщение #24


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Откровенно говоря, достаточно странная позиция. Я больше чем уверен, что из всех тех блоков (по-моему, их около сотни) можно обойтись 20-30, поставив им всего лишь атрибуты. А добавив в описания блоков всякие хитрости, можно еще больше упростить себе жизнь.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
AAANTOXA
сообщение 7.8.2007, 22:44
Сообщение #25


выпускник ТГВ г.Саратов, теперь в Москве


Группа: Участники форума
Сообщений: 2645
Регистрация: 5.5.2006
Из: Саратов-Москва
Пользователь №: 2819



сколько проектировщиков столько мнений
каждый имеет к томуже свой стиль оформления и чужой стиль мне за редким исключением кажется коряво-убогим
это я о простых блоках.
О дин блоках - а почему вы отказались от них? Ведь ими пользоваться нужно при создании чертежа на 2006м а смежнику можно будет этот чертеж точно также открыть и работать с ним в 2004м АКАДЕ только блоки утратят свою функцию динамичности тоесть из динамических станут просто блоками. Или я не прав?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 7.8.2007, 22:55
Сообщение #26


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



При открытии файла с дин.блоками в предыдущих версиях, которые их не поддерживают, они (в смысле дин.блоки) отображаются как анонимные и, естественно, теряют свою "вкусность". Аналогичная ситуация с таблицами.

Сообщение отредактировал kpblc - 7.8.2007, 22:55
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 9.8.2007, 16:51
Сообщение #27


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



просто интересно...
кто нить пользует функцию создания и печати форматок из данного набора?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 10.8.2007, 16:28
Сообщение #28


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



Цитата(kpblc @ 2.8.2007, 9:17) [snapback]152160[/snapback]
- для "большой пуржилки" лучше использовать вариант http://jtbworld.com/lisp/purger.htm - там очистки больше.

попытался применить этот лисп, у меня его запустить не получилось...
Я конечно не разбираюсь в лиспе, но этот лисп вроде как не является оконченной программой, а лишь заготовкой, которую можно исплоьзовать при написании своей программы...
или я не прав?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 10.8.2007, 17:26
Сообщение #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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ssn
сообщение 31.8.2007, 15:59
Сообщение #30


проектировщик ТМ (фриланс)


Группа: Участники форума
Сообщений: 4032
Регистрация: 13.3.2005
Из: Череповец - СПБ - Воронеж - Геленджик
Пользователь №: 543



я тут поправил всё о чём говорилось выше
+ добавил функцию проставления высотной отметки на разрезах (динамический блок с вычисляемым значением отметки)
если есть интерес, можно выложить моё творение...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

2 страниц V   1 2 >
Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274


ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvE2vr3

Последние сообщения Форума





Rambler's Top100 Rambler's Top100

RSS Текстовая версия Сейчас: 23.4.2024, 9:32