Lee Roy 发表于 2022-7-6 09:00:54

我忘了命令和不能

我正在使用以下代码:

(setq DimSty (getvar 'dimstyle))

然而,我的cond/if/then/etc需要字符串格式。有一个命令将其保存为字符串格式,但我丢失了它,找不到它。
 
帮助
 
谢谢

Lee Roy 发表于 2022-7-6 09:15:01

难道你不知道。。。发布后不到一分钟,我发现这很管用:

(vl-load-com)
(setq activedoc (vla-get-activedocument(vlax-get-acad-object)))
(setq DimSty (vla-item(vla-get-dimstyles activedoc) (strcat (getvar 'dimstyle))))

irneb 发表于 2022-7-6 09:22:53

嗯,对我来说,dimstyle已经是文本了:
因此,使用您的代码,您可以签入if语句,因此:
通常,在字符串上使用eq而不是=更好,尽管有时两种方式都可以。我只是经常使用情商,因为我不记得什么时候“不”使用=。由于“DimSty”不等于“DimSty”,所以我也使用了strcase来转换为大写。
 
无论如何,如果您的意思是要检查与模式匹配的内容,那么请查看wcmatch。

irneb 发表于 2022-7-6 09:29:02

这将为您提供当前DimStyle的ActiveX对象。你能提供更多关于你想要实现什么的信息吗?

Lee Roy 发表于 2022-7-6 09:31:30

我拉取当前的dimstyle,保存到变量(DimSty),更改dimstyle变量,然后将其保存回自身。问题是(getvar的dimstyle)的类型不正确

(vla-CopyFrom DimSty activedoc)

如果我在上一篇文章中没有使用代码,我会得到:

bad argument type: VLA-OBJECT "American"

“American”是当前dimstyle的名称。
 
一旦我使用了我发布的长代码,一切都很好。现在,我还可以使用if/then中的DimSty来与字符串值进行比较,这在以前也不起作用。
 
我尝试了strcase函数,但没有效果。
 
我希望我有道理。

Lee Roy 发表于 2022-7-6 09:41:33

我不理解为什么它需要strcat函数,因为它只组合了多个字符串,这意味着(getvar的dimstyle)返回一个字符串。但是没有它它就不能工作,我得到了VLA-OBJECT错误。这对我来说没有意义。
 
但是它正在工作。:/

Lee Roy 发表于 2022-7-6 09:52:44

出于好奇,这里有一个口吃:
6

Lee Mac 发表于 2022-7-6 09:59:07

在代码中使用strcat确实是不必要的。
 
另一种方式:
 
7

Lee Roy 发表于 2022-7-6 10:03:14

要简单得多。
 
非常感谢。
-李·罗伊-
页: [1]
查看完整版本: 我忘了命令和不能