minhphuong_humg 发表于 2022-7-5 17:16:37

帮帮我,显示高程点!

大家好。
我有问题,或者需要你的帮助。
我画了一张有点的图,有一个高程Z的点。
现在我想要一个文本来显示点的Z值。以原文为中心点。
请参阅附图。
衷心感谢您。
文件:
满的图纸
 
 

Hippe013 发表于 2022-7-5 17:27:10

这是我很快整理好的东西。希望有帮助。
 
(defun c:test ()
(setq ss (ssget '(( 0 . "POINT"))))
(if ss
   (progn
   (setq ms (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'ModelSpace))
   (setq n 0)
   (repeat (sslength ss)
(setq pobj (vlax-ename->vla-object (ssname ss n)))
(setq p (vlax-safearray->list (vlax-variant-value (vlax-get-property pobj 'Coordinates))))
(setq z (caddr p))
(setq tobj (vlax-invoke-method ms 'AddText (rtos z 2 2) (vlax-3d-point p) 6.0))
(setq n (+ n 1))
)
   )
   )
(princ)
)

minhphuong_humg 发表于 2022-7-5 17:35:26

 
非常感谢Hippe013!祝你好运!

Grrr 发表于 2022-7-5 17:45:53

或者:
(defun C:test ( / SS i e en )
(if (setq SS (ssget "_:L" (list (cons 0 "POINT")(cons 410 (getvar 'ctab)))))
        (repeat (setq i (sslength SS))
                (setq e (ssname SS (setq i (1- i))))
                (setq en (entget e))
                (entmakex
                        (list
                                (cons 0 "TEXT")
                                (assoc 10 en)
                                (cons 40 (getvar 'textsize))
                                (cons 1 (rtos (last (assoc 10 en)) 2 2))
                        )
                )
        )
)
(princ)
)       

Lee Mac 发表于 2022-7-5 17:52:33

 
考虑:
(cons 10 (cdr (assoc 10 en))) == (assoc 10 en)

David Bethel 发表于 2022-7-5 17:55:51

 
Z轴值可以缩短为:
(setq z (last (assoc 10 en)))
 
我只是吹毛求疵。
 
-大卫

Grrr 发表于 2022-7-5 18:08:01

在我上班之前,我写得很快。
后来我想起了大卫·贝瑟尔的评论,cdr可能没用,我错过了李注意到的那部分,很好的李连杰!
更新了前一篇文章中的代码。
顺便说一句,我第一次尝试将文本对象/名称的对正设置为“MiddleCenter”,这似乎比使用多行文字对象/名称困难得多。尝试使用72和73个GC值,但所有文本均在0,0,0处创建,并具有正确的对齐方式,而不是在实际点上。(我提出这个问题只是出于好奇)

David Bethel 发表于 2022-7-5 18:13:47

尝试:
 
(cons 10 mid_pt)(cons 11 mid_pt)(cons 72 4)(cons 73 0)
 
(cons 10 mid_pt)(cons 11 mid_pt)(cons 72 1)(cons 73 2)
 
-大卫

BIGAL 发表于 2022-7-5 18:22:47

我已经开始这样重复了对不起,忘了我第一次看到谁这样做了,也是用坐标的另一种方式。
 

(defun c:test ()
(setq ss (ssget '(( 0 . "POINT"))))
(if ss
   (progn
   (setq ms (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'ModelSpace))
   (repeat (setq n (sslength ss))
(setq pobj (vlax-ename->vla-object (ssname ss (setq n (- n 1)))))
(setq p (vlax-safearray->list (vlax-variant-value (vla-get-Coordinates pobj))))
(setq z (caddr p))
(setq tobj (vlax-invoke-method ms 'AddText (rtos z 2 2) (vlax-3d-point p) 6.0))
)
   )
   )
(princ)
)
页: [1]
查看完整版本: 帮帮我,显示高程点!