(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
)
)
李,非常感谢你的投入!我已经尝试了代码,块的缩放和旋转效果很好,但位置不太合适。块的插入点不在文本的插入点。
李和Freerefill,非常感谢你们!这很酷。我期待着深入研究这段代码,看看它是如何做到的。
谢谢 请尝试更新的代码 明亮的这非常有效!非常感谢你。我感谢你和李的时间和努力。 不客气
为“块pue”选择pue,为“put block”选择puc,为“puc DWG block”选择puc,依此类推。你能帮助我吗。很抱歉
谢谢你的帮助。我试图编辑你的代码以获得一个稍微不同的结果。但它不起作用。
我有很多计划,到处都是文字。
我想用这个labelBARYCENTRE替换文本区。图纸
还有上面写的文字。
你看到解决方案了吗?
PS:对不起,我的英语很差。 有人有办法吗?
你能上传一个前后都有的文件吗
这里有2个文件
之前
测试Cad-1。图纸
之后
测试Cad-2。图纸
块是
_______放在同一个地方
_______相同的颜色
_______相同尺寸(或比例)
页:
1
[2]