高程赋值的一个小问题
本帖最后由 作者 于 2007-7-4 13:36:50 编辑 <br /><br /> <p>小弟刚来这里,请大哥大姐多关照.</p><p>以前没有接触过vba,所以现在很头痛.</p><p>cad中的点中没有高程信息,但是旁边的标注上有,我想将标注的数据赋给它所对应的点.不知道这个程序该怎么写,在这里请求各位大哥大姐帮忙了,先谢谢了</p> <p>这个可以通过搜索点旁边的文字,然后得知高程,也可以直接搜索所有高程标注,然后在文字插入点生成一个高程点,一个是正向思路,一个是逆向思路,随便选!已经有软件实行这个功能了,这就是我们水工行业的ZDM!请记住水工行业有一个画图软件叫ZDM。</p> <p>把搜索到的文字高程信息放到点的Z值中就可以了,或者放到Xdata中也行</p> 本帖最后由 作者 于 2007-7-9 12:49:29 编辑sangguoqing发表于2007-7-4 10:12:00static/image/common/back.gif小弟刚来这里,请大哥大姐多关照.以前没有接触过vba,所以现在很头痛.cad中的点中没有高程信息,但是旁边的标注上有,我想将标注的数据赋给它所对应的点.不知道这个程序该怎么写,在这里请求各位大哥cad中的点是从何而来的?
;;; 功能:全站仪坐标数据展点
;;; 日期:zml84 于 2007-06-22
(vl-load-com)
(defun C:AAA ()
(princ "\n读取全站仪文件数据,绘制点位。")
(if (setq FILE (getfiled "选择dat文件"
""
"dat"
4
)
)
(progn
;;询问用户项
(initget "Yes No")
(setq key
(getkword
"\n是否输出点位?(Y):"
)
)
(initget "1 2 3 4 5")
(setq mode
(getkword
"\n请选择输出项目:[编号(0)/编码(1)/X值(2)/Y值(3)/Z值(4)]:"
)
)
(if (OR (= mode NIL)
(= mode "")
)
(setq mode "0")
)
;;读模式打开lsp文件
(setq F1 (open FILE "r"))
;;逐行读入
(while (setq STR (read-line F1))
;;; (princ "\n")
;;; (princ str)
(setq str1 (str-th str '(("," " "))))
(setq LST (read (strcat "(" STR1 ")")))
(if (>= (length lst) 5)
(progn
;;
(setq id (nth 0 lst)
dm (nth 1 lst)
x(nth 2 lst)
y(nth 3 lst)
z(nth 4 lst)
)
(setq pt (list (nth 2 lst) (nth 3 lst) (nth 4 lst)))
;;输出操作
(if (= KEY "No")
()
(command "_.point" "non" PT)
)
(command "_.text"
"non"
PT
2.5
0
(vl-princ-to-string (nth (atoi mode) lst))
)
)
(princ (strcat "\n数据不完整:" str1))
)
) ;_结束 while
;;关闭文件
(close F1)
)
)
(princ)
) ;_ 结束defun
;;;=============================================================
;|;=====================================================================
定义函数:替换字符串
参数说明: str---欲替换的字符串
lst---分割符表,参数类型:表
返回值:替换后的字符串
类型:字符串
示例:(str-th "<HTML>" '(("<" "<") (">" ">")))
返回:"<HTML>"
日期:zml84 于2007-05-08
|;
(defun STR-TH (STR LST / I A B LEN-A TMP J STRJ)
(if (and STR LST)
(progn
(setq I 0)
(repeat (length LST)
(setq A (car (nth I LST))
LEN-A (strlen A)
B (cadr (nth I LST))
TMP ""
)
(if (>= (strlen STR) LEN-A)
(progn
(setq J 1)
(repeat (- (strlen STR)
LEN-A
-1
)
(setq
STRJ (substr STR
J
1
)
)
(if (= STRJ A)
(setq TMP
(strcat TMP
B
)
)
(setq TMP
(strcat
TMP
STRJ
)
)
)
(setq J (1+ J))
)
)
)
(setq I (1+ I)
STR TMP
)
)
)
) ;_结束 if
STR
) ;_ 结束defun
;;;=====================================================================
;;;加载后的提示信息
(princ "\n全站仪坐标数据展点 加载完成!!")
(princ "\n★输入命令aaa开始运行。")
(princ)
我用的是VB,不知道你用的是什么语言,我也要用到全站仪数据绘制点位,最开始我利用VB在CAD中绘制的点是包含有z点高程的,可后来我又删除了,我所在的行业不需要三维作图,有需要联系QQ:87545957
页:
[1]