【问题标题】:List and Prompt a specific object entity in AutoLISP在 AutoLISP 中列出并提示特定对象实体
【发布时间】:2018-09-18 08:36:15
【问题描述】:

我正在努力解决我遇到的这个错误,我是 AutoLISP 的新手。

错误信息: 错误的参数类型:stringp (142 . 3000.0)

目前唯一的目标是提示选定的特定对象实体。

我的代码如下:

(defun c:getObjectLenght()
    (setq a (car (entsel "\nSelect a object: ")))
    (setq b (entget a))
    (setq c (assoc 142 b))
    (prompt (strcat "\nThe value of 142 is: " c))
(princ)
)

我尝试了很多不同的解决方案并搜索了网络,但没有我正在寻找的结果。所以我希望有人能指出我正确的方向。

提前谢谢。 :)

【问题讨论】:

    标签: autocad-plugin autolisp


    【解决方案1】:

    strcat 期望字符串但(assoc 142 b) 返回列表(142 . 3000.0),因此您需要将列表转换为字符串。取决于您选择的实体和值类型您应该使用rtositoavl-princ-to-string

    我想你需要的是:

    (strcat "\nThe value of 142 is: " (vl-princ-to-string (cdr(assoc 42 b ) ) ))
    

    【讨论】:

    • vl-princ-to-string 不错的功能。我从来没有遇到过。
    【解决方案2】:

    据我所知,assoc 函数的用途是在关联列表中查找键值,这就像字典搜索一样,您需要提供键来搜索特定值检查更多 here
    并且在应用函数 assoc 后,它的输出是 list 格式,请参见下面的示例。

    (assoc  8 (entget (car (entsel)) ))
    

    选择实体输出后,如 (8 . "0")
    这是您案例中所选实体的图层名称,名称可能不同

    再看一个例子

    (assoc  10 (entget (car (entsel)) ))
    

    选择实体输出后是 (10 3.25 5.5 0.0)
    输出值为所选实体的插入坐标。

    注意Strcat函数加入only字符串检查更多here

    在第 5 行的函数中,您尝试将字符串与列表连接,以了解发生错误的原因。

    正如你提到的错误,我认为你需要加入价值3000.0.

    为此,您可以如下更改您的功能。

    (defun c:getObjectLenght()
        (setq a (car (entsel "\nSelect a object: ")))
        (setq b (entget a))
        (setq c  (if (assoc 142 b)  (rtos (cdr (assoc 142 b)))  "Not Found" ) )
        ;Note that rtos function use to convert decimal value into sting.
        ; And if condition use in case entity not contain Key value 142 so to avoid error.
        (prompt (strcat "\nThe value of 142 is: " c))
    (princ)
    )
    

    我从来没有遇到过 DXF 代码assoc 142 我用谷歌搜索但没有找到太多。

    【讨论】:

    • 感谢您的解决方案和反馈。它完美运行:) DXF 代码不是标准代码,它来自一个名为 hsbCAD 的扩展。
    • 欢迎您,很高兴听到解决方案有效。你可以用 vl-princ-to-string 替换 rtos 函数,正如 CAD 开发人员提到的那样。如果数据类型未知,这将非常有用。
    猜你喜欢
    • 2018-03-28
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2016-08-19
    • 2017-06-08
    • 2012-03-14
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多