cj52000 发表于 2011-7-12 22:40:44

求拷贝物体使两物体中心点重合的程序?

各位好:

            现比如说有两组图元,多个同心圆或圆弧,和一个距形,我想让它们的中心重合,圆的中心就是圆,距形的中心就是对角线交点,然后选择欲复制的图元,确认,然后再选择目的图元,这样,第一选择的图元就和第二选择的图元中心重合,第一选择的图元还在原处,只是复制,选择时最好是框选,因为工作中经常会做到这样的动作,所以请大家帮帮忙,谢谢大家!

Andyhon 发表于 2011-7-13 09:07:52

本帖最后由 Andyhon 于 2011-7-13 12:01 编辑



;;; For test only ...
(Defun C:test ()
   (princ "\框选同心圆或圆弧: ")
   (setq ss1 (ssget '((0 . "ARC,CIRCLE")))
          po (cdr (assoc 10 (entget (ssname ss1 0))))
   )
   (princ "\选矩形框: ")
   (setq ss2 (ssget ":S:E" '((0 . "LWPOLYLINE")))
          e2 (ssname ss2 0)
         dat (entget e2)
         dat (member (assoc 10 dat) dat)
         pt1 (cdar dat)
         dat (nth 8 dat)
         pt2 (cdr dat)
         Pt5 (mapcar (function (lambda (a b) (/ (+ a b) 2)))pt1 pt2)
)      
;; (command "Move" ss1 "" "none" po "none" Pt5)
(command "Copy" ss1 "" "none" po "none" Pt5)   ; 依 zhynt 的提示订正
)

zhynt 发表于 2011-7-13 11:30:53

本帖最后由 zhynt 于 2011-7-13 11:32 编辑

我做了一些修改,应该比较符合题意。
;;; For test only ...
(Defun C:test ()
(princ "\框选同心圆或圆弧: ")
(setq ss1 (ssget '((0 . "ARC,CIRCLE"))))
(command "copy" ss1 "" "@" "@")
(setq ss1 (ssget "P"))
(setq po (cdr (assoc 10 (entget (ssname ss1 0)))))
(princ "\选矩形框: ")
(setq      ss2 (ssget ":S:E" '((0 . "LWPOLYLINE")))
      e2(ssname ss2 0)
      dat (entget e2)
      dat (member (assoc 10 dat) dat)
      pt1 (cdar dat)
      dat (nth 10 dat);;;不知是不是机器的问题,我这里应该是10,不是8
      pt2 (cdr dat)
      Pt5 (mapcar (function (lambda (a b) (/ (+ a b) 2))) pt1 pt2)
)
(setq      n (sslength ss1)
      m 0
)
(while (/= n m)
    (setq ent (entget (ssname ss1 m)))
    (setq ent (subst (cons 10 pt5) (assoc 10 ent) ent))
    (entmod ent)
    (setq m (1+ m))
)
;;(command "Move" ss1 "" "none" po "none" Pt5)
)

Andyhon 发表于 2011-7-13 11:56:56

...不知是不是机器的问题,我这里应该是10,不是8 ...
您用的版次较新啦

cj52000 发表于 2011-7-13 20:21:16

太感谢Andyhon 和zhynt 了,昨天发的贴子,今天就得到回复了,激动~~
我用的是10的,Andyhon长老的程序提示; 错误: 参数类型错误: listp 0.0,可能是版本的问题
zhynt长老修改过的程序正是我想要的,还有就是还想大胆的提点要求,呵呵~~就是框选同心圆或圆弧时,能否改成任何图元的中心,包括同心圆或圆弧,距形,多边形等,这样就完美了,多谢!!!

lincctw_ccl 发表于 2011-7-16 00:40:00

不錯的程式!!
先簽到
页: [1]
查看完整版本: 求拷贝物体使两物体中心点重合的程序?