asos2000 发表于 2022-7-6 11:51:24

这个口齿不清怎么了?

这个Lisp程序怎么了?
 
 
这行没有给出任何结果

lpseifert 发表于 2022-7-6 11:58:30

可能是因为(vla get MomentOfInertia…返回了一个变体,而不是真实的
试试这个(不是很多测试)

(defun c:MMNT ()
(vl-load-com)
(if (and (setq ent (car (entsel "\nSelect Object: ")))
(setq pt (getpoint "\nPick a Point: ")))
(progn
(setq obj (vlax-ename->vla-object ent))
(if (vlax-property-available-p obj 'momentOfInertia)
(progn ; SUBPROGN
(setq var (vla-get-MomentOfInertia obj)
   sa (vlax-variant-value var)
   lst (vlax-safearray->list sa)
   MNT (strcat (rtos (car lst) 2 4) " "(rtos (cadr lst) 2 4 ))
         )
(entmakex (list (cons 0 "TEXT")
(cons 10 pt)
(cons 40 (getvar "TEXTSIZE"))
(cons 1 MNT)
) ; end LIST
) ; end entmakex
) ; end SUBPROGN
(princ "\n** Invalid Object Selected **")
) ;END IF
) ; END PROGN
) ; END IF
(princ)
)

rkmcswain 发表于 2022-7-6 12:01:26

逐步检查代码并检查返回值。。。。
 
(vla get MomentOfInertia obj)返回一个变量,(rtos)需要一个实数。
 

(vlax-safearray->list
(vlax-variant-value
   (vla-get-MomentOfInertia obj)
)
)
;;;will return the value in list form.
;;;Then you can format this as desired.

 
 
编辑:lpseifert已经为您准备好了。。。。

asos2000 发表于 2022-7-6 12:02:52

不工作

lpseifert 发表于 2022-7-6 12:07:04

不知怎的,在复制/粘贴过程中丢失了一些东西。。。现在就试试

asos2000 发表于 2022-7-6 12:11:02

它正在工作
它在一行中,我将分成两行
谢谢

Lee Mac 发表于 2022-7-6 12:14:21

您可以通过以下方式避免变体:
 

(vlax-get obj 'MomentofInteria)

 

asos2000 发表于 2022-7-6 12:18:36


 
我试试告诉你
我该做的是,
代替
具有
 
我做了,但这个错误

Lee Mac 发表于 2022-7-6 12:22:14

仅使用Larry的代码:
 

(defun c:MMNT(/ ent pt obj lst MNT)
(vl-load-com)
(if (and (setq ent (car (entsel "\nSelect Object: ")))
          (setq pt(getpoint "\nPick a Point: ")))
   (progn
   (setq obj (vlax-ename->vla-object ent))
   (if (vlax-property-available-p obj 'MomentOfInertia)
       (progn
         (setq lst (vlax-get obj 'MomentofInertia)
               MNT (strcat (rtos (car lst) 2 4) " " (rtos (cadr lst) 2 4)))
         
         (entmakex (list (cons 0 "TEXT")
                         (cons 10 pt)
                         (cons 40 (getvar "TEXTSIZE"))
                         (cons 1 MNT))))
      
       (princ "\n** Invalid Object Selected **"))))
   
(princ))


lpseifert 发表于 2022-7-6 12:26:59

我应该想到的。。。我前几天刚在theSwamp上读到这篇文章。在可能的情况下,更干净地避免那些危险的变体。
页: [1] 2
查看完整版本: 这个Lisp程序怎么了?