明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1837|回复: 5

[求助]高手请进,帮小弟看看这个程序问题出现在哪里?

[复制链接]
发表于 2005-6-14 12:55:00 | 显示全部楼层 |阅读模式
;(defun c:test()
;(setq file-new (getfiled "选择数据文件" "d:/" "dat" 8))
;(setq zg (getreal " 输入字高< 0.4 >:"))
;(if (not zg)
(setq ZG 0.4)
;)
;(command "layer" "m" "kzd" "color" "red" "" "")
;(setq file (open file-new "r"))
(setq file(open "d://data.dat" "r"))
;-------------------------------------------------------------
(setq xg1 0 yg1 0 xg2 0 yg2 0 xg3 0 yg3 0 s 0 sg 0 xg 0 yg 0 xx nil )
;------------------------------------------------------------
(while (setq text0(read-line file))
(setq len (strlen text0)
n1(vl-string-search "," text0)
n2(vl-string-search "," text0 (+ n1 1))
n3(vl-string-search "," text0 (+ n2 1))
n4(vl-string-search "," text0 (+ n3 1))
dh(substr text0 1 n1)
bm(substr text0 (+ n1 2) (- n2 n1 1))
y(atof(substr text0(+ n2 2) (- n3 n2 1)))
x(atof(substr text0(+ n3 2) (- n4 n3 1)))
h(substr text0(+ n4 2) (- len n4 1))
pt-crd(list y x)
pt-dh(list (+ y 8.5) (+ x 1))
pt-gc(list (+ y 8.5) (- x 3))
);setq 束
;----------------------------------------------------------------------
(setq s(sqrt(+ (* (- x xg) (- x xg)) (* (- y yg) (- y yg)))))
(setq ab1(list y x) ab2(list yg xg))
(setq xg x yg y
s(if (= xg 0) 0 s)
jd(angle ab1 ab2)
jd(if (<= PI()) (+ jd 1.570796327) (- jd 1.570796327))
)
(if (/= bm xx)
(progn
(command "")
(command "pline" pt-crd)
(if (> s sg)
(progn
(setq xg2 xg2 yg2 yg2 xg3 x yg3 y)
(setq pg2(list yg2 xg2) pg3(list yg3 xg3))
(setq pgzd(list (/ (+ yg2 yg3) 2) (/ (+ xg2 xg3) 2)))

);end progn
(progn
(setq xg1 xg1 yg1 yg1 xg2 x yg2 y)
(setq pg1 (list yg1 xg1) pg2 (list yg2 xg2))
(setq pgzd(list (/ (+ yg2 yg1) 2) (/ (+ xg2 xg1) 2)))
);end progn
);end if
(setq xg2 x yg2 y xg1 x yg1 y)
(setq sg s)
(setq xg x yg y)
);end progn
(command "pline" pt-crd)
);end if

;(if (/= bm xx)
;(command "text" "j" "c" pgzd zg jd bm)
;)

(setq xx bm
xg1 0
yg1 0
xg2 0
yg2 0
xg3 0
xg3 0
s 0
sg 0
)
);end while
(command "")
(close file)
(command "zoom" "e")
;)
 楼主| 发表于 2005-6-14 12:56:00 | 显示全部楼层
数据格式:d:\data.dat 1,1000,-160.216,128.774,-2.074
2,1000,-143.778,126.558,-1.834
3,1000,-146.267,126.542,-3.021
发表于 2005-6-14 13:15:00 | 显示全部楼层
(command "pline" pt-crd)这是做什么?一个点怎么使用PLINE?


还有,为什么把程序结构去掉,变成一堆代码组?
发表于 2005-6-14 13:44:00 | 显示全部楼层
把(command "pline" pt-crd)这句换称成 (apply 'command (cons "pline" pt-crd)) 可以画出线了,但你要把基本程序结构做好!把";"该去的去掉!但不知道你 (if (/= bm xx)中的xx数据是怎么来的????? 好好看看书!
 楼主| 发表于 2005-6-15 11:32:00 | 显示全部楼层
谢谢两位。1、去掉程序结构是为了快速调试。2、(command "pline" pt-crd)倒序嵌套在IF里面,若条件为nil则执行后面一句。“(command "pline" pt-crd)”,然而此句应该改为:(command pt-crd)。3、把(command "pline" pt-crd)这句换称成 (apply 'command (cons "pline" pt-crd))我试试用一下这句。4、xx的的数据,初值为nil,后面是通过:(setq xx bm)赋值。虽然这能解释清楚这些,但是我还是不知道问题出在什么地方。
发表于 2005-6-16 07:47:00 | 显示全部楼层
第二个(command "pline" pt-crd)改成(command pt-crd)!

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

本版积分规则

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

GMT+8, 2024-11-17 13:25 , Processed in 0.189925 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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