重叠两个标题栏
大家好,我是这个论坛的新手。需要你们的全力帮助。
在图形文件中,客户希望创建2个标题栏。两个标题栏应添加到同一图形中。在任何时候,用户都只能看到一个。基本上,一个国家的用户将看到第一个标题栏,而另一个国家的用户将看到第二个标题栏。
这可能吗?如果是的话,我应该付出什么样的努力来实现这一点?
Alisp、Vlisp、ARX。。。。? 欢迎来到CADTutor!
为什么不简单地创建一个具有可选可见性状态(每个国家一个)的动态标题栏(使用块编辑器)?
我想到的唯一选择是使用一些定义的全局变量(由AcadDoc.lsp?设置),或注册表项(在设置期间设置),该注册表项通过国家代码标识用户的计算机,并以编程方式操作各个国家图层的冻结/解冻。
HTH公司 谢谢RenderMan。
你的意思是说,如果动态块不工作,那么必须编写一些程序?
问题是不同国家的客户将使用相同的文件。因此,当他们打开文件时,无论国家如何,图纸都应相同,只有标题栏应根据国家进行切换。 这可能有用。。。。
将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)
)
使用动态块可以解决您的问题,方法是在一个单独的块中提供两个标题块,然后客户可以操纵这些标题块以适应他们的国家。然而,如果您不擅长操纵可见性状态和处理匿名块,那么使用代码进行操作可能更具挑战性。
不幸的是,你正在与客户打交道。人们通常不能轻易地将客户降低到自己的标准,必须考虑到大多数客户都想按自己的方式做事。考虑向客户提供选项,使其能够灵活地提供您寻求的功能,同时不干扰客户的设置。
一种选择是提供一个简单的CUI(x),它提供了一个菜单或功能区按钮,然后可以将其集成到客户的工作空间中。只需在其中包含所需的LISP。mnl和此代码将在启动时加载。cui(x)已加载。
一个可能更简单的选择是,将每个国家/地区标题栏放置在标题栏本身内的唯一图层上,然后以编程方式(打开绘图时)冻结所有不适用的国家/地区图层,并确保解冻确实适用的国家/地区图层。这需要一个代码系统来确定最终用户是哪个国家的成员,而无需用户输入(多次)。
... 这有意义吗?
我不会向要求客户修改每个用户的源代码的客户提供代码。这可能会产生极大的问题,并导致客户对您或您的雇主形成负面意见。内部使用也可能会出现问题,在将其分发给最终用户之前,应进行充分测试。
我还打算建议使用冻结层,但我认为没有必要在这方面进行编程-当然,用户可以在将图形发送给客户之前冻结/解冻必要的层? 我不得不同意。。。让我质疑这一点的部分是,这一行提到同一个文件将在不同的国家使用。需要更多信息。
页:
[1]