sarvo046 发表于 2022-7-6 08:04:08

重叠两个标题栏

大家好,
我是这个论坛的新手。需要你们的全力帮助。
在图形文件中,客户希望创建2个标题栏。两个标题栏应添加到同一图形中。在任何时候,用户都只能看到一个。基本上,一个国家的用户将看到第一个标题栏,而另一个国家的用户将看到第二个标题栏。
这可能吗?如果是的话,我应该付出什么样的努力来实现这一点?
Alisp、Vlisp、ARX。。。。?

BlackBox 发表于 2022-7-6 08:15:56

欢迎来到CADTutor!
 
为什么不简单地创建一个具有可选可见性状态(每个国家一个)的动态标题栏(使用块编辑器)?
 
我想到的唯一选择是使用一些定义的全局变量(由AcadDoc.lsp?设置),或注册表项(在设置期间设置),该注册表项通过国家代码标识用户的计算机,并以编程方式操作各个国家图层的冻结/解冻。
 
HTH公司

sarvo046 发表于 2022-7-6 08:25:23

谢谢RenderMan。
你的意思是说,如果动态块不工作,那么必须编写一些程序?
问题是不同国家的客户将使用相同的文件。因此,当他们打开文件时,无论国家如何,图纸都应相同,只有标题栏应根据国家进行切换。

Tharwat 发表于 2022-7-6 08:43:13

这可能有用。。。。
 
将TitleBlock1更改为您的真实姓名block,第二个也更改为Titleblock2,以及您计算机的用户名。
 


(defun c:Test (/ selectionset increment selectionsetname)(vl-load-com)
;;; Tharwat 07. April. 2012 ;;;
(if (eq (getenv "USERNAME") "Tharwat")
   (if (setq selectionset
            (ssget "_x"
                     '((0 . "INSERT") (2 . "TitleBlock1"))
            )
       )
   (repeat (setq increment (sslength selectionset))
       (setq selectionsetname
            (ssname selectionset
                      (setq increment (1- increment))
            )
       )
       (vla-put-visible
         (vlax-ename->vla-object selectionsetname)
         :vlax-false
       )
   )
   )
   (if (setq selectionset
            (ssget "_x"
                     '((0 . "INSERT") (2 . "TitleBlock2"))
            )
       )
   (repeat (setq increment (sslength selectionset))
       (setq selectionsetname
            (ssname selectionset
                      (setq increment (1- increment))
            )
       )
       (vla-put-visible
         (vlax-ename->vla-object selectionsetname)
         :vlax-true
       )
   )
   )
)
(princ)
)

BlackBox 发表于 2022-7-6 08:52:56

 
使用动态块可以解决您的问题,方法是在一个单独的块中提供两个标题块,然后客户可以操纵这些标题块以适应他们的国家。然而,如果您不擅长操纵可见性状态和处理匿名块,那么使用代码进行操作可能更具挑战性。
 
不幸的是,你正在与客户打交道。人们通常不能轻易地将客户降低到自己的标准,必须考虑到大多数客户都想按自己的方式做事。考虑向客户提供选项,使其能够灵活地提供您寻求的功能,同时不干扰客户的设置。
 
一种选择是提供一个简单的CUI(x),它提供了一个菜单或功能区按钮,然后可以将其集成到客户的工作空间中。只需在其中包含所需的LISP。mnl和此代码将在启动时加载。cui(x)已加载。
 
一个可能更简单的选择是,将每个国家/地区标题栏放置在标题栏本身内的唯一图层上,然后以编程方式(打开绘图时)冻结所有不适用的国家/地区图层,并确保解冻确实适用的国家/地区图层。这需要一个代码系统来确定最终用户是哪个国家的成员,而无需用户输入(多次)。
 
... 这有意义吗?
 
 
我不会向要求客户修改每个用户的源代码的客户提供代码。这可能会产生极大的问题,并导致客户对您或您的雇主形成负面意见。内部使用也可能会出现问题,在将其分发给最终用户之前,应进行充分测试。

Lee Mac 发表于 2022-7-6 08:58:43

 
我还打算建议使用冻结层,但我认为没有必要在这方面进行编程-当然,用户可以在将图形发送给客户之前冻结/解冻必要的层?

BlackBox 发表于 2022-7-6 09:04:21

我不得不同意。。。让我质疑这一点的部分是,这一行提到同一个文件将在不同的国家使用。需要更多信息。
页: [1]
查看完整版本: 重叠两个标题栏