明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3671|回复: 7

请求完善程序:N多个圆、圆弧移动到指定点(同一个圆心点)

  [复制链接]
发表于 2009-10-18 12:59:00 | 显示全部楼层 |阅读模式

想达到的目的:选取N多个圆、圆弧、椭圆和椭圆弧移动到指定点(最终必须是N多个圆同一个圆心点),

省去一个个操作的麻烦

;;;圆、圆弧移动到指定点(同一个圆心点)
(defun c:QQ ()(setvar "pickbox" 24)(setvar "cmdecho" 0)
(setvar "CMDECHO" 0) 
(STRCAT "请选取要移动的圆、圆弧、椭圆和椭圆弧 :")
(setq ss (ssget '((0 . "Arc,Circle,Ellipse"))))
         (= (sslength ss) 2))
   (progn
   (setq en (ssname ss 0) ent (entget en))
   (if (= (cdr(assoc 0 ent)) '((0 . "Arc,Circle,Ellipse")))
   (setq en1 (ssname ss 1) ent1 (entget en1))
   (setq en1 en ent1 ent en (ssname ss 1) ent (entget en))
)
   (setq pc (cdr(assoc 10 ent1))
         ptt (txtcen ent))
(setq pc  (cdr (assoc 10 ent))))

(setq pt2 (getpoint "[选择目标点] : "))
(command ".move" en "" ptt pc)
))
(setq SS nil) (setvar "cmdecho" 1))

发表于 2009-10-18 19:40:00 | 显示全部楼层
大概改了一下
  1. ;;; 圆、圆弧移动到指定点(同一个圆心点)
  2. ;;; qjchen modify
  3. (defun c:qq ( / en i pc pt2 ss temp)
  4.   ;(setvar "pickbox" 24)
  5.   (command "undo" "be")
  6.   (setvar "cmdecho" 0)
  7.   (setvar "CMDECHO" 0)
  8.   (prompt "请选取要移动的圆、圆弧、椭圆和椭圆弧 :")
  9.   (setq ss (ssget '((0 . "Arc,Circle,Ellipse"))))
  10.   (setq pt2 (getpoint "[选择目标点] : ")) ; (= (sslength ss) 2)
  11.   (setq i 0)
  12.   (setq temp (getvar "osmode"))
  13.   (setvar "osmode" 0)
  14.   (if ss
  15.     (progn
  16.       (repeat (sslength ss)
  17. (setq en (ssname ss i))
  18. (setq pc (cdr (assoc 10 (entget en))))
  19. (command ".move" en "" pc pt2)
  20. (setq i (1+ i))
  21.       )
  22.     )
  23.   )
  24.   (setvar "cmdecho" 1)
  25.   (setvar "osmode" temp)
  26.   (command "undo" "e")
  27. )
 楼主| 发表于 2009-10-19 07:39:00 | 显示全部楼层
致谢qjchen
发表于 2009-10-19 08:15:00 | 显示全部楼层

在已知目标“点”的情况下,用ACAD的特性(properties)【快捷键为Ctrl+1】功能也不见得比程序慢:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-10-19 13:14:00 | 显示全部楼层
楼上好方法,直接在图中选点也可。
发表于 2009-10-19 22:16:00 | 显示全部楼层

好方法,谢2位 :)

发表于 2009-10-28 11:33:00 | 显示全部楼层
  1. ;;; another choice
  2. ;;; for Test only
  3. (defun c:qq ( / acapp adoc pt2 vPt2)
  4.    (setq acapp (vlax-get-acad-object)
  5.           adoc (vla-get-activedocument acapp)
  6.    )
  7.   
  8.    (vla-endundomark adoc)
  9.    (vla-startundomark adoc)
  10.    
  11.    (prompt "请选取要移动的圆、圆弧、椭圆和椭圆弧 :")
  12.    (ssget '((0 . "Arc,Circle,Ellipse")))
  13.    (setq pt2 (getpoint "[选择目标点] : ")
  14.         vPt2 (vlax-3d-point pt2)
  15.    )
  16.    (vlax-for obj (vla-get-activeselectionset adoc)
  17.      (vla-put-center obj vPt2)
  18.    )
  19.    
  20.    ;; (mapcar 'vlax-release-object (list acapp adoc))
  21.    
  22.    (vla-endundomark adoc)
  23.    (princ)
  24. )
发表于 2009-11-4 16:56:00 | 显示全部楼层

谢谢楼上各位的好方法

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 05:22 , Processed in 0.172685 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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