|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Тип линий
Регистрация: 03.02.2005
Сообщений: 583
|
||
Просмотров: 6706
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Блин, пока отвечал первый раз, система сказала "ква". Поэтому ответ №2. Без объяснений
![]() ![]() Код:
Код:
Во вложении - rar-архив с типами линий. Смени расширение и распаковывай (надеюсь, Admin меня не съест за столь наглое поведение ![]() [ATTACH]1121756300.dwg[/ATTACH]
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Да, вот еще - обработчик ошибок:
Код:
Добавлено: Мне интересно, хоть кто-то читает или нет такие длинные посты? Шутка. Теперь собственно функция рисования линии: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А там чего не хватило? Вторая часть именно для компенсации и была сварганена. Кстати, как профи, погляди, может, там лишнего тьма набахана.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
>kpblc
Текст хороший и сразу оценить его пожалуй трудно, но обещаю посмотреть. Но вот на первый взгляд. Код:
Проверь, убери файлик, получишь удовольствие. ИМХО |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Нда, что-то упустил я этот момент. shx-то у меня на всех машинах лежит в одном и том же месте, которое вдобавок прописано в support, т.е. его и искать не надо. Ок, в таком варианте надо по идее сделать:
Код:
Если фонт нужен, скажите, сюда же закину.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Мне кажется нужно положить все вышеизложенное в загашник,
спору нет хорошие рутины, а пока нужно попрошшэ для начала, что-то вроде ниже и кстати можешь добавить обработчик ошибок тот что сверху ![]() (defun C:tras (/ cmd col color lay lin ltp point_list scal sna) (setq sna (getvar "osmode")) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (setq lin (getvar "celtype")) (setq scal (getvar "celtscale")) (setq lay (getvar "clayer")) (setq col (getvar "cecolor")) ; ; (defun defpoints () (setq lst nil) (setq loop T) (setq pt (getpoint "\nПервая точка :") lst (cons pt lst) ) (while (setq pt (getpoint "\nСледующая точка :" pt)) (if (null pt) (setq loop nil) ) (setq lst (cons pt lst)) ) (reverse lst) );eof defpoints ; ; (initget "B1 T3 K1") (setq ltp (getkword "\nВыбрать тип линии (B1/T3/K1)<B1>:\n")) (setq ltp (cond ((not ltp) "B1") (T ltp) ) ) (setq color (cond ((eq ltp "B1") "5") ((eq ltp "T3") "10") ((eq ltp "K1") "72") (T "256") ) ) (if (null (tblobjname "ltype" ltp)) (command "_.linetype" "_l" ltp "acad.lin" "") ;=> или acadiso.lin ) (setvar "osmode" 0) (setq point_list (defpoints)) (if point_list (progn (command "linetype" "s" ltp "") (if (null (tblobjname "layer" ltp)) (command "layer" "m" ltp "c" color "" "") );а что со слоями делать? тут просто создаю слой с тем же выменем (command "._line") (foreach p point_list (command p)) (command "") ) ) ; ; (setvar "celtscale" scal) (setvar "celtype" lin) (setvar "clayer" lay) (setvar "cecolor" col) (setvar "osmode" sna) (setvar "cmdecho" cmd) (princ) ) |
|||
![]() |
|
||||
Конструктор Регистрация: 06.04.2005
Из тех ворот-откуда весь народ.
Сообщений: 361
![]() |
-->DDlis
Есть вариант еще проще: ;;;TIP1222.LSP: TB.LSP Text Break (c)1996, Yuqun Lian ;;; ;;; This routine writes a text string to the drawing and then breaks any ;;; lines, polylines, etc. that intersect an imaginary box around the text. ;;; The text is placed on the current layer using the current style. The ;;; default input and repeat capabilities of TB.LSP make multiple labeling ;;; very convenient. ;;; Yuqun Lian - SimpleCAD, http://www.simplecad.com ;;;======================================== ;;;Изменена:getr, genatr@mail.ru,проверялась на AutoCAD 2004(eng). ;;;Теперь эта прога пишет строку текста в чертеже и затем "подкладывает" под него невидимую ;;;рамку (wipeout) вокруг текста. Текст помещен в текущий слой, используя текущий стиль. ;;;Есть вход по умолчанию,что удобно для многократной маркировки.Например очень быстро можно ;;;простую линию типа --------- превратить в типа ----В1--- ,----Т7--- и т.д. ;;;Или выполнить надпись на заштрихованном поле.... ;;;------------------------------------------------------------------------ (defun tberror (S) (if (/= S "Function cancelled") (princ (strcat "\nError: " S)) ) (setvar "CLAYER" TEMPLA) (setvar "BLIPMODE" TEMPBLIP) (setvar "OSMODE" TEMPOS) (setvar "CMDECHO" TEMPCMD) (command "ucs" "_w") (setq *error* OLDERR) (princ) ) ;end tberror (defun C:TB (/ TEMP FIRST TX ANG TEMPLA TEMPCMD TEMPBLIP TEMPOS TXTST TXTH) (setq OLDERR *error* *error* TBERROR ) (setq TEMPCMD (getvar "CMDECHO") TEMPLA (getvar "CLAYER") TEMPBLIP (getvar "BLIPMODE") TEMPOS (getvar "OSMODE") TXTST (getvar "TEXTSTYLE") *TXTH (getvar "TEXTSIZE") ) (setvar "CMDECHO" 0) (setvar "BLIPMODE" 0) (setq TXTH (cdr (assoc 40 (tblsearch "style" TXTST)))) (setq TEMP T) (setq FIRST T) (while TEMP (setvar "OSMODE" 512) (setq PT1 (getpoint "\nInsertion point for text: ")) (setvar "OSMODE" 0) ;привязка отсутствует (cond ((/= PT1 nil) (if FIRST (progn (if (= TXTH 0) ;если высота символов текущего стиля=0,то (progn (princ "\nHeight <") (princ *TXTH) (setq H (getreal ">: ")) ;ввод действительного числа (if (= H nil) (setq H *TXTH) (setq *TXTH H) ) ) ) (if (not *ANG) (setq *ANG 0) ) (princ "\nRotation angle <") (princ (* *ANG (/ 180 pi))) (setq ANG (getangle PT1 ">: ")) ;указание угла (if (not ANG) (setq ANG *ANG) (setq *ANG ANG) ) (setq ANG (* ANG (/ 180 pi))) (if (not *TEXT) (setq *TEXT "В1") ) (princ "\nНаберите текст или по умолчанию <") (princ *TEXT) (setq TX (getstring T ">: ")) ;ввод строковой константы (if (= TX "") (setq TX *TEXT) (setq *TEXT TX) ) ) ;end progn ) ;end first (if (= TXTH 0) (command "text" "j" "mc" PT1 *TXTH ANG TX) (command "text" "j" "mc" PT1 ANG TX) ) (wipebox) ;вставка невидимой рамки ) ;end pt1 ((null PT1) (setq TEMP nil) ) ) ;end cond (setq FIRST nil) ) ;end while (command "ucs" "_w") (setvar "CLAYER" TEMPLA) (setvar "BLIPMODE" TEMPBLIP) (setvar "OSMODE" TEMPOS) (setvar "CMDECHO" TEMPCMD) (princ) ) (defun wipebox (/ TEXTENT TRIMFACT TB GAP FGAP LL UR PTB1 PTB2 PTB3 PTB4 PTF4) (setq TEXTENT (entlast)) (setq TRIMFACT 0.5) (command "ucs" "Entity" TEXTENT) (setq TB (textbox (list (cons -1 TEXTENT))) LL (car TB) UR (cadr TB) ) (setq GAP (* *TXTH TRIMFACT)) (setq FGAP (* GAP 0.5)) (setq PTB1 (list (- (car LL) GAP) (- (cadr LL) GAP)) PTB3 (list (+ (car UR) GAP) (+ (cadr UR) GAP)) PTB2 (list (car PTB3) (cadr PTB1)) PTB4 (list (car PTB1) (cadr PTB3)) ) (command "_wipeout" PTB1 PTB2 PTB3 PTB4 "c") (command "_wipeout" "f" "off") (command "draworder" "last" "" "_f" "") (redraw TEXTENT) (command "ucs" "_p") (princ) ) ;end wipebox (princ "\nType TB to start") (princ) ; end tb.lsp Недостаток:несколько неудобно редактировать линии(точнее перемещать обозначения типа В1), т.к. подложка невидима,и невозможно за один прием выбрать В1 и wipeout. Приходится его включать.Обединить их в блок у меня не получилось.Знаний по LISPу мало. |
|||
![]() |