tm20038175 发表于 2012-5-2 19:46:22

如何重定义块?

我想插入名字为en的块,先分解,然后删除文字,然后在重新定义块,名字和基点不变,就相当于更改下块的定义,如何实现呀………

tm20038175 发表于 2012-5-2 19:48:54

就删除文字,块的其他保持不变。

caoyin 发表于 2012-5-2 20:24:07

;;;无需分解
;;;删除块内文字

(defun C:TT (/ OBJ)
(if (setq OBJ (entsel "\n选择块: "))
(progn
    (vlax-for X
      (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
                (vla-get-name (setq OBJ (vlax-ename->vla-Object (car OBJ))))
      )
      (if (wcmatch (vla-get-ObjectName X) "AcDb*Text")
      (vla-delete X)
      )
    )
    (vla-update OBJ)
)
)
)

tm20038175 发表于 2012-5-2 20:44:09

caoyin 发表于 2012-5-2 20:24
;;;无需分解
;;;删除块内文字



其实我的真实想法是选择块内有线型比例的图元,然后把图元的线型比例都扩大n倍,于是想到了重定义块名的办法!
如果版主能给做到就无需重定义块了!
本以为变了个说法会简单些,没想到越扯越远了,哎!…

tm20038175 发表于 2012-5-2 20:52:47

还可能面对嵌套块的问题,真是问题多多呀。

tm20038175 发表于 2012-5-2 22:03:32

…………………

功夫佬 发表于 2012-5-2 22:10:14

厉害,如果用到放视图(放大视图里面有块的时候),应该不错。

caoyin 发表于 2012-5-2 22:39:35

套嵌块就递归,程序的整体架构就是vlax-for

tm20038175 发表于 2012-5-2 22:51:37

本帖最后由 tm20038175 于 2012-5-2 22:52 编辑

caoyin 发表于 2012-5-2 22:39
套嵌块就递归,程序的整体架构就是vlax-for

恩,请问如何改线型比例呢?只需指点下一个命令就可以了(改一个图元的比例),递规我看看能不能自己尝试去改,谢谢了!……

caoyin 发表于 2012-5-2 23:27:40

(defun C:TT (/ OBJ LTS)
   (if (and (setq OBJ (entsel "\n选择块: "))
            (setq LTS (getreal "\n指定线形比例: ")))
   (progn
   (vlax-for X
       (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
               (vla-get-name (setq OBJ (vlax-ename->vla-Object (car OBJ))))
       )
       (if (wcmatch (vla-get-ObjectName X) "AcDbLine");;以直线为例
         (vla-put-LinetypeScale X LTS)
       )
   )
   (vla-update OBJ)
   )
   )
)
页: [1] 2
查看完整版本: 如何重定义块?