|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Нужен лисп (Двухсторонний офсет)
проектировшик
СССР
Регистрация: 01.01.2007
Сообщений: 5,149
|
||
Просмотров: 4584
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
ИМХО искать "Обновление программы Прокат"...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Посмотри здесь
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=31318fs |
|||
![]() |
|
||||
проектировшик Регистрация: 01.01.2007
СССР
Сообщений: 5,149
|
Код:
вот бы он на разные дистанции овсетил да еще три линии (прописываются в макросе кнопки) было бы супер VVA кстати автор данного лиспа
__________________
инженер проектировшик с опттом программа авто гад образование высшие |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Показалась занятной идея многомерного оффсета. Накидал код на основе недавних экзерсисов:
Код:
![]() *ВАРНИНГ* - Код очень сырой, могут быть неожиданные косяки! |
|||
![]() |
|
||||
проектировшик Регистрация: 01.01.2007
СССР
Сообщений: 5,149
|
![]() ![]() Именно то что надо! :idea: :idea: Скажи только что нужно в макрос или в лиспе подредоктировать, (pl:moff '((x1 z1)(x2 z2)(x3 z3))) добавить чтобы не спрашивал: Удалить исходные примитивы [Да/Нет] <Да>: Автоматом всегда было нет
__________________
инженер проектировшик с опттом программа авто гад образование высшие |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Код:
Цитата:
![]() |
|||
![]() |
|
||||
проектировсчик Регистрация: 06.01.2006
Москва
Сообщений: 1,986
|
;Развели... Давно есть и пользуюсь -
; как с сохранением центральной линии, так и с ее удалением! ;Вот только офсетит в обе стороны симметрично.. Ну, так офсет он и есть офсет... ;Вариант 1 dof.lsp (double offset) ;ВМЕСТО МОРДЫ ДОЛЖНА БЫТЬ ВОСЬМЕРКА И ЗАКРЫВАЮЩАЯ СКОБКА!!!....(< ang 0.78)(> ..... ;**************************************************************************** ;From the Desk of PAUL STANDING ; ; ; ; ; ; DOUBLE OFFSET DOF.lsp vs 1.0 March 28 1996 ; Function creates an offset to either side of the selected entity ; and erases the original. ; ; ; ; ;***************************************************************************** (defun c ![]() (setq d 20 p1 nil pee (/ pi 2)e 3 pckbox (getvar "pickbox")line " ") (if(= #parof nil)(setq #parof(/(getvar "viewsize")10))) (princ "\nCurrent offset <")(princ #parof) (setq answer(getstring ">: ")) (if (/= (atof answer) 0.0)(setq #parof(atof answer))) (princ line) (setvar "pickbox" pckbox) (setq ent(entsel "\nPick the line: ")) (setvar "pickbox" 2) (setq point(cadr ent)) (princ line) (setq side(getpoint "\nPick an offset side: ")) (setq dist(distance side point))(setq ang(angle side point)) (if(or(or(< ang 0.78)(> ang 5.5))(and(> ang 2.35)(< ang 3.92))) (setq ang(- 0 ang))(setq ang(- pi ang)) );end if (setq other(polar point ang dist)) (command "offset" #parof ent side ent other "") (entdel(car ent)) (setvar "pickbox" pckbox) (prin1) ) (Prompt "\nType DOF to envoke the command") ;Вариант 2 ;**************************************************************************** ;From the Desk of PAUL STANDING ; ; ; ; ; ; DOUBLE OFFSET DOF.lsp vs 1.0 March 28 1996 ; Function creates an offset to either side of the selected entity ; wisout delete of ojriginal ;***************************************************************************** (defun c ![]() (setq d 20 p1 nil pee (/ pi 2)e 3 pckbox (getvar "pickbox")line " ") (if(= #parof nil)(setq #parof(/(getvar "viewsize")10))) (princ "\nCurrent offset <")(princ #parof) (setq answer(getstring ">: ")) (if (/= (atof answer) 0.0)(setq #parof(atof answer))) (princ line) (setvar "pickbox" pckbox) (setq ent(entsel "\nPick the line: ")) (setvar "pickbox" 2) (setq point(cadr ent)) (princ line) (setq side(getpoint "\nPick an offset side: ")) (setq dist(distance side point))(setq ang(angle side point)) (if(or(or(< ang 0.78)(> ang 5.5))(and(> ang 2.35)(< ang 3.92))) (setq ang(- 0 ang))(setq ang(- pi ang)) );end if (setq other(polar point ang dist)) (command "offset" #parof ent side ent other "") ; (entdel(car ent)) (setvar "pickbox" pckbox) (prin1) ) (Prompt "\nType DOF to envoke the command") ;Спасибо Паулю Стэндингу! В 1996 году какой автокад был в ходу? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Вариант Alaspher с допоболочкой
Код:
Перечень дистанций вводится через пробел (например 25 30 40) или через _ для кнопок (например 25_30_-40). Можно вводить положительные и отрицательные значения. Пример кнопки: Код:
|
|||
![]() |
|
||||
проектировшик Регистрация: 01.01.2007
СССР
Сообщений: 5,149
|
VVA, Alaspher,
отдельное спасибо! [ATTACH]1183876200.JPG[/ATTACH] :roll: :roll: :roll: 1 кнопка для трубопроводов, или фундаментных лент 2 кнопка уголок 63 левый или нижний 3 кнопка уголок 63 верхний или правый Уголки как у Василия Кондрата "прокат" только привязку сделал по центру тяжести Теперь из автокада пользуюсь только несколькими кнопками остальное лиспы
__________________
инженер проектировшик с опттом программа авто гад образование высшие |
|||
![]() |