|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
LISP. Как показать стрелкой направление уклона в коде AutoCAD 2012 ?
геодезия
г. Москва
Регистрация: 08.04.2012
Сообщений: 8
|
||
Просмотров: 3301
|
|
||||
|
||||
![]() |
|
||||
САПР Регистрация: 29.09.2011
СПб
Сообщений: 283
|
Если я правильно понял, то отметки в текстах, который указываешь, тогда:
добавь в локальные переменные flagc, вместо строк 04-07: Код:
Код:
И, yuryx, объявляй переменные, которые используешь в коде, локальными, иначе при совпадении имен, тебя ждет масса неприятных сюрпризов в работе, то есть для этой функции: Код:
Последний раз редактировалось ciril, 12.04.2012 в 12:31. |
|||
![]() |
|
||||
геодезия Регистрация: 08.04.2012
г. Москва
Сообщений: 8
|
Что такое flagc и для чего я пока незнаю.
Указанные отметки в текстах- это загруженные с точкой на 2D модели абсолюдные или относительные высотные отметки поверхности = координате Z данной точки. "Для правильного направления стрелки необходимо попарное соответствие a - pt1, b - pt2."- Как это понимать? Если а < в < c как написать на языке lisp. Аналогов я не видел. Наверное мне это поможет. Код (defun C:test2_Slope_2D (/ ta tb flagc pt1 pt2 ugol alfa alfat d place ti stri strd) (setq a (getstring "\nSelect высоту текста <15>")) (if (= a " ") (setq a "15")) ;_ if (setq a (atof a)) (while ;(or (setq ta (atof (cdr (assoc 1 (entget (car (entsel "\Select text pt1:"))))))) (setq tb (atof (cdr (assoc 1 (entget (car (entsel "\Select text pt2:"))))))) ; (setq flagc ta ta tb tb flagcc)) (setvar "osmode" 8) (setq pt1 (getpoint "\nSelect pt1:")) (setq pt2 (getpoint pt1 "\nSelect pt2:")) ; (and flagc (setq flagc pt1 pt1 pt2 pt2 flagc)) (setvar "osmode" 0) (setq ugol (angle pt1 pt2)) (setq alfa (* (/ 180 pi) ugol)) (if (> alfa 0) (setq alfat alfa) (setq alfat (+ alfa 180))) (setq d (abs (distance pt1 pt2))) (setq pl (polar pt1 ugol (/ d 2))) (vl-cmdf "_.pline" (polar pl (+ ugol pi) (* 4 a)) (polar pl ugol (* 4 a)) "") (vl-cmdf "_.pline" (polar (polar pl ugol (* 4 a)) (+ ugol (* (/ 180 pi) 30)) (* 1.5 a)) (polar pl ugol (* 4 a)) (polar (polar pl ugol (* 4 a)) (- ugol (* (/ 180 pi) 30)) (* 1.5 a)) "") (setq ti (* (/ (- ta tb) d) 1000)) (setq stri (if (>= ti 0) (strcat "\n" "+" (rtos ti 2 0)) (strcat "\n" (rtos ti 2 0)))) (setq strd (strcat "\n" (rtos d 2 0))) (vl-cmdf "_-style" "250" "Arial" "" "" "" "" "") (setq placei (polar (polar pt1 ugol (/ d 2)) (+ ugol (/ pi 2)) (* 0.75 a))) (vl-cmdf "_text" "_J" "_mc" placei a alfat stri) (setq placed (polar (polar pt1 ugol (/ d 2)) (- ugol (/ pi 2)) (* 0.75 a))) (vl-cmdf "_text" "_J" "_mc" placed a alfat strd)) ;_ while (setvar "cmdecho" 1) (princ)) ;_ defun (princ "\n Type then: test2_Slope_2D ") |
|||
![]() |
|
||||
САПР Регистрация: 29.09.2011
СПб
Сообщений: 283
|
flagc - переменная, которой сохраняется значение а для последующего присвоения ее b.
[quote=ciril;904535] Код:
Попарное соответствие: твои pt1 и pt2 - точки, задающие начало и конец стрелки, изначально тебе было необходимо, чтобы направление стрелки не зависело от порядка указания точек, для этого и нужно, чтобы при указании pt1 располагалось рядом с а, pt2 - с b, тогда: Код:
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Интеграция Autodesk СПДС в AutoCAD 2012 | bolotov | Прочее. Программное обеспечение | 24 | 07.01.2013 20:22 |
Autocad 2012 перевод надписи рамки | R8D8 | AutoCAD | 3 | 06.05.2011 04:38 |
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. | hwd | Баги и пожелания в Autodesk | 21 | 21.04.2010 20:27 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |