|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
|
|||
![]() |
|
||||
Хм, вот ведь странность - fillet ведет себя по разному, если вручную выполнять и через vl-cmdf. После указания радиуса, команда прекращается.
Поэтому, думается мне, надо либо два раза запускать vl-cmdf (vl-cmdf "_.fillet" "_r" f_r) (vl-cmdf "_.fillet" f_1 f_2) Либо для задания радиуса менять системную переменную filletrad. Цитата:
Код:
Последний раз редактировалось Do$, 25.02.2010 в 13:42. |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Добавил строку :
(setvar "filletrad" f_r), и изменил: (vl-cmdf "_.fillet" f_1 f_2) Все работает. ![]() Теперь вопрос как получить скругление 2х соседних углов , если радиус скругления равен половине длины общей стороны? Первый угол скругляется правильно, второй уже нет. Если нужно закруглить только противоположные углы, то все проходит нормально. |
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Цитата:
![]() Так я за один проход убиваю всех зайцев - тут тебе и контур какой надо, и ничего объединять не нужно, в смысле отрезки-дуги и тп. Решил задачу проще - взял точки не посередине скругляемой стороны, а ближе к углу - все работает как надо. Только точек добавилось ![]() : f_9 (polar f_1 0 (* 0.25 f_l)) ;9+10 - rechts unten f_10 (polar f_2 (* pi -0.5) (* 0.25 f_h)) f_11 (polar f_2 (* pi 0.5) (* 0.25 f_h)) ;11+12 - rechts oben f_12 (polar f_3 0 (* 0.25 f_l)) f_13 (polar f_3 pi (* 0.25 f_l)) ;13+14 - links oben f_14 (polar f_4 (* pi 0.5) (* 0.25 f_h)) f_15 (polar f_4 (* pi -0.5) (* 0.25 f_h)) ;15+16 - links unten f_16 (polar f_1 pi (* 0.25 f_l)) (vl-cmdf "_fillet" f_9 f_10) ;rechts unten Ecke (vl-cmdf "_fillet" f_11 f_12) ;rechts oben Ecke (vl-cmdf "_fillet" f_13 f_14) ;links oben Ecke (vl-cmdf "_fillet" f_15 f_16) ;links unten Ecke Последний раз редактировалось alex8888, 25.02.2010 в 16:35. Причина: дополнение |
|||
![]() |
|
||||
VVA
Спасибо за код, пока правда так и не проверил, все занят покупкой новой машини ![]() ![]()
__________________
Блог |
||||
![]() |
|
||||
alex8888, не ищете вы легких путей...
В вашем случае надо отрисовывать полилинией прямоугольник со скругленными углами: простой арифметикой можно определить точки и создать полилинию функцией entmake или entmakex. |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Do$,
а нельзя наводку, как именно через enmake-entmakex и чем же легче? Посмотрел описание - немного вспотел ![]() ![]() Поначалу я делал так: рассчитывал каждую точку, потом по ним рисовал замкнутую полилинию. Но была трудность, что как то коряво рисовались дуги после прямых линий (конструкция типа (vl-cmdf "_pline" p1 "_l" p2 "_a" "_center" p3 p4 "_l" p5 ..... "_close"). Так вот некоторые дуги почему то рисовались развернутыми в обратную сторону (не наружу, а внутрь)). Поэтому я и решил посмотреть на _fillet. Может есть более простое решение? |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Для этого достаточно просто вручную промоделировать ситуацию - рисовать последовательно со всеми опциями, вводя их в командной строке. Точки можно указывать примерно - сразу будет видно, куда выгибается дуга. Командный метод - самое простое решение. Сначала надо им научиться делать, пройти через детские ошибки №1 и №2. Можно и через entmake, и через ActiveX, но там уж вовсе больше изучать надо. |
|||
![]() |
|
||||
Цитата:
Вот копия из ком строки: Код:
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
ShaggyDoc
Цитата:
2.При проходе вручную функции _pline тем же порядком, что и в программе, контур получается правильным, а из программы нет. Почему? Из-за скорости проведения линии вручную? Цитата:
![]() Про привязки уже уяснил, хотя не попадал в такие ситуации, где они бы помешали. Еще открытым для меня остается вопрос, как подгрузить вспомогательную пользовательскую функцию из другой пользовательской, типа ru-трам-пам-пам из _ru-тра-ля-ля? Когда вписываю несколько функций в один Lisp, то команда из функции работает, равно как и если была прописана вспомогательная функция в автозагрузке через appload. Но все функции без надобности грузить в каждый чертеж? ![]() Do$, 1. По твоему коду получается проще? И что мне теперь для каждого из 16 вариантов делать свою полилинию через entmakex? В чем выигрыш? 2. Зачем делать преобразования систем координат? Я только, как понимаю, всегда в МСК работаю. Елпанов Евгений Цитата:
2. Использование вертикальных решений мне еще в начале программирской деятельности рекомендовали не использовать. 3. Данная прога только прелюдия для более масштабного проекта, так сказать учусь, пробую, экспериментирую. Последний раз редактировалось alex8888, 26.02.2010 в 13:40. Причина: добавление комментария |
|||
![]() |
|
||||
Для меня проще, ибо командные методы - тот еще головнячок. В одной версии команда может иметь одни опции, в другой - другие и пр. неприятности. Entmakex же будет работать одинаково и стабильно и в 2000, и в 2010 AutoCAD'е.
Цитата:
Делай как хочешь, просто мое мнение - от vl-cmdf и command в программе желательно избавляться. Если делаешь программу только для себя - то сойдет, а если планируется потом раздавать коллегам, то вполне может оказаться, что они не все работают в МСК. При использовании командных методов, об этом не надо задумываться - все всегда рисуется в текущей СК, а при использовании entmake о СК приходится всегда помнить и, при необходимости, производить преобразования. |
||||
![]() |
|
|||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Ещё одну указал Do$ - никогда нельзя забывать про системы координат. Помнить, что get-функции возвращают точки в ПСК, command работает в ПСК, а данные примитивов будут в МСК. Цитата:
Самый худший путь. Любая программа должна вычислять, где она сама живет и где находятся требуемые файлы. Цитата:
|
||||
![]() |
|
||||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
ShaggyDoc
ну подскажи ты дураку, ну как мне сделать Цитата:
1. В пути к файлам настроек Када прописал директорию с моими Лиспами. 2. При вводе команды Appload прописал там где нарисован портфель, все Лиспы, которые нужно загружать каждый раз. Там набрался список из пары десятков уже. Книгу "САПР на базе Автокада" "пролистал" (штудирую по мере сил и возможностей), жаль представленные примеры без переработки проверить не могу - нерешенная проблема с отображением русского языка в каде. Да и профиль у меня машиностроительный, что несколько отличается от представленного в книге для строителей. Насчет Цитата:
![]() Цитата:
Цитата:
![]() ![]() Цитата:
|
|||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
В функцию http://forum.dwg.ru/showthread.php?t=16561 подставить свои маски lsp-файлов и последовательно выполнить (load file) - один из вариантов. Несмотря на некоторые трудности в последних версиях AutoCAD (см., например, http://autolisp.ru/2009/12/09/load_complie_write/ и http://autolisp.ru/2009/12/09/load_complie_write/ ) - вполне реальный.
Если не испугает использование библиотечных функций, вот тебе вариант рисования полилинии (вроде работало ![]() Код:
![]() --- P.S. По голове прошу не бить - она и без того "чугуниевая" ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Кулик Алексей aka kpblc
спасибо, посмотрю на работе, а Цитата:
Что вкратце делает твоя функция рисования полилиний? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
Сорри, вторая ссылка : http://autolisp.ru/2009/12/25/loadcomplie_write_2/
Как "что делает"? Если есть все библиотечные функции, то рисует полилинию с указанными параметрами. А в данном случае выступает в качестве примера для анализа, не более.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Кулик Алексей aka kpblc
Цитата:
![]() Например у меня в программе просто рисуется прямоугольник и скругляются его углы, которые выбираются в диалоговом окне. Все остальное рисуется и проставляется автоматом. Это просто прога для конкретно моей задачи. И составлял я ее только для облегчения работы, ускорения, для устранения повторяющихся монотонных вычислений и действий. С удовольствием использую коды форумчан, если они мне подходят и если я в них разобрался. Потому как все равно подстраиваю их под себя, например, перевожу всю кириллицу или добавляю слои, уровни и тп. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
Кое-что о параметрах вызова, как я это понимаю: http://autolisp.ru/2009/10/21/lisp-overloading/
Какую? Какую будет приказано. Зачем? Ну было же приказано ![]() А я бы сначала сделал диалоговое окно, и потом по результатам выполнения рисовал полилинию.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |