插入并分解块lisp
我使用这个lisp插入块我有两个问题
A)
(defun c:textblock ()
(COMMAND "_layer" "_m" "text" "_c" "140" "" "")
(setq scl (getvar "useri1"))
(setq scl1 (* scl 1.5))
(setq dt1 (getpoint "\ninsert text block: "))
(command" "*insert" "textblock" dt1 scl1 scl1 "0" )
(princ)
)
当块插入到图形中时,会发生旋转
我使用的单位是:十进制、米、梯度、北向。
图形模板和块的单位设置相同。我不知道为什么。
当我使用相同的不带“*”的lisp时,我没有旋转问题,但没有exlope。
B) 第二个问题
我用这个lisp插入绘图戳记(Rtext)
(defun c:dstamp ()
(COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
(setq scl (getvar "useri1"))
(setq scl1 (* scl 1.5))
(setq dt1 (getpoint "\ninsert dstamp: "))
(command"insert" "dstamp" dt1 scl1 scl1 "0" )
(princ)
)
插入后,我将Rtext分解两次,将其转换为简单文本
谢谢 尝试
(defun c:textblock ( / DT1 SCL SCL1)
(COMMAND "_layer" "_m" "text" "_c" "140" "" "")
(setq scl (getvar "useri1"))
(setq scl1 (* scl 1.5))
(setq dt1 (getpoint "\ninsert text block: "))
(command "insert" "*textblock" dt1 scl1 "0" )
(princ)
)
(defun c:dstamp ( / DT1 SCL SCL1)
(COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
(setq scl (getvar "useri1"))
(setq scl1 (* scl 1.5))
(setq dt1 (getpoint "\ninsert dstamp: "))
(command "insert" "*dstamp" dt1 scl1 "0"
"_.explode" "_L"
"_.explode" "_L")
(princ)
)
HTH公司
亨里克 谢谢你hmsilva
在dstam(Rtex)中,只有第三行是我使用的dwg文件
你能检查一下吗?
D amp。图纸 不客气prodromosm
(defun c:dstamp ( / DT1 SCL SCL1)
(COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
(setq scl (getvar "useri1"))
(setq scl1 (* scl 1.5))
(setq dt1 (getpoint "\ninsert dstamp: "))
(command "insert" "dstamp" dt1 scl1 scl1 "0")
(command "_.explode" "_L")
(initcommandversion)
(command "_.explode" "_P" "")
(initcommandversion)
(command "_.explode" "_P" "")
(princ)
)
HTH公司
亨里克 谢谢你hmsilva 不客气prodromosm
很高兴我能帮忙!
亨里克 其他变体。
使用插入分解块
QAFLAGS=5
不取决于块中Rtext的数量。
(defun c:dstamp ( / DT1 SCL SCL1 SS *error* qf)
(defun *error* ( msg )
(and qf (setvar 'QAFLAGS qf))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **")))
(princ)
)
(COMMAND "_layer" "_m" "dstamp" "_c" "140" "" "")
(setq scl (getvar "useri1"))
(setq scl1 (* scl 1.5))
(setq dt1 (getpoint "\ninsert dstamp: "))
(mip:mark)
(command "_-insert" "*dstamp" dt1 scl1 scl1)
(if (setq SS (mip:get-last-ss))
(progn
(setq qf (getvar 'QAFLAGS))
(setvar 'QAFLAGS 5)
(command "_.explode" ss "")
(setvar 'QAFLAGS qf)
)
)
)
;;;* Mark data base to allow KB:catch.
;;;* http://www.theswamp.org/index.php?topic=15863.0
(defun mip:mark ( )
(if (setq *mip:mark (entlast)) nil
(progn (entmake '((0 . "point") (10 0.0 0.0 0.0)))
(setq *mip:mark (entlast))(entdel *mip:mark)))(princ))
;;;* returns selection set of entities since last mip:mark.
(defun mip:get-last-ss (/ ss tmp val)
(setq val (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if *mip:mark
(progn (setq ss (ssadd))
(while (setq *mip:mark (entnext *mip:mark))
(ssadd *mip:mark ss)
) ;_ end of while
(if (> (sslength ss) 0)
(progn
(command "_.select" ss "")
(setq tmp ss)
) ;_ end of progn
(setq tmp nil)
) ;_ end of if
) ;_progn
(alert
"*mip:mark not set. \n run (mip:mark) before mip:get-last-ss."
) ;_ end of alert
) ;_if
(setvar "cmdecho" val)
tmp
) ;_ end of defun
你好,VVA,
代码不错。
但是,您需要分解两次,分解后的Rtext变为多行文字,您需要根据操作要求再次分解为文字。
如果只在explode命令之前使用initcommandversion函数,将允许选择集作为参数,则无需更改QAFLAGS SysVar来分解选择集。
亨里克
页:
[1]