明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1834|回复: 5

请教这个问题如何解决?

[复制链接]
发表于 2003-4-14 09:54:00 | 显示全部楼层 |阅读模式
请教一个问题,在一个文件中每一行有9个数值,对应三个点的X、Y、Z坐标,如何用lisp语言读出,并赋值给3个点,然后绘出图形?
发表于 2003-4-14 10:07:00 | 显示全部楼层

Format of the line?

发表于 2003-4-14 10:32:00 | 显示全部楼层

试试这个

;注:各点之间用逗号分开
(defun readtxt(/ f str lists str2 stype)
  (setq f (open "d:\\in.txt" "r"))
  (setq str (read-line f))
  (setq str (vl-string-translate "," ";" str))
  (setq str (strcase str 0))
  (setq str2 (read str))
  (if (not str2)   
    (setq str2 "/")
    (if (not (or (= (type str2) 'INT) (= (type str2) 'REAL)))
      (setq str2 (strcase (vl-symbol-name str2) 0))
      (setq str2 (rtos str2))
    )
  )
  (setq str (vl-string-left-trim str2 str))
  (setq str (vl-string-left-trim ";" str))
  (setq str (strcase str 0))
  (setq x1 (read str2))
  (setq str2 (rtos x1))
  
  (setq str (vl-string-left-trim str2 str))
  (setq str (vl-string-left-trim ";" str))
  (setq str (strcase str 0))
  (setq y1 (read str))
  (setq str2 (rtos y1))

  (setq str (vl-string-left-trim str2 str))
  (setq str (vl-string-left-trim ";" str))
  (setq str (strcase str 0))
  (setq z1 (read str))
  (setq str2 (rtos z1))

  (setq str (vl-string-left-trim str2 str))
  (setq str (vl-string-left-trim ";" str))
  (setq str (strcase str 0))
  (setq x2 (read str))
  (setq str2 (rtos x2))

  (setq str (vl-string-left-trim str2 str))
  (setq str (vl-string-left-trim ";" str))
  (setq str (strcase str 0))
  (setq y2 (read str))
  (setq str2 (rtos y2))
  
  (setq str (vl-string-left-trim str2 str))
  (setq str (vl-string-left-trim ";;" str))
  (setq str (strcase str 0))
  (setq z2 (read str))
  (close f)
)
发表于 2003-4-16 08:41:00 | 显示全部楼层

meflying兄:程序对小数为.00会出错,我的程序如內....

(defun C:TT (/ F N LIST_1 PT_LIST TMP)
  (defun PT_DATA (PT_LIST N)
    (list (nth (* N 3) PT_LIST)
          (nth (+ (* N 3) 1) PT_LIST)
          (nth (+ (* N 3) 2) PT_LIST)
    )
  )
  (setq F (open (findfile "AAA.TXT") "r"))
  (while (setq TMP (read-line F))
    (setq PT_LIST (read (strcat "(" TMP ")")))
    (setq N 0
          LIST_1 NIL
    )
    (command "_.LINE")
    (repeat (/ (length PT_LIST) 3)
      (command (PT_DATA PT_LIST N))
      (setq N (1+ N))
    )
    (command "")
  )
  (close F)
  (princ)
)


;;;;;;;;;;;;;;; AAA.TXT ;;;;;;;;;;;;;;;;;;;;;;
;;-135.7941 162.0804  0.0000 -16.1956 246.4949 0.0000 71.6451 166.8076 0.0000
;;27.7280 248.5208 0.0000 154.0802 162.0804 0.0000 228.4070 78.3413 0.0000
;;54.0770 74.2894 0.0000 162.0804 100 0.0000 54.0802 62.0804 0.0000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 楼主| 发表于 2003-4-18 17:37:00 | 显示全部楼层

谢谢

谢谢老兄们的帮助!
发表于 2003-4-18 20:34:00 | 显示全部楼层

分割后读取

九个数值在输入时用逗号分隔,然后用read函数读取这一行数值,然后用程序根据逗号分隔就可以完整地读取数据了。
要不更简单一些,即将九个数值写成九行,这样读取起来就更方便了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 10:02 , Processed in 0.147157 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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