|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
Bull, "век живи, век учись". Вот и учусь, шишки набиваю. Это первое. Второе: да и с такими фигурами я не работаю. И, наконец, третье: хочется поэкспериментировать. Как говаривал один философ-юморист, если сломанную вещь достаточно долго вертеть в руках, в конце концов придёт идея, как её отремонтировать.
pan, спасибо, частично помогло: размер рисуется, но не на запланированной высоте, а на той, какую покажет курсор. Буду думать дальше. Спасибо. p.s. Bull, и потом, никто не запрещает поправить размерный стиль по умолчанию такой, чтобы шрифт был меньше. Конечно, придётся лист печатать не А4, а, допустим, А1. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
<Удалил, т.к. повторил ответ pan'a>
Вообще, по-хорошему, значения системных переменных надо сначала запоминать: Код:
Код:
Чтоб восстанавливались, надо в начале кода (после строки (defun c:autodim ......) определить функцию *error*, примерно так: Код:
Последний раз редактировалось skkkk, 12.08.2013 в 20:44. |
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
skkkk, совершенно верно, мне уже подсказали то же. По задумке, мне необходимо получить значение высоты подъёма размерной линии вдвое больше высоты шрифта по умолчанию. Чтобы не указывать самому местонахождение размера, чтобы он сам проставлялся (слово-то какое праздничное - "проставлялся") на нужной высоте. Но, почему-то приходится курсором устанавливать высоту размера (длину выносных линий). По-видимому, мне надо как-то закрепить системную переменную DIMDLI. Хотя бы на время. Как?
p.s. а в перспективе (если хватит запала) хочу просто указать контур стены (или даже слой контура всех стен) и размеры в цикле сами появятся на нужной высоте от вершины к вершине полилинии-контура. p.p.s а за "error" отдельное спасибо. Итак, получилось следующее: Код:
Буду думать. Последний раз редактировалось MrBrown, 12.08.2013 в 16:41. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Не увидел сразу вторую страницу ветки...
Цитата:
Код:
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Не подойдет. Там нужна точка (список координат), а не длина (вещественное число).
Она пойдет как аргумент для функции polar. Тут самое сложное определить угол для нее же. Чтоб точка всегда была вне прямоугольника. И переменная DIMDLI тут ни при чем. |
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
Как раз это и не вызывает трудностей (ИМХО). Ведь все стены заштрихованы, следовательно, надо указать точку с противоположной стороны штриховки.
А танцы с бубном (с переменной DIMDLI) можно тогда вообще исключить из макроса? Ну и для простоты, пока буду работать с размерами ортогональными (линейными), без параллельных. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Вот, закончив срочную работу, на радостях набросал на скорую руку. Пока - без обработки штриховок - все-таки, мороки с ними многовато, пользователю придется ткнуть мышью с той стороны от полилинии, где нужно ставить размеры. К тому же, так универсальней. Без каких-либо проверок, а потому - без претензий на "пятерку"
Код:
|
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
skkkk, работает макрос правильно. Большое спасибо за ... да не за подсказку, а за всю работу, сделанную за меня
Однако, мы в конторе подстраиваем "читабельность" размеров изменением глобального масштаба. Таким образом пропорционально увеличивается и текст, и выноски, хотя сама высота текста стиля остается прежней. А в макросе высота размерной линии привязана к высоте текста. Виноват, я сам неправильно поставил задачу. Но я и сам не предполагал, что привязываться надо не к высоте текста, а к масштабному коэффициенту (глобальный масштаб размерного стиля). Подправил макрос: заменил в 17-й строке "DIMTXT" на "DIMSCALE" и пришлось увеличить множитель с 2-х до 5-ти. Спасибо, всё получилось! p.s. Где бы почитать о vla-функциях, чтобы без лишней теории, на пальцах, с примерами? ______________________ p.p.s Увы, не всё. Приходится тыкать мышкой каждую полилинию. Что изменить в коде, чтобы выбирать их рамкой? Например, скрыть все слои кроме стен и все стены "стадом" выбрать. И запустить макрос на образмеривание. Или иной вариант: выбираю нужные мне полилинии быстрым выбором (по слою ли, по цвету, это моё дело) и запускаю макрос. То есть включить в макрос возможность предварительного множественного выбора примитивов. Последний раз редактировалось MrBrown, 13.08.2013 в 11:30. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Да не за что, тем более, что в том объеме, в котором я ее решил, задачка довольно проста и заняла не более 15-ти расслабляющих минут.
Это спорное утверждение, поскольку: 1. Нет обработки выбранного примитива. Т.е., если пользователь выберет отрезок, то начнутся чудеса Вместо Код:
Код:
Код:
Код:
3. Третья точка pt3 берется из середины сегмента временной полилинии, а ее середина далеко не всегда совпадает с серединой соответствующего сегмента исходной. Поэтому, при определенных настройках размерного стиля текст размера может оказаться смещенным от середины размерной линии. 4. Нет проверки на уже существующую "образмеренность" полилинии, т.е., при применении команды к уже образмеренной полилинии, размеры нанесутся второй раз. При единичном выборе - это не совсем критично, ведь пользователь сознателен (надеюсь) и не станет второй раз к одной полилинии применять команду, но если в перспективе речь идет о множественном выборе, да еще и автоматическом выборе всех полилиний слоя, то тут без такой проверки очень плохо будет - бардака в чертеже не избежать. 5. Думаю, что-то еще забыл. Цитата:
Уважаемые модераторы! Мне кажется, тема в ходе обсуждения обрела иной смысл и просится в Программирование. Как вы считаете? |
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
skkkk,
1. Именно так: я сперва превращаю все соединенные отрезки в полилинию, а уж потом... Кстати, для тех, кому интересно, вот макрос, взят отсюда же, с форума: Код:
3. Пока не волнует: уже четые чертежа - и всё становится правильно. 4. Не волнует: считаю себя адекватным. И макрос - только на моем компьютере. 5. Скромно напоминаю: хорошо бы вставить фишку для выбора рамкой и/или предварительным быстрым выбором всех нужных полилиний сразу. 6. Книгу Полищука со товарищи скачал. Ух, ну и библия! Спасибо. Последний раз редактировалось MrBrown, 13.08.2013 в 14:27. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Для этого нужно исключить запрос стороны (переменная pt), а для этого надо обрабатывать штриховки. Когда смогу, пока не знаю. Постараюсь по мере возможности.
|
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
skkkk, Совершенно верно, мне как-то не пришло на ум, что при множественном выборе всё равно придется тыкать курсором по внешней стороне каждого примитива. А в случае отталкивания от штриховки - уже знаю - ещё тот геморрой, чтобы прописать всё как надо. Своё скромное напоминание снимаю. Ушел читать Полещука со товарищи. Сотоварищи. Что-то я завис с правописанием. Короче, углубился в чтение.
_____________________ Пришло на ум сделать такое: чтобы размеры не теснились, при малых расстояниях между вершинами pt1 и pt2 размеры вообще не проставлять. Составляю условие "ЕСЛИ" (пока неудачно): Код:
Последний раз редактировалось MrBrown, 13.08.2013 в 15:29. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
MrBrown, какой толщины обычно стены в единицах чертежа (от и до)? Какая штриховка? Каков масштаб штриховки? Желателен файл-пример.
и нельзя сравнивать два аргумента разных типов. Аргумент (distance pt1 pt2) - вещественное число, а crv-temp - vla-объект (размер). Из этого vla-объекта нам надо извлечь ширину текста и ее уже сравнивать с расстоянием между pt1 и pt2. Но такого свойства, как ширина текста нет среди доступных vla-свойств размера. Тут я вижу пока два варианта (простой и не очень): 1. Задавать фиксированно минимальную ширину, ниже которой не строить размер; 2. Строить размер, брать у него свойство точки положения текста Код:
|
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
Прекрасная мысль! Маленькие размеры проставлю вручную, где необходимо.
А вот и файлик (см. вложение) - типичная в наших краях исполнительная схема (Всё лишнее удалено). Образмерено макросом. Включил строчку в код: Код:
Последний раз редактировалось MrBrown, 14.08.2013 в 08:21. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
ПенсионЭр Регистрация: 26.06.2009
Сообщений: 359
|
(Краснея, скромно прячу глазки во внутренний карман пиджака).
Читаю. Полещука. Увы, не понимаю я грамматику и структуру ЛИСПа. VBA - иное дело, хотя признаюсь, там я не мастер, однако макросы и диалоговые формы создаю сам. Для приложения Excel. p.s. Вставил вашу строку. Не работает. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Цитата:
Код:
|
|||