Реклама i
|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
архитектор Регистрация: 02.04.2006
Беларусь
Сообщений: 349
|
Зашёл через мобильник, да с другого компа. Пока всем спасибо за ответы. Вопрос: если в масштабной кнопке я пишу ^C^CUserr1;10, то почему
Цитата:
А что насчёт остальных моих вопросов: как экспортировать самодельные панели инструментов на другой комп? Чем будет отличаться макрос для масштаба уменьшения от макроса для масштаба увеличения? Цитата:
Ещё раз спасибо! |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Для Krieger и kpblc:
В ruCAD сейчас вставка блоков, требующих масштабирования, а также создание любых других изображений, размеры которых нормируются на бумаге (внемасштабные символы) происходит так: 1. Есть "глобальная" настройка масштаба печати из модели и наименований единиц рисунка, устанавливаемая в специальном диалоге. Эти параметры хранятся в словаре рисунка и могут быть изменены только через этот диалог. Раньше использовалась DIMSCALE, но, т.к. она может быть и 0, то теперь собственная переменная. 2. Если внемасштабный символ в модели - его величина в соответствии с настройками, с учетом того, что блок может быть создан "в попугаях", а рисунок - в мм. 3. Если рисование в листе - размеры с учетом перевода "попугаев в мм". 4. Если рисование в модели через ВЭкран - с учетом масштаба экрана и перевода единиц. Все происходит так, что где бы ни рисовали - размеры символов будут на бумаге одинаковы. Причем даже не зависит от того, любит ли человек помучиться и масштабирует реальные объекты в модели, работает "как надо" или вообще малюет в листе. Код не привожу - он очевиден и прост. В отличие от DIMSCALE в коде Krieger у нас используется специальная функция масштабирования, что позволяет менять методику без переделки программ. 5. Для быстрой блокировки\разблокировки ВЭ сделал на видном месте две кнопки, которые сразу воздействуют на все ВЭ листа. Оказалось очень удобно. Все-таки блокировка спрятана достаточно далеко от пользователя. На рисование блокировка не влияет, нужна чтобы не сбивать масштаб. |
|||
![]() |
|
||||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
USERR1-5 - для вещественных чисел (real) USERS1-5 - для текста (string) по-моему так... Цитата:
Цитата:
Цитата:
|
|||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
> ShaggyDoc : Я имел в виду ситуацию "поставили внемасштабный элемент, а потом сделали zoom внутри ВЭ." В таком-то варианте в результате на бумаге будет "не тот" масштаб блока (если только прилично голову не поломать - ЯТД. Либо применить подход Krieger - "сам виноват"). Я пока кнопок по [раз]блокировке ВЭ не делал - не было необходимости
![]() > Krieger : UserS*-переменные не сохраняются в файле, насколько я помню; UserI* и UserR* - сохраняются именно в файле. Что позволяет использовать сохраненные в них данные между сессиями. Только надо быть 100% уверенным в том, что никто и ничто эти переменные не поменяет ![]() Цитата:
> Archeo : Насчет экспортирования панелей... Все же купи книгу В.Свет "AutoCAD Язык макрокоманд и создание кнопок" - там все описано очень подробно. [/quote]
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
И есть программа, которая может перемасштабировать выбранные символы. Конечно, это не всегда возможно, но в частных случаях бывает полезно. Например, перемасштабирование точечных условных знаков на картах под другой масштаб печати. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Я, возможно, ошибаюсь, но, по-моему, была какая-то переменная, регламентирующая масштаб вновь создаваемого Viewport'a. По дефолту оно равно 0, т.е. ВЭ создается для всего вида модели. Но можно и поэкспериментировать. Еще б имя вспомнить...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
архитектор Регистрация: 02.04.2006
Беларусь
Сообщений: 349
|
Для Krieger
Спасибо, конечно, но я по-прежнему не врубился. Цитата:
Цитата:
Цитата:
Спасибо. |
|||
![]() |
|
|||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
Ну тогда на примере: USERI1-5: 1 0 -2 100 10567 и т.д. USERR1-5: 1.25 0.785 2 0 -4.567 и т.д. Цитата:
Например: на лиспе: ^C^C(setvar "USERR1" (/ 1.0 10)) ^C^C(setvar "USERR1" 0.1) без лиспа: ^C^CUSERR1;1/10 ^C^CUSERR1;0.1 По любому, переменная примет значение 0.1 |
||||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
ShaggyDoc, Kpblc
Подытожу. Насколько я понял для всяких масштабирований надо сделать следующее: Задаться переменной в словаре (или USERR1 взять) Задаться переменной для перевода едениц измерения Написать функцию которая создаёт переменную для масштабирования объектов взависимости от масштаба черчения, едениц измерения, текущего видового экрана, пространства оформления. Она же будет устанавливать переменные dimscale, dimlfac, celtscale, ltscale, hpscale, textstyle или еще что там надо... И вот уже на неё и будут ссылаться все остальные проги. |
|||
![]() |
|
||||
архитектор Регистрация: 02.04.2006
Беларусь
Сообщений: 349
|
Ага. Ну вот, уже легче как-то. Тупость моя испаряется потихоньку. А можно ли понимать так, что в конце макроса каждой нужной кнопки надо просто дописать что-то вроде \(getvar "userr1");; или я хочу легко жить? А то в лиспах и дизелях всяких я, как... Чапай с книжками :shock: Ещё: вещественные могут включать в себя целые, так? И ещё: если переменную назначаем 10, то получим масштаб 1:10; а если переменная 0.1 - то масштаб будет 10:1? Как бы это прояснить, сам чтой-то не соображаю...
>PL: как-то у Вас сильно сложно... |
|||
![]() |
|
|||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
Разжую пример вставки блока с именем nameblock: Сначала просто работаем с комстрокой: Вводим команду _-insert и жмем ентер Код:
Код:
Код:
Код:
Код:
Следующий запрос: Код:
Следующий запрос, угол поворота, если поворачивать не надо ставим нуль и жмем ентер: Код:
Фу. Теперь запомним че делали и запишем все что мы вводили в одну строчку. При этом Enter меняем на точку с запятой ;. Указку точки на экране слешем \. А перед этим нажмем два раза на Esc - ^C^C. Точку с запятой в конце можно не ставить. Получим строку: Код:
Цитата:
Цитата:
|
||||
![]() |
|
||||
архитектор Регистрация: 02.04.2006
Беларусь
Сообщений: 349
|
Добрый день! Вновь возвращаюсь к вопросу о масштабе. Не так танцуется гопак, чесслово. Как должно быть, по моему представлению? Рамка чертежа имеет свои натуральные размеры, например, 297х420 мм для формата А3. Для масштаба 1:100 всё, что чертится (допустим, план здания), уменьшается в 100 раз, а вот текст остаётся своей родной высоты – 2,5 мм, к примеру. И не надо увеличивать размерные стрелки и т. п. Нужно, чтобы значение размерного текста (в частности, в линейном размере) умножилось на масштабный коэффициент. Для масштабов увеличения, соответственно, всё наоборот: чертёж увеличиваем, а значение размерного текста уменьшаем на масштабный коэффициент. А то сейчас получается, что народ увеличивает рамку в 100 раз (а заодно и высоту текста, и величину размерных элементов) и в ней чертит в натуральную величину. Какой же это 1:100? А соседние изображения в этой же рамке должны быть, например, в масштабе 1:50 и 1:10, снова начинается пересчитывание, и в результате никакими масштабами и не пахнет.
Правда, не понятен вопрос со смещением/переносом/копированием элементов на заданное с клавиатуры расстояние, но с учётом масштаба. То есть что-то должно перехватывать вводимые с клавы значения и применять к ним масштабный коэффициент. Сделал пару экспериментальных кнопок для примитивов. ^C^C_line;(Setq P1 (Getpoint));\\;_Scale;_Last;;(Getpoint P1)(/ 1 (getvar "userr1")) ^C^C_rectang;(Setq P1 (Getpoint));\_d;\\\_Scale;_Last;;\(/ 1 (getvar "userr1")) На (Setq P1 (Getpoint)) не обращайте внимания, она пока не рабочая, просто что-то у меня не получается автоматически указать точку P1 в качестве базовой точки для масштабирования, а через \ (т. е. руками) неудобно. Ну и, собственно, вопросы. Реально ли осуществить такое масштабирование, о котором я написал? Как автоматически указать базовую точку для масштабирования? Как зациклить команду Line, чтобы можно было, не выходя из неё, строить последовательные отрезки, каждый из которых масштабировался бы относительно своей стартовой точки? Кстати, видел у некоторых коллег остатки масштабной кнопки (ни у кого из них она не работает), которую им кто-то когда-то сделал. На ней только одна буква М. Интересно, как и на что она действовала? |
|||
![]() |
|
||||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
Код:
Цитата:
Код:
Цитата:
Цитата:
|
|||||
![]() |
|
||||
инженер-проектировщик Регистрация: 08.04.2010
Сообщений: 29
![]() |
То ли я дурак, то ли лыжи не едут. Не получается у меня выполнить этот макрос:
^C^C_-insert;куб;\(getvar "userr1");;0 когда нужно указать масштаб вылезает сообщение: Введите масштаб по оси X, укажите второй угол или [Угол/XYZ] <1>: (getvar X2D угловая точка или ключевое слово. Последний раз редактировалось Bennington_LP, 16.04.2010 в 21:41. |
|||
![]() |
|
||||
инженер-проектировщик Регистрация: 08.04.2010
Сообщений: 29
![]() |
Кажется я сам решил проблему. У меня просто стоит AutoCAD LT, так что предыдущий макрос мне не подходит. Если кому инетересно, то вот рабочий:
Код:
Цитата:
![]() Последний раз редактировалось Bennington_LP, 16.04.2010 в 21:45. |
|||
![]() |