找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1285|回复: 2

[求助] [求助]:怎么把我的输出的X1 Y1 X2 Y2 x3 y3写到一个表中,再写入一个文件(问题我自己

[复制链接]
发表于 2005-9-10 11:23:13 | 显示全部楼层 |阅读模式

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

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

×
;;;;(princ "\dmx,用于读取地面线(桩号&高程,用于绝对坐标系下).Writen by lyc in 08/09/2005.")
(defun c:dmx (/ pd zbx scx sxy pl ss n i st x2 y2 x1 y1 var st1 var1 x3 y3)
(princ "\n请选择地面线:")
(setq pl (ssget))
(setq pd 0)
(princ "\n请输入X方向绘图比例:(100)")
(setq scx (getreal))
(if (= scx nil) (setq scx 100))
(princ "\n请输入Y方向绘图比例:(100)")
(setq scy (getreal))
(if (= scy nil) (setq scy 100))
;;;;;;;判断是否是PL
(setq st1 (entget (ssname pl 0)))
(setq var1  (cdr (assoc 0 st1)) )
(if (= var1 "LWPOLYLINE")
(progn
(command "EXPLODE" pl "" )
(setq ss (ssget "p"))
(setq pd 1)
)
(setq ss pl)
)
;;;;读取数据
(setq n (sslength ss))
(setq i 0)
(princ "桩号   高程")
(while (< i n)
(setq st (entget (ssname ss i)))
(setq var  (cdr (assoc 0 st)) )
( if (= pd 1)
;;;;;;;;;;;;;;
(progn
    (if (= var "LINE")
       (progn
;;;;;;输出
所    (if (= i 0)
         (progn
         (setq x1 (cadr (assoc 10 st)))
         (setq y1 (caddr (assoc 10 st)))
         (setq x2 (cadr (assoc 11 st)))
         (setq y2 (caddr (assoc 11 st)))
         (princ "\n")(princ (/ x1 scx) )(princ " ")(princ (/ y1 scy))(princ)
         (princ "\n")(princ (/ x2 scx) )(princ " ")(princ (/ y2 scy))(princ)
        )
         (progn
         (setq x3 (cadr (assoc 11 st)))
         (setq y3 (caddr (assoc 11 st)))
          (princ "\n")(princ (/ x3 scx) )(princ " ")(princ (/ y3 scy))(princ)   
         )
        )
     )
    )
   )
;;;;;;;;;;;;;
(progn
    (if (= var "LINE")
       (progn
;;;;;;输出
所    (if (= i 0)
         (progn
         (setq x1 (cadr (assoc 11 st)))
         (setq y1 (caddr (assoc 11 st)))
         (setq x2 (cadr (assoc 10 st)))
         (setq y2 (caddr (assoc 10 st)))
         (princ "\n")(princ (/ x1 scx) )(princ " ")(princ (/ y1 scy))(princ)
         (princ "\n")(princ (/ x2 scx) )(princ " ")(princ (/ y2 scy))(princ)
        )
         (progn
         (setq x3 (cadr (assoc 10 st)))
         (setq y3 (caddr (assoc 10 st)))
          (princ "\n")(princ (/ x3 scx) )(princ " ")(princ (/ y3 scy))(princ)   
         )
        )
     )
    )
   )
;;;;;;;;;;;;;
)
(setq i (+ i 1))
)
(princ "\n读取完毕!")
(princ)
)
;;;;;;END!

怎么把我的输出的X1 Y1 X2 Y2 x3 y3写到一个表中,再写入一个文件


呵呵,为什么没有人理我,唉!研究了一下午,输出大概了解了
现在有一点想不懂
我的程序改成:

;;;;(princ "\dmx,用于读取地面线(桩号&高程,用于绝对坐标系下).Writen by lyc in 08/09/2005.")
(defun c:dmx (/ pd zbx scx sxy pl ss n i st x2 y2 x1 y1 var st1 var1 x3 y3 lst1)
(princ "\n请选择地面线:")
(setq pl (ssget))
(setq pd 0)
(princ "\n请输入X方向绘图比例:(100)")
(setq scx (getreal))
(if (= scx nil) (setq scx 100))
(princ "\n请输入Y方向绘图比例:(100)")
(setq scy (getreal))
(if (= scy nil) (setq scy 100))
;;;;;;;判断是否是PL
(setq st1 (entget (ssname pl 0)))
(setq var1  (cdr (assoc 0 st1)) )
(if (= var1 "LWPOLYLINE")
(progn
(command "EXPLODE" pl "" )
(setq ss (ssget "p"))
(setq pd 1)
)
(setq ss pl)
)
;;;;读取数据
(setq n (sslength ss))
(setq i 0)
(princ "桩号   高程")
(while (< i n)
(setq st (entget (ssname ss i)))
(setq var  (cdr (assoc 0 st)) )
( if (= pd 1)
;;;;;;;;;;;;;;
(progn
    (if (= var "LINE")
       (progn
;;;;;;输出
所    (if (= i 0)
         (progn
         (setq x1 (cadr (assoc 10 st)))
         (setq y1 (caddr (assoc 10 st)))
         (setq x2 (cadr (assoc 11 st)))
         (setq y2 (caddr (assoc 11 st)))
         (princ "\n")(princ (/ x1 scx) )(princ " ")(princ (/ y1 scy))(princ)
         (princ "\n")(princ (/ x2 scx) )(princ " ")(princ (/ y2 scy))(princ)
        )
         (progn
         (setq x3 (cadr (assoc 11 st)))
         (setq y3 (caddr (assoc 11 st)))
          (princ "\n")(princ (/ x3 scx) )(princ " ")(princ (/ y3 scy))(princ)   
         )
        )
     )
    )
   )
;;;;;;;;;;;;;
(progn
    (if (= var "LINE")
       (progn
;;;;;;输出
所    (if (= i 0)
         (progn
         (setq x1 (cadr (assoc 11 st)))
         (setq y1 (caddr (assoc 11 st)))
         (setq x2 (cadr (assoc 10 st)))
         (setq y2 (caddr (assoc 10 st)))
         (princ "\n")(princ (/ x1 scx) )(princ " ")(princ (/ y1 scy))(princ)
         (princ "\n")(princ (/ x2 scx) )(princ " ")(princ (/ y2 scy))(princ)
        )
         (progn
         (setq x3 (cadr (assoc 10 st)))
         (setq y3 (caddr (assoc 10 st)))
         (setq  lst1 (strcat (itoa x3)   "  "  (itoa y3) ) )
         (princ lst1)
         
         )
        )
     )
    )
   )
;;;;;;;;;;;;;
)
(setq i (+ i 1))
)
(princ "\n读取完毕!")
(princ)
)
;;;;;;END!

为什么会有 参数类型错误: fixnump:
如果把"(setq lst1 (strcat (itoa x3) " " (itoa y3) ) )
(princ lst1)"
换成"(princ "\n")(princ (/ x3 scx) )(princ " ")(princ (/ y3 scy))(princ)"
一切正常! 不明白

请赐教


原来是ITOA只返回整数,唉!

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

已领礼包: 11306个

财富等级: 富甲天下

发表于 2005-9-10 22:43:08 | 显示全部楼层
浮点数用RTOS函数转换:(RTOS X 2 3)转换为保留3位小数的十进制字串。
输出到文件:
先用OPEN函数打开文件:(SETQ FP (OPEN "FILENAME" "w"))为写文件
                     :(SETQ FP (OPEN "FNANE.TXT" "r"))为读文件
用(PRINC XXX FP)写文件,(READ-LINE FP)为读文件一行。
在读写完文件后用(CLOSE FP)关闭文件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 14:34 , Processed in 0.270043 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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