nik600 发表于 2022-7-6 08:38:16

如何以编程方式显示/h

尊敬的各位
 
我试图编写一个lisp函数,允许我使用其名称作为选择器来显示/隐藏块。
 
我在网上找到了一些例子,但所有的例子都需要用户手动选择对象,我想使用simpy块的名称来选择它,而不是在窗口中选择什么。
 
我尝试了以下代码:

(defun c:test_show ()
   (setq selezione (ssget "X" '((2 . "test1"))))
   (redraw selezione 1)
(princ))

(defun c:test_hide ()
   (setq selezione (ssget "X" '((2 . "test1"))))
   (redraw selezione 2)
(princ))

 
但是,当我在F2控制台中键入“test\u show”时,我得到:
 

Command: test_show
; error: argument type error: lentityp <Selection set: 80>

 
我已经看到redraw函数需要一个ENAME参数,所以我的问题可能是如何获得具有其名称的块的ENAME,有人可以帮我吗?
 
提前感谢

marko_ribar 发表于 2022-7-6 08:43:26

尝试:
 

(tblobjname "block" "bname")

 
键入而不是“bname”-您的“test1”块。。。

David Bethel 发表于 2022-7-6 08:48:09

您需要单步通过选取集。该过程有许多变体:
 

(and (setq ss (ssget "X" '((2 . "TEST1")))
    (while (setq en (ssname ss 0))
         (redraw en 2)
         (ssdel en ss)))

 
HTH-David

Lee Mac 发表于 2022-7-6 08:55:51

以下是我可能如何完成任务:
 
两个命令(“test\u hide”和“test\u show”)都调用定义的函数“RedrawSelectionSet”,这需要一个用于redraw函数的SelectionSet参数(ss)和整数参数(mode)。
 
然后,“重画选择集”将逐步通过提供的选择集并重画每个实体。
 
我还将SelectionSet过滤器限制为活动空间(模型/布局/通过VPort)中的块(插入)。

BlackBox 发表于 2022-7-6 08:58:04

为了好玩。。。
 

(defun c:HIDE_TEST1 ( / ss i e)
(if (and (setq ss (ssget "_X" '((0 . "INSERT") (2 . "TEST1"))))
          (setq i -1))
   (while (setq e (ssname ss (setq i (1+ i)))) (redraw e 2))
   (prompt "\n** Block not found ** "))
(princ))


(defun c:SHOW_TEST1 ( / ss i e)
(if (and (setq ss (ssget "_X" '((0 . "INSERT") (2 . "TEST1"))))
          (setq i -1))
   (while (setq e (ssname ss (setq i (1+ i)))) (redraw e 1))
   (prompt "\n** Block not found ** "))
(princ))

nik600 发表于 2022-7-6 09:04:46

谢谢!

BlackBox 发表于 2022-7-6 09:06:36

@李-作为一名摄政者,“迫使[隐藏的]实体在其正常庄园中重新显示”是否需要过滤器的410组件?
 
诚然,只修改驻留在活动选项卡上的实体更有效;我只是想知道是否还有另一个方面我没有意识到。
 
干杯

Lee Mac 发表于 2022-7-6 09:11:32

 
我之所以包括它是因为你说的原因——我认为没有理由处理(可能是100个)不在当前布局/空间中的实体。

BlackBox 发表于 2022-7-6 09:18:38

 
别担心,伙计;我感谢您的澄清。
 
由于我们的工作流程,我没有考虑到这种情况——我们只在模型空间中工作——纸张空间被降级到标题栏、视口等。。
 
再一次,非常简洁高效的代码,我的朋友。

Tharwat 发表于 2022-7-6 09:22:56

 
x2
 
http://forums.augi.com/showpost.php?p=1150829&postcount=13
页: [1] 2
查看完整版本: 如何以编程方式显示/h