找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 929|回复: 10

[求助] [求助]:请高手指点怎么样才能从文本里展点号?

[复制链接]
发表于 2005-1-24 12:01:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我在文本里输入坐标 ,格式是这样的
点号,X坐标,Y坐标
……
怎么样才能提取X,Y坐标,然后标注点号?  我用atof把字符串转成实数,再用nth从0开始排序提取没有成功。
请哪位高手指点一下?  谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-1-24 12:26:15 | 显示全部楼层
在文本里输入时采用表的形式:
(点号 (X Y))
然后用CAR、CADR等等来提取。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-24 15:09:15 | 显示全部楼层
谢谢zhynt 的回复,但如果格式是固定不变的,也就是说,中间只能用逗号分隔,那该怎么办?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-24 16:15:12 | 显示全部楼层
我有个卓见
读入行的时候在内存里的应该是  "点号,x,y"   的吧?
把它看成一个字符串,查找第一个逗号的位置,提出点号的字符串长度,截取点号这一字符串,剩下的就是“X,Y”字符串,用同样的办法截取X坐标,和Y坐标,这样应该就行了吧!
试试吧!
拙见,见笑了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-24 19:33:15 | 显示全部楼层
那怎么样区分数字与逗号呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-1-24 22:20:21 | 显示全部楼层
这种情况用Autodesk Map3D 2005 可以直接展点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-24 22:43:25 | 显示全部楼层
參考
(defun c:pln2 ()

  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setq selnum (getvar "osmode"))
  (setvar "osmode" 0)
  (setq cc (getvar "cecolor"))
  (setq th (getvar "textsize"))

  (setq fl (getstring "\nEnter File name < *.pln>: "))
  (setq fil (open (strcat fl ".pln") "r"))

  (setq data (read-line fil))
  (setpt data)
  (setq p1 pt)
  (command "color" 1)
  (command "text" p1 th 0 nn)
  (setq data (read-line fil))
  (setpt data)
  (setq p2 pt)

  (command "color" 3)
  (command "donut" 0 (/ th 3) p1 "")
                                        ; (setq t 1)
  (while p2
    (setq ang (angle p1 p2))
    (setq anga (* (/ ang pi) 180))
    (setq dt (distance p1 p2))
    (command "color" 3)
    (command "line" p1 p2 "")
    (command "donut" 0 (/ th 3) p2 "")
    (command "color" 1)
    (command "text" p2 th 0 nn)
    (setq pt (polar p1 ang (/ dt 2)))
    (setq atp (polar pt (+ ang (/ pi 2)) (/ th 3)))
    (setq dtp (polar pt (- ang (/ pi 2)) (+ (/ th 3) th)))
;    (command "color" 6)
;    (command "text" "C" atp th anga (strcat (rtos anga 2 2) "%%D"))
;    (command "color" 4)
;    (command "text" "C" dtp th anga (RTOS dt 2 2))
;    (command "color" 1)
    (setq p1 p2)
                                        ;   (grread t)
    (setq data (read-line fil))
    (setq p2 nil)
    (if        (/= data nil)
      (progn
        (setpt data)
        (setq p2 pt)
      )
    )
  )

  (close fil)
  (setvar "osmode" selnum)
  (command "color" cc)

  (prin1)
)


(defun setpt (data /)

  (setq        q   ""
        qq  ""
        qqq '()
        i   1
  )
  (setq nn (strlen data))
  (repeat nn
    (setq q (substr data i 1))
   (if        (/= q ",")  ;改為 (if (/= q " ") 由空格分開[/COLOR]
      (setq qq (strcat qq q))
      (setq qqq        (cons qq qqq)
            qq        ""
      )
    )
    (setq i (+ i 1))
  )
  (setq qqq (cons qq qqq))
  (setq qqq (reverse qqq))

  (setq nn (car qqq))
  (setq x (atof (cadr qqq)))
  (setq y (atof (caddr qqq)))
  (setq pt (list x y))
  (prin1)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-25 09:04:24 | 显示全部楼层
谢谢f5612140 ,晓东论坛里还是高手多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-25 14:29:34 | 显示全部楼层
这是我编的一个通用程序,可以完成这个功能:

  1. ;;
  2. ;;将由相同分隔字符分隔的字符串组成表(忽略“空”字串)
  3. ;;
  4. (defun zhy_string_tok (sstring sstr / n1 n2 m2 str_1 string_list)
  5.   (setq string_list '())
  6.   (setq n1 (strlen sstring))
  7.   (setq n2 (strlen sstr))
  8.   (while (setq m2 (zhy_string_find sstring sstr))
  9.     (setq str_1 (substr sstring 1 (- m2 1)))
  10.     (setq sstring (substr sstring (+ m2 n2)))
  11.     (if        (/= str_1 "")
  12.       (setq string_list (cons str_1 string_list))
  13.     )
  14.   )
  15.   (if (/= sstring "")
  16.     (setq string_list (cons sstring string_list))
  17.   )
  18.   (reverse string_list)
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-25 14:32:26 | 显示全部楼层
例子:
命令: (zhy_string_tok "点号,X坐标,Y坐标" ",")
("点号" "X坐标" "Y坐标")

用法:
命令: (setq aa (zhy_string_tok "点号,X坐标,Y坐标" ","))
("点号" "X坐标" "Y坐标")

命令: (car aa)
"点号"

命令: (cadr aa)
"X坐标"

命令: (caddr aa)
"Y坐标"

当然,实际提取的XY坐标是字符串,可以用ATOF函数转换成实数型。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-7-15 10:58:00 | 显示全部楼层
都是高手啊。看不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 20:18 , Processed in 0.277703 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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