ahyin 发表于 2022-7-6 08:15:47

vla get units函数

你好
 
我在这个论坛上看到了一个函数“val get units”,但任何人都知道如何使用这个函数。实际上,我想用lisp检查CAD文件中的绘图单位。
 
谢谢

MSasu 发表于 2022-7-6 08:26:41

对于图形单位,可以使用存储线性单位的LUNITS系统变量,分别是设置其精度的LUPREC。对于角度,存在AUNITS和AUPREC对。
 
(nth (getvar “LUNITS”)
    ‘("" "Scientific" "Decimal" "Engineering" "Architectural" "Fractional"))
 
当做
米尔恰

ahyin 发表于 2022-7-6 08:31:28

感谢您的快速回复!当我将Lunits变量更改为4时,绘图类型更改为“Architectural”。但绘图单位相同(例如英尺)。绘图单位为(英寸、英尺、毫米、厘米、分米、米)。如何从lisp或其他变量中获取此信息?我找不到用于检查绘图单位的变量。所以我考虑使用“vla get units”的函数。
 

MSasu 发表于 2022-7-6 08:34:55

在标准(普通)AutoCAD中,您只能控制单位的输入/显示格式-单位本身只是一种约定,由您决定。
现在你正在使用建筑,所以可能与标准的AutoCAD有所不同;请致电帮助以获取允许您进行输入的命令,并在“快速参考”下找到存储该设置的变量。
 
当做
米尔恰

MSasu 发表于 2022-7-6 08:41:26

我可能错了,但据我所知,VLA-GET-UNITS函数适用于实体(即块),而不是图形本身。下面的摘录将生成一个错误:
 
(vlax-get-units (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-get-units (vla-get-ActiveDocument (vlax-get-acad-object)))
 
这是因为图形没有“单位”属性-您可以列出图形的特征:
 
(vlax-dump-object (vla-get-ActiveDocument (vlax-get-acad-object)))
 
当做
米尔恰

Ahankhah 发表于 2022-7-6 08:45:27

AFAIK,vla get units(而不是vlax get units)是获取“块引用”对象单位的函数。
 
(vla-get-Units
(vla-item
(vla-get-Blocks
(vla-get-ActiveDocument
   (vlax-get-acad-object)
)
)
BlockName
)
)

Ahankhah 发表于 2022-7-6 08:51:26

试试:(vla get insunits)

MSasu 发表于 2022-7-6 08:54:06

@阿汉哈:你说得对,我在我的示例中拼写错了函数名。感谢您发现-现在已修复。
 
当做
米尔恰

Ahankhah 发表于 2022-7-6 09:02:47

欢迎你,米尔恰。到目前为止,我从你那里学到了很多有用的东西。

ahyin 发表于 2022-7-6 09:07:45

谢谢阿汉哈和米尔恰。
页: [1] 2
查看完整版本: vla get units函数