souvik 发表于 2022-7-5 23:22:05

网格

大家好,有没有办法用X和Y以及Lat long值来注释点?该图纸位于UTM坐标45区和WGS 84基准面内。

BIGAL 发表于 2022-7-5 23:37:51

标签x,y很简单,这里也有很多例子http://www.Lee-mac.com你需要一个Lisp程序或。net版本将x、y转换为Lat/Long然后标记,您还可以翻转到Lat Long units读取点值,因为您有CIV3d不确定(getpoint)返回的测试结果。阅读几分钟前关于进入属性和使用值的帖子。

ymg3 发表于 2022-7-5 23:51:12

苏维克,
 
虽然我相信你可以在Civil3d中访问Lat Long,
在Vanilla上,我使用以下projlib。David Allison的lsp。
 
ymg公司

souvik 发表于 2022-7-5 23:53:15

我的问题不是XY,而是DMS格式的Lat-Long。实际上我有两个问题。一个是Lat长注释,另一个是使用civil 3D中的自定义绘图批量创建横截面。

ymg3 发表于 2022-7-6 00:11:45

苏维克,
 
我不确定我在跟踪你。
 
是否只是在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公司

ymg3 发表于 2022-7-6 00:21:25

在这里,我改变了格式,以符合谷歌地球
参数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公司

souvik 发表于 2022-7-6 00:23:04

谢谢YMG3先生的帮助。我管理了另一个过程。我已将点的坐标提取到xls文件中。然后将UTM XY点转换为Lat long,并将Lat long值作为文本导入cad。它解决了我的目的。谢谢你的帮助,先生。
页: [1]
查看完整版本: 网格