如何使用blo缩放到块
需要以某种方式精确定位dwg模型空间中的块。我需要找到的块在模型空间中是单独的,但一些也包含在其他块中。我需要遍历所有块及其嵌套项,以找到具有相同名称的块的所有实例。
把它们一个一个地放大就好了。 我是个白痴。。。。
BEDIT,在问题块中画大标记保存编辑并查看绘图。。。
如果图形中没有块,请使用superpurge或其他方法将其删除。。。
补遗
添加标记时,请小心使用了可见性功能的动态块,使其在所有状态下都可见。 您可以使用ssget一个唯一的块名,然后缩放到每个块。这是一个非常简单的代码,我会选择1个块来获得名称。如果您想再次发布示例代码。 当然,我喜欢这个例子。
我不擅长编程。 试试这个。。。
(defun c:Test (/ *error* name ss i obj lft rgt)
(vl-load-com)
;;; Tharwat 13. jan. 2013 ;;;
(defun *error* (x) (princ "\n *Cancel*"))
(if (and (/= (setq name (getstring t "\n Specify Block name :")) "")
(/= name nil)
(setq ss (ssget "_x" (list '(0 . "INSERT") (cons 410 (getvar 'ctab)) (cons 2 name))))
)
(progn (repeat (setq i (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
(vla-getboundingbox obj 'l 'r)
(setq mid (mapcar (function (lambda (q p) (/ (+ q p) 2.)))
(setq lft (vlax-safearray->list l))
(setq rgt (vlax-safearray->list r))
)
)
(vla-ZoomCenter
(vlax-get-acad-object)
(vlax-3d-point mid)
(distance lft (list (car rgt) (cadr lft)))
)
(if (eq "" (getstring "\n Press enter to continue or space bar:"))
(princ)
)
)
(alert "*** DONE ***")
)
(princ)
)
(princ)
)
页:
[1]