VetCAD

Отрисовка линий разрыва. "Break_Den" от 30.07.06

    0 оценок

Денис Флюстиков

размещено: 30 Июля 2006
Отрисовка линий разрыва (обрыва) трех видов (криволинейный, линейный, цилиндрический)

"Break_Den" от 30.07.06:
1.Отказался от автоматической обрезки по двум точкам внутри линий разрыва, т.к. с 2006 ACAD'а не требуется выбирать каждый обрезаемый объект (есть быстрый выбор рамкой), а часто приходится рисовать двухсторонний обрыв;
2.Переход в режим рисования обрыва по пробелу или правым кликом (ранее по "ESC");
3.Ввел зависимость величины линейного зигзага, по умолчанию от DIMSCALE;
4.Возможность задать величину выноса линий линейного разрыва за объект.

Комментарии

Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Комментарии 11-16 из 16
Николай , 26 октября 2005 в 14:13
#11
Благодарю.
Олег , 27 октября 2005 в 10:16
#12
Полезная программка, только у меня линейный разрыв очень мелкий. Может, есть смысл воспользоваться какой-нибудь переменной, чтобы в разномасштабных чертежах он всегда получался нужной величины?
Например, DIMSCALE:
;******************* СОХРАНЕНИЕ СИСТЕМНЫХ ПЕРЕМЕННЫХ *********************

; Store system variables

(defun MODES (a)
(setq MLST '())
(repeat (length a)
(setq MLST (append MLST (list (list (car a) (getvar (car a))))))
(setq a (cdr a)))
)

; Сброс значений системных переменных

(defun MODER ()
(repeat (length MLST)
(setvar (caar MLST) (cadar MLST))
(setq MLST (cdr MLST))
)
)
Отрисовка ФИГУРНЫХ СКОБОК
;********************** ОСНОВНАЯ ПРОГРАММА **************************
(defun C:RECT-FIG ()
(modes '("OSMODE" "ORTHOMODE"))
(setq p1 (GETPOINT "nУкажите первую точку: "))
(setq p2 (GETPOINT p1"nУкажите вторую точку: "))
(setvar "OSMODE" 0)
(setq dist (distance p1 p2))
(setq dist1 (/ dist 2))
(setq ang (angle p1 p2))
(setq ang1 (+ ang (* 0.5 pi)))
(setq ang2 (- ang (* 1 pi)))
(setq RASST (/ (getvar "DIMSCALE") 1 ))
(setq RASST1 (/ RASST 4))
(setq t1 (polar p1 ang1 (+ 0 RASST1)))
(setq p3 (polar t1 ang1 (+ 0 RASST)))
(setq p4 (polar p3 ang (+ 0 RASST)))
(setq p6 (polar p3 ang (+ 0 DIST1)))
(setq p5 (polar p6 ang2 (+ 0 RASST)))
(setq p7 (polar p6 ang1 (+ 0 RASST)))
(setq t2 (polar p7 ang1 (+ 0 RASST1)))
(setq p51 (polar p6 ang (+ 0 RASST)))
(setq p31 (polar P3 ang (+ 0 DIST)))
(setq p41 (polar P31 ang2 (+ 0 RASST)))
(setq t11 (polar p2 ang1 (+ 0 RASST1)))
(command "_PLINE" p1 t1 "Д" p4 "Л" p5 "Д" p7 "Л" T2 P7 "Д" P51 "Л" P41 "Д" T11 "Л" P2 "")
(moder)
)
Писал очень давно (под ACAD10) и "по типу", т.к. ЛИСП почти не знаю, но работает, и в разных масштабах
Денис Флюстиков , 03 августа 2006 в 09:32
#13
При построении линейного разрыва, возможен отказ работы утилиты (при DIMSCALE=0). Программу сейчас обновлять не буду, но большая просьба самостоятельно в любом текстовом редакторе откорректировать файл Break_Den.lsp, вставив после строчки:
bb "К")
Строчку:
(if (eq 0 scale)(setq scale 1))

СПАСИБО!
Николай , 06 августа 2006 в 01:50
#14
Добавил одно "телодвижение" автокаду,
но в таком варианте у меня работает стабильнее при выходе правым кликом без отрисови второй линии обрыва.

.....
(vl-cmdf "_.ucs" "move" aa5)
(setq nk_tmp_point (list 0 0 0))

(setq ang (vl-cmdf "_.copy" aa4 "" nk_tmp_point pause))
(princ "nВыберите обрезаемый объект <Выход>:")
(if (and ang (equal nk_tmp_point (getvar "lastpoint") 0.000001))(progn
(setq ang nil)
(command "_.undo" 1)))

(vl-cmdf "_.ucs" "prev")
......

Без переноса системы координат команда "COPY" добавдяла линию обрыва используюя в качестве вектора, на который происходит смещение расстояние между началом координат и указанной точеой (аа5). Наблюдалось наиболе часто на линейном и цилинддрическом обрывах. На криволинейном не заментил.
Денис Флюстиков , 14 августа 2006 в 16:27
#15
Николай, спасибо за добаление, но тогда лучше вместо "move" и "prev" применить "_move" и "_prev" соответственно (для работы в локализованных версиях) и удалить из памяти переменную nk_tmp_point по завершении работы программы, например:
(setq ang (vl-cmdf "_.copy" aa4 "" nk_tmp_point pause)
nk_tmp_point nil)
Олег , 05 сентября 2006 в 17:54
#16
Спасибо за DIMSCALE!
Теперь пользуюсь только этим обрывом
(размер немножко уменьшил).
zip

0.1 МБ

СКАЧАТЬ