明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1564|回复: 5

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

[复制链接]
发表于 2011-7-12 22:40:44 | 显示全部楼层 |阅读模式
各位好:

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

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-7-13 09:07:52 | 显示全部楼层
本帖最后由 Andyhon 于 2011-7-13 12:01 编辑


  1. ;;; For test only ...
  2. (Defun C:test ()
  3.    (princ "\框选同心圆或圆弧: ")
  4.    (setq ss1 (ssget '((0 . "ARC,CIRCLE")))
  5.           po (cdr (assoc 10 (entget (ssname ss1 0))))
  6.    )
  7.    (princ "\选矩形框: ")
  8.    (setq ss2 (ssget ":S:E" '((0 . "LWPOLYLINE")))
  9.           e2 (ssname ss2 0)
  10.          dat (entget e2)
  11.          dat (member (assoc 10 dat) dat)
  12.          pt1 (cdar dat)
  13.          dat (nth 8 dat)
  14.          pt2 (cdr dat)
  15.          Pt5 (mapcar (function (lambda (a b) (/ (+ a b) 2)))  pt1 pt2)
  16.   )      
  17.   ;; (command "Move" ss1 "" "none" po "none" Pt5)
  18.   (command "Copy" ss1 "" "none" po "none" Pt5)   ; 依 zhynt 的提示订正
  19. )
发表于 2011-7-13 11:30:53 | 显示全部楼层
本帖最后由 zhynt 于 2011-7-13 11:32 编辑

我做了一些修改,应该比较符合题意。

  1. ;;; For test only ...
  2. (Defun C:test ()
  3.   (princ "\框选同心圆或圆弧: ")
  4.   (setq ss1 (ssget '((0 . "ARC,CIRCLE"))))
  5.   (command "copy" ss1 "" "@" "@")
  6.   (setq ss1 (ssget "P"))
  7.   (setq po (cdr (assoc 10 (entget (ssname ss1 0)))))
  8.   (princ "\选矩形框: ")
  9.   (setq        ss2 (ssget ":S:E" '((0 . "LWPOLYLINE")))
  10.         e2  (ssname ss2 0)
  11.         dat (entget e2)
  12.         dat (member (assoc 10 dat) dat)
  13.         pt1 (cdar dat)
  14.         dat (nth 10 dat);;;不知是不是机器的问题,我这里应该是10,不是8
  15.         pt2 (cdr dat)
  16.         Pt5 (mapcar (function (lambda (a b) (/ (+ a b) 2))) pt1 pt2)
  17.   )
  18.   (setq        n (sslength ss1)
  19.         m 0
  20.   )
  21.   (while (/= n m)
  22.     (setq ent (entget (ssname ss1 m)))
  23.     (setq ent (subst (cons 10 pt5) (assoc 10 ent) ent))
  24.     (entmod ent)
  25.     (setq m (1+ m))
  26.   )
  27.   ;;(command "Move" ss1 "" "none" po "none" Pt5)
  28. )
发表于 2011-7-13 11:56:56 | 显示全部楼层
...不知是不是机器的问题,我这里应该是10,不是8 ...
您用的版次较新啦
 楼主| 发表于 2011-7-13 20:21:16 | 显示全部楼层
太感谢Andyhon 和zhynt 了,昨天发的贴子,今天就得到回复了,激动~~
我用的是10的,Andyhon长老的程序提示; 错误: 参数类型错误: listp 0.0,可能是版本的问题
zhynt长老修改过的程序正是我想要的,还有就是还想大胆的提点要求,呵呵~~就是框选同心圆或圆弧时,能否改成任何图元的中心,包括同心圆或圆弧,距形,多边形等,这样就完美了,多谢!!!
发表于 2011-7-16 00:40:00 | 显示全部楼层
不錯的程式!!
先簽到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-26 07:46 , Processed in 0.196311 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表