Вставка окружности в выбранные точки
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка окружности в выбранные точки

Вставка окружности в выбранные точки

Ответ
Поиск в этой теме
Непрочитано 23.08.2006, 14:26 #1
Вставка окружности в выбранные точки
AcadJim
 
Челябинск
Регистрация: 21.08.2006
Сообщений: 5

Каким образом вставить объект (например, окружность) в выбранные точки?
Т.е. выбираю несколько точек на плоскости (точка - существующий объект), указываю какой объект вставлять (+размеры) и производится вставка.
Подскажите, пожалуйста, а то есть куча произвольных точек, в которые надо вставить окружности :?
Просмотров: 3505
 
Непрочитано 23.08.2006, 20:05
#2
ki

Constructor
 
Регистрация: 28.09.2005
SPb
Сообщений: 689
<phrase 1= Отправить сообщение для ki с помощью Skype™


Не совсем понятны условия. ВСТАВИТЬ можно по разному.
1 окр. с центром в данной точке
2 окр. вписанная в 2, 3 и более точек
3 окр. с опред. размером и проход. через какие-то точки
....
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++
ki вне форума  
 
Автор темы   Непрочитано 23.08.2006, 22:40
#3
AcadJim


 
Регистрация: 21.08.2006
Челябинск
Сообщений: 5


первый вариант, т.е. центр окружности в точку :x
AcadJim вне форума  
 
Автор темы   Непрочитано 23.08.2006, 22:43
#4
AcadJim


 
Регистрация: 21.08.2006
Челябинск
Сообщений: 5


короче))
нужно раскопировать одну окружность во множество с центрами в выбранных точках
AcadJim вне форума  
 
Непрочитано 23.08.2006, 23:17
#5
bernata


 
Регистрация: 22.09.2005
здесь могла быть ваша реклама
Сообщений: 1,296


Несмотря на то, что можно решить задачу несложным LISPом
Я бы всётаки сделал так:
1) Создаём из окружности (или любого другого примитива/примитивов ) блок. Указав точку вставки блока, как необходимо.
2) Menus\ToolPack\Block\Insert\On Objects (или с клавиатуры DSTP_BLKPLTPT)
3) Выбираем из списка блок, который только что создали
4) Выбираем точки (любые другие примитивы)
Всё.
ToolPack9 лежит здесь:
cadware2@yandex.ru
password: help
:wink:
bernata вне форума  
 
Непрочитано 23.08.2006, 23:25
#6
bernata


 
Регистрация: 22.09.2005
здесь могла быть ваша реклама
Сообщений: 1,296


И ешо.
Выбирать объекты (точки) можно полигональной рамкой введя с клавиатуры перед выбором _CP (contur poligon) или _WP (window poligon) Сработает ли это для руссифицированной версии - понятия не имею... :?
bernata вне форума  
 
Непрочитано 23.08.2006, 23:40
#7
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от AcadJim
короче))
нужно раскопировать одну окружность во множество с центрами в выбранных точках
Попробуй
Код:
[Выделить все]
(defun C:CIP (/ en i pt rad ss)
(initget 7)
(setq rad (getdist "\nРадиус окружности : ")
      ss (ssget (list (cons 0 "POINT")))
      i -1)
(while (setq en (ssname ss (setq i (1+ i))))
  (setq pt (cdr (assoc 10 (entget en))))
(entmake (list '(0 . "CIRCLE")
                '(100 . "AcDbEntity")
                '(100 . "AcDbCircle")
                (cons 10 pt)
                (cons 40 rad)
          ) 
)
  )
(princ)
)
(prompt "\nВ командной строке ввести cip ...")
(prin1)
(C:cip)
Fatty

~'J'~
fixo вне форума  
 
Непрочитано 23.08.2006, 23:57
#8
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Я тут как-то выкладывал прогу, навеянную идеями Fatty, для клонирования групп и отдельных обектов в выбраннае точки. Выкладываю ишо раз, ибо добр есмь днесь. [sm149]
Код:
[Выделить все]
(defun flt (typ)
  (list 
    (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 0)) '(0)) 
    (vlax-safearray-fill (vlax-make-safearray vlax-vbvariant '(0 . 0)) (list typ)))
);ssel
;
(defun C:FBB (/ acsp adoc util bks ass bname pts ptn ptx lpts ht cpt opt pt1 pt2) 
  (vl-load-com) 
  (setq om (getvar "OSMODE") cmd (getvar "CMDECHO") 
        adoc (vla-get-activedocument (vlax-get-acad-object)) 
        util (vla-get-utility adoc) 
        bks (vla-get-blocks adoc) 
        ass (vla-get-ActiveSelectionSet adoc)
        cnt T)
  (if (/= (vla-get-count ass) 0) (vla-clear ass)) 
  (vla-endundomark adoc)
  (vla-startundomark adoc)
  (setvar "cmdecho" 0)
  (prompt "\nSelect Entity Group(s) to Replace: ")
  (while cnt
    (vla-SelectOnScreen ass)
    (setq csp (vla-ObjectIDToObject adoc (vla-get-OwnerID (vla-item ass 0))))
    (vlax-for it ass
      (vla-getboundingbox it 'pt1 'pt2)
      (setq pts (mapcar '(lambda (x) (reverse (cdr (reverse (vlax-safearray->list x))))) (list pt1 pt2))
            ptn (if (apply 'and (mapcar '(lambda (x y) (<= x y)) (car pts) ptm)) (car pts) ptn)
            ptx (if (apply 'and (mapcar '(lambda (x y) (>= x y)) (cadr pts) ptx)) (cadr pts) ptx)
            lpts (cons (vlax-3d-point (mapcar ' (lambda (x y) (* 0.5 (+ x y))) ptn ptx)) lpts));setq
      (vla-erase ass) (vla-clear ass));vlax-for
    (setq stp (getstring T "\nStop  or <Enter> to Continue: ")
          cnt (if (eq stp "") T nil)));while
  (vla-InitializeUserInput util 128 "Insert Copy") 
  (setq opt (vla-getKeyWord util (strcat "\nSelect Cloning Methode [Insert/Copy] <Copy> :"))) 
  (if (eq "" opt)(setq opt "Copy")) 
  (if (eq opt "Copy")
    (progn (prompt "\n\t***\tSelect Objects \t*** \n : ")
      (setvar "osmode" 0)
      (vla-SelectOnScreen (car css))
      (vla-InitializeUserInput util 1)
      (setq cpt (vla-getpoint util nil "\n\t***\tSelect Refernce Point \t*** \n : ")) 
      (foreach pt lpts
        (vlax-for obj (car css) (vla-copy obj) (vla-move obj cpt (cadr pt)))));Copy
    (progn (vla-InitializeUserInput util 128 "Drawing File")
      (setq kword (vla-getKeyWord util "\nSelect Source Object from [Drawing/File]: ? <Drawing>")) 
      (if (eq "" kword) (setq kw "Drawing")) 
      (if (= kword "Drawing") (progn
          (setq bname (getstring T "\nEnter New Block's Name or <Enter> to Select: "))
          (if (= bname "") (progn (vla-getEntity util 'blk) (setq bname (vla-get-name blk))))));if
      (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list bks bname)))
        (setq bname (getfiled "Select Source File" "" "dwg" 8)));if
      (vla-delete (vla-insertBlock csp (vlax-3d-point '(0.0 0.0 0.0)) bname 1 1 1 0 "X"))
      (foreach pt lvpts (vla-Insertblock csp (cadr pt) bname 1 1 1 0))));if
  (setvar "OSMODE" om) (setvar "CMDECHO" cmd) 
  (vla-endundomark adoc) 
  (vla-regen adoc acActiveViewport) 
(princ) 
);end
Лентяй вне форума  
 
Автор темы   Непрочитано 24.08.2006, 07:39
#9
AcadJim


 
Регистрация: 21.08.2006
Челябинск
Сообщений: 5


Огромное Спасибо ВСЕМ
AcadJim вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка окружности в выбранные точки