LEsq 发表于 2022-7-5 20:18:57

 
这令人鼓舞。。。
 
 
 
我通过了。

eldon 发表于 2022-7-5 20:24:30

 
我认为你搞砸了下水道调查,尤其是根据你的动议。

Lee Mac 发表于 2022-7-5 20:24:58

这可能会让我们走到一半。。。
 

(defun c:tpt (/ Make_Point Make_Text pt BoxNum BoxHgt BoxWid)

(setvar 'dimzin 0)

(defun Make_Point (pt)
   (entmakex (list (cons 0 "POINT") (cons 10 pt))))

(defun Make_Text (pt val)

   (setq pt1 (polar pt (atan BoxHgt (* BoxNum BoxWid))
                  (sqrt (+ (expt (* BoxNum BoxWid) 2)
                           (expt BoxHgt 2)))))
   
   (entmakex (list (cons 0 "MTEXT")
                   (cons 100 "AcDbEntity")
                   (cons 100 "AcDbMText")
                   (cons 71 3)
                   (list 10 (car pt1) (cadr pt1) (caddr pt))
                   (cons 40 (getvar 'TEXTSIZE))
                   (cons 1
                     (strcat "{\\fCourier New|b0|i0|c0|p49;" val "}")))))

(setq BoxNum (+ 0.5 (getvar 'LUPREC))
       BoxHgt (getvar 'TEXTSIZE)
       BoxWid (* (expt 1.00272389 (getvar 'LUPREC)) (getvar 'TEXTSIZE)))

(while (setq pt (getpoint "\nPick Point: "))
   ;(Make_Point (setq pt (trans pt 1 0)))
   (Make_Text pt (rtos (caddr pt))))

(princ))

wizman 发表于 2022-7-5 20:29:00

我将对lee进行测试,我之前对其进行了硬编码,因为将每个字母放在方框中似乎会漏掉,尽管它是一种等距字体,但我们拭目以待。

wizman 发表于 2022-7-5 20:31:29

可能会到达那里李(但不是靶心),
 
看起来很好,在处理任意数量的小数方面做得很好,只需要稍微调整一下
(+0.5(getvar‘LUPREC))
 
太累了,现在想不起来了,回来吧,汤姆。

Lee Mac 发表于 2022-7-5 20:35:37

我更新了上面的代码,稍加改进,但仍然不是bullseye。

eldon 发表于 2022-7-5 20:37:22

如果是水文/水深测量,那么测深的平面位置通常是最接近的米,因此它应该是足够的。但以后不要更改文本的大小。(这是小数点对正有用的地方)
 
水深测量仅涉及测量深度,而水文测量涉及制图和其他事项,包括测量深度。

Lee Mac 发表于 2022-7-5 20:40:37

这说明了使用“装箱”文本的方法的问题:
 

 
绿色框是使用文本中符号的几何范围获得的框,洋红色线是1.0 x 1.0正方形,x坐标使用绿色框居中。
 
Textsize为1.0
 
请注意,字符之间存在不均匀的空格,因此很难获得到小数点的精确距离。
 

 
 

David Bethel 发表于 2022-7-5 20:45:55

 
李,
 
您始终可以强制使用真正的等距字体-大卫

Lee Mac 发表于 2022-7-5 20:48:53

好主意,大卫!我迷上了Courier New。。。
 

(defun c:tpt (/ Make_Point Make_Text pt BoxNum BoxHgt BoxWid)
;; Lee Mac, David Bethel & Wizman~10.01.10 (= 38)

(setvar 'dimzin 0)

(defun Make_Point (pt)
   (entmakex (list (cons 0 "POINT") (cons 10 pt))))

(defun Make_Text (pt val)

   (setq pt1 (polar pt (atan BoxHgt   (* BoxNum BoxWid))
                     (sqrt (+ (expt (* BoxNum BoxWid) 2)
                              (expt BoxHgt 2)))))
   
   (entmakex (list (cons 0   "MTEXT")
                   (cons 100 "AcDbEntity")
                   (cons 100 "AcDbMText")
                   (cons 71 3)
                   (list 10 (car pt1) (cadr pt1) (caddr pt))
                   (cons 40 (getvar 'TEXTSIZE))
                   (cons 1(strcat "{\\fMonospac821 BT|b0|i0|c0|p49;" val "}")))))

(setq BoxNum (+ 0.412636   (getvar 'LUPREC))
       BoxHgt (* 0.892748   (getvar 'TEXTSIZE))
       BoxWid (* (/ 13 15.) (getvar 'TEXTSIZE)))

(while (setq pt (getpoint "\nPick Point: "))
   ;(Make_Point (setq pt (trans pt 1 0)))
   (Make_Text pt (rtos (caddr pt))))

(princ))
页: 1 [2]
查看完整版本: 高程点程序