Re: Макро на кнопку "Линия с запасом"
> Александр Ривилис
...к сожалению не могу...есть ряд факторов, связанных с тактикой постановки задач для CAD/CAM...
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Настройка меню и DIESEL → Макро на кнопку "Линия с запасом"
Чтобы отправить ответ, вы должны войти или зарегистрироваться
> Александр Ривилис
...к сожалению не могу...есть ряд факторов, связанных с тактикой постановки задач для CAD/CAM...
> Александр Ривилис
...вот повисла...это не прихоть моя...
...VBA приложение - "Вал цилиндрический" для AutoCAD...
https://www.caduser.ru/forum/topic19510.html
В чем причина? ...пока не докопаюсь не могу уйти в LISP или еще куда...
> Forma
Ничего не понял. Причем здесь тактика? Вы уже достаточно опытны для того чтобы понимать, что и какими средствами можно сделать. Я бы в этот форум и заглядывать не стал, так как не считаю себя специалистом в DIESEL и соответственно Вы не получили бы мои ответы на Ваши вопросы... Так что думайте... А все остальное - от лукавого.
В VBA - я Вам не помощник, не пользуюсь...
> Александр Ривилис
...если бы мне сказали, что средствами VBA прямоугольник нельзя построить...ушел тут же бы в LISP...и никогда не вернулся бы...видно проблема в другом...
> Александр Ривилис
...пусть повисит пару недель...потом трансформирую под LISP...
...достаточно опытны...
Нет:)...я усредненный инженер примерно 3 категории с стандартным образованием...
p.s. ...а, в России сейчас есть категории? Или может лицензии?
Макросом, думаю, не получится...
То есть как не получится? У Forma много идей. Скоро он весь комп забьет лиспами. На вскидку предлагаю пару идей, кто смелый, можете попробовать. Forma, если ты дочитал книгу про макросы до 6-й главы, то можешь попробовать сам. В этой главе написано про калькулятор, который запросто вычислит две точки, отстоящие от концов первоначального отрезка на 3 единицы. Остается нарисивать новую линию от вычисленных точек и удалить первоначальную, которая в этом случая становится " резиновой" линией. Или (это вторая идея) запоминаются начало и конец 'cal;P1=@;и 'cal;p2=@ и после завершения первонач. отрезка автокадовская команда Linghten, продолжающая макрос, удлинит его в обе стороны. И DIESEL не требуется. Ну а доводка макроса будет заключаться во временном отключении osnap но это позже, когда он заработает.
...вот...вот...я ждал....добрался, но не сумел справится...
> Александр Ривилис
Интересное дело. В строке
(initget 128 "У U _ U U")
у вас подчерк (_) отделен пробелом от U и все срабатывает при вводе в командной строке _u. Но я сам исправлял это (удалял пробел) в некоторых файлах *.dll (AutoCAD 2005 РУС), т.к. из-за этого пробела не срабатывало контекстное меню...
> Владимир Громов
Должно работать, поэтому и работает... Почему не работало в AutoCAD 2005 Рус - не знаю, но догадываюсь, что это связано с ошибками локализации...
> Александр Ривилис
Но в руководствах по AutoLisp'у (напр., у Полещука) пробела нет. Хотя, если работает, то и Бог с ним.
> Владимир Громов
А в ObjectARX SDK Help - пробел есть. Кто прав?
> Владимир Громов
> Александр Ривилис
...дался вам этот пробел...:)))..там две темы новых есть...еще писать?
> Александр Ривилис
Это принципиальный вопрос, не могу успокоиться.
Вы хитро поступили с "initget":
(initget 128 "У U _ U U")
а после этого пишите:
(cond ((= p1 "U")
Конечно, это сработает. А вот если вы напишите (как принято в локализованных версиях):
(cond ((= p1 "_U")
то получите "Аварийное завершение."
Sorry, please.
> Владимир Громов
Во-первых, я никогда так не напишу:
(cond ((= p1 "_U")
Просто потому, что "_U" никогда не может получится. Возвращается всегда глобальное имя без подчеркивания
А так:
(initget 128 "У U _ U U")
я написал, чтобы можно было ключевое слово вводить и по-русски, и по-английски, и с подчеркиванием, и без...
И всегда вернется только "U", и ничего другого!
> Forma
Честно говоря те две темы мне не интересны. И в первую очередь в силу того, что Вы не потрудились более-менее поставить задачу (например, не уточнили линии параллельны, или нет, отрезки или полилинии и т.д., а во второй - относительно какой из точек поворачивать отрезки - палка то о двух концах). Я начну программировать, а окажется, что я не понял чего Вы хотели... Зря потраченное время...
> Александр Ривилис
Согласен, всегда вернется только "U". И я немного поторопился, в принципе я хотел обыграть вот это:
(initget 128 "У _U")
......................
(cond ((= p1 "U")
Тогда программа работала бы так же, как и стандартные команды с опциями в локализованных версиях, т.е. или опция на русском языке, или на английском с подчерком. Но теперь вижу, что для пользовательской программы так, как сделано у вас, удобнее.
Честно говоря те две темы мне не интересны.
Так. Для справки. А какие темы Вам интересны? У меня шпингалетов самовывозом...
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Настройка меню и DIESEL → Макро на кнопку "Линия с запасом"
Форум работает на PunBB, при поддержке Informer Technologies, Inc