网格
大家好,有没有办法用X和Y以及Lat long值来注释点?该图纸位于UTM坐标45区和WGS 84基准面内。 标签x,y很简单,这里也有很多例子http://www.Lee-mac.com你需要一个Lisp程序或。net版本将x、y转换为Lat/Long然后标记,您还可以翻转到Lat Long units读取点值,因为您有CIV3d不确定(getpoint)返回的测试结果。阅读几分钟前关于进入属性和使用值的帖子。 苏维克,虽然我相信你可以在Civil3d中访问Lat Long,
在Vanilla上,我使用以下projlib。David Allison的lsp。
ymg公司 我的问题不是XY,而是DMS格式的Lat-Long。实际上我有两个问题。一个是Lat长注释,另一个是使用civil 3D中的自定义绘图批量创建横截面。 苏维克,
我不确定我在跟踪你。
是否只是在dms中格式化lat long,
或者需要将x-y转换为lat和long?
这里的格式设置非常快,请检查:
; angtodms by ymg ;
; Given an angle in radian and number of decimal after the seconds ;
; Returns a string formatted in Degree Minutes and Seconds, ;
; with proper symblol for degree and leading 0 on the minutes and seconds ;
; 0°00'00.0" 271°05'06.3" etc. ;
(defun angtodms (a prec /)
(setq a (angtos a 1 (+ prec 4)))
(while (<(vl-string-position (ascii "d") a) 3)
(setq a (strcat " " a))
)
(if (< (vl-string-position (ascii "'") a) 6)
(setq a (strcat (substr a 1 4) "0" (substr a 5)))
)
(if (< (vl-string-position (ascii "\"") a) (+ 9 (if (= 0 prec) 0 (1+ prec))))
(setq a (strcat (substr a 1 7) "0" (substr a ))
)
(vl-string-subst"°" "d" a)
)
(defun dtr (a) (* pi (/ a 180.0)))
;; lltodms ;
;; ;
;; Arguments:ll, A list (lat lon) in decimal degree ;
;; prec, Number of decimals on the second ;
;; Returns: A string "S 24°34'08.2042\" - E 52°22'11.5320\"" ;
;; ;
;; Example:(lltodms '(-24.5689456 52.36987) 4) ;
;; Needs subroutine angtodms and dtr ;
(defun lltodms (ll prec /)
(setq lat (angtodms (abs (dtr (car ll))) prec)
lon (angtodms (abs (dtr (cadr ll))) prec)
)
(if (minusp (car ll))
(setq lat (strcat "S" lat))
(setq lat (strcat "N" lat))
)
(if (minusp (car ll))
(setq lon (strcat "W" lon))
(setq lon (strcat "E" lon))
)
(strcat lat " - " lon)
)
ymg公司 在这里,我改变了格式,以符合谷歌地球
参数lat和lon现在是分开的
列表的。
以十进制度数提供纬度和经度。您还提供
指定秒后小数位数的整数。
;;****************************************************************************;
;; lltodms by ymg ;
;; ;
;; Arguments: lat Latitude in decimal degree ;
;; lon Longitude in decimal degree ;
;; prec Number of decimals on the second ;
;; Returns: A string with lat and long in deg min sec ;
;; ;
;; Example:(lltodms -24.5689456 -52.369875 4) ;
;; Result :" 24°34'08.2042\"S -52°22'11.5500\"W" ;
;;****************************************************************************;
(defun lltodms (lat lon prec)
; Degree to radians routine ;
(defun dtr (a) (* pi (/ a 180.0)))
; angtodms by ymg ;
; Given an angle in radian and number of decimal after the seconds ;
; Returns a string formatted in Degree Minutes and Seconds, ;
; with proper symblol for degree and leading 0 on the minutes and seconds;
; 0°00'00.0" 271°05'06.3" etc. ;
(defun angtodms (a prec)
(setq a (angtos a 1 (+ prec 4)))
(while (<(vl-string-position (ascii "d") a) 3)
(setq a (strcat " " a))
)
(if (< (vl-string-position (ascii "'") a) 6)
(setq a (strcat (substr a 1 4) "0" (substr a 5)))
)
(if (< (vl-string-position (ascii "\"") a) (+ 9 (if (= 0 prec) 0 (1+ prec))))
(setq a (strcat (substr a 1 7) "0" (substr a ))
)
(vl-string-subst"°" "d" a)
)
;-------------------------------------------------------------------------;
(strcat
(strcat (angtodms (abs (dtr lat)) prec)(if (minusp lat) "S" "N"))
" - "
(strcat (angtodms (abs (dtr lon)) prec)(if (minusp lon) "W" "E"))
)
)
ymg公司 谢谢YMG3先生的帮助。我管理了另一个过程。我已将点的坐标提取到xls文件中。然后将UTM XY点转换为Lat long,并将Lat long值作为文本导入cad。它解决了我的目的。谢谢你的帮助,先生。
页:
[1]