waityou5683 发表于 2014-3-11 15:28:26

lisp CAD坐标批量提取(大神请进)

    如何利用lisp程序一次性提取CAD中点的坐标。
因为我的图是CAD剖面图自己进行了网格划分,然后提取网格上的点(从左向右竖直方向的网格线进行0,1,2这样编号,便于到excel中数据处理方便)。看到网上有个说是批量lisp输出坐标程序如下,
(defun c:md()
(setvar "cmdecho" 0)
(COMMAND ".UNDO" "BE")
(command "-units" "2" "3" "2" "3" "" "")
(setq fp (open "d:/点编号坐标.xls" "a") s (getvar "cmdecho") n (getint "\n请输入总节点数! "))
(princ "点编号" fp)(princ "\t" fp)
(princ "X坐标值" fp)(princ "\t" fp)
(princ "Y坐标值" fp)(princ "\n" fp)
(repeat n
(setq k (getstring "\n输入点编号(如:K1)!")
p (getpoint "\n选取节点!")
x (strcat "X=" (rtos (nth 0 p)))
y (strcat "Y=" (rtos (nth 1 p))))
(princ k fp)(princ "\t" fp)
(princ x fp)(princ "\t" fp)
(princ y fp)(princ "\n" fp))
(close fp)
(setvar "cmdecho" s))
(princ "\n提示:输入 MD 命令来运行本程序!")
(princ)
    不过加载后运行只能是一个个点击导出坐标太麻烦了。从网上看到说是可以利用什么“图元集”的方法,自己也不懂看看老师能不能帮个忙在您空闲时,可以批量提取坐标的lisp小程序。

    这是我要提取点坐标的dwg图,图中红色网格是自己划分的。就是提取红色网格每个交点的坐标,并从左向右编号批量提取出来。。。望各位老师、高手帮忙看下,自己也不懂lisp程序因为。因为好多这种剖面图企图坐标,一个个点击太麻烦了。。。非常感谢!!

waityou5683 发表于 2014-3-11 15:32:08

       自己先顶下,免得沉了!!
    自己再机械CAD论坛里讨论过都没有提供太好的意见,这里说是高手如云,希望能解决。因为急着用,有哪位高手看到会的话,看看能不能编个小程序,小弟非常感谢!!

waityou5683 发表于 2014-3-12 14:58:16

看来利用图元类似方法还是有难度的。。

waityou5683 发表于 2014-3-12 21:57:20

看来还是自己用老办法吧

waityou5683 发表于 2014-3-21 12:39:05

已解决,这么专业的论坛,还没有百度知道效率

蟋蟀的帅 发表于 2014-4-28 16:03:25

怎么解决的不发上来,菜鸟学习下

gzbccy 发表于 2014-7-26 08:14:44

怎么解决的,可以发上来给大家共享下啊,共同提高学习。虽然你当时没有得到本论坛的大师们及时解决,但不代表大师们不会,可能是因为他们没空或者当时没看到而已。

看天的小树 发表于 2014-9-21 16:03:03

这么专业的论坛,自己好幸运

chbddzx12 发表于 2015-2-2 22:21:09

.........................

waityou5683 发表于 2015-7-10 17:20:40

gzbccy 发表于 2014-7-26 08:14 static/image/common/back.gif
怎么解决的,可以发上来给大家共享下啊,共同提高学习。虽然你当时没有得到本论坛的大师们及时解决,但不代 ...

(defun c:tqzb( )

(setvar "cmdecho" 0)

(COMMAND ".UNDO" "BE")

(command "-units" "2" "3" "2" "3" "" "")

(setq fp (open "e:/三维CAD坐标值.xls" "a") s (getvar "cmdecho") n (getint "\n请输入总点数! "))

(princ "序号" fp)(princ "\t" fp)

(princ "X坐标值" fp)(princ "\t" fp)

(princ "Y坐标值" fp)(princ "\t" fp)

(princ "Z坐标值" fp)(princ "\n" fp)

(setq k 0)

(repeat n      

(setq k (1+ K)      

   p (getpoint "\n选取节点!")         

   x (strcat (rtos (nth 0 p)))         

   y (strcat (rtos (nth 1 p)))   

   z (strcat (rtos (nth 2 p)))    )   

(princ(strcat "K" (itoa k)) fp) (princ "\t" fp)

(princ x fp)(princ "\t" fp)

(princ y fp)(princ "\t" fp)

(princ z fp)(princ "\n" fp) )

(close fp)

(setvar "cmdecho" s))

(princ "\n提示:输入 tqzb 命令来运行本程序!")

(princ)
页: [1] 2
查看完整版本: lisp CAD坐标批量提取(大神请进)