如何用lisp框选一些圆,然后输出圆心坐标到TEXT文件
我在CAD上画了很多的圆,如何用lisp来实现可以框选这些圆,然后将其圆心坐标输出到TEXT文件中?输出格式为X坐标单行从小往大,双行从大往小。而Y轴坐标都是从大往小。就...
我在CAD上画了很多的圆,如何用lisp来实现可以框选这些圆,然后将其圆心坐标输出到TEXT文件中?输出格式为X坐标单行从小往大,双行从大往小。而Y轴坐标都是从大往小。就是取“S”形路线。
展开
推荐于2017-11-26 · 知道合伙人软件行家
关注
展开全部
(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)
追问
追答
这个排序的话,有些问题,要根据Y间距来决定换方向,这个间距是多少?按那个点来参考?换图纸了,还要修改程序。工作量有些大了。最好的办法就是学会编程,这个编程不难的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |