Jakub 发表于 2022-7-5 17:47:17

LISP将文本标签读取为att

你好
 
是否存在读取点的文本标签并将其粘贴为属性的lisp?
 
例如:
 
我在CAD中有一个点,它有一个描述Z坐标的文本标签。我需要一个lisp来读取这个高度并粘贴到几何体中的“Z”行。然后将点从2D转换为3D。
 
在哪里可以找到这种lisp?
 
谢谢你提前帮助我。

Tharwat 发表于 2022-7-5 18:03:23

你好
 
上载样例图形。

Jakub 发表于 2022-7-5 18:11:31

https://www.cadtutor.net/forum/attachment.php?attachmentid=57747&cid=1&stc=1
 
点作为块插入。

satishrajdev 发表于 2022-7-5 18:23:33

试试这个:-
 
对于文本:-
(defun c:test (/ a b c d i)
(if (setq a (ssget '((0 . "text"))))
   (repeat (setq i (sslength a))
   (setq b (entget (ssname a (setq i (1- i)))))
   (setq c (cdr (assoc 10 b)))
   (setq d (subst (atof (cdr (assoc 1 b))) (caddr c) c))
   (entmod (subst (cons 10 d) (assoc 10 b) b))
   )
)
(princ)
)
 
 
对于块。。。。根据块标记更改属性标记“A”:-
(defun c:test (/ a b c d i)
(if (setq a (ssget '((0 . "insert"))))
   (repeat (setq i (sslength a))
   (setq b (vlax-ename->vla-object (ssname a (setq i (1- i)))))
   (setq c (vlax-get b 'InsertionPoint))
   (setq d (vl-some '(lambda        (x)
                  (if (eq (vla-get-tagstring x) "A") ; Change tag here
                  (atof (vla-get-textstring x))
                  )
                )
             (vlax-invoke b 'GetAttributes)
      )
   )
   (vla-put-insertionpoint
b
(vlax-3d-point (subst d (caddr c) c))
   )
   )
)
(princ)
)

CAD89 发表于 2022-7-5 18:38:03

@Jakub-据我在属性调色板中看到的,它表示您没有选择任何内容。。。因此,考虑到这一点,AutoCAD会向您显示光标的高程,在二维视图中,光标的默认高程(或十字光标,以您喜欢的为准)始终为0。为了让我们能够为您提供任何帮助,您必须上传一个示例文件,以便我们能够准确地看到您正在处理的问题。
@satishrajdev-我认为Jakub想要提升代表点的块,而不仅仅是附加到它的文本!代码不错。
 
顺致敬意,
CAD_89

satishrajdev 发表于 2022-7-5 18:51:02

我已经更新了代码
页: [1]
查看完整版本: LISP将文本标签读取为att