BlackAlnet 发表于 2022-7-6 11:48:35

“安全阵列”帮助

我对lisp很陌生,没有太多时间学习,这有什么问题?
 
(defun c:se (/ ent obj d delta dx dy se)
(vl-load-com)
(if (setq ent (entsel "\nSelecione a LINHA: "))
   (progn
   (setq obj (vlax-ename->vla-object (car ent)))
   (setq d (vla-get-delta obj))
   (setq delta (vlax-safearray->list
   (vlax-variant-value d)))
   (setq dx (car delta))
   (setq dy (cdr delta))
   (setq se ( / dy dx))
   (princ se)
   
   )
   )
)
   

 
我只需要“delta x”和“delta y”值,但是,lisp返回的是“加倍”值。我该怎么修?
 
我非常感谢你的帮助。谢谢

gile 发表于 2022-7-6 11:59:26

你好
 
尝试:
(setq delta (vlax-get obj 'delta))

BlackAlnet 发表于 2022-7-6 12:04:04

吉尔,非常感谢你的帖子,但我也犯了同样的错误。错误是:列表重复,如下所示:“-20.0 5.0 0.0”(-20.0 5.0 0.0)”
 
当我执行“(car delta)”时,它返回:“-20.0-20.0”,“cdr delta”返回“5.05.0”
 
我该怎么修?

Lee Mac 发表于 2022-7-6 12:09:44

这对我来说似乎很好?
 

(defun c:test (/ ent obj)
(vl-load-com)

(while
   (progn
   (setq ent (car (entsel "\nSelect Line: ")))

   (cond ((eq 'ENAME (type ent))

            (if (vlax-property-available-p
                  (setq obj (vlax-ename->vla-object ent)) 'Delta)

                (print
                  (vlax-safearray->list
                  (vlax-variant-value
                      (vla-get-Delta obj))))

                (princ "\n** Invalid Object **"))))))

(princ))

Lee Mac 发表于 2022-7-6 12:11:00

啊,记住princ将把值打印到屏幕上,但是princ函数的返回值将是刚刚打印的值。
 
因此,你可能需要用另一个普林斯来遵循它。

LEsq 发表于 2022-7-6 12:17:01

 
你说的列表是什么意思?
 
在我看来,这是一个字符串,如果是这样,使用read转换为list,然后使用car表示x,使用cadr表示y值。
 
看看是否有帮助。

Lee Mac 发表于 2022-7-6 12:25:02

这:
 

(defun c:se (/ ent obj d delta dx dy se)
(vl-load-com)
(if (setq ent (entsel "\nSelecione a LINHA: "))
   (progn
   (setq obj (vlax-ename->vla-object (car ent)))
   (setq d (vla-get-delta obj))
   (setq delta (vlax-safearray->list
   (vlax-variant-value d)))
   (setq dx (car delta))
   (setq dy (cadr delta))
   (setq se ( / dy dx))
   (princ se)
   
   )
   )
(princ)
)

LEsq 发表于 2022-7-6 12:28:32

或简单地删除princ调用,这样它将返回命令行上的最后一个值。

Lee Mac 发表于 2022-7-6 12:36:54

 
或者-是的
 
BlackAlnet,
 
为了您自己的利益,我建议您在Visual LISP编辑器帮助文件中阅读本文:
 
 

BlackAlnet 发表于 2022-7-6 12:41:30

@李麦克
 
您的代码一如既往地优雅。我仍然缺少一些小东西,我想这是因为我对LISP的经验很少。非常感谢你的帮助,伙计
页: [1] 2
查看完整版本: “安全阵列”帮助