明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3572|回复: 11

如何以选取2点为路径自动画出等大小(比如直径6MM)等间距(比如中心距离为2MM)的一排圆

  [复制链接]
发表于 2012-2-21 13:59:19 | 显示全部楼层 |阅读模式

本帖子中包含更多资源

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

x
发表于 2012-2-21 15:54:29 | 显示全部楼层
measure不行吗
发表于 2012-2-21 17:15:28 | 显示全部楼层
本帖最后由 cable2004 于 2012-2-21 17:23 编辑

第一次发源码,有问题请见谅!

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-2-21 18:18:00 | 显示全部楼层
可能是我没有写清楚,我想以任意选择2点为路径,且最好第个选择点为第一个圆的圆心,第二个选择点为最后一个圆孔的圆心,这样排列出来?行吗?[em0]
发表于 2012-2-21 18:44:48 | 显示全部楼层
本帖最后由 cable2004 于 2012-2-21 18:47 编辑

(defun C:tt( / I e1 e2 num e1-cen e2-cen ang e2-R e1-e2 pt)
(vl-load-com)
  (setq osmode_bak (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (setq e1 (car(entsel "\n 物体1:")))
  (setq e2 (car (entsel "\n 物体2:")))
  (setq num (getint "\n 数量:"))
  (setq e1-cen (Vlax-Get (Vlax-Ename->Vla-Object e1) 'Center ))
  (setq e2-cen (Vlax-Get (Vlax-Ename->Vla-Object e2) 'Center ))
  (setq ang    (angle e1-cen e2-cen))
  (setq e2-R (/ (Vlax-Get (Vlax-Ename->Vla-Object e2) 'Diameter ) 2))
  (setq i 1)
  (setq e1-e2  (/ (distance e1-cen  e2-cen) num))
  (repeat (- num 1)
            (setq pt  (polar e1-cen  ang  (* i e1-e2  )))
            (COMMAND "_circle" PT e2-R"")
            (setq i(1+ i) ))
(setvar "osmode" osmode_bak)
)

本帖子中包含更多资源

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

x

点评

谢谢这位仁兄,能否再改改,比如在没有圆孔参照的情况下,图形中随便点两下,就能自动生成一排圆孔呢?且相互的间距实一样的,且圆孔是按之前点的2点做伟路径排列的?,,谢谢了!  发表于 2012-2-24 12:56
 楼主| 发表于 2012-2-24 12:57:49 | 显示全部楼层
谢谢这位仁兄,能否再改改,比如在没有圆孔参照的情况下,图形中随便点两下,就能自动生成一排圆孔呢?且相互的间距离一样的(比如设置一个值固定,不要手动输入间距及个数),且圆孔是按之前点的2点做伟路径排列的?,,谢谢了!  发表于 4 秒前
发表于 2012-2-24 22:10:35 | 显示全部楼层
  1. ;两点间排列圆 明经 ZZXXQQ 2012.2.24
  2. (defun c:tt ()
  3. (setq d 2 r 3) ;d=中心距;r=圆半径
  4. (if (and (setq pt1 (getpoint "\n第一点 :"))
  5.           (setq pt2 (getpoint pt1 "\n第二点 :"))) (progn
  6.   (setq di (distance pt1 pt2)
  7.         ang (angle pt1 pt2)
  8.         n (fix (/ di d))
  9.         pt3 pt1)
  10.   (entmake (list '(0 . "CIRCLE") (cons 10 pt1) (cons 40 r)))
  11.   (repeat n
  12.    (setq pt3 (polar pt3 ang d))
  13.    (entmake (list '(0 . "CIRCLE") (cons 10 pt3) (cons 40 r)))
  14.   )
  15.   (entmake (list '(0 . "CIRCLE") (cons 10 pt2) (cons 40 r)))
  16. ))
  17. (princ)
  18. )
 楼主| 发表于 2012-2-28 10:02:52 | 显示全部楼层
ZZXXQQ 发表于 2012-2-24 22:10

多谢群主,,正是我所要的效果,,谢谢。。。。。。不过群主,,在点第二次的时候,,出现了点小问题,,第一次用次命令没有问题,但第二次的时候,,最后那个圆出现间距不一样的情况了
 楼主| 发表于 2012-2-28 10:12:23 | 显示全部楼层
xieling888 发表于 2012-2-28 10:02
多谢群主,,正是我所要的效果,,谢谢。。。。。。不过群主,,在点第二次的时候,,出现了点小问 ...

刚刚想过了确实只能这样,因为任意选择的2点已经限制了距离,所以每选一次不一定正好够排那么多数量,所以最后那个只能随机调整,,,谢谢ZZXXQQ
发表于 2012-2-28 11:12:40 | 显示全部楼层
感谢cable2004及ZZXXQQ超级版主分享程序!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-25 03:07 , Processed in 0.158933 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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