如何用lisp框选一些圆,然后输出圆心坐标到TEXT文件

我在CAD上画了很多的圆,如何用lisp来实现可以框选这些圆,然后将其圆心坐标输出到TEXT文件中?输出格式为X坐标单行从小往大,双行从大往小。而Y轴坐标都是从大往小。就... 我在CAD上画了很多的圆,如何用lisp来实现可以框选这些圆,然后将其圆心坐标输出到TEXT文件中?输出格式为X坐标单行从小往大,双行从大往小。而Y轴坐标都是从大往小。就是取“S”形路线。 展开
 我来答
朱06CAD
推荐于2017-11-26 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18068
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
(defun C:sx3 ( / n ss &kw L ff &k1 %k1 %k2);批量选择圆心坐标到记事本
 (setvar "cmdecho" 0) ;;关闭变量
 (setvar "blipmode" 0);;关闭控制点
 (setvar "dimzin" 0)
 (vl-load-com)        ;;加载vlax扩展函数
 (setq n 0 ss '())    ;;取得一个空表
 (princ "\n请选择文字")
 (setq &kw (ssget '((0 . "CIRCLE"))));选择圆
 (if (/= &kw nil);;如果有选择了圆
  (progn
   (setq L (sslength &kw)
         ff (open "d://圆心到TXT.txt" "w");在D盘建立文本<圆心到TXT>
   );;
   (repeat L
    (setq &k1 (entget (ssname &kw n))
          %k1 (cdr (assoc 10 &k1)) ;;取得圆心坐标
          ss (cons %k1 ss)         ;;加入选择集
          n (+ n 1)
    )
   )
   (setq ss (vl-sort ss (function (lambda (x y)(< (fix (car x)) (fix (car y)))))));;X排序从左到右
   (setq ss (vl-sort ss (function (lambda (x y)(> (fix (cadr x)) (fix (cadr y)))))));;Y排序从上到下
   (setq n 0)
   (repeat L
    (setq &k1 (nth n ss)
          %k1 (rtos (car &k1) 2 3) ;;取得X坐标,小数点后三位
          %k2 (rtos (cadr &k1) 2 3);;取得Y坐标,小数点后三位
          n (+ n 1)
    )
    (princ "X=" ff)  ;;先输入X=(自己决定是否输入,不输入这句话删除)
    (princ %k1 ff)   ;;然后输入X坐标
    (princ " " ff)   ;;一个空格分开
    (princ "Y=" ff)  ;;然后输入Y=(自己决定是否输入,不输入这句话删除)
    (princ %k2 ff)   ;;然后输入Y坐标
    (princ "\n" ff)  ;;换一行计算
   )
   (close ff);;关闭文本
  )
 )
 (prin1);;结束;;(记事本里面的数据可以导入表格)
)
(prompt "\n《C:SX3》坐标写入记事本")
(prin1)
追问


非常感谢。这个程序基本上是实现要求了。但还缺一个步骤,就是按照我图上面的顺序,第1个圆到第12个圆的这种顺序排列输出坐标。。


意思是第一行,从左往右排列,

第二行,从右往做排列,

第三行,又是从左右往右排列。

第四行,从左往右排列。

如此类推。。。

追答
这个排序的话,有些问题,要根据Y间距来决定换方向,这个间距是多少?按那个点来参考?换图纸了,还要修改程序。工作量有些大了。最好的办法就是学会编程,这个编程不难的。
dnbc1
2014-07-09 · TA获得超过977个赞
知道小有建树答主
回答量:1235
采纳率:92%
帮助的人:403万
展开全部
什么叫圆心坐标XY排序的“S”形路线,贴一张示例图出来如何?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式