|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Поделить окружность на равные части..
Регистрация: 17.05.2005
Сообщений: 13
|
||
Просмотров: 5651
|
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Выбирай что тебе больше подходит:
(defun C:div-circ1 ( / acapp adoc dlt htx i len obj_list mdsp num obj pt txt) (vl-load-com) (or acapp (setq acapp (vlax-get-acad-object))) (or adoc (setq adoc (vla-get-activedocument acapp))) (cond ((= (vlax-variant-value (vla-getvariable adoc "TILEMODE")) 1) (or mdsp (setq mdsp (vla-get-modelspace adoc)))) ((= (vlax-variant-value (vla-getvariable adoc "TILEMODE")) 0) (or mdsp (setq mdsp (vla-get-paperspace adoc))))) (vla-startundomark adoc) (setq htx (getvar "TEXTSIZE")) (initget 7) (setq num (getint "\nЧисло делений\n :" )) (setq obj (vlax-ename->vla-object (car (entsel)))) (if (eq (vla-get-objectname obj) "AcDbCircle") (progn (setq i 1 len 0. dlt (/ (* 2 pi (vla-get-radius obj)) num)) (repeat num (setq pt (vlax-curve-getpointatdist obj len) txt (vla-addtext mdsp (itoa i) (vlax-3d-point pt) htx) obj_list (cons txt obj_list) len (+ len dlt) i (1+ i))))) (mapcar 'vlax-release-object (append obj_list (list obj))) (vla-regen adoc acactiveviewport) (vla-endundomark adoc) (princ) ) (defun C:div-circ2 ( / acapp adoc an1 an2 arc dan dlt htx i len mdsp num obj obj_list pt txt) (vl-load-com) (or acapp (setq acapp (vlax-get-acad-object))) (or adoc (setq adoc (vla-get-activedocument acapp))) (cond ((= (vlax-variant-value (vla-getvariable adoc "TILEMODE")) 1) (or mdsp (setq mdsp (vla-get-modelspace adoc)))) ((= (vlax-variant-value (vla-getvariable adoc "TILEMODE")) 0) (or mdsp (setq mdsp (vla-get-paperspace adoc))))) (vla-startundomark adoc) (setq htx (getvar "TEXTSIZE")) (initget 7) (setq num (getint "\nЧисло делений\n :" )) (setq obj (vlax-ename->vla-object (car (entsel)))) (if (eq (vla-get-objectname obj) "AcDbCircle") (progn (setq i 1 len 0. dlt (/ (* 2 pi (vla-get-radius obj)) num) an1 0. an2 (/ (* pi 2) num) dan an2) (repeat num (setq pt (vlax-curve-getpointatdist obj len) arc (vla-addarc mdsp (vla-get-center obj)(vla-get-radius obj) an1 an2) txt (vla-addtext mdsp (itoa i) (vlax-3d-point pt) htx) obj_list (cons arc (cons txt obj_list)) len (+ len dlt) i (1+ i) an1 (+ an1 dan) an2 (+ an2 dan)) ))) (vla-delete obj) (mapcar 'vlax-release-object (append obj_list (list obj))) (vla-regen adoc acactiveviewport) (vla-endundomark adoc) (princ) ) |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Вообще то писать ничего не надо. Есть стандартная команда _DIVIDE которая поделит вашу окружность на заданное количество сегментов и вставит по вашему усмотрению точки или любые блоки. А текст можно быстро расставить с помощюь _ARRAY (Polar - естественно).
|
|||
![]() |