sangguoqing 发表于 2007-7-4 10:12:00

高程赋值的一个小问题

本帖最后由 作者 于 2007-7-4 13:36:50 编辑 <br /><br /> <p>小弟刚来这里,请大哥大姐多关照.</p><p>以前没有接触过vba,所以现在很头痛.</p><p>cad中的点中没有高程信息,但是旁边的标注上有,我想将标注的数据赋给它所对应的点.不知道这个程序该怎么写,在这里请求各位大哥大姐帮忙了,先谢谢了</p>

laoliu09 发表于 2007-7-4 10:34:00

<p>这个可以通过搜索点旁边的文字,然后得知高程,也可以直接搜索所有高程标注,然后在文字插入点生成一个高程点,一个是正向思路,一个是逆向思路,随便选!已经有软件实行这个功能了,这就是我们水工行业的ZDM!请记住水工行业有一个画图软件叫ZDM。</p>

tnt1095 发表于 2007-7-5 08:32:00

<p>把搜索到的文字高程信息放到点的Z值中就可以了,或者放到Xdata中也行</p>

zml84 发表于 2007-7-9 12:46:00

本帖最后由 作者 于 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)

hosteboy 发表于 2007-7-10 16:56:00

我用的是VB,不知道你用的是什么语言,我也要用到全站仪数据绘制点位,最开始我利用VB在CAD中绘制的点是包含有z点高程的,可后来我又删除了,我所在的行业不需要三维作图,有需要联系QQ:87545957
页: [1]
查看完整版本: 高程赋值的一个小问题