求赐教:这段作垂线程序问题出在哪?
以下一段程序是读取文本文件,数据格式每行为“a1,2562.24,141542.55”,文件包括多行该类数据,其中每行第一个数为点号,后两个数为坐标。本程序的目的为:遍历数据文件,以每一行的坐标数据向指定多义线作垂线,在未加“
(command "line" p0 (setvar "osmode" 128)(setq p3(getpoint p4 "\N输入下一点:")) (setvar "osmode"0))
”
时,程序可遍历文本文件全部数据,加了该行之后,就只能读取第一行数据并对指定多义线作垂线,后面的各行数据就无法处理程序就终止了,求各位高手指点一二,如何才能实现遍历文本文件,根据文本文件数据逐一对已有多义线作垂线。不胜感谢。
;;;将实测管线坐标按“点号,X坐标,Y坐标”格式存为他txt文档
;;;在CAD中调用本函数,半自动求解各点的里程数及偏距,并绘制偏距线,
;;;同时将其存入指定的TXT文档
(defun C:gxts()
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setq fle (getfiled "请选择要保存文件" " " "txt;*" 0))
(setq f(open fle "r"))
;;;遍历每一行数据
(while (setq data (read-line f))
(setq X_list (zhy_string_tok data ",") )
(setq a (car x_list)
x(atof(cadr x_list))
Y(atof(caddr x_list))
)
(princ "\na=")
(princ a)
(princ "\ny=")
(princ y)
(princ)
(command "zoom" "e")
(setq p0 (list x y))
(princ "\np0=")
(princ p0)
(command "line" p0 (setvar "osmode" 128)(setq p3(getpoint p4 "\N输入下一点:")) (setvar "osmode"0))
)
)
;;;;末尾括号
;;;数据读取函数代码,按指定格式读取文件数据
;;;将由某字符分隔的字串组成表
(defun zhy_string_tok(sstring sstr)
(setq string_list '())
(setq n2 (strlen sstr))
(while (setq m2 (vl-string-search sstr sstring))
(setq str_1 (substr sstring 1 m2))
(setq sstring (substr sstring (+ 1 m2 n2)))
(if (/= str_1 "")
(setq string_list (cons str_1 string_list))
)
)
(if (/= sstring "")
(setq string_list (cons sstring string_list))
)
( setq string_list(reverse string_list))
)
这段程序其他功能还没完善,现在卡在逐一点作垂线上料 还有就是“vl-string-search ”此类函数在哪里可以找到用法,这个函数是我看别人程序学到的,可是还有很多函数我看不懂,又不知在哪可以查找相关的资料。求各位高手指点迷津,谢谢。 糊涂医生 发表于 2013-7-8 20:52 static/image/common/back.gif
这段程序其他功能还没完善,现在卡在逐一点作垂线上料
自己好好检查下程序,有p4这个点吗? (command "line" (getpoint"输入一一点:") (setvar "osmode" 128)(setq p3(getpoint"输入下一点:")) "")
程序错误,无法执行,需要点或选项关键字。
; 错误: 函数被取消。
(setvar "osmode" 128)
(command "line" (getpoint"输入一一点:") (setq p3(getpoint (getvar "lastpoint") "输入下一点:")) "")
(setvar "osmode" 0)
可以执行。
谢谢各位,我刚才想到了另外一种解决办法,就是把 (command "line" p0 (setvar "osmode" 128)(setq p3(getpoint p4 "\N输入下一点:")) (setvar "osmode"0))
拆分成
(setvar "osmode" 128)
(setq p1(getpoint p0 "\N输入下一点:")
(setvar "osmode"0))
(command "line" p0 p1 ""
其中原来getpoint 函数后面的p4 改为p0 当时在学习这个函数时没把这个函数的各项参数搞明白。 哦输快了点,最后一行忘了加闭括号。(command "line" p0 p1 "")
调试过了,没问题。 zyhandw 发表于 2013-7-9 09:40 static/image/common/back.gif
自己好好检查下程序,有p4这个点吗?
这个是我没搞清楚getpoint函数的参数意义,这个程序中应该改成p0 糊涂医生 发表于 2013-7-9 15:32 static/image/common/back.gif
这个是我没搞清楚getpoint函数的参数意义,这个程序中应该改成p0
对啊,本来没问题!结果就是因为没搞清楚这一点,才出了错
页:
[1]