- UID
- 176094
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-9-18
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
;;;;(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只返回整数,唉!
那有小数的数怎么返回字符串 |
|