The Buzzard 发表于 2022-7-6 10:29:28

错误:错误的参数类型:poin

大家好,
 
我正在开发几个程序来增加属性标记值,它们似乎工作得很好。在这个过程中,我决定删除我通常使用的循环函数,并将其替换为while。我遇到了一些障碍,但我克服了。我希望程序循环插入命令,当我右键单击鼠标时,它将返回到对话框主功能。到目前为止,一切似乎都运行良好,除了当我通过退出按钮退出程序时,程序退出并在提示处留下以下消息:错误:错误参数类型:点:nil
 
为了得到这个错误,我修改了程序的这一部分。
 

   (while
       (progn
         (setq INPT (getpoint "\nInsertion point:"));Get the insertion point
         (cond
         ((= INPT nil)(ECP_MF)))                     ;When right click of mouse, Go to main function
         (setq IANG (getpoint INPT)                  ;Get the insertion angle
               INPT (trans INPT 1 0)                     ;Translate insertion point coords
               IANG (trans IANG 1 0)                     ;Translate insertion angle coords
               RAD# (angle INPT IANG)                  ;Get the angle in radians
               DEG# (ECP_RTD RAD#))                  ;Convert radians to degrees
         (if (and (> DEG# 90.0)(<= DEG# 270.0));If insertion direction is > 90deg and <= to 270deg
         (progn
             (setq RAD# (ECP_DTR (+ DEG# 180.0))))) ;Add 180deg to DEG# and convert to radians
         (command "._-insert" BNAM$ INPT 1 1 DEG#) ;Insert block
         (ECP_IAV)))))                                          ; Go to selectionset functions
(princ))
(princ)

 
ECP_RUS功能转到“我的还原用户设置”功能。它应该会清除错误,尽管我不确定。
但这是一个很好的观点,我应该调查一下,因为这是一种故意的错误。
 
谢谢你

Tharwat 发表于 2022-7-6 10:34:20

如果没有看到更多的代码,很难确定
 
ECP_IAV函数的返回值是多少?由于它是progn语句中要计算的最后一个函数,因此此处的零可以结束该函数

The Buzzard 发表于 2022-7-6 10:40:52

另一种可能是将(ECP\U MF)移出while循环
 
(action_tile "cancel" "(done_dialog)(setq BUTTON nil)(ECP_RUS)")
 
当做
 
杰米

jammie 发表于 2022-7-6 10:45:10

 
当INPT为nil或鼠标右键单击时,我希望程序返回到通过ECP\u MF运行的对话框。
ECP_IAV函数只是插入对象后的选择集函数。如果INPT返回nil并转到ECP\u MF,它将永远不会到达作为目的的选择集。由于INPT有一个nil值,我相信这就是导致错误的原因,但我无法在程序退出之前清除它。这就是我想要做的。

jammie 发表于 2022-7-6 10:49:13

是否尝试将Autocad中的选项设置更改为右键单击选项?
 
或者,除非选择选项,否则您可能不会给程序退出的机会(退出程序[是/否]:)
 
你怎么想?

The Buzzard 发表于 2022-7-6 10:56:41

 
右键单击鼠标的目的是使输入变为零,这将使我返回到可以通过退出按钮退出的对话框。所有这些都很有效。节目结束后我才收到消息。

Tharwat 发表于 2022-7-6 10:58:14

 
问题可能是您在评估后仍处于while循环中(ECP\U MF)
 

(while

(and
   (setq INPT (getpoint "\nInsertion point:"))
   (setq IANG        (getpoint INPT))
   )
(setq INPT (trans ...)))

(ECP_MF)
 
当ECP\u MF完成时,由于没有断点,AutoCAD将ECP\u MF解释为子功能,并将继续执行原始循环
 
下一行
(cond
         ((= INPT nil)(ECP_MF)))
 
如果输入为零,现在可能会出错吗

The Buzzard 发表于 2022-7-6 11:03:39

 
谢谢jammie,但我已经发现了这一点,同时继续一点一点地处理它。我必须找到另一种方法。谢谢

jammie 发表于 2022-7-6 11:07:00

漂亮的杰米。我通过尝试和错误修复了它,两者都有很多。
这个程序运行得很好。我会张贴它时,它完成。
 
谢谢你和tharwat313的帮助。
 
这是第一节固定。
(setq IANG (getpoint INPT)

The Buzzard 发表于 2022-7-6 11:13:26

 
欢迎秃鹰,很高兴能帮上忙。听起来你的节目进展得不错
 
当做
 
杰米
页: [1] 2
查看完整版本: 错误:错误的参数类型:poin