Lee Mac 发表于 2022-7-6 08:16:56

我可能会这样编码
 

(defun c:txt2ins ( / *error* blk ss )
;; © Lee Mac~15.06.10
(vl-load-com)

(if (and (setq blk (getfiled "Select Block" "" "dwg" 16))
          (setq ss(ssget "_X" '((0 . "TEXT") (1 . "F"))))
          (setq blk (LM:ForceBlockDefinition blk)))
   (
   (lambda ( i / e eLst h )
       (while (setq e (ssname ss (setq i (1+ i))))         
         (setq eLst (entget e) h (cdr (assoc 40 eLst)))
         
         (if
         (entmakex
             (append (list '(0 . "INSERT") (cons 2 blk))
               (LM:RemovePairs '( 0 1 7 10 11 40 41 51 71 72 73 100 102 330 360 ) eLst)
               (list
               (cons 10 (LM:GetTextInsertion eLst))
               (cons 41 (* h (/ 32. 3.)))
               (cons 42 (* h (/ 32. 3.)))
               )
             )
         )
         (entdel e)
         )
       )
   )
   -1
   )
)
(princ)
)

(defun LM:ForceBlockDefinition ( block / path ext base )
;; © Lee Mac~15.06.10
(setq path(vl-filename-directory block)
       ext   (vl-filename-extension block)
       base(vl-filename-base block))

(and (eq "" ext) (setq ext ".dwg"))

(cond
   ( (tblsearch "BLOCK" base) base )

   ( (setq block (findfile (strcat path "\\" base ext)))   

   (command "_.-insert" block) (command) base
   )
)
)

(defun LM:RemovePairs ( pairs lst )
;; © Lee Mac~15.06.10
(vl-remove-if
   (function
   (lambda ( pair )
       (vl-position (car pair) pairs)
   )
   )
   lst
)
)

(defun dxf ( code lst ) (cdr (assoc code lst)))

(defun LM:GetTextInsertion ( eList )
;; © Lee Mac~15.06.10
(dxf
   (if (vl-every 'zerop
         (mapcar 'dxf '(72 73) (list elist elist))
       )
   10 11
   )
   eList
)
)

zride91 发表于 2022-7-6 08:22:09

李,非常感谢你的投入!我已经尝试了代码,块的缩放和旋转效果很好,但位置不太合适。块的插入点不在文本的插入点。
 
李和Freerefill,非常感谢你们!这很酷。我期待着深入研究这段代码,看看它是如何做到的。
 
谢谢

Lee Mac 发表于 2022-7-6 08:25:30

请尝试更新的代码

zride91 发表于 2022-7-6 08:27:22

明亮的这非常有效!非常感谢你。我感谢你和李的时间和努力。

Lee Mac 发表于 2022-7-6 08:31:02

不客气

bullah 发表于 2022-7-6 08:34:45

 
 
 
为“块pue”选择pue,为“put block”选择puc,为“puc DWG block”选择puc,依此类推。你能帮助我吗。很抱歉

guigol 发表于 2022-7-6 08:37:27

 
 
谢谢你的帮助。我试图编辑你的代码以获得一个稍微不同的结果。但它不起作用。
 
我有很多计划,到处都是文字。
 
我想用这个labelBARYCENTRE替换文本区。图纸
还有上面写的文字。
 
你看到解决方案了吗?
 
 
PS:对不起,我的英语很差。

guigol 发表于 2022-7-6 08:38:23

有人有办法吗?

asos2000 发表于 2022-7-6 08:43:35

 
你能上传一个前后都有的文件吗

guigol 发表于 2022-7-6 08:46:34

这里有2个文件
 
之前
测试Cad-1。图纸
 
之后
测试Cad-2。图纸
 
块是
_______放在同一个地方
_______相同的颜色
_______相同尺寸(或比例)
页: 1 [2]
查看完整版本: Lisp将文本替换为bloc