CadProWannabe 发表于 2022-7-5 19:46:46

高程点程序

我想知道是否有人知道已经编写的程序,或者如何更正一个简单的程序,该程序将从一个点提取高程,并将文本中的高程放置在节点上,小数点位于该点的节点上。
 
任何帮助都将不胜感激。

Lee Mac 发表于 2022-7-5 19:52:03

沿着这些路线?
 

(defun c:tpt (/ Make_Point Make_Text pt)

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

(defun Make_Text (pt val)
   (entmakex (list (cons 0 "TEXT")
                   (cons 10 pt)
                   (cons 40 (getvar "TEXTSIZE"))
                   (cons 1 val)
                   (cons 72 1)
                   (cons 73 1)
                   (cons 11 pt))))

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

(princ))

CarlB 发表于 2022-7-5 19:55:38

李看起来不像是“在点的节点上用小数点”实现的。
 
这个问题以前已经讨论过了(小数点左右两侧的文本大小不同)。
除非可以精确知道小数点和文本的位置,否则您可能必须为小数点的L和R部分创建单独的文本项。

eldon 发表于 2022-7-5 19:59:26

AutoCAD始终缺少十进制对正。
 
通常,水文测量受益于小数点对齐(假设小数点是点而不是逗号)

Lee Mac 发表于 2022-7-5 20:00:45

 
没错,我只是用了下中对齐

wizman 发表于 2022-7-5 20:02:44

十进制对正有什么用?,这是一个近似值:
 


(defun c:tpt (/ Make_Point Make_Text pt)
(setvar 'dimzin 0)
(defun Make_Point (pt)
   (entmakex (list (cons 0 "POINT") (cons 10 pt))))

(defun Make_Text (pt val)
   (setq pt1 (polar pt (* (/ 16.180.) pi) (* (getvar 'textsize) 3.6099)))
   (entmakeX
         (list '(0 . "MTEXT")
               '(100 . "AcDbEntity")
               '(100 . "AcDbMText")
               '(71 . 3)
               '(8 . "0")
               (list 10 (car pt1) (cadr pt1)(caddr pt))
               (cons 40(getvar 'textsize));
               (cons 1
                   (strcat
                     "{\\fCourier New|b0|i0|c0|p49;"
                     val
                     "}"
                   )
               )
         )
             ))

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

(princ))

stevesfr 发表于 2022-7-5 20:07:04

 
当我试着运行它时,它会倾斜。。
错误如下。。。
命令:appload
tpt。lsp已成功加载。
 
命令:;错误:错误的参数类型:numberp:nil

wizman 发表于 2022-7-5 20:09:50

Stevesfr,我没有发现这个错误,我稍微修改了一下,请再试一次,这不是确切的位置,但我可以从修改lee的代码中得到最接近的位置,但我仍然建议文本插入点在点上,而不是小数点上。

eldon 发表于 2022-7-5 20:13:44

 
你显然没有经历过水文测量,这将非常有用。
 
然而,您的代码很巧妙,但应该限定为只能使用小数点后三位和字体。
 
但是它可以被修改为使用不同的小数位数和不同的字体。

wizman 发表于 2022-7-5 20:17:01

没有埃尔登,从未从事过水文测量,这和水深测量是一样的吗?不管怎样,我只要用谷歌搜索一下。你说得对,它可以修改为不同的小数位数,但必须正确对齐,并且只适用于等距字体。
页: [1] 2
查看完整版本: 高程点程序